编译:奇安信代码卫士团队
卡巴斯基实验室昨天发布博客文章,起底2017年4月NSA黑客组织“影子经纪人”曾提到过的“Lost in Translation”泄密事件中牵涉的 APT 组织。以下为全文翻译:
概述
2017年4月,“影子经纪人”发布了著名的“Lostin Translation”泄密事件,其中包含一个用于查看受攻陷系统中其它 APT 组织痕迹的 python脚本 sigs.py。每次查看都以函数执行,查看系统中的唯一签名,例如具有唯一名称或注册表路径的文件。尽管某些检查是空的,但 sigs.py 中列出了44个条目,其中很多都和这个神秘的 APT 组织有关。
2018年,我们发现了某 APT 组织并将其描述为该脚本的第27个函数,称之为”DarkUniverse”。该APT 组织至少已活跃8年之久(2009年至2017年)。鉴于唯一代码的重叠性,我们认为 DarkUniverse 是 ItaDuke 集活动的一部分。ItDuke 是自2013年起就已知的威胁者。它使用 PDF 利用代码释放恶意软件并通过推特账户存储 C2 服务器的 URL。
技术详情
感染向量
该组织通过鱼叉式钓鱼传播恶意软件。他们为每个受害者都准备了一个字母以获取他们的注意力并促使他们打开恶意微软 Office 文档附件。在发送前,每个恶意软件样本都被立即编译并包括最新可用的恶意软件可执行文件版本。由于该框架从2009年到2017年间不断变化,因此最新的版本和最初版本完全不同,因此本报告说明的只是2017年之前使用的最新的恶意软件版本。
内嵌在文档中的可执行文件从本身提取两个恶意文件 updater.mod 和 glue30.dll,并且将它们存储在恶意软件的工作目录:%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Reorder。
之后,它将合法的rundll32.exe 可执行文件复制到相同的目录中并借此运行updater.mod 库。
Updater.mod 模块
该模块被当做动态链接库执行,其中只含有一个导出函数 callme@16。该模块负责提供和 C2服务器的通信、提供恶意软件的完整性和持久性机制并管理其它恶意软件模块。
持久性机制由 updater.mod 放到开始文件夹中的一个链接文件提供,目的是确保重启后恶意软件的执行。如果该链接文件被损坏,updater.mod 模块将进行恢复。
和 C2 进行通信
在这次攻击活动中,C2服务器多数基于mydrive.ch 的云存储。操纵者为每个受害者都创建了一个新账户并上传了额外的恶意软件模块和配置文件及执行该配置文件的命令。一旦执行,updater.mod 模块就会连接到 C2 并执行如下动作:
- 将命令文件下载到工作目录;
- 将由额外的恶意模块(如存在)收集和准备的文件上传到 C2。这些文件位于工作目录中名为“queue”或“ntfsrecover”的一个目录中。这个目录中的文件可以具有 .d 或 .upd 的其中一种扩展名,具体取决于它们是否已被上传到服务器。
- 下载额外的恶意软件模块:
- dfrgntfs5.sqt –用于执行 C2 命令的模块;
- msvcrt58.sqt –用于窃取邮件凭证和邮件的模块;
- zl4vq.sqt – dfrgntfs5 使用的合法 zlib 库。
- %victim_ID%.upe – dfrgntfs5 的可选插件。遗憾的是我们无法获取该文件。
所有的恶意软件模块均通过某种自定义算法进行加密:
虽然C2 账户的凭证存储在注册表的配置文件中,但 updater.mod 模块同时在可执行文件中将拷贝存储为加密字符串。同时,该配置文件制定 updater.mod 轮询 C2 的频率,从而同时支持活跃模式和半活跃模式。注册表中的恶意软件配置该恶意软件配置存储在 SOFTWARE\AppDataLow\GUI\LegacyP 条目中的注册表中。下表具体说明了各种不同的值:
值 | 描述 |
C1 | C2域名 |
C2 | C2域名路径 |
C3 | C2凭证用户名 |
C4 | C2凭证密码 |
install | 如恶意软件已安装,则为1 |
TL1 | DESACTIVAR|HABILITAR—- 指定 msvcrt58 和 glue 库是否活跃 |
TL2,TL3 | 如果 TL1 非 NULL,则指定应用 TL1 选项时的时间范围 |
“kl” | 如为1,则 updater.mod 应该再次从 C2 下载 msvcrt58.sqt |
“re” | 如为1,则 updater.mod 应该再次从 C2 下载 dfrgntfs5.sqt |
“de” | 如不为0,则该框架应自行卸载 |
“cafe” | REDBULL|SLOWCOW 指定了 updater.mod 轮询C2的频率 |
“path” | 被发送到C2的文件所在文件夹的路径 |
模块 glue30.dll 和 msvcrt58.sqtglue30.dll 恶意软件模块提供了键盘记录的功能。Updater.mod 模块使用 Win API 函数 SetWindowsHookExW 为键盘安装 hook 并将 glue30.dll 注入得到键盘输入的进程中。之后,glue30.dll在每个被hook 进程的上下文中加载并开始拦截输入。Msvcrt58.sqt 模块拦截未加密的 POP3 流量以收集邮件会话和受害者的凭证。该模块从以下进程中查找流量:
- outlook.exe;
- winmail.exe;
- msimn.exe;
- nlnotes.exe;
- eudora.exe;
- thunderbird.exe;
- thunde~1.exe;
- msmsgs.exe;
- msnmsgr.exe.
该恶意软件解析被拦截的 POP3 流量并将结果发送到主模块 (updater.mod) 中以上传到 C2 中。这是通过hook 如下网络相关的 Win API 函数实现的:
- ws2_32.connect;
- ws2_32.send;
- ws2_32.recv;
- ws2_32.WSARecv;
- ws2_32.closesocket.
dfrgntfs5.sqt 模块该模块是DarkUniverse 框架作用最大的组件。它处理如下来自 C2 的大量命令:
命令 | 描述 |
VER | 向服务器发送恶意软件版本。 |
DESINSTALAR | 自行卸载。 |
PANTALLA | 全屏截图并将其保存到 \queue 文件。夹。 |
CAN_TCP, CAN_HTTP, CAN_HTTPS | 将 shellcode 注入 IE 中,和C2 建立直接连接,下载额外代码并将下载结果发送到 C2 并执行下载的代码。 |
MET_TCP, MET_HTTPS | 也是向 IE 注入 shellcode。和上一个命令的唯一不同之处在于,在这个命令中,shellcode 并不会向 C2 发送额外信息,它仅建立连接、下载额外命令并执行。 |
CAN_HTTP_LSASS | 将和 CAN_HTTP 一样的shellcode 注入 LSASS.exe 进程中。 |
SCAN/STOPSCAN | 开始/停止扫描网络。收集关于本地网络的多种不同信息。 |
CREDSCAN | 通过指定的用户名和密码暴力破解 IP 范围。 |
ACTUALIZAR | 更新 dfrgntfs5.sqt |
ACTUALIZARK | 更新 msvcrt58.sqt |
SYSINFO | 收集完整的系统信息。 |
REDBULL | 将 cafe 标志设置为1——活跃 |
SLOWCOW | 将 cafe 标志设置为0——缓慢模式 |
X | 运行指定进程并记录其输出,之后准备该输出日志以上传至 C2。 |
T | 从指定目录获取文件列表。 |
TAUTH | 如指定凭证是合法的,则获取远程服务器的文件列表。 |
G | 向 C2 发送文件。 |
GAUTH | 如指定凭证是合法的,则从共享资源下载特定文件。 |
SPLIT | 将文件分成400KB部分并上传到 C2。 |
FLUSH | 发送由所有组件那一天收集的数据组成的文件并删除它。 |
C1 – C4 | 在注册表 (C1-C4) 中的配置中设置C2。 |
TL1 – TL3 | 在注册表的配置中设置活跃状态 (T1-T3)。 |
ONSTART | 将进程设置为每次恶意软件启动时启动。 |
CLEARONSTART | 撤销上一个 ONSTART 命令。 |
ARP | 运行不可用的 ARP 模块(uncparse.dll—不可用)。这个模块将数据存储到在内部命名为 arpSniff.pcap 的文件中。 |
AUTO | 自动查找预定义文件的更新。 |
MANUAL | 使用 *.upd 模式搜索指定目录中的文件,删除所有找到的文件。 |
REGDUMP | 从注册表收集信息。 |
PWDDUMP | 从 Outlook Express、Outlook、Internet Explorer、Windows Mail 和 Windows Live Mail、Windows Live Messenger 和 Internet Cache 中收集并解密凭证。 |
LOGHASH | 将进程注入 lsass.xe 中并开始在文件 checksums.bk 中收集密码哈希。 |
SENDLOGHASH | 将收集的lsass.exe 进程密码哈希发送到 C2。 |
PROXYINFO | 检查代理凭证是否有效。 |
DHCP | 为本地计算机设置 DHCP 设置。 |
DNS | 为本地机器设置 DNS 设置。 |
FAKESSL | 提供基本的 MITM 功能。 |
受害者图谱
我们发现了约20名受害者,他们位于叙利亚、伊朗、阿富汗、坦桑尼亚、埃塞俄比亚、苏丹、俄罗斯、布鲁塞尔和阿联酋,包括平民和军事组织机构、医疗机构、电信企业、原子能机构。我们认为在2009年至2017年期间即该活动发生的主要时间段内,受害者的人数更多。
结论
DarkUniverse 是一个至少用于8年时间内的完整的网络间谍框架。该恶意软件包含收集用户和受感染系统所有信息的所有必要模块,而且它似乎是完全从零开始开发的。由于唯一代码的重叠性,我们认为 DarkUniverse 的创建者和一系列的ItaDuke 活动相关。攻击者足智多谋且一直在行动的整个生命周期内更新恶意软件,因此2017年观察到的样本和2009年最初的样本完全不同。行动的暂停可能和“Lostin Translation”泄密事件有关,或者只是因为攻击者决定转向更加现代的方式并开始使用更容易得到的工具。
原文链接https://securelist.com/darkuniverse-the-mysterious-apt-framework-27/94897/https://securelist.com/apt-trends-report-q3-2019/94530/
本文由奇安信代码卫士编译,不代表奇安信观点,转载请注明“转自奇安信代码卫士 www.codesafe.cn”