海莲花组织Torii远控的网络攻击活动分析
事件要点 | 特征内容 |
攻击时间 | 最早可追溯到2017年,至今活跃中 |
涉及组织 | 海莲花(APT-TOCS) |
事件概述 | 海莲花组织使用Torii远控针对我国的网络攻击 |
攻击目标 | 中国 |
攻击手法 | 凭证暴力破解、漏洞攻击等 |
武器工具 | Torii远控 |
攻击意图 | 窃密 |
2.1 活动简介
此次攻击活动中涉及的远控家族又被称为Torii,溯源结果表明,该远控很可能是由海莲花组织研发并运营。远控涉及的攻击活动最早在2018年被披露,当时由于其复杂度被业内认为是下一代的物联网僵尸网络,最早活跃时间可追溯至2017年,已发现通过弱口令暴力破解、漏洞攻击等手段进行传播,因为主要被用于针对性的攻击,不会基于已感染设备对全网的其他设备进行扫描攻击,也不会利用已感染设备进行挖矿、勒索、DDOS等活动,因此5年以来其一直保持有相对较好的潜藏隐蔽状态。
该远控的功能丰富,适配广泛,支持生成众多类型如ARM、x86、x64、MIPS、SPARC、PowerPC、SuperH、Motorola 68000等等CPU架构的载荷,能对运行于以上架构的服务器、物联网设备、办公主机等进行深度信息窃取和控制,此外还具备10组以上的命令控制能力。
近年来,Torii活跃于海莲花组织针对我国的网络攻击活动中,攻击者通过攻陷国内的公网路由器、摄像头等网络设备充当跳板,安装流量转发工具,将被植入Torii木马的设备的窃密和控制流量,经一层或多层跳板转发至真实的Torii远控C2服务器。基于目前掌握的跳板和真实C2查找国内受控情况,发现2022上半年存在超1万7千条的可疑受控流量访问次数,Torii在国内已初步具有僵尸网络规模。
2.2 远控功能分析
2.2.1 对抗分析能力
1) 字符加密
绝大多数敏感字符串都被加密,运行时解密,解密算法为自定义的轮转异或:
2) 执行后休眠
木马执行后,先进行sleep()函数休眠,休眠时间默认60秒或根据传参而自定义,此举可对抗一部分的自动化分析如沙箱等。
图2‑2 运行后休眠
父进程退出后的子进程,进程名被命名为正则表达式随机生成的字符串,此举可抵抗基于进程名的筛查检测。
图2‑3 子进程名被随机化
4) C2通信流量加密
虽然木马主要使用443端口通信,但过程实际并非使用TLS加密,而是使用RC4加密后再倒序:
图2‑4 通信流量加密算法
5) 落地文件名伪装
虽然未完全掌握此次攻击活动的上文,但从Torii家族历史的攻击过程来看,此次的远控也应存在第一阶段的母体,母体是负责释放本远控的Dropper,会将远控的落地位置由目录表和伪装正常的文件名表这两个表随机组合而成:
表2‑1 落地位置由两表随机组合
目录表 | 文件名表 |
/usr/bin | setenvi |
/usr/lib | bridged |
$HOME_PATH | swapper |
/system/xbin | natd |
/dev | lftpd |
$LOCATION_OF_1ST_STAGE | initenv |
/var/tmp | unix_upstart |
/tmp | mntctrd |
… |
2.2.2 信息窃取能力
除了使用系统函数获取如主机名、MAC地址等,木马还会通过解密出的一批shell命令来获取丰富的系统软硬件信息,例如:
图2‑5 执行收集信息
梳理出的Shell命令和收集对象如下表:
表2‑2 信息收集命令对应信息
Shell命令 | 对应信息 |
id 2>/dev/null | 用户id |
uname -a 2>/dev/null | 操作系统信息 |
whoami 2>/dev/null | 用户名 |
cat /proc/cpuinfo 2>/dev/null | 处理器信息 |
cat /proc/meminfo 2>/dev/null | 内存数量 |
cat /proc/version 2>/dev/null | 内核版本 |
cat /proc/partitions 2>/dev/null | 分区块分配信息 |
cat /etc/*release /etc/issue 2>/dev/null | 系统标识 |
2.2.3 远程控制能力
梳理出远控的功能包括操控和窃取本地文件、命令执行、载荷下载等,罗列如下:
表2‑3 命令控制功能
指令 | 主要功能 |
0xBB32 | 从C2下载文件,MD5校验并保存 |
0xE04B | 搜寻指定文件并返回大小 |
0xEBF0 | 获取心跳或ping |
0xF28C | 读取文件指定偏移的内容发送至C2 |
0xC221 | 从指定URL下载文件 |
0xDEB7 | 删除指定文件 |
0xA16D | 获取超时数值 |
0xA863 | 从C2下载文件,权限标志为rwxr-xr-x并执行 |
0xAE35 | 执行给定Shell命令,结果返回C2 |
0x5B77 | 获取心跳或ping |
0x73BF | 获取心跳或ping |
远控连接的C2地址由上述同一解密算法解得,攻击活动中既存在直连真实C2服务器,也存在连接国内跳板的转发端口,之后转往下一跳:
图2‑6 直连C2服务器
图2‑7 连接跳板机和转发端口
当木马硬编码的C2地址为跳板时,跳板性质一般为物联网设备,主要有国产路由器、国产VPN设备、公网摄像头等,TCP协议的恶意流量从8443、8773等端口进入设备,然后被转发至真实的C2服务器或更多层的跳板。
从跳板设备运行的服务来看,攻击者有可能通过nday甚至0day漏洞攻击得到系统执行权限。从以往的海莲花在物联网跳板上实现流量转发的手段来看,其曾使用自研或开源的转发工具、防火墙转发规则等,由于目前尚未进一步掌握以上跳板内部信息,猜测此次活动手段也大多如此,例如Github开源的tinyPortMapper,其支持Linux/Windows/MacOS主机、安卓手机/平板、路由器、树莓派等等设备,使用方式例如将本地的1234端口接收到的TCP和UDP流量,转发到目标IP的443端口:
图3‑1 tinyPortMapper的使用方式
当硬编码的地址为真实C2服务器时,目标端口皆为443,域名和VPS的购置厂商和地理位置都分散在境外,无明显特点。
4.1 与Torii家族的高度同源
通过代码比对,安天CERT发现此次的木马家族与Torii僵尸网络的第二阶段木马存在有大量的同源性,能确认属于同一木马家族,但相对来说有更规范的编码实现和升级,属于Torii家族的新版本。
表4‑1 此次木马家族与Torii的同源性
同源性 | 此次木马家族 | Torii家族 |
对抗分析手段 | 1. 字符异或加密,密钥:0xFFABFACB; 2. 执行后先休眠; 3. 子进程名随机化。 | 1. 字符异或加密,密钥:0xFEBCEADE; 2. 执行后先休眠; 3. 子进程名随机化。 |
指令功能基本一致 | 0x5B77,获取心跳或ping | 0x5B77,获取心跳或ping |
0x73BF,获取心跳或ping | 0x73BF,获取心跳或ping | |
0xA16D,获取超时数值 | 0xA16D,获取超时数值 | |
0xA863,从C2下载文件,标志为rwxr-xr-x并执行 | 0xA863,从C2下载文件,标志为rwxr-xr-x并执行 | |
0xAE35,执行给定Shell命令, 结果返回C2 | 0xAE35,执行给定Shell命令,结果返回C2 | |
0xBB32,从C2下载文件, MD5校验并保存 | 0xBB32,从C2下载文件,MD5校验并保存 | |
0xC221,从给定URL下载文件并保存 | 0xC221,从给定URL下载文件并保存 | |
0xDEB7,删除指定文件 | 0xDEB7,删除指定文件 | |
0xE04B,搜寻指定文件并返回大小 | 0xE04B,搜寻指定文件并返回大小 | |
0xEBF0,获取心跳或ping | 0xEBF0,获取心跳或ping | |
0xF28C,读取文件指定偏移的内容发送至C2 | 0xF28C,读取文件指定偏移的内容发送至C2 | |
0xB76E,无意义 | ||
0xF76F,切换新的C2地址 | ||
C2地址 | 硬编码,每个样本包含1个地址,可为攻击者自注册域名,也可为跳板服务器 | 硬编码,基本每个样本包含3个地址,皆为攻击者自注册域名 |
4.2 与海莲花远控家族的同源性和差异
国内Netlab实验室的研究报告[4]表明,双头龙家族与海莲花组织的MacOS远控两者之间从C2会话的建立方式、上线包构造、加解密算法甚至多组指令功能对都存在惊人的相似,双头龙家族可以称之为海莲花MAC远控在Linux平台的实现版本。
更早的报告表明[2],双头龙家族与Torii家族间存在敏感命令的重用、流量构造方式和持久化方式的相似性,报告推测双头龙与Torii家族可能出自同一攻击者之手。
安天CERT进一步分析发现,双头龙与Torii家族虽然存在个别相似性,但整体的差异要远多于重合,以下罗列双头龙、Torii和另一款已知的海莲花Linux远控Buni家族,三者间的重要差别如下:
表4‑2 Torii家族与双头龙的差异
差异点 | 双头龙家族(海莲花) | Torii家族 | Buni家族(海莲花) |
敏感字符的加解密算法: 无相同的加解密算法 | AES算法、循环移位算法 | 多字节轮转异或算法 | 单字节轮转异或算法 |
指令功能的对应关系: 无相同的指令功能对应 | 12条: 0x138E3E6, 0x208307A 0x5CCA727, 0x17B1CC4 0x25360EA, 0x18320e0 0x2E25992, 0x2CD9070 0x12B3629, 0x1B25503 0x1532E65, 0x25D5082 | 11条: 0xBB32,0xE04B 0xEBF0, 0xF28C 0xC221, 0xDEB7 0xA16D, 0xA863 0xAE35, 0x5B77 0x73BF | 7条: 0x48B8, 0x5C37 0x5C7C, 0x7221 0xB616, 0x1CE3 0xDAFE |
通讯流量的加密算法: 无相同的加密算法 | AES加密后ZLIB压缩 | AES-128加密后MD5校验; 或采用RC4加密后倒序放置 | 异或加密后GZIP压缩 |
网络资产: 无相同的网络资产重叠 | news.th***.net blog.edu***.com cdn.mir***.net status.sub***.net 更多… | jd-***.com kjtzgz.szl***.org update.firm***.com 更多… 或IoT跳板 | Zabbix***.com 更多… 或IoT跳板 |
从整体的功能设计、代码实现和资产依托等更多的层面来看,Torii、双头龙和Buni三者的局部相似性虽然表明可能出自相同的攻击者,但三者并不能划为同一恶意代码家族,而应属于三种不同的远控工具。
4.3 与海莲花组织的资产关联
Torii家族2020年2月活跃的载荷分发服务器185.174.***.***,曾在2017年至2018年绑定已知的海莲花域名svena***.com,以及绑定了可关联到多个海莲花历史资产的高可疑域名hosti***.xyz:
表4‑3 与海莲花组织的资产关联性1
Torii家族资产 | 历史绑定关系 | 历史绑定关系 | 关联已知的海莲花资产 |
185.174.***.*** 性质:载荷分发服务器 | svena***.com,海莲花的已知域名 | ||
hosti***.xyz | 185.174.***.*** | mariala***.club | |
185.174.***.*** | loucest***.club | ||
annette***.club | |||
ganmo***.com | |||
abigails***.com | |||
barbara***.com |
同在2022年2月时期活跃的Torii家族C2域名zhi***.com,曾在该月首先解析到动态IP地址188.166.***.***,该IP曾被卡巴斯基PhantomLance活动报告所提及[5],进一步分析发现,其并非海莲花私有的IP,但海莲花自2018年起存在偏好将诸如Denes远控、KerrDown下载器、PhantomLance安卓木马以及Covid19疫情期间窃密等攻击活动的大量域名资产临时性地指向该IP。
表4‑4 与海莲花组织的资产关联性2
Torii家族资产 | 历史绑定关系 | 关联已知的海莲花资产 |
zhi***.com 性质:C2域名 | 188.166.***.*** | udt.sophi***.com,Denes远控 |
e.browser***.com,KerrDown下载器 | ||
elizongha***.com,PhantomLance安卓木马 | ||
georgiath***.com,PhantomLance安卓木马 | ||
dictionari***.com,Cobalt Strike远控 | ||
social.ceri***..com,Remy远控 | ||
aidanpain***..com | ||
rown***..com | ||
其它 |
综上,Torii与早期海莲花网络资产的关联性,结合海莲花组织的双头龙家族与海莲花MAC远控家族的代码高度同源,以及Torii与双头龙家族在设计上的相似性,再结合近期Torii家族通过海莲花组织近年的同类攻击手法攻陷我国的物联网设备充当跳板,大量控制境内重要政企单位网络和办公设备,有理由相信Torii家族很可能是海莲花组织除双头龙家族和Buni家族之外,第三款比较成熟的针对Linux或物联网平台的远控工具。
威胁框架视角的攻击映射
本次系列攻击活动共涉及ATT&CK框架中10个阶段的17个技术点,具体行为描述如下表:
表5‑1 近期Torri攻击活动的技术行为描述表
ATT&CK阶段 | 具体行为 | 注释 |
侦察 | 主动扫描 | 扫描暴露在公网中且存在指定漏洞的IOT设备 |
资源开发 | 获取基础设施 | 注册C2域名,购买并搭建C2服务器 |
入侵基础设施 | 入侵服务器或IOT设备作为跳板 | |
初始访问 | 利用面向公众的应用程序 | 利用暴露在公网中且存在漏洞的应用服务 |
利用外部远程服务 | 对暴露在公网中的远程服务进行口令暴力破解 | |
执行 | 利用命令和脚本解释器 | 获取权限后利用shell脚本安装后续木马 |
持久化 | 利用自动启动执行引导或登录 | 利用/etc/init实现开机时启动 |
利用计划任务/工作 | 利用crontab计划任务自动执行 | |
防御规避 | 规避调试器 | 进程名随机化逃避调试器附加 |
仿冒 | 落地文件名仿冒成正常系统文件 | |
发现 | 发现账户 | 获取系统账户信息 |
发现系统信息 | 获取系统版本信息 | |
发现系统网络配置 | 获取系统网络信息 | |
收集 | 压缩/加密收集的数据 | 收集到的数据通过异或后加AES加密 |
命令与控制 | 编码数据 | 收集到的数据通讯前经过加密 |
使用标准非应用层协议 | 使用TCP协议通讯 | |
数据渗出 | 使用C2信道回传 | 远控使用传统C2信道通讯 |
将涉及到的威胁行为技术点映射到ATT&CK框架如下图所示:
图5‑1 近期Torri攻击活动对应ATT&CK映射图
参考资料:
https://blog.avast.com/new-torii-botnet-threat-research
https://blog.netlab.360.com/stealth_rotajakiro_backdoor_cn/
https://mp.weixin.qq.com/s/1WtaS7htgiUGhtY_ovERxA
https://blog.netlab.360.com/rotajakiro_vs_oceanlotus_cn/
https://securelist.com/apt-phantomlance/96772/