eSentire关于伊朗关联的MuddyWaterAPT分析报告

admin 2026-03-19 17:10:24 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该报告分析了伊朗APT组织MuddyWater利用Tsundere僵尸网络进行网络攻击的活动。Tsundere通过以太坊区块链智能合约隐藏C2服务器地址,使用AES-256加密通信。报告详细解析了PowerShell加载器、恶意软件功能和持久化机制,发现其规避独联体国家且疑似源自俄罗斯MaaS平台。IOC包括两个C2地址、多个文件哈希和命令行特征。 综合评分: 87 文章分类: 威胁情报,恶意软件,漏洞分析,应急响应


cover_image

eSentire 关于伊朗关联的MuddyWater APT 分析报告

原创

ZM ZM

暗镜

2026年3月17日 06:01 北京

2026年3月,eSentire调查了一个开放目录网络服务器,该服务器被认为与MuddyWater有关。MuddyWater是一个伊朗国家支持的APT组织,至少从2017年起就活跃于网络,以对全球组织进行网络间谍活动而闻名。调查期间,TRU发现了一个用于建立持久性并部署Tsundere僵尸网络恶意软件的文件。

Tsundere 是一种僵尸网络,它允许在受害者机器上执行任意命令,并使用一种名为“EtherHiding”的技术来获取存储在以太坊区块链智能合约中的 C2 服务器。该恶意软件被怀疑是源自俄罗斯的恶意软件即服务 (MaaS) 产品,TRU 的分析通过发现其逻辑支持了这一发现,该逻辑会检查受感染主机是否位于独联体国家(包括乌克兰),如果是则终止执行。MuddyWater 部署 Tsundere 表明,他们正在利用 MaaS 产品(即使是俄罗斯威胁行为者开发的 MaaS 产品)来实现其行动目标。

Stager PowerShell 分析 (reset.ps1)

在打开的目录中找到的 PowerShell 脚本“reset.ps1”是一个暂存器,它解码、解密并执行名为“sysuu2etiprun.js”的 Tsundere Botnet 和名为“VfZUSQi6oerKau.js”的持久化模块。

函数“bxgdbzgf”接受三个参数:十六进制编码的待解密密文、base64编码的AES密钥和base64编码的AES IV。它被调用两次,第一次用于解密Tsundere,第二次用于解密持久化模块。

以下 CyberChef 配方模拟了 reset.ps1 的行为——使用 reset.ps1 中标识的 AES 密钥和 IV 解密持久化模块和 Tsundere Botnet 有效载荷:

Find_/_Replace({‘option’:’Regex’,’string’:'[^0-9A-Fa-f]’},”,true,true,true,true)

AES_Decrypt({‘option’:’Base64′,’string’:’iW06Rp1urCAH5d26NZHHZL6ehy57J4MVvkM3T/alhuU=’},{‘option’:’Base64′,’string’:’lTKi4AViF/tqc1+6HGprfw==’},’CBC’,’Hex’,’Raw’,{‘option’:’Hex’,’string’:”},{‘option’:’Hex’,’string’:”})

Tsundere 分析 (sysuu2etiprun.js)

Tsundere 使用 WebSocket + AES-256-CBC 加密算法与 C2 服务器建立加密通道。C2 服务器地址通过以太坊区块链上的 RPC 提供程序列表获取,这些 RPC 提供程序用于从以太坊智能合约中获取 C2 地址。这种技术被称为“以太坊隐藏”(EtherHiding)。

在获取 C2 地址之前,Tsundere 会通过 PowerShell 检查目标机器的语言是否属于以下任何国家/地区。如果是,则立即退出。

亚美尼亚

白俄罗斯

哈萨克斯坦

吉尔吉斯斯坦

摩尔多瓦

俄罗斯

乌克兰

在确认受害设备不属于上述国家/地区列表后,它向 RPC 提供程序发送请求以检索十六进制编码的 C2 地址,通过 Websocket 连接到 C2,并建立消息处理程序,例如“handleMessage”。

下图显示了向 RPC 提供程序发送请求时使用的逻辑,其中使用ethers.js库从智能合约中获取 C2 地址字符串。

分析中发现了以下以太坊钱包和智能合约地址:

钱包所有者:

0x002E9EB388CBD72BAD2E1409306AF719D0DB15E4

智能合约:

0x2B77671CFEE4907776A95ABBB9681EEE598C102E

以下 RPC 服务器用于确定要使用的 C2 地址,方法是同时查询所有这些服务器,并选择返回频率最高的 C2 地址:

https://eth.llamarpc.com

https://mainnet.gateway.tenderly.co

https://rpc.flashbots.net/fast

https://rpc.mevblocker.io

https://eth-mainnet.public.blastapi.io

https://ethereum-rpc.publicnode.com

https://rpc.payload.de

https://mainnet.eth.cloud.ava.do

https://eth.drpc.org

https://eth.merkle.io

为了说明,这里是钱包地址到智能合约地址的Set String函数输入数据(从十六进制解码),揭示了193.17.183[.]126(ASN 400992 “周义卫星通信”) 处的 Tsundere Botnet C2。

钱包到智能合约有三笔交易,每笔交易都揭示了两个不同的 Tsundere Botnet C2,一个是前面提到的,另一个是185.236.25[.]119(ASN 400992“卫星通信”)。

Tsundere 通过 EtherHiding 获取 C2 服务器后,首先与其建立初始连接以获取 32 字节的 AES 密钥,然后通过后续通信获取 16 字节的 AES IV。之后,它通过对包含受害机器指纹信息的 JSON 序列化对象(如下所示)进行 sha256 哈希运算,生成受害机器的硬件 ID (HWID):

用户名

计算机名称

操作系统平台

操作系统架构

CPU型号

GPU 型号

MAC地址

总内存

Node.js 版本

Windows 版本

卷序列号

BIOS 信息

机器 GUID

然后,它将此硬件 ID 和相关的指纹信息发送到 C2 服务器。

下表列出了在对受害计算机进行指纹识别过程中使用的命令行:

| | | | — | — | | 命令 | 描述 | | powershell.exe -命令“Get-WmiObject Win32_VideoController | Select-Object -ExpandProperty Name” | 通过 PowerShell 从 WMI 获取 GPU 名称 | | reg.exe 查询“HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion” /v 产品名称 | 通过 LOLBin reg.exe 获取的 Windows 版本 | | 卷 | 通过正则表达式匹配 vol 命令的标准输出获取卷序列号 | | reg.exe 查询“HKLM\HARDWARE\DESCRIPTION\System\BIOS” | LOLBin reg.exe 获取的 BIOS 信息 | | reg.exe 查询“HKLM\SOFTWARE\Microsoft\Cryptography” /v MachineGuid | LOLBin reg.exe 获取了机器 GUID |

后续与C2服务器的通信使用AES-256密钥/初始化向量进行解密。解密后的消息采用JSON格式,并包含一个名为“id”的键,用于区分包含待执行的JavaScript代码的消息和仅用于与服务器保持心跳“pong”通信的消息。与JavaScript代码执行关联的“id”值为数值“1”,而“pong”值为字符串“pong”。

Tsundere 通过从接收到的消息内容创建一个新的 JavaScript 函数来执行 C2 命令,然后立即使用 .call() 调用该函数。

持久化模块分析 (VfZUSQi6oerKau.js)

持久化模块会安装依赖项(ws、[email protected] ),并验证执行环境以确保已安装 Node.js 和 NPM。然后,它通过spawn或execSync(备用选项)执行 Tsundere 有效载荷文件,并通过 PowerShell 命令在 Run 注册表项中创建一个新值来建立持久化。文中频繁使用俄语;为了清晰起见,我们在图中添加了翻译后的注释。

以下是此过程中使用的一个 PowerShell 命令示例。请注意,值名称是一个随机生成的 32 个字符的十六进制字符串,例如“9f3a7c1d4b2e8a0c6d5f1e9a3c7b0d12”。

IOC指标:

| | | | | — | — | — | | 类型 | 价值 | 描述 | | IPv4 地址 | 193.17.183.126 | 僵尸网络 C2 | | IPv4 地址 | 185.236.25.119 | 僵尸网络 C2 | | 文件 | 7ab597ff0b1a5e6916cad1662b49f58231867a1d4fa91a4edf7ecb73c3ec7fe6 | Stager “reset.ps1” | | 文件 | 6a19953b6bb1b4eedb8beba5f9e1f4d1eb64a283a5f90f0deeba89593a3ca9f4 | 僵尸网络“sysuu2etiprun.js”(已混淆) | | 文件 | dd87dfb302501e3cbe2e59fca9e14bfd53e65ed313c1b70e4d7daf68d86386ff | 僵尸网络“sysuu2etiprun.js”(已反混淆) | | 文件 | e3c0ffeb5fcaab75bb2cf32c930e32b3f219325cb72ba813a033531aa2ff0305 | 持久化模块“VfZUSQi6oerKau.js”(已混淆) | | 文件 | df8b94f7b3399b005cb64e879cfe04bfc3ba1499cf98608c10e532dbb493fa8d | 持久化模块“VfZUSQi6oerKau.js”(已反混淆) | | 命令行 | powershell.exe -Command “[System.Globalization.CultureInfo]::InstalledUICulture.Name” | 用于确定是否为独联体国家的命令 | | 命令行 | powershell.exe -命令“Get-WmiObject Win32_VideoController | Select-Object -ExpandProperty Name” | 通过 PowerShell 从 WMI 获取 GPU 名称 | | 命令行 | reg.exe 查询“HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion” /v 产品名称 | 通过 LOLBin reg.exe 获取的 Windows 版本 | | 命令行 | 卷 | 通过正则表达式匹配 vol 命令的标准输出获取卷序列号 | | 命令行 | reg.exe 查询“HKLM\HARDWARE\DESCRIPTION\System\BIOS” | LOLBin reg.exe 获取的 BIOS 信息 | | 命令行 | reg.exe 查询“HKLM\SOFTWARE\Microsoft\Cryptography” /v MachineGuid | LOLBin reg.exe 获取了机器 GUID | | 命令行 | powershell -Command “Set-ItemProperty -Path ‘HKCU:\Software\Microsoft\Windows\CurrentVersion\Run’ -Name ‘9f3a7c1d4b2e8a0c6d5f1e9a3c7b0d12’ -Value ‘cmd.exe /c “C:\Users\\AppData\Local\Nodejs\node-v18.17.0-win-x64\node.exe” ” C:\Users\\AppData\Local\Nodejs\VfZUSQi6oerKau.js”‘” | |


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:暗镜 ZM ZM《eSentire 关于伊朗关联的MuddyWater APT 分析报告》

AgentSecurityDLP 网络安全文章

AgentSecurityDLP

文章总结: 该文档介绍了一款名为AgentSecurityDLP的企业级数据防泄漏系统,具备146条敏感信息检测规则,覆盖金融、医疗等20多个行业。系统采用五层
评论:0   参与:  0