Remote BOF Runner 是一个 Havoc 扩展框架,用于使用 Crystal Palace 构建的 PIC 加载器远程执行 Beacon Object Files (BOF)。
一个Havoc扩展框架,用于通过使用Crystal Palace制作的PIC加载器远程执行Beacon对象文件(BOF)。
远程BOF运行器通过利用Crystal Palace PIC加载器,能够在任意进程中安全执行BOF。该框架通过命名管道实现复杂的进程间通信(IPC)机制,将注入进程中的Beacon输出透明地转发回命令与控制(C2)服务器。
确保扩展安装在Havoc扩展目录中:
你的HAVOC文件夹 + /data/extensions/
要编译PIC加载器,系统上必须安装以下工具和库:
详细设置说明,请参考WSL设置指南。
sudo apt-get update
sudo apt-get install mingw-w64
sudo apt-get install make
sudo apt-get install openjdk-11-jdk
sudo apt-get install zip
BOF组件负责:
PIC加载器包含:
┌───────────────────────────────────────────────────────────────────┐
│ 1. Beacon进程 (Havoc) │
│ ├─ 执行BOF注入器 │
│ ├─ 创建虚拟进程(挂起) │
│ ├─ 注入PIC加载器 + 远程BOF │
│ └─ 创建IPC命名管道 │
└────────────┬──────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────────┐
│ 2. PIC加载器执行 │
│ ├─ Crystal Palace加载器 │
│ ├─ 执行BSS段分配 │
│ ├─ 初始化UI上下文(用于.NET兼容性) │
│ └─ 挂钩Beacon函数(BeaconPrintf、BeaconOutput等) │
└────────────┬──────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────────┐
│ 3. 远程BOF执行 │
│ ├─ 执行目标BOF(whoami、ipconfig等) │
│ ├─ BOF调用被挂钩的Beacon函数 │
│ ├─ 挂钩函数将输出重定向到IPC管道 │
│ └─ 输出通过管道在Beacon进程中累积 │
└────────────┬──────────────────────────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────────┐
│ 4. 输出收集与传输 │
│ ├─ Beacon等待远程进程终止 │
│ ├─ 从IPC管道累积所有输出 │
│ ├─ 聚合分片消息(8KB缓冲区) │
│ ├─ 过滤协议分隔符(@START@, @END@) │
│ └─ 将合并后的输出发送到团队服务器 │
└───────────────────────────────────────────────────────────────────┘
主要用例是在原生.NET进程中执行BOF:
为什么直接在Beacon中加载CLR存在风险: 在Beacon进程中直接加载.NET程序集本质上是危险且可被检测的:
一个可能的解决方案:原生.NET进程注入: 与其在Beacon中加载CLR,不如将我们的inline-execute-assembly BOF注入到一个已经是.NET原生的进程中:
// ❌ 可被检测:直接在Beacon中执行
beacon.exe(原生)→ 加载ClrCreateInstance → 加载.NET程序集 → EDR警报
// ✅ 隐蔽:在原生.NET进程中执行
dotnet.exe(原生.NET)→ 注入BOF → inline-execute-assembly →
在已有CLR上下文中执行.NET程序集 → 正常行为
这种方法利用了以下事实:在.NET进程中执行.NET代码与正常应用程序行为难以区分。
remote-bof-runner whoami
remote-bof-runner ipconfig
remote-bof-runner cacls C:\Windows\System32
remote-bof-runner reg-query DC01 HKLM SYSTEM\CurrentControlSet
remote-bof-runner reg-query HKLM SYSTEM\CurrentControlSet\Control\Lsa
remote-bof-runner reg-query HKLM SYSTEM\CurrentControlSet\Control\Lsa RunAsPPL
remote-bof-runner execute-assembly --dotnetassembly "/Payloads/Rubeus.exe" --assemblyargs "triage"
示例输出:

⚠️ 重要:该项目是一个概念验证,默认情况下不优先考虑OPSEC。
BOF注入器和PIC加载器都需要针对对抗模拟进行显著加固:
本工具仅用于教育目的和授权的安全测试。未经授权访问计算机系统是非法的。用户有责任确保遵守所有适用的法律法规。