toneillcodes/AlphabetSoup
GitHub: toneillcodes/AlphabetSoup
AlphabetSoup 是一种基于 Living off the Land 原则的 Payload 混淆技术,通过利用受信任系统文件中的字节偏移量来动态重构 Shellcode,从而规避静态特征检测。
Stars: 1 | Forks: 0
# Alphabet Soup:Payload 混淆与重构
## 概述
**Alphabet Soup** 是一种 Payload 混淆技术,它利用 **Living off the Land (LotL)** 原则来规避现代检测引擎。
该技术不再以可预测的格式(如 XOR、Base64 或 AES)存储 shellcode,而是将现有的系统文件(如 `.chm`、`.dll` 或 `.exe` 文件)视为一个**字典**。它从这些受信任的文件中采集特定字节的偏移量,以便在运行时于内存中动态重构 Payload。
## 主要功能
* **LotL 二进制采集:** 使用源自受信任的、Microsoft 签名的二进制文件的字节来重构恶意 Payload。
* **环境密钥绑定:** 支持与目标的**卷序列号** 绑定的可选 **XOR 编码**,确保 Payload 仅能在特定目标机器上重构。
* **静态规避:** 将可识别的 shellcode 转换为 `unsigned long long` 整数数组。这消除了可执行熵,并使数据看起来像不可执行的程序逻辑或元数据。
* **多态输出:** 编码器随机选择字节偏移量。只要字典中有足够的熵,多次执行即可生成唯一的数组,从而使静态字符串或字节序列特征码失效。
## ⚠️ 研究范围与免责声明
**Alphabet Soup 是一个用于数据混淆和环境密钥绑定的概念验证。** 请注意:
* **混淆而非注入:** 该项目的核心是混淆和重构逻辑。提供的加载器使用标准且众所周知的 API 和注入技术(例如 `CreateRemoteThread`、module stomping、动态函数解析)。
* **教育目的:** 本项目不引入新的进程注入原语。它旨在演示如何应用 Living off the Land (LotL) 方法来绕过 shellcode 的静态特征检测。
* **模块化设计:** 重构逻辑设计为与注入方式无关。它依赖于一个简单的 for 循环,可以自定义并用于任何执行技术,包括 Process Hollowing、APC Injection 或 Module Overloading。
## PoC 工作流程
### 1. Payload 生成
以 C 格式生成原始 shellcode(例如,使用 `msfvenom` 或自定义框架)。
### 2. 编码 Payload
运行辅助脚本,将 shellcode 映射到目标字典文件。此示例利用 **Windows CHM 文件**(已编译的 HTML 帮助),原因如下:
* **低可疑度:** 与敏感系统 DLL(如 `ntdll.dll`)相比,EDR 很少监控对 CHM 文件的读取访问。
* **普遍性:** 像 `cliconf.chm` 这样的文件几乎存在于所有 Windows 工作站安装中。
* **稳定性:** 与受 Windows Update 影响的二进制文件(如 `kernel32.dll`)不同,CHM 内容很少被修改,从而确保采集的偏移量在不同补丁级别上仍然有效。
```
dev\AlphabetSoup> python encoder.py -h
usage: encoder.py [-h] [-i INPUT] [-t TEXT] -s SOURCE [-k KEY] [--xor]
options:
-h, --help show this help message and exit
-i, --input INPUT File with \x00 style shellcode
-t, --text TEXT Plain text string
-s, --source SOURCE
-k, --key KEY
--xor
dev\AlphabetSoup>
```
### 3. 更新加载器
获取生成的 `alphabetSoup` 数组并将其粘贴到 PoC 加载器模板中。示例涵盖了 **本地注入**(自身)和 **远程注入**(针对单独的进程)。
### 4. 编译
使用 Microsoft C++ 编译器 (`cl.exe`) 编译加载器:
### 5. 执行
* **本地:** 运行 `local-injection.exe`。
* **远程:** 首先启动目标进程(例如 `notepad.exe`),然后运行 `remote-injection.exe`。
## 未来改进
- [ ] **基于注册表的检索:** 将索引数组存储在 Windows 注册表中,以进一步将重构逻辑与数据分离。
- [ ] **字典验证:** 在重构之前对目标字典文件实施哈希检查,以防止因版本不匹配导致的崩溃。
- [ ] **位置无关代码 (PIC):** 开发基于 PIC 的解码器,以向内存取证工具隐藏重构过程。
- [ ] **睡眠掩码:** 创建一个函数,在进程处于非活动状态时恢复混淆数据,以躲避内存取证工具。
标签:DNS 反向解析, Living off the Land, LotL, Shellcode, SSH蜜罐, 云安全监控, 云资产清单, 多态, 恶意软件, 技术调研, 数据展示, 混淆, 环境密钥, 端点可见性, 红队, 绕过检测, 网络安全, 载荷隐藏, 进程注入, 逆向工具, 逆向工程, 隐私保护, 静态分析