作者:知道创宇404高级威胁情报团队
时间:2023年11月30日
1. 概述
参考资料
2023年11月,知道创宇404高级威胁情报团队成功捕获到海莲花组织最新的攻击样本。该样本以购买BMW汽车为主题,诱导攻击目标执行恶意文件。与此同时,该攻击与今年APT29的诱导主题和木马加载流程有相似之处,初步分析表明这可能是攻击者故意模仿的结果。
2. 攻击释放链
参考资料
攻击释放链
3. 样本功能综述
参考资料
原始样本为“BMW_2023年机构及院士销售价格框架.pdf.lnk”。该文件内置了四部分内容,分别是:lnk参数、诱饵文档、dropper程序和hta文件,四部分内容通过相互配合完成既定功能目标。
原始LNK文件
整体指令流程为:lnk参数执行hta文件,hta文件执行dropper程序&诱饵文档,Shellcode加载执行最终Cobalt_Strike RAT程序,各部分功能细节描述如下:
3.1 LNK文件
LNK文件为原始载荷,用于整体释放链的启动工作,通过ShellExec执行CMD指令,其中CMD指令的功能是:
1. 确保360安全卫士相关文件不存在
2. 将自身拷贝到%USERPROFILE%NTUSER.DAT{9a91c082-225a-4f2c-9a80-fc75895096f0}.TM.alf
,并通过mshta.exe进行启动。拷贝逻辑根据是否存在原始文件名称的LNK文件区分为两种,若是原始文件名称的LNK文件存在则直接拷贝;若不存在则遍历%USERPROFILE%路径查找原始文件名称的LNK文件,找到之后将文件拷贝到%USERPROFILE%NTUSER.DAT{9a91c082-225a-4f2c-9a80-fc75895096f0}.TM.alf
并通过mshta.exe启动。该部分的区分代码可用于以下功能的检测:
- 文件名称是否被更改
- 可能原始落地文件在%USERPROFILE%路径下
两个LNK文件参数基本一致
3.2 NTUSER.DAT{9a91c082-225a-4f2c-9a80-fc75895096f0}.TM.alf
该文件存放于LNK文件尾部,通过mshta.exe程序进行启动。根据行为猜测,mshta.exe通过定位标记点启动HTA,故不需要通过提取HTA文件来启动HTA文件。
根据代码来看,HTA文件存在四部分功能。其分别为:定位并保存白加黑程序、定位并保存诱饵文档、运行诱饵文档、修复白加黑程序,各功能模块描述如下:
1. 定位并保存白加黑程序
首先加载自身(NTUSER.DAT{9a91c082-225a-4f2c-9a80-fc75895096f0}.TM.alf)
并将文件游标设置为 offset:11598 读取249374大小数据,保存读取的数据至%appdata%LenovodevicecenterextendsmodulesshowdeskLenovoDesk.exe
,接着读取1032190大小数据保存至%appdata%LenovodevicecenterextendsmodulesshowdeskQuickDeskBand.dll
:
设置游标并读取白加黑内容&文档内容
白加黑程序起始地址
2. 定位并保存诱饵文档
保存诱饵文档数据至本地%temp%BMW_2023年机构及院士销售价格框架.pdf,启动BMW_2023年机构及院士销售价格框架.pdf文件。
诱饵文件
3. 运行诱饵文档
运行诱饵文档内容
4. 修复白加黑两个程序,添加MZ文件头
修复白加黑程序
3.3 诱饵文档
诱饵文档内容如下:
3.4 白加黑&COBALT_STRIKE Beacon
先前保存的白加黑程序用于解密并启动Cobalt_Strike,白程序的启动在lnk参数部分实现:
启动白文件
白文件信息
白文件(LenovoDesk.exe)在运行后,通过加载QuickDeskBand.dll并调用其ShowBatteryGauge函数:
加载黑文件
黑文件加载后,其DllMain函数中执行解密操作,解密出后续的载荷。同时,通过ShowBatteryGauge导出主要功能,将LenovoDesk.exe写入注册表的启动项中,实现自动启动。
设置run启动项
黑文件QuickDeskBand.dll 被加载后,进入 DllMain 函数中执行初始化。在 DllMain 中,首先会获取主程序路径,然后使用该路径的后15位字符作为密钥来解密相关数据。攻击者使用当前运行主程序的后15位字符作为解密key,在一定程度上能够反沙箱和反分析调试,只有当主程序名为LenovoDesk.exe时才能够解密出后续的点分十进制数据。如果分析人员以任意文件名进行加载,则无法正确解密后续的CS载荷。
使用文件名作为key解密数据
解密后的数据为IP点分十进制数据,通过 RtlIpv4StringToAddressA 函数将点分十进制IP地址转化为HEX地址形式数据,HEX地址形式的数据为COBALT_STRIKE数据,之后通过设置枚举字体的回调立即启动Cobalt_Strike.
解码CS数据
Cobalt_Strike是一款付费渗透测试产品,允许攻击者在受害机器上部署名为“Beacon”的代理。Beacon 为攻击者提供了丰富的功能,包括但不限于命令执行、按键记录、文件传输、SOCKS 代理、特权升级、mimikatz、端口扫描和横向移动。Beacon 是内存中(无文件)的,因为它由无阶段或多阶段的 shellcode 组成,一旦通过利用漏洞或执行 shellcode 加载程序进行加载,就会反射性地将自身加载到进程的内存中,而不会触及磁盘。
支持通过 HTTP、HTTPS、DNS、SMB 命名管道以及正向和反向TCP进行C2和分段,信标以菊花链式连接。Cobalt Strike带有一个用于开发shellcode加载器的工具包,称为 Artifact Kit。
由于该平台强大的功能及兼容性,许多APT组织也将CS列入自己的武器库中,在以往的APT32攻击活动中我们也经常发现其使用CS作为RAT程序。
文件最终的CS Beacon关键配置信息如下:
CS Beacon 配置信息
从Metadata元数据中可发现其HTTP Header围绕dhgate相关进行伪造。
- Host: www.dhgate.com
- Host: shoppingcart.dhgate.com
Dhgate(敦煌网)是一家国内的跨境小额外贸B2B电商平台,由世纪富轩科技发展有限公司运营,名字来源于丝绸之路重镇敦煌市。
4. IOC
参考资料
- 38e227fa505dfcf5ccda226eb81c97ad
- 2bc84a0b16d76ffa04acd3ee423cad8dbe6b4fcc
- acf612349fb6ee5d88e2a7da3d39afb3e0699a4ad95ab6a5ff708353498ce76d
- f3a79156daa75a2c09c46309f68c3de7
- c42e5fd854a1d5556bf1f26e50143dfccc2acc55
- b05693f7a6b1f3d323ae65ca2e77115ff8d9ed233c9f192a49d4bbdea7d6be7d
- dd502ea523877af9d4b819c17b4079a8
- 0bc0dd0e6ece375decaa858702c7df5f17c11f58
- db0e5a869b63f4ee5ce17e58a35b42ecb9889f9ab4fb7d2d591ff029a0363751
- 08efe8c1385e8f77a510aced92392afb
- 8ee66b0f2b08e35c845d38164969072a8a22a87b
- 0241b90dff6b2c76bcae2c50ff1b4a1d8957ffedd6b316ec9d4f0d454748959b
5. 关联分析
参考资料
根据公开报告(链接如下),可以得知 APT29 也使用BMW汽车购买相关主题文档攻击过多国外交官。
- https://unit42.paloaltonetworks.com/cloaked-ursa-phishing/
- https://www.mandiant.com/resources/blog/apt29-evolving-diplomatic-phishing
木马加载流程如下:Html -> iso -> link->恶意dll文件->shellcode,其中link文件到恶意dll加载shellcode部分与此次攻击非常类似。