S3N4T0R-0X0/RustyWater-ShellCode-Dropper
GitHub: S3N4T0R-0X0/RustyWater-ShellCode-Dropper
RustyWater 是一个用 Rust 编写的多阶段 shellcode 投放器,通过多层反分析检测、进程注入和注册表持久化技术实现隐蔽的恶意载荷部署。
Stars: 102 | Forks: 30
# RustyWater ShellCode Dropper
RustyWater 代表了 Static Kitten 组织攻击中整个对抗行动的主要 payload 和骨干。
RustyWater 是一个 Rust 编译的可执行文件(伪装成带有虚假 Cloudflare 图标的 reddit.exe),被称为 RustyWater(或与 Archer RAT/RUSTRIC 有关),它通过进程注入和基于注册表的持久化,具备强大的 AV/EDR 规避能力。
1-反分析技术
Reddit.exe 实现了一个全面的 8 层反分析系统,该系统会主动探测执行环境是否存在监控、虚拟化或调试迹象。每一层都充当一个过滤器,确保 payload 只在真正的目标上释放。
第 1 层:CPU 核心数验证
最初,RustyWater “士兵”会环顾四周,评估自己所处机器的性能。它会问自己:这个处理器有多少个核心?分析环境(如沙箱)通常资源有限,往往只有两个或更少的核心。如果“士兵”发现机器如此羸弱,它会立即断定环境不安全,并消失得无影无踪,从而白费分析人员的所有努力。
在提供的图像中,Reddit.exe 程序代码的一部分说明了这种机制。箭头指向检查“cpu count”的代码行,程序在此处检查处理器核心的数量。如果数量小于等于两个,意味着周围环境可疑,程序会立即停止执行。

第 2 层:虚拟机特征检测
“士兵”仅凭 CPU 检查并不信服,于是它进行了更深入的挖掘。它知道虚拟机会留下特定的数字足迹,就像一路留下的面包屑。它会扫描正在运行的进程列表,寻找与虚拟化软件相关的熟悉名称:vmtoolsd.exe (VMware)、vboxtray.exe (VirtualBox) 和 xenservice.exe (Xen)。它还会检查磁盘上是否存在特定的驱动文件,例如 vmmouse.sys 或 VBoxGuest.sys。
逻辑很简单:如果一台机器正在运行 VMware tools,它很可能是一台虚拟机。如果它是一台虚拟机,它很可能是一个分析环境。如果它是一个分析环境,“士兵”就会放弃任务。

第 3 层:分析工具注册表扫描
然后,“士兵”会冒险进入 Windows 注册表——这是一个庞大的系统设置数据库。它知道安全分析师经常留下他们的工具,而这些工具会留下痕迹。它会搜索与调试和监控软件(如 Wireshark、Process Hacker、OllyDbg 和 IDA Pro)相关的注册表键。任何这些键的存在都证实了环境是充满敌意的,从而触发立即关闭。

第 4 层:RAM 大小分析
如果系统报告的内存小于 4GB,“士兵”就会怀疑这是一个资源匮乏的沙箱并停止执行。此检查是过滤掉许多自动化分析系统的可靠方法。

第 5 层:调试器检测
现在,“士兵”会检查其直接周围的环境。它使用一个简单但有效的 Windows API 调用——IsDebuggerPresent——来确定自己是否正在调试器的控制下运行。调试器就像一台显微镜;如果存在调试器,就意味着有人正在监视“士兵”的每一条指令。“士兵”在这种监视下不会执行任何操作。

第 6 层:系统运行时间检查
时间本身也成了一个因素。“士兵”会检查自上次启动以来系统运行了多长时间。沙箱和分析环境通常是在执行样本之前刚刚启动的。如果系统运行时间少于 15 分钟,“士兵”就会将其标记为可疑的、短暂的环境并撤退。

第 7 层:用户名分析
然后,“士兵”会检查用户的身份。它将当前用户名与常见分析账户的黑名单进行比较:"sandbox"、"virus"、"malware"、"analysis"、"vmware" 和 "test"。这些用户名经常在隔离的分析环境中使用。如果用户名与列表中的任何条目匹配,任务将立即中止。

第 8 层:MAC 地址和硬件配置文件验证
最后,“士兵”会查看机器的网卡。它会根据虚拟化软件使用的已知供应商前缀来检查 MAC 地址。以 00:0C:29 开头的 MAC 地址属于 VMware,而 08:00:27 属于 VirtualBox。它还会扫描硬件配置文件,在系统描述中寻找 "VMware" 或 "VirtualBox" 等字符串。如果发现其中任何一个,“士兵”就知道自己处于虚拟机内部,并会切断连接。

2. 注册表持久化
一旦反分析检查通过,Reddit.exe 就会建立稳健的注册表持久化机制,以确保它在系统重启后仍能存活:
该植入物巧妙地将自己伪装成合法的 Windows Update 组件,使其在普通观察者看来不那么可疑。持久化机制包括:
- 针对权限问题的错误处理(如果访问 HKLM 失败,则回退到 HKCU)
- 路径验证,以确保可执行文件存在于指定位置
- 启动验证,以确认注册表项已成功创建
这确保了每次用户登录时,Reddit.exe 都会自动以其权限执行。

3. 进程注入
最后也是最复杂的一项功能是注入到 explorer.exe 中,允许植入物在受信任的系统进程内执行 shellcode。
Reddit.exe 实现了一种经典但有效的远程线程注入技术:
- 进程发现:扫描正在运行的进程以定位 explorer.exe 并获取其进程 ID (PID)。
- 获取句柄:以 PROCESS_ALL_ACCESS 权限打开目标进程。
- 内存分配:使用 VirtualAllocEx 在 explorer.exe 的地址空间内分配 RWX(读、写、执行)内存。
- Shellcode 传输:使用 WriteProcessMemory 写入恶意 payload。
- 执行:通过 CreateRemoteThread 创建一个远程线程,指向注入的 shellcode。
这种技术允许攻击者将他们的恶意代码隐藏在一个受信任的系统进程中,使得安全解决方案的检测变得极其困难。

为什么攻击者使用 explorer.exe 进行进程注入?
攻击者故意选择以 explorer.exe 作为注入其恶意 shellcode 的目标。这种选择并非随机——它是基于战略优势做出的:
- 合法的系统进程 - 它的存在是正常的,不会引起警觉。
- 始终运行 - 保证在所有 Windows 系统上都可用。
- 用户上下文 - 继承当前用户的权限。
- 持久化 - 即使主要的恶意进程被终止,它也能存活。

放置一个 HTTP payload:使用 XOR 加密对其进行加密,以避免在网络中被检测到。
修改文件元数据以规避检测
在构建 reddit.exe payload 之后,我们必须修改其元数据,使其看起来像一个合法的、无可疑之处的程序。安全解决方案和 EDR 工具会检查这些元数据字段,因此更改它们对于规避检测至关重要。
我们要修改哪些元数据?
File Version:文件的版本号
Product Version:产品的版本号
File Description:文件对自身的描述(出现在任务管理器中)
Product Name:产品的名称
Company Name:开发公司的名称
LegalCopyright:版权信息
OriginalFilename:文件的原始名称
使用的工具:rcedit
为了执行这些修改,我们使用了一个名为 rcedit 的轻量级、免费工具,该工具可在 GitHub 上官方获取。
链接:https://github.com/electron/rcedit/releases/download/v2.0.0/rcedit-x64.exe

- Dropper:CertificationKit.ini
我观察到攻击者并不直接在目标系统上执行 reddit.exe。相反,他们依赖于一个名为 CertificationKit.ini (Dropper) 的中间程序,该程序携带加密的 payload,在运行时将其解密,并在受害者的机器上执行。
并且该 Dropper 是用 Rust 编写的。虽然它伪装成一个看似无害的配置文件 (CertificationKit.ini),但实际上它是一个编译好的二进制文件,负责在目标系统上部署和执行主要的 payload。
这种技术提供了几个优势:
1. 规避检测:实际的 payload 保持加密状态,使得杀毒软件和安全工具更难检测到它。
2. 绕过分析:即使 Dropper 被发现或分析,主要 payload 仍保持加密和受保护状态。
3. 多阶段执行:攻击分多个阶段进行,这使得分析过程复杂化,并延缓了安全团队的事件响应速度。

Payload 加密:主要的 payload (reddit.exe) 存储在 ENCRYPTED_PAYLOAD 节中,并使用 Dropper 中定义的 XOR 密钥 (XOR_KEY) 进行加密。这确保了 payload 在运行时之前始终受到保护。
目标路径:Dropper 将解密后的 payload 写入 Dropper 配置 (TARGET_PATH) 中指定的位置。必须将此路径正确设置为受害系统上的预期目录。
运行时解密:执行后,Dropper 使用 XOR 密钥解密 payload,并将其作为 CertificationKit.ini 部署到目标位置。
这种设置允许攻击者保持隐蔽、规避检测,并确保 payload 只有在受害者的系统上执行时才能被访问。

标签:DNS 反向解析, Rust, 反虚拟机, 可视化界面, 恶意软件, 端点可见性, 网络流量审计, 通知系统