针对军工和教育行业的CNC组织“摆渡”木马分析

1 概述
近期,安天应急响应中心(安天CERT)在梳理攻击活动时发现CNC组织使用的两个下载器,其中一个下载器具有摆渡攻击的能力,利用移动存储设备作为“渡船”,间接从隔离网中窃取攻击者感兴趣的文件;另一个下载器使用欺骗性的具有不可信数字证书的C2节点进行通信。
CNC组织目前已知最早于2019年被发现,当时由于其使用的远控木马的PDB路径信息中包含了cnc_client,因此该组织被命名为CNC。该组织主要针对军工和教育行业进行攻击。
2 样本分析
2.1 PrivateImage.png.exe(下载器1)
2.1.1 样本概述
PrivateImage.png.exe会根据该文件是否在%localappdata%路径下选择两种方式执行。
1. 如果在%localappdata%路径下,不断检测是否有新设备接入;若有,则将文件本身复制到新设备中,以便通过可移动设备传播。
2. 如果不在%localappdata%路径下,首先判断%localappdata%\ImageEditor.exe是否存在:
1) 如果存在,跳过后续操作退出。
2) 如果不存在,判断互联网连接状态:
a) 如果可连网,下载后续下载器。
b) 如果不可连网,从Recent文件夹下的快捷方式中获取.docx或.pptx后缀的文件,复制文件到当前目录下新建的以用户名命名的隐藏文件夹中,并以符号替换后的文件路径命名。
2.1.2 详细分析
表 2‑1 PrivateImage.png.exe

样本运行后,首先会获取当前用户名,用在后续路径拼接的操作中。

获取当前文件的路径,并判断是否在%localappdata%目录下。

如果在%localappdata%目录下,则会获取系统中的所有驱动器字符串。

通过判断前一次的驱动器字符串与本次获取到的驱动器字符串是否相同,来确定是否有新设备接入。

如果存在新设备,获取新设备的名称,若新设备中不存在当前文件,则将当前文件复制到新设备。然后将指示单词“-firstcry”拼接到主机名后,用于同攻击者控制的设备通信。若新设备中已存在当前文件,则将指示单词“-alleat”拼接到主机名后。

样本与攻击者控制的设备通信。

如果不在%localappdata%目录下,加载样本资源中的图片并将其释放到同目录下打开。

资源节中包含的图片。

首先进行字符串拼接。

然后判断%localappdata%\ImageEditor.exe是否存在,如果存在跳过后续操作,结束进程。

测试与www[.]baidu.com的通信,判断当前环境下互联网连接状况。

如果互联网不可用,拼接字符串,在样本所在目录创建以当前用户名命名的隐藏文件夹。

从Recent文件夹下的快捷方式中获取.docx或.pptx后缀的文件,查找最近打开的.docx和.pptx后缀的文件。

若找到,则将其复制到创建的隐藏文件夹中,文件采用将文件完整路径中的“\”、“:”修改为“_”的方式命名。

测试机中收集的文件及其命名方式如下。

如果互联网可用,判断C:\ProgramData\USOshared文件夹是否存在,若不存在创建该文件夹。

随后将会从185.25.51.41/control/utility/YodaoCloudMgr处下载恶意的后续的下载器,并将其复制到USOshared文件夹中,随后将会删除%temp%中下载的文件。

如果成功下载到文件,将其保存到%temp%下的YodaoCloudMgr中。

将YodaoCloudMgr从%temp%复制到C:\ProgramData\USOshared\YodaoCloudMgr.exe后删除%temp%下的YodaoCloudMgr文件。

创建任务计划,将C:\ProgramData\USOshared\YodaoCloudMgr.exe添加到任务计划程序库中,每隔2分钟执行一次。并根据下载和创建任务计划的结果构建回传信息:23Fi45XX代表下载成功,23Fi45NNXX代表下载失败;45tDdd43543代表任务计划创建成功,45tDnn43543代表任务计划创建失败。

测试机中创建的任务计划如下。

获取当前环境下的进程列表。

将获取到的进程列表同先前构造的回传信息进行拼接,并采用base64编码方法处理拼接后的内容。

使用URLDownloadToFileW与控制端通信,回传收集的信息。如果任务计划创建失败,则通过CreateProcessA执行C:\ProgramData\USOshared\YodaoCloudMgr.exe。根据静态分析推测,如果YodaoCloudMgr.exe启动失败,删除文件后会从github存储库中获取内容执行。

2.2 YodaoCloudMgr.exe(下载器2)
2.2.1 样本概述
YodaoCloudMgr.exe由PrivateImage.png.exe下载并执行,主要用于下载后续载荷。分析时发现文件内部存在文件搜寻、启动进程等相关代码,同时发现样本在通信时使用的不可信证书。

2.2.2 详细分析
表 2‑2 YodaoCloudMgr.exe文件

样本中存在待解密的字符串。

字符串通过对称加密XXTEA算法进行解密操作。

通过stat函数获取文件信息,判断RNGdTMP899是否存在。

如果不存在该文件,则生成15字节的随机字符串,随机字符串用于URL拼接。字节的取值在“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”中。

若当前环境下不存在RNGdTMP899文件,创建RNGdTMP899文件。

而后将随机字符串写入该文件。

判断RNGdTMP899文件属性,若文件不为隐藏属性则将其设置为隐藏属性。

获取RNGdTMP899中的随机字符串,此次生成的随机字符串为RLCTEJddUbAJMJR,并拼接成https[:]//45.86.162.114/query=RLCTEJddUbAJMJR/%20%getting,forum。

根据网络行为观测,样本首先会请求拼接的https[:]//45.86.162.114/query=RLCTEJddUbAJMJR/%20%getting,forum,然后请求https[:]//45.86.162.114/images-css/RLCTEJddUbAJMJR/imagelogo.css获取数据。

之后每隔1分钟,循环请求https[:]//raw.githubusercontent.com/yuiopk1456/beutifymyapp/main/LICENSE。通过URL可以看出攻击者有可能在指定IP失效后通过github平台传输数据,猜测传输的数据可能为XXTEA算法加密后的攻击者指定的IP或域名。

查找接收到数据的标记位置。

对其后数据应存在解密操作。

通过在github上搜索beutifymyapp,关联到疑似该组织的github存储库,存储库的创建者名字也与本次攻击活动中github存储库的创建者名字yuiopk1456相似。仅在2021年11月存在对该存储库的操作,在这之后也未创建其他存储库。

在关联到的相似存储库中,发现可疑的字符串,可能为加密后的域名或IP。

连接github存储库中存放的IP或域名。

由于域名、IP以及github地址均失效,故无法继续跟进。通过静态分析样本推测,攻击者与控制端通信后可能存在获取指定目录文件列表、启动进程等操作。
获取指定目录文件列表。

创建管道。

启动进程。

3 归因分析
在先前观测中发现,部分CNC组织人员会在开发环境中集成vcpkg,此次发现的样本中同样存在该特点,且路径也同以往使用的路径一致。


样本中的部分代码也十分相似。


加密函数大致相同。


综上所述,初步将此次攻击活动归因到CNC组织。
4 威胁框架映射
本次攻击活动共涉及ATT&CK框架中的8个阶段的15个技术点,具体行为描述如下表:
表 4‑1 近期CNC组织攻击活动的技术行为描述表

CNC组织相关攻击活动的行为技术点的ATT&CK框架图谱如下图所示:

5 总结
近些年,APT组织向隔离网络攻击的意图越发明显,渗透隔离网络的攻击样本不断增多,以Darkhotel[1]、幼象[2][3]为典型代表的攻击组织均自研相关攻击武器并不断更新。此次攻击活动中的CNC组织样本同该组织以往的样本相比也进行了升级,在开发阶段同样集成了vcpkg开发环境,也存在从github存储库中获取内容的行为。在横向移动阶段,在判断是否有新存储设备接入的手法上,与此前通过GetDriveTypeA获取接入设备的类型的判断方法不同,本次攻击活动的样本通过不断获取驱动器列表的方法,一旦发现有新存储设备接入,则将文件复制到新接入的存储设备中,以便达成在隔离网中传播的目的。
6 IOC

参考资料
[1] Darkhotel组织渗透隔离网络的Ramsay组件分析
https://www.antiy.cn/research/notice&report/research_report/20200522.html
[2] “幼象”组织针对巴基斯坦国防制造商的攻击活动分析报告
https://www.antiy.cn/research/notice&report/research_report/20210222.html
[3] “幼象”组织在南亚地区的网络攻击活动分析
https://www.antiy.cn/research/notice&report/research_report/20211119.html