作者:K&XWS@知道创宇404高级威胁情报团队
1. 情况概述
今年6月,知道创宇404高级威胁情报团队在分析过程中发现了几个APT组织的攻击样本,通过同源关联到其他的攻击木马,并对此展开了分析。根据近期国内外安全厂商发布的“伪猎者APT”组织的文章,对比确认为同一批通过WPS漏洞进行网络攻击的最终载荷木马[1][2]。
2023年8月至2024年7月,我们观察到Darkhotel的持续攻击活动,并使用了两套不同的攻击武器及技战术。攻击行业也早已脱离了Darkhotel名字代表的酒店行业。Darkhotel是有着东亚背景,针对企业高管、政府机构、国防工业、电子工业等重要机构实施网络间谍攻击活动的APT组织,其足迹遍布中国、朝鲜、日本、缅甸、俄罗斯等国家。2019年之后有关 Darkhotel 组织的行动在开源情报中的占比连年降低,同时国内厂商曝光了数个具有东北亚背景且技战术不同的攻击集合,我们认同这些攻击集合都是 Darkhotel 的子集,Darkhotel只是一个代表了该背景的攻击集合名字。
2. 木马分析
样本攻击/释放链
样本功能综述
本次捕获的类型1向服务端请求下载一个文件,该文件解密后释放的载荷与类型2几乎一致。与类型2不同的是,类型1在下载阶段还额外下载了一个lnk文件,该lnk文件的主要功能是通过COM劫持以运行释放的载荷(实际类型1下载的文件是将类型2中的文件进行了合并)。相较于类型2,类型3样本在文件解密后释放了两个载荷。根据类型3中PDB路径信息,将其记为Observer
,接下来将就各类型样本进行描述。
2.2.1 类型1分析描述
类型1样本为dll文件,该dll存在一个名为mydllmain
的导出函数。
滥用合法的windows的照片库查看器组件shimgvw.dll,通过其中的函数ImageView_Fullscreen
,从远程服务器上下载文件zetaq.txt:
从%userprofile%\AppData\Local\Microsoft\Windows\INetCache\IE
中遍历查找文件名为zetaq的文件,并从其中解密出后续文件:
从偏移2开始读取24个字节数据并解密,该数据表示包含的文件数。
继续读取24个字节数据并解密,该数据表示文件总大小。
继续读取24个字节数据并解密,该数据表示文件加密后大小。
继续读取24个字节数据并解密,该数据表示文件解密后大小。
如果包含的文件数大于1时,则循环解密并释放对应文件。
SecureBootUEFI.da
和regit.lnk
,将regit.lnk
设置名为PCATaskServices
的计划任务,滥用合法系统程序pcalua.exe执行该文件。LNK参数解析后如下:
F82B4EF1-93A9-4DDE-8015-F7950A1A6E31
,利用该COM组件执行SecureBootUEFI.dat。2.2.1.1 SecureBootUEFI.dat分析描述
SecureBootUEFI.dat的主要功能有两个:
文件夹遍历:从服务端获取需要需要检索的文件夹路径,并将获取的文件信息拼接后作为UA回传到服务端。 组件下载并加载执行:从服务端下载后续载荷并加载运行。
在SecureBootUEFI.dat中字符串的加解密算法变为异或3。
获取主机名和用户名,后续将获取的数据拼接后异或加密作为首次通信url的一部分:
server1:hxxps://bitbucket.org/whekacjj/whekacjj/downloads/ server2:hxxps://c.statcounter.com/12959673/0/7901c79c/1/
向服务端1发送请求后,服务端1返回的数据为需要遍历的文件夹,获取到的文件夹信息使用[ ]
进行包裹后用,
进行拼接,最终所有的数据拼接搭配到Referer:
后,并上传到服务端。
文件下载后被存储到%Userprofile%\AppData\Local\Microsoft\Windows\Shell\Sample.tmp
,将Sample.tmp复制到%Userprofile%\AppData\Local\Microsoft\Windows\Shell\Service.dat
并加载运行:
服务端返回的数据使用g73qrc4dwx8jt9qmhi4s
作为key进行异或解密,而非样本中的异或3算法:
2.2.2 类型2 分析描述
类型2与类型1在功能上几乎是一致的,以下仅有区别的部分进行描述:
区别1:lnk文件通过下载而非文件解密后释放。
区别2:计划任务名为
GoogleRegisterTask
和CLSUpdateService
。
类型3中初始dll中字符串为明文状态:
滥用合法的windows的照片库查看器组件shimgvw.dll,通过其中的函数ImageView_Fullscreen
,从远程服务器上下载文件eqlist.txt和mylink.tmp:
%appdata%\\Microsoft\\Crypto\\crypt86.da
和%localappdata%\\Microsoft\\Proofs\\profapii.da
:mylink.tmp下载后存储为%temp%\\mylink.lnk
,lnk文件的功能是将之前释放的文件crypt86.da和profapii.da分别重命名为crypt86.dat和profapii.dat,并劫持系统COM组件0b91a74b-ad7c-4a9d-b563-29eef9167172
,利用该COM组件执行crypt86.dat:
2.2.3.1 crypt86.dat分析描述
crypt86.dat的主要功能是下载数据并使用profapii.dat解密执行后续功能。
攻击者将多个下载地址解密后进行配置,可根据需要选择对应的地址使用。
获取受害者主机名称和用户名等信息,并与字符串hebei进行拼接,格式如下:hebei,%username%;%pc_name%;%userprofile%
。
接收从下载地址返回的7个字节数据,并且返回的数据以ref
作为起始字符,从中提取出后续请求的文件名,该文件名与下载地址进行拼接后组成完整的请求链接,例如:hxxp://82.xx/list/2.cab, 请求的UA依然是前面拼接加密的数据:
,
进行分割,分割后的第一个数据为后续需要加载的组件名,第二个数据为组件中的导出函数,最后的数据为传入组件的参数。bitbucket.org
),该请求返回的数据使用相同的解密及分割方式进行解析:2.2.3.2 profapii.dat分析描述
mscuicrypt
的导出函数,该函数的主要功能是解密传入的参数并根据参数中的数据完成后续功能:H
进行分割,解密后完成指定功能,包括:从参数中,解密出一个远程地址和一个本地路径,从远程地址下载文件,并进行解密后,保存在本地路径下。 从参数中,解密出一个本地路径,并加载执行。
从参数中,解密出一个远程路径和一个本地路径。对本地路径下的文件进行遍历,获取所有文件名,拼接上特殊的字符后,进行加密,并设置为UA字符串,连接远程路径。
[ ]
进行拼接:2.2.4 关联分析
本次捕获的3种类型的样本与以往曝光的“伪猎者”组织攻击样本几乎一致,具体如下:
下载释放的组件名相同,例如类型3种的crypt86.dat和profapii.dat;
利用lnk进行COM劫持;
利用公共服务平台
bitbucket.org
分发指令。
类型 | 编译时间 |
---|---|
3 | 2023-11-16 06:51:36 |
2 | 2024-02-05 20:48:49 |
2 | 2024-02-01 17:50:24 |
1 | 2024-05-31 05:44:14 |
C:\Users\WINUSER\Desktop\SCV\1. Observer\230206_observer_v2.1\observer_v2.0_dll1\observer_v2.0_dll1\x64\Release\observer_v2.0_dll1.pdb
在2023年捕获的该组织的样本中发现类似结构的PDB路径,我们猜测相关工具在其内部代号或为Observer
:
可见攻击者可能依然对部分受害主机保持着通信。
3. IOC
Hash:
8620a8a3f75b8b63766bd0f489f33d6a
dd2f326bac70baca94eb655bdfae175d
445a84e3216da14b73dbe52aeb63e710
030a68e321dec0e77b4698fccc5d54db
dd2f326bac70baca94eb655bdfae175d
18fdde4bf8d3a369514b0bc8ddcf35dc
ccf49ea51585ae38fb510b0fa52aec08
7e20f52d4e7074663d9f9a252b59a2d6
4. 参考链接
[1] Operation DevilTiger:APT-Q-12 使用 0day 漏洞技战术披露
[2] https://www.welivesecurity.com/en/eset-research/analysis-of-two-arbitrary-code-execution-vulnerabilities-affecting-wps-office/