360威胁情报中心 02月08日
近些年APT-C-60(伪猎者)组织使用的载荷分析
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文对朝鲜半岛APT组织APT-C-60(伪猎者)近年使用的恶意样本进行分析,该组织以持续监控和窃取信息为目的,主要攻击涉韩政府、经贸、文化企事业单位及劳务咨询公司。通过对2018年至2024年捕获的载荷进行功能分类,发现其遵循Observer Installer、Observer、Backdoor Installer、Backdoor和Plugin的标准结构。虽然核心功能保持不变,但实现方式持续迭代更新。报告着重分析各类载荷的特征随时间的变化,例如使用的解密算法、文件格式以及回传信息的方式等,揭示了该组织的技术演进。

🔑Observer Installer主要功能是下载文件,通过CLSID实现持久化运行,是攻击初始接入后执行的首个载荷。其中,JS downloader使用量最多,时间跨度最长,而BMP downloader则通过BMP文件释放,2023-2024年主要使用特定文件名。

🛰️Observer作为攻击者的前锋马,通过收集目标信息为后续载荷投递提供依据。不同版本的Observer通过硬编码的浮点数(版本号)和不同的信息回传格式来区分,从2.0版本开始不再提供32位文件,收集的信息包括主机名、用户名、系统版本等。

🛡️Backdoor Installer功能相对简单,负责下载文件并通过CLSID设置Backdoor的持久化,与Observer Installer类似。其使用的解密算法和密钥随时间变化,例如2018年使用CryptpoPP+AES128+CBC,2022-2024年则使用自定义base64+xor。

⚙️Backdoor载荷功能结构稳定,核心功能是执行C2下发的指令,支持多种命令,如目录操作、文件管理、进程控制、磁盘信息获取、文件上传下载等。Backdoor载荷内部硬编码版本字符串,版本变化可能指示程序配置的改变。

🧩Plugin载荷数量较少,主要有powershell和pe文件两类,功能包括键盘记录、文件收集和屏幕截图。整个攻击框架中使用了多种多样的异或解密算法,以及自定义base64编码,同时,多个载荷在下载文件时使用了BMP文件,以规避杀软检测。

原创 高级威胁研究院 2025-01-14 18:10 北京

我们整理了APT-C-60近些年来使用的样本,对它们按照功能进行分类,并从中梳理出一些特征

APT-C-60

  伪猎者

APT-C-60(伪猎者)是一伙以持续监控受影响用户、窃取相关信息为目的朝鲜半岛APT组织。我们于2018年发现该组织的活动,溯源分析最早的攻击活动可疑追溯到2014年。受影响用户大部分为涉韩的政府、经贸、文化有关的企事业单位,以及劳务咨询公司。

近期我们整理了APT-C-60近些年来使用的样本,对它们按照功能进行分类,并从中梳理出一些特征。

从2018年到2024年,伴随着攻击者的持续活动,我们捕获到攻击行动暴露的大量载荷。这些载荷按照功能分类可以分为五类:Observer Installer, Observser,Backdoor Installer,Backdoor,Plugin。这非常符合APT组织载荷的标准结构:由Observer Installer和Observer组成的前锋马,负责对目标环境进行一个基础的探测;由Backdoor Installer和Backdoor组成的后门部分,负责目标完全控制和数据渗出任务;由Plugin载荷提供特异性的扩展功能。随着时间推移,这五类载荷的核心功能不变,实现方式一直在迭代更新。报告后续不会介绍每类载荷的具体实现,而是通过一些特征来呈现各类载荷随着时间的变化。    

一、类型

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版本的变迁。

    Stage:

S0:文件未下载或下载失败

S1:文件下载成功

S2:文件加载成功

版本

1.5,dwight

收集信息格式

["Username"]["Hostname"]["SystemVersion"_"Arch"]["12位随机字母""Arch".bmp]

信息加密方式

AES

回传数据格式

User-Agent: myagent\r\nReferer: <O"Version"_"Stage"_"Flag"_"Count">"EncryptData"\r\n\r\n\r\n

版本和Flag

1.7,Ux-x
收集信息格式
"Hostname">"Username">["SystemVersion"_"Arch"]["12位随机字母"]
信息加密方式
AES
回传数据格式User-Agent: myagent\r\nReferer: O"Version">"Flag">"Stage">"EncryptData"\r\n\r\n\r\n

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加载配置信息中插件路径中的文件,执行各种自定义功能。    

并且回传更加详细的目标信息。

     Backdoor载荷的核心功能是执行C2下发的指令,指令循环流程图如下图所示。    

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. 解密算法的时间分布  

各种解密算法在载荷中随时间的分布如下图所示。时间信息主要取自于pe文件的编译时间。


总结


前文提到的五类载荷囊括了攻击者在整个攻击流程中部署的载荷。这些载荷实现了信息探测,持久化驻留,远程控制等功能,帮助攻击者完成数据渗出,权限拓展等任务。伴随着攻击活动的持续进行,我们可以看到载荷的“版本”和功能也在更新。



团队介绍


TEAM INTRODUCTION

360高级威胁研究院

360高级威胁研究院是360政企安全集团的核心能力支持部门,由360资深安全专家组成,专注于高级威胁的发现、防御、处置和研究,曾在全球范围内率先捕获双杀、双星、噩梦公式等多起业界知名的0day在野攻击,独家披露多个国家级APT组织的高级行动,赢得业内外的广泛认可,为360保障国家网络安全提供有力支撑。

阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

APT-C-60 伪猎者 恶意软件分析 网络安全 APT组织
相关文章