sp4r1ng/ShadowForge
GitHub: sp4r1ng/ShadowForge
基于 C++17 的 Windows x64 EDR 规避研究框架,整合直接系统调用、NTDLL 脱钩、ETW 屏蔽、APC 注入与多层 Shellcode 混淆技术。
Stars: 0 | Forks: 0
# ShadowForge
EDR 规避研究框架 —— C++17, x64, Windows.

## 模块
| # | 模块 | 描述 |
|---|--------|-------------|
| 1 | **PE Parser** | 完整的 PE32/PE32+ 分析 —— headers、sections、imports、exports |
| 2 | **Direct Syscalls** | 通过 EAT 排序 + x64 `syscall` stub 在运行时解析 SSN |
| 3 | **NTDLL Unhooker** | 从磁盘读取干净的 ntdll,覆写被挂钩的 `.text` section |
| 4 | **ETW Patcher** | 使用 `xor rax,rax; ret` 修补 `EtwEventWrite` / `EtwEventWriteFull` |
| 5 | **APC Injector** | 使用直接 syscalls 通过 `NtQueueApcThread` 进行进程注入 |
| 6 | **Shellcode Obfuscator** | 多层加密:RC4-drop + 字节置换 + UUID 编码 |
## 架构
```
ShadowForge/
├── asm/
│ ├── syscall_stub.asm # MASM (Visual Studio)
│ └── syscall_stub.S # GAS (MinGW-w64)
├── include/
│ ├── shadowforge.h # Common types, macros, console helpers
│ ├── pe_parser.h
│ ├── syscalls.h
│ ├── unhooker.h
│ ├── etw_patcher.h
│ ├── obfuscator.h
│ └── injector.h
├── src/
│ ├── main.cpp # Interactive CLI
│ ├── pe_parser.cpp
│ ├── syscalls.cpp
│ ├── unhooker.cpp
│ ├── etw_patcher.cpp
│ ├── obfuscator.cpp
│ └── injector.cpp
├── tools/
│ └── encrypt_shellcode.py # Offline shellcode encryption tool
├── CMakeLists.txt
└── toolchain-mingw64.cmake # Cross-compilation from WSL
```
## 构建
### WSL / Linux (MinGW-w64 交叉编译)
```
sudo apt install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64-x86-64-dev cmake
cd ShadowForge
cmake -B build -DCMAKE_TOOLCHAIN_FILE=toolchain-mingw64.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
```
### Windows (Visual Studio / MSVC)
```
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
```
二进制输出:`build/bin/ShadowForge.exe`
## 混淆管道
Shellcode 混淆器使用 **多层方法** 来对抗静态特征检测:
1. **RC4-drop(3072)** —— 丢弃前 3072 个密钥流字节的流密码
2. **Fisher-Yates 字节置换** —— 使用种子 LCG 的确定性字节级洗牌
3. **UUID 编码** —— 加密字节存储为 UUID 字符串(看起来像合法数据)
额外保护措施:
- 从系统熵**运行时密钥派生**(二进制文件中无静态密钥)
- **沙箱检测** —— 时间检查、RAM/CPU 数量启发式分析
- **分阶段解密** —— 逐块进行,带有随机时间抖动
- **算术重构** —— shellcode 字节在运行时通过 XOR 重建
### 离线加密工具
```
# 加密原始 shellcode 二进制文件
python3 tools/encrypt_shellcode.py payload.bin -o encrypted.h
# 从十六进制字符串加密
python3 tools/encrypt_shellcode.py --hex "FC4883E4F0..." -o encrypted.h
# 使用自定义密钥派生
python3 tools/encrypt_shellcode.py payload.bin --key-string "my_secret" -o encrypted.h
```
## 技术参考
| 技术 | 绕过 |
|-----------|----------|
| 直接 syscalls | 用户模式 API 挂钩 (CrowdStrike, SentinelOne, Defender ATP) |
| NTDLL 脱钩 | `Nt*` 函数上的 EDR 内联挂钩 |
| ETW 修补 | 基于 ETW 的遥测和行为分析 |
| APC 注入 | 与上述结合时的进程级监控 |
| 多层混淆 | 静态特征检测、YARA 规则 |
| 沙箱检测 | 自动化分析环境 |
## 免责声明
此工具 **仅用于教育目的和授权的安全研究**。作者不对任何滥用行为负责。在对任何系统进行测试之前,请务必获得适当的授权。
标签:APC注入, Bash脚本, C++17, CMake构建, Conpot, DNS 反向解析, EDR绕过, ETW修补, HTTP头分析, NTDLL脱钩, PE解析器, RC4加密, Shellcode混淆, SSH蜜罐, Windows安全, x64汇编, 云资产清单, 免杀技术, 暴力破解检测, 渗透测试框架, 红队开发, 进程注入, 逆向工具, 逆向工程, 防御, 高交互蜜罐, 高危端口监控