近些年APT-C-60(伪猎者)组织使用的载荷分析
2025-1-14 10:10:0 Author: mp.weixin.qq.com(查看原文) 阅读量:2 收藏

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

  • 文件名1:scrobi.db

    Flagkonny
    收集信息格式
    ["Username"]["Hostname"]["SystemVersion"_"Arch"]["12位随机字母""Arch".bmp]
    信息加密方式
    AES
    回传数据格式
    User-Agent: myagent\r\nReferer: <"Flag"_"Count">"EncryptData"\r\n\r\n\r\n
  • 文件名2:comctlc.db+propsys.db

    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
  • 文件名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: myagent\r\nReferer:"Version">"Flag">"Stage">"EncrypteData"\r\n\r\n\r\n
  • 文件名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加载配置信息中插件路径中的文件,执行各种自定义功能。    

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

     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保障国家网络安全提供有力支撑。

文章来源: https://mp.weixin.qq.com/s?__biz=MzUyMjk4NzExMA==&mid=2247505493&idx=1&sn=2260fa98c61cff9236bfea3e11059200&chksm=f9c1e55cceb66c4a3a040aeb233338e2770de6a2c767b20e74a64934cc02ca6d9a1d122784c4&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh