Tomiris 组织的新工具与技术:多种反向Shell、Havoc与AdaptixC2
在对Tomiris威胁组织的活动进行跟踪时,我们发现了其在2025年初开始的新恶意活动。这些攻击针对外交部、政府间组织和政府实体,显示出其对高价值政治和外交基础设施的关注。在多个案例中,我们追踪了威胁行为者从初始感染到部署后期利用框架的完整行动。
这些攻击凸显了Tomiris战术的一个显著转变,即更多地使用利用公开服务(例如Telegram和Discord)作为命令与控制(C2)服务器的植入程序。这种方法可能是为了将恶意流量与合法的服务活动混合,以规避安全工具的检测。
大多数感染始于部署用各种编程语言编写的反向Shell工具,包括Go、Rust、C/C#/C++和Python。其中一些工具随后会投递一个开源的C2框架:Havoc或AdaptixC2。
报告摘要:
- 发现了用多种编程语言开发的新植入程序;
- 部分植入程序使用Telegram和Discord与C2通信;
- 攻击者在攻击生命周期的后续阶段使用了Havoc和AdaptixC2框架。
技术细节
初始访问
感染始于一封包含恶意压缩包的钓鱼邮件。该压缩包通常受密码保护,密码通常包含在邮件正文中。压缩包内是一个可执行文件。在某些情况下,可执行文件的图标被伪装成Office文档图标,并且文件名包含诸如.doc<dozen_spaces>.exe的双重扩展名。然而,在压缩包中也经常遇到没有图标或双重扩展名的恶意可执行文件。这些文件的名称通常非常长,在查看压缩包时无法完全显示,因此其扩展名对用户是隐藏的。
执行该文件后,系统即被感染。然而,在相同文件名的压缩包下经常存在不同的植入程序,并且攻击者的行为因案例而异。
植入程序
Tomiris C/C++ 反向Shell
该植入程序是一个反向Shell,等待操作员发出命令(在我们观察到的大多数情况下,感染是人工操作的)。在进行快速环境检查后,攻击者通常会发出命令以下载另一个后门——AdaptixC2。AdaptixC2是一个用于后期利用的模块化框架,其源代码可在GitHub上获取。攻击者使用内置的OS实用程序如bitsadmin、curl、PowerShell和certutil来下载AdaptixC2。使用Tomiris C/C++反向Shell的典型场景概述如下:
- 环境侦察。攻击者收集各种系统信息,包括当前用户信息、网络配置等。
- 下载下一阶段植入程序。攻击者尝试从多个URL下载AdaptixC2。
- 验证下载成功。下载完成后,攻击者检查AdaptixC2是否存在于目标文件夹中且未被安全解决方案删除。
- 为下载的有效载荷建立持久性。下载的植入程序被添加到注册表的Run项中。
- 验证持久性成功。最后,攻击者检查植入程序是否存在于注册表的Run项中。
今年,我们观察到了三种C/C++反向Shell变体,其功能最终都提供了对远程控制台的访问。这三个变体的功能都极简——它们既不自我复制,也不在系统中持久化。本质上,如果运行进程在操作员下载并将下一阶段植入程序添加到注册表之前被终止,感染就会立即结束。
第一个变体很可能基于2021年发现的Tomiris Downloader源代码。这可以从使用相同的函数来隐藏应用程序窗口看出。
Tomiris Rust 下载器
Tomiris Rust Downloader是一个先前未记录的用Rust编写的植入程序。尽管文件大小相对较大,但其功能极简。
执行后,木马首先通过依次运行一系列控制台命令来收集系统信息。然后,它搜索文件并编译其路径列表。木马对具有以下扩展名的文件感兴趣:.jpg、.jpeg、.png、.txt、.rtf、.pdf、.xlsx和.docx。这些文件必须位于驱动器C:/、D:/、E:/、F:/、G:/、H:/、I:/或J:/上。同时,它会忽略包含以下字符串的路径:".wrangler"、".git"、“node_modules”、“Program Files”、“Program Files (x86)"、“Windows”、“Program Data"和"AppData”。
使用多部分POST请求将收集到的系统信息和发现的文件路径列表通过以下URL发送到Discord:
|
|
值得注意的是,只有发现的文件的路径被发送到Discord;木马不传输实际文件。
发送请求后,木马在临时目录中创建两个脚本:script.vbs和script.ps1。在将script.ps1放到磁盘之前,Rust Downloader从硬编码的片段创建一个URL并将其添加到脚本中。然后它使用cscript实用程序执行script.vbs,后者又通过PowerShell运行script.ps1。script.ps1脚本在一个一分钟延迟的无限循环中运行。它尝试从下载器提供的URL下载ZIP压缩包,将其解压到%TEMP%\rfolder,并执行所有解压出来的扩展名为.exe的文件。script.ps1中的占位符<PC_NAME>被替换为受感染计算机的名称。
值得注意的是,至少在一个案例中,下载的压缩包包含一个与Havoc相关的可执行文件,这是另一个开源后期利用框架。
Tomiris Python Discord 反向Shell
该木马用Python编写,并使用PyInstaller编译成可执行文件。主脚本也用PyArmor进行了混淆。我们能够去除混淆并恢复原始脚本代码。该木马用作感染的初始阶段,主要用于侦察和下载后续植入程序。我们观察到它下载了AdaptixC2框架和Tomiris Python FileGrabber。
该木马基于实现通过Discord通信的"discord” Python包,并使用该即时通讯工具作为C2通道。其代码包含一个用于与Discord C2服务器通信的URL和一个认证令牌。功能上,该木马充当反向Shell,接收来自C2的文本命令,在受感染系统上执行它们,并将执行结果发送回C2。
Tomiris Python 文件抓取器
如前所述,该木马是通过Tomiris Python Discord ReverseShell安装到系统中的。攻击者通过执行以下控制台命令来完成此操作:
|
|
该木马用Python编写,并使用PyInstaller编译成可执行文件。它将具有以下扩展名的文件收集到ZIP压缩包中:.jpg、.png、.pdf、.txt、.docx和.doc。生成的压缩包通过HTTP POST请求发送到C2服务器。在文件收集过程中,会忽略以下文件夹名称:“AppData”、“Program Files”、“Windows”、“Temp”、“System Volume Information”、"$RECYCLE.BIN"和"bin"。
Distopia 后门
该后门完全基于GitHub仓库项目"dystopia-c2",并用Python编写。可执行文件是使用PyInstaller创建的。该后门支持在受感染系统上执行控制台命令、下载和上传文件以及终止进程。在一个案例中,我们能够追踪到用于下载另一个木马——Tomiris Python Telegram ReverseShell的命令。
攻击者在受感染系统上执行的控制台命令序列:
|
|
Tomiris Python Telegram 反向Shell
该木马用Python编写,并使用PyInstaller编译成可执行文件。主脚本也用PyArmor进行了混淆。我们设法去除了混淆并恢复了原始脚本代码。该木马使用Telegram与C2服务器通信,其代码包含一个认证令牌和一个"chat_id",用于连接机器人并接收要执行的命令。功能上,它是一个反向Shell,能够接收来自C2的文本命令,在受感染系统上执行它们,并将执行结果发送回C2。
最初,我们假设这是该组织先前使用的Telemiris机器人的更新版本。然而,在比较了两个木马的原始脚本后,我们得出结论,它们是不同的恶意工具。
用作初始感染程序的其他植入程序
下面,我们列出了一些同样在钓鱼压缩包中分发的植入程序。遗憾的是,我们无法追踪涉及这些植入程序的进一步行动,因此只能提供它们的描述。
- Tomiris C# Telegram ReverseShell:另一个使用Telegram接收命令的反向Shell。这次是用C#编写的,并使用以下凭据进行操作。
- JLORAT:恶意行为者使用的最古老的植入程序之一,自2022年首次发现以来几乎没有变化。它能够截图、执行控制台命令并将文件从受感染系统上传到C2。该木马的当前版本仅缺少下载命令。
- Tomiris Rust ReverseShell:这个木马是一个用Rust编程语言编写的简单反向Shell。与攻击者使用的其他反向Shell不同,它使用PowerShell作为Shell,而不是cmd.exe。
- Tomiris Go ReverseShell:该木马是一个用Go编写的简单反向Shell。我们能够恢复其源代码。它建立到62.113.114.209端口443的TCP连接,运行cmd.exe并将标准命令行输入和输出重定向到已建立的连接。
- Tomiris PowerShell Telegram 后门:原始可执行文件是一个用C++编写的简单打包程序。它从自身提取一个Base64编码的PowerShell脚本,并使用以下命令行执行它。提取的脚本是一个用PowerShell编写的后门,使用Telegram与C2服务器通信。它只有两个关键命令:
/upload和/go。 - Tomiris C# ReverseShell:一个用C#编写的简单反向Shell。除了控制台命令外,它不支持任何其他命令。
其他植入程序
在调查过程中,我们还从下载后续植入程序的服务器上发现了几个反向SOCKS代理植入程序。这些样本也在受感染系统上被发现。遗憾的是,我们无法确定具体是哪个植入程序下载了它们。我们认为这些植入程序很可能用于代理来自漏洞扫描器的流量,并实现在网络内的横向移动。
- Tomiris C++ ReverseSocks(基于GitHub Neosama/Reverse-SOCKS5):该植入程序是一个用C++编写的反向SOCKS代理,其代码几乎完全复制自GitHub项目Neosama/Reverse-SOCKS5。原始项目的调试信息已被移除,并添加了隐藏控制台窗口的功能。
- Tomiris Go ReverseSocks(基于GitHub Acebond/ReverseSocks5):该木马是一个用Golang编写的反向SOCKS代理,其代码几乎完全复制自GitHub项目Acebond/ReverseSocks5。原始项目的调试信息已被移除,并添加了隐藏控制台窗口的功能。
受害者
在此活动中,超过50%的鱼叉式钓鱼邮件和诱饵文件使用了俄语名称并包含俄语文本,这表明其主要关注点是俄语用户或实体。其余邮件则针对土库曼斯坦、吉尔吉斯斯坦、塔吉克斯坦和乌兹别克斯坦的用户,并包含其各自民族语言的内容。
归因
在我们之前的报告中,我们描述了Tomiris APT组织使用的JLORAT工具。通过分析大量JLORAT样本,我们能够识别攻击者常用的几种不同的传播模式。这些模式包括使用长且高度特定的文件名,以及以密码保护压缩包的形式分发这些工具,密码格式为"xyz@2025"(例如"min@2025"或"sib@2025")。我们在本文描述的反向Shell和其他工具中也观察到了相同的模式。此外,不同的恶意软件样本经常以相同的文件名分发,表明它们之间存在关联。
我们还分析了该组织的活动,并发现了与其相关的其他工具,这些工具可能存储在同一服务器上或使用相同的服务器作为C2基础设施。我们非常有信心地认为这些工具都属于Tomiris组织。
结论
Tomiris的2025年活动利用多语言恶意软件模块来增强操作灵活性,并通过显得不那么可疑来规避检测。其主要目标是建立对目标系统的远程访问,并将其用作立足点来部署其他工具,包括AdaptixC2和Havoc,以进行进一步的利用和持久化。
战术上的演变凸显了威胁行为者对隐秘性、长期持久性以及战略性地针对政府和政府间组织的关注。使用公开服务进行C2通信以及使用多语言植入程序凸显了需要先进的检测策略,例如行为分析和网络流量检查,以有效识别和缓解此类威胁。
入侵指标(IoC)
更多入侵指标及其更新,请参考我们的APT报告服务客户。如有兴趣,请联系 intelreports@kaspersky.com。
恶意软件哈希值示例:
- Distopia Backdoor: B8FE3A0AD6B64F370DB2EA1E743C84BB
- Tomiris Python Discord ReverseShell: 091FBACD889FA390DC76BB24C2013B59
- Tomiris C/C++ ReverseShell: 0F955D7844E146F2BD756C9CA8711263
- Tomiris Rust Downloader: 1083B668459BEACBC097B3D4A103623F
- JLORAT: C73C545C32E5D1F72B74AB0087AE1720
- AdaptixC2: CD46316AEBC41E36790686F1EC1C39F0
- Havoc: 4EDC02724A72AFC3CF78710542DB1E6E
域名/IP/URL示例:
- Discord Webhooks:
https://discord[.]com/api/webhooks/1392383639450423359/... - Telegram Bots:
https://api.telegram[.]org/bot7804558453:AAFR2OjF7ktvyfygleIneu_8WDaaSkduV7k/ - C2服务器IP: 77.232.39[.]47, 109.172.85[.]63 等。
- 恶意URL:
http://188.127.251[.]146:8080/sbchost.rar,http://62.113.115[.]89/offel.exe等。