freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

海莲花(APT-Q-31)组织数字武器Rust加载器技术分析
2024-04-23 12:02:56

团伙背景

海莲花,又名OceanLotus、APT32,奇安信内部跟踪编号APT-Q-31,是由奇安信威胁情报中心最早披露并命名的一个APT组织。自2012年4月起,海莲花针对中国政府、科研院所、海事机构、海域建设、航运企业等相关重要领域展开了有组织、有计划、有针对性的长时间不间断攻击。海莲花组织的攻击目标包括中国和东南亚地区多国,覆盖政府机构、科研院所、媒体、企业等诸多领域。该组织攻击手法多样,拥有完备的攻击武器库,常结合自研恶意软件、开源项目和商业工具实施攻击。

概述

奇安信威胁情报中心观察到海莲花在针对国内某目标的攻击活动中使用了一款由Rust编写的加载器,内存加载Cobalt Strike木马。随后我们在开源平台发现了类似的恶意软件,这些恶意软件在Rust代码、中间阶段shellcode等方面的特征都与捕获的海莲花Rust加载器高度重合,因此我们认为它们也来自海莲花组织。接下来将以这些开源样本为基础对海莲花近期使用的Rust加载器进行分析。

详细分析

发现的Rust加载器样本如下:

MD5VT上传时间说明
064cd0afb4dc27df9d30c7f5209a8e5b2024-01-24 16:38:44 UTC64位EXE;HTTPS类型beacon木马;C&C:oo-advances-computers-interests.trycloudflare[.]com
080c5ee76e27fb361b2e2946afc05cb62024-02-26 08:07:25 UTC64位EXE;SMB类型beacon木马;命名管道:\\.\pipe\mojo_b7
96520d209bd3f4908843388a5643f4982024-04-02 08:36:23 UTC32位EXE;SMB类型beacon木马;命名管道:\\.\pipe\Winsock2\CatalogChangeListener-738-0
3ada3a7ff12dbe5e129b4aec770518432024-04-08 09:36:31 UTC64位EXE;HTTPS类型beacon木马;C&C:guilty-patricia-connecticut-pulled.trycloudflare[.]com
bf634036012335d802fc6abc1a7787bd2024-04-11 07:47:43 UTC64位EXE;尾部数据被删除
598544a350d496bacabfc5b905fae6a42024-04-14 12:33:32 UTC64位EXE;HTTPS类型beacon木马;C&C:ecom.dfizm[.]com

其中部分CS木马还利用Cloudflare Tunnel服务(trycloudflare[.]com下的子域名)[1]作为C&C服务器,隐藏真实服务器IP。

1713854555_6627585b7e1c3ddfad58a.png!small?1713854557058

下面以样本598544a350d496bacabfc5b905fae6a4为例进行分析。

Rust加载器

首先读取EXE文件自身数据。


1713854563_6627586329ad60f265cab.png!small?1713854566236

加密数据的长度保存在文件末尾倒数24字节位置,长度为0x4D838,用于XOR解密的key从文件末尾倒数20字节开始。1713854567_662758676f2523dbfd3a5.png!small?1713854567936

1713854571_6627586b1ef525884ce71.png!small?1713854571738

解密得到的内容如下,其中包含下一阶段的shellcode。

1713854575_6627586f85ff5acc777c8.png!small?1713854576741

根据计算,加密数据位于该样本文件的偏移位置0x462C1,而EXE最后一个段”.reloc”在0x45000处结束,可见加密数据是附加在原始EXE之后。1713854579_662758737ce8a1737700e.png!small?1713854580178

加载器从"C:\\Windows\\system32\\"目录下选择一个DLL文件加载进内存。

1713854591_6627587f13e0c5576428c.png!small?1713854593502

先将加载DLL的.text段对应内存空间访问权限修改为“读写”,再复制之前解密出的shellcode内容到.text段,并修改权限为“读写可执行”,最后执行shellcode。

1713854592_6627588063b81f475efc1.png!small?1713854593502

1713854597_66275885a6c159519aee4.png!small?1713854599235

1713854604_6627588c60c85983e27f0.png!small?1713854605833

第一阶段shellcode

此次发现的大部分Rust加载器样本会使用第一阶段的shellcode再度解密并执行包含CS beacon木马的第二阶段shellcode,而个别样本的第一阶段shellcode直接运行CS beacon木马。

如果是带有解密功能的第一阶段shellcode,首先定位配置数据的基地址位置,将其保存在rsi寄存器中。

1713854611_662758934b50f44108f33.png!small?1713854618802

从rsi+0x428位置获取第二阶段shellcode的长度(这里为0x4C0D0),保存在r14d寄存器中,然后调用VirtualAlloc分配具有可读写执行权限的内存。

1713854617_662758999ecb2f7b089a0.png!small?1713854619801

分配内存的起始地址(这里为0x4E0000)保存在r15寄存器中,rsi+0x42C位置为第二阶段shellcode加密数据的起始地址。循环调用第一阶段shellcode偏移0x4C844(内存地址0x7FEFA9CD844)处的函数,每次解密8字节数据,解密结果保存在分配内存中。

1713854619_6627589b1c8e0d7bd618a.png!small?1713854619801

解密第二阶段shellcode完成后,直接调用执行。

1713854626_662758a209f4945a258f1.png!small?1713854631482

第二阶段shellcode

第二阶段shellcode中包含一个CS beacon木马,内存加载执行。木马PE文件数据在偏移0x10C2处, File Header结构的magic number修改为”4E 4F”(0x4F4E)。

1713854630_662758a62617b1437bb21.png!small?1713854631482

提取beacon木马的配置信息,C2为ecom.dfizm[.]com:443。

1713854635_662758ab6e0b0af6fc761.png!small?1713854636442

溯源关联

这批Rust加载器恶意软件与之前捕获的海莲花攻击样本(MD5: c0271f7c0430f3ec4641e5a1436cf87f)在代码特征上高度重合。首先Rust部分代码几乎一致,第一阶段的shellcode也十分相似。

1713854640_662758b08127e51635fe3.png!small?1713854642246

捕获的海莲花样本第二阶段shellcode有些不同,采用如下代码定位CS beacon木马的位置,DOS Header结构的magic number改为0x5041,不过File Header结构的magic number仍使用0x4F4E。

1713854644_662758b459482c4471d0d.png!small?1713854645601

根据以上代码相似性,我们认为这些上传到VirusTotal平台的Rust加载器也与海莲花组织有关。

此外,之前攻击活动中捕获到的海莲花样本CS配置数据中的license_id同样是987654321。

1713854648_662758b89fb919fb155cd.png!small?1713854649419

实际上,开源样本中CS木马涉及的license_id共有2个。

MD5Beacon类型License_id
064cd0afb4dc27df9d30c7f5209a8e5bHTTPS1359593325
080c5ee76e27fb361b2e2946afc05cb6SMB1359593325
96520d209bd3f4908843388a5643f498SMB987654321
3ada3a7ff12dbe5e129b4aec77051843HTTPS1359593325
598544a350d496bacabfc5b905fae6a4HTTPS987654321

但值得注意的是,这两个license_id对应的可能是破解版Cobalt Strike,现已被多个攻击团伙使用[2,3],推测海莲花组织想借此模糊对Cobalt Strike攻击活动的归属。

1713854659_662758c31511ad94b645c.png!small?1713854660224

1713854665_662758c9a165879c0e83a.png!small?1713854666725

总结

海莲花组织在近年来的攻击活动中不断更新攻击手法,此次发现的Rust加载器将后续载荷加密后附加到加载程序尾部,并试图用system32目录下合法DLL的内存空间存放待执行的shellcode,以避免触发安全软件的检测,同时滥用被多个黑客团体使用的Cobalt Strike水印混淆攻击归属。

IOC

MD5

064cd0afb4dc27df9d30c7f5209a8e5b

080c5ee76e27fb361b2e2946afc05cb6

96520d209bd3f4908843388a5643f498

3ada3a7ff12dbe5e129b4aec77051843

bf634036012335d802fc6abc1a7787bd

598544a350d496bacabfc5b905fae6a4

C&C

oo-advances-computers-interests.trycloudflare[.]com

guilty-patricia-connecticut-pulled.trycloudflare[.]com

ecom.dfizm[.]com

参考链接

[1].https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/do-more-with-tunnels/trycloudflare/

[2].https://www.secrss.com/articles/60060

[3].https://www.intrinsec.com/wp-conten

# APT组织 # 海莲花(OceanLotus)APT团伙
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录