APT-C-60(伪猎者)是一伙以持续监控受影响用户、窃取相关信息为目的朝鲜半岛APT组织。我们于2018年发现该组织的活动,溯源分析最早的攻击活动可疑追溯到2014年。受影响用户大部分为涉韩的政府、经贸、文化有关的企事业单位,以及劳务咨询公司。
一、类型
1. Observer Installer
Observer Installer这类载荷的主要功能是下载文件,并通过CLSID来实现文件的持久化运行。这类载荷是攻击完成初始接入后第一个执行的载荷。JS downloader是这类载荷的javascript代码的实现,也是这类载荷使用量最多,使用时间最长的载荷。BMP downloader的载荷都导出模块名“Observer_Installer_pack.dll”,“Observer_Installer”指示它用于安装Observer,“pack”代表这类载荷由一个BMP文件释放而来,这也是这类载荷名称的由来。后两类文件则是Observer Installer在2023和2024主要使用的文件名(或模块导出名)。
2. Observer
“Observer”是从样本的pdb中提取出来的,从这个词的意思“观察者”也能反映出这类载荷的功能:作为攻击者的前锋马初步收集目标信息,并下载加载后续载荷。Observer收集的信息为攻击者是否投递后续载荷提供参考依据。Observer在我们的跟踪分析期间主要有以下五类文件名,一些基本的特征见下表。Observer内硬编码的一个浮点数。在回传信息时,程序会以一定格式带上这个浮点数。这个浮点数和pdb中暴露的版本信息对应,所以我们认为这个浮点数就是程序的版本号。Observer从2.0版本开始不再提供32位的文件。
文件名 |
编译时间区间 |
版本 |
scrobi.db |
2018.7.24 |
|
comctlc.db+propsys.db |
2020.3.11 |
1.5 |
2020.9.28 |
1.7 |
|
propsysctl.db |
2021.2.18-2021.5.25 |
1.8 |
2021.6.28-2022.3.10 |
1.9 |
|
2022.4.12-2022.7.6 |
1.91 |
|
2022.8.11 |
1.92 |
|
crypt86.dat+profapii.dat |
2022.11.20-2023.2.3 |
2.0 |
2023.4.21-2023.11.28 |
2.1 |
|
securebootuefi.dat |
2024.1.22-2024.9.26 |
收集信息作为当前载荷的核心功能,我们整理了不同版本载荷回传信息的格式。通过这些格式的变化来了解Observer版本的变迁。
-
文件名1:scrobi.db
Flag konny 收集信息格式 ["Username"]["Hostname"]["SystemVersion"_"Arch"]["12位随机字母""Arch".bmp] 信息加密方式 AES 回传数据格式 User-Agent: myagentrnReferer: <"Flag"_"Count">"EncryptData"rnrnrn -
文件名2:comctlc.db+propsys.db
Stage:
S0:文件未下载或下载失败
S1:文件下载成功
S2:文件加载成功
版本 |
1.5,dwight |
收集信息格式 |
["Username"]["Hostname"]["SystemVersion"_"Arch"]["12位随机字母""Arch".bmp] |
信息加密方式 |
AES |
回传数据格式 |
User-Agent: myagentrnReferer: <O"Version"_"Stage"_"Flag"_"Count">"EncryptData"rnrnrn |
|
1.7,Ux-x |
收集信息格式 |
"Hostname">"Username">["SystemVersion"_"Arch"]["12位随机字母"] |
信息加密方式 |
AES |
回传数据格式 | User-Agent: myagentrnReferer: O"Version">"Flag">"Stage">"EncryptData"rnrnrn |
-
文件名3:propsysctl.db
版本和Flag 1.8, Ux-x;
1.9, Ux-x;
1.91, Ux-x;
1.92, 无收集信息格式 "Hostname">"Username">["SystemVersion"_"Arch"]["12位随机字母"] 信息加密方式 AES 回传数据格式 User-Agent: myagentrnReferer:"Version">"Flag">"Stage">"EncrypteData"rnrnrn -
文件名4:crypt86.dat+profapii.dat
版本 2.0,2.1 收集信息格式 hebei,"Username";"Hostname";"UserProfile" 信息加密方式 自定义base64 回传数据格式 UserAgent: EncryptData -
文件名5:securebootuefi.dat
信息加密方式 明文 回传数据格式 Referer: LIVE>"收集文件信息次数","下载文件的次数"> "Hostname" / "Userprofile" / "校验和"
Hostname和Username为当前机器的主机名和用户名,SystemVerion为系统版本,Arch为系统平台(32位还是64位),Version为当前载荷的版本,EncryptData为收集信息加密后的数据。
3. Backdoor Installer
Backdoor Installer功能相对简单:下载文件;通过clsid设置下阶段载荷Backdoor的持久化,其功能与Observer Installer类似。我们统计了载荷在解密文件时使用的解密算法和key。
时间 |
解密算法 |
文件名 |
Key |
IV |
2018年 |
CryptpoPP+AES128+CBC |
install.bat |
ed4196b8b25e126956e6d8abb4c73560 |
c7ac7388709ae5fcc2f62a5c9dabc47c |
2021年 |
WinCrypt+AES128+ECB |
combases.db |
C1648E81F23368E0221B41B324796937 |
|
B0747C82C23359D1342B47A669796989 |
||||
759D8DA5D930D9A223F39EEFB417E758 |
||||
2022-2024年 |
自定义base64+xor |
service.dat |
AadDDRTaSPtyAG57er#$ad!lDKTOPLTEL78pE |
4. Backdoor
Backdoor类的载荷功能结构稳定,随着时间变化不大。Backdoor加载配置信息中插件路径中的文件,执行各种自定义功能。
并且回传更加详细的目标信息。
Boackdoor载荷支持的指令代码见下表。
命令字符串 |
功能 |
cd [path] |
设置新的工作目录 |
ddir |
遍历目录 |
ddel [path] |
删除文件或目录 |
ld [path] |
加载库文件,调用extension导出函数 |
attach [path] |
加载库文件 |
detach [path] |
卸载库文件 |
procspawn [path] |
创建子进程 |
proclist |
获取进程列表 |
prockill [pid]/[process name] |
关闭进程 |
diskinfo |
获取磁盘信息 |
download [path] |
从远程下载文件,保存为参数指定的路径 |
upload [path] |
上传指定文件或目录 |
screenupload |
上传屏幕截图 |
screenauto [interval] |
定期屏幕截图上传 |
turn on |
增加指令循环频率,2.5秒一次 |
turn off |
降低指令循环频率,5分钟一次 |
其它 |
cmd /c [command] |
Backdoor载荷内部硬编码版本字符串,版本变化可能指示程序配置的改变。
编译时间 |
版本字符串 |
2017年 |
none |
2020.2 |
v0.2 |
2020.10 |
v0.4 |
2021.6-8 |
v1.0 |
2018.4-2022.1 |
v1.1 |
2021.11-2022.2 |
v3.0 |
2022.1 |
v3.0.1 |
2023.5 |
v3.1.3 |
2023.7-9 |
v3.1.4 |
2023.9-2024.7 |
v3.1.6 |
2024.7-9 |
v3.1.7 |
5. Plugin
Plugin载荷捕获的数量较少,从文件类型来看主要有两类:powershell和pe文件,从功能来看主要有键盘记录,文件收集和屏幕截图。
二、特征
1. 异或
整个载荷框架中使用了多种多样的异或解密算法,其中包括解密字符串使用的异或位、异或3、异或3减1、异或索引长度、异或2减1和解密文件使用的异或key。
异或位是一种早期(2017年)使用的字符串解密算法。解密算法的Python实现如下图。
异或3、异或索引长度、异或2减1、异或3减1,这些解密算法相继出现,分布在载荷的各个阶段。解密算法的Python实现如下图。
2. 自定义base64编码
这种解密算法是base64的一种变种,解密时先进行一层异或3的解密再使用Base64解码。这种算法多用于载荷解密和回传信息加密,随着Observer中的crypt86.dat载荷在2022年底出现的。解密算法的Python实现如下图。
3. BMP
框架中的多个载荷在下载文件时使用了BMP文件。这种方式能够规避一些杀软的检测逻辑,降低被拦截的风险,提高下载成功率。我们分析了这种载荷的格式,如下图所示。
从这种文件中提取载荷可以利用下面的Python代码实现。
4. 标准加解密算法
这类标准解密算法包括RC4和AES,多用于回传信息加密和下载载荷解密。这类载荷在中前期(2024年前)的使用比较多。
5. 解密算法的时间分布
前文提到的五类载荷囊括了攻击者在整个攻击流程中部署的载荷。这些载荷实现了信息探测,持久化驻留,远程控制等功能,帮助攻击者完成数据渗出,权限拓展等任务。伴随着攻击活动的持续进行,我们可以看到载荷的“版本”和功能也在更新。
原文始发于微信公众号(360威胁情报中心):近些年APT-C-60(伪猎者)组织使用的载荷分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论