k1ng0fn0th1ng/reflectra
GitHub: k1ng0fn0th1ng/reflectra
Reflectra 是一个基于 Crystal Palace 的研究型 UDRL,提供模块化、可控的 DLL 反射加载与规避能力。
Stars: 4 | Forks: 0
# Reflectra




Reflectra 是一个基于 [Crystal Palace][1] 构建并受 [Rasta Mouse][2] 启发的工作流 **用户自定义反射加载器 (UDRL)**。
它专注于提供一个可重用的模块化 UDRL 架构,能够集成到多个 C2 框架中,同时完全控制执行流程和规避。
## 概述
Reflectra 提供:
* 基于 Crystal Palace 的自定义反射加载流水线
* 模块化规避(系统调用、伪造、补丁)
* 为信标提供自定义规避能力
* 对执行流程和内存布局的完全控制
* 专为集成到基于 DLL 的 C2 载荷而设计
它可以集成到任何以 DLL 形式交付载荷的框架中。
## 什么是用户自定义反射加载器 (UDRL)
用户自定义反射加载器 (UDRL) 是一种自定义加载器,它:
* 手动将 DLL 映射到内存
* 解析导入和重定位
* 不使用 Windows 加载器执行入口点
与标准反射加载器不同,UDRL 提供对以下内容的完全控制:
* 内存布局和权限
* 导入解析策略
* 执行流程
* 转换和混淆逻辑
## 功能
### 核心
* 手动 PE 加载(节、重定位、导入)
* 动态 DLL 入口点解析(`Start`、`Run`、`Main` 等)
* 执行后加载器自清理(释放并运行)
* 详细日志记录的调试模式(在发布版本中移除)
### 规避
* 使用 [Draugr][3] 进行堆栈调用伪造
* 使用 [LibGate][4] 进行间接系统调用
* ETW 用户模式补丁(字节补丁)
* 通过 XOR 加密进行 DLL 掩蔽
### 构建与流水线
* 与 Crystal Palace 集成
* 自动生成并变异 YARA 规则以处理 [不变岛][5]
* 为独立执行生成简单存根
### 测试
* 使用 [defender2yara][6] 针对 Defender 派生的 YARA 规则进行测试
## 安装
Reflectra 依赖于不会重新分发的外部组件,例如 [Crystal Palace][1] 和 Tradecraft Garden 库。
要安装所有必需的依赖项:
```
./install.sh
```
这将:
* 下载 Crystal Palace 分发文件
* 下载 Tradecraft Garden 源代码
* 本地构建 libtcg
* 为构建载荷准备环境
## 用法
### AdaptixC2
1. 生成你的信标作为 DLL
2. 使用 Reflectra 构建载荷:
./build.sh
3. 使用存根或 Crystal Palace 中的 `run.x64.exe` 执行:
.\run.x64.exe out.x64.bin
### 与其他 C2 一起使用
1. 生成一个 DLL 载荷(最好是 stageless)
2. 使用 Reflectra 构建它
3. 通过以下方式执行:
* 存根可执行文件
* 自定义运行器
* 集成加载器
4. 你需要修改 `spec/pico.spec` 并覆盖 `TARGET_FUNCTION` 以指向要执行的函数
* 这是必需的,因为 Reflectra 不会假设固定的入口点,从而允许在不同 C2 框架之间保持灵活性。
### 调试
你可以使用以下命令进行调试:
```
./build.sh --debug ./dist/demo/test.x64.dll
```
调试消息通过 `OutputDebugStringA` 发出,并可使用 SysinternalsSuite 的 `DebugView` 查看
### 输出
* `out.x64.bin` → 转换后的载荷
* `rules.yar` → 生成的 YARA 规则
* `stub.exe` → 可执行包装器
* `out.x64.debug.bin` → 可选调试载荷
## 架构
### Reflectra
```
flowchart LR
A[Patch ETW] --> B[Load PICO]
B --> C[Setup Hooks]
C --> D[Unmask DLL]
D --> E[Map DLL into Memory]
E --> F[Resolve Imports and Apply Relocations]
F --> G[Restore DLL Section Permissions]
G --> H[Execute PICO]
H --> I[Free Loader]
I --> J[Call DllMain]
J --> K[Call Target Function]
```
### 流水线
```
flowchart LR
A[Input DLL] --> B[build.sh]
B --> C[Release]
B --> D[Debug]
C --> E[Compile Reflectra with MinGW]
D --> F[Compile Reflectra with MinGW]
E --> G[Link with Crystal Palace]
F --> H[Link with Crystal Palace]
G --> I[out.x64.bin]
G --> J[rules.yar]
I --> K[Generate pic.h with xxd]
K --> L[Build stub.exe]
H --> M[out.x64.debug.bin]
```
## 限制
* 某些 DLL 载荷(例如 Sliver)由于其基于 Go 的运行时可能不兼容
* 动态解析的 API 不会被挂钩;只有通过 IAT 解析的函数会受到影响
## 设计目标
* 将 UDRL 引入公共 C2(如 AdaptixC2)
* 为 Crystal Palace 项目定义灵活的结构,可用于任何项目
* 保持加载器精简且模块化
* 将构建时逻辑与运行时执行分离
* 避免与任何特定 C2 的紧密耦合
* 启用实验和研究
## 引用与致谢
* Crystal Palace - 核心框架
* Rasta Mouse - [Crystal-Kit][2]、[LibGate][4]、[CRTL][7] 研究灵感
* Draugr
## 免责声明
本项目仅用于:
* 研究
* 开发
* 教育目的
未经授权对未拥有的系统使用是非法的。
## 许可证
本项目根据 MIT 许可证授权。
有关更多细节,请参阅 LICENSE 文件。
标签:C2 集成, Chrome扩展, Crystal Palace, C 语言, DLL 伪装, DLL 反射加载, ETW劫持, ETW 篡改, PE 解析, UML, Windows x64, XOR 加密, YARA 规则生成, 不变岛, 云资产清单, 内存布局, 反取证, 可控 DLL 执行, 安全评估, 客户端加密, 导入解析, 执行流程控制, 日志记录, 模块化加载器, 汇编, 用户态反射加载器, 研究用途, 系统调用绕过, 自动回退, 自清理加载器, 调试模式, 载荷存根生成, 载荷注入, 逃避检测, 逆向工程, 重定位