sebafvs/bof-collection
GitHub: sebafvs/bof-collection
一套兼容主流 C2 框架的生产级 BOF 集合,附带独立加载、审计和测试工具链,用于 Windows 后渗透操作。
Stars: 0 | Forks: 0
# bof-collection
一个公开的生产级 BOF 集合,可由任何实现了核心 `beacon.h` ABI 的 C2 加载。
完整文档:[cyber.sebafvs.com/tools/bof/collection](https://cyber.sebafvs.com/tools/bof/collection)
## 加载器
此集合使用 [BOF Framework](https://github.com/sebafvs/bof-framework) 作为独立加载器和开发测试框架。无需活动的 C2 即可运行、审计或测试这些 BOF。
| 子命令 | 功能描述 |
| ------------ | ----------------------------------------------------------------------------------- |
| `bof check` | 静态分析。验证架构、入口点和导入类别 |
| `bof run` | 在当前进程中加载并执行 BOF |
| `bof audit` | 通过拦截 hook 运行 BOF,跟踪每一次 Beacon API 调用并检测内存泄漏 |
| `bof schema` | 验证附属的 `.json` 参数 schema |
| `bof test` | 对 BOF 运行由 TOML 定义的测试套件 |
| | |
完整文档请参见 [cyber.sebafvs.com/tools/bof/framework](https://cyber.sebafvs.com/tools/bof/framework)。
## beacon.h
`include/beacon.h` 不随此集合分发。在构建之前,请将 [Fortra 的 bof_template 仓库](https://github.com/Cobalt-Strike/bof_template) 中的官方 Cobalt Strike `beacon.h` 放置到 `include/beacon.h`。
```
curl -o include/beacon.h \
https://raw.githubusercontent.com/Cobalt-Strike/bof_template/main/beacon.h
```
## 构建
需要 `x86_64-w64-mingw32-gcc`(MinGW 交叉编译器):
```
make
```
编译后的 `.o` 文件将存放在 `build/` 目录中。如需清理:
```
make clean
```
## 参数语法
BOF Framework 在 CLI 上使用带有类型前缀的值来传递参数:
| 前缀 | 类型 | 示例 |
|--------|---------|------------------|
| `str:` | 字符串 | `str:whoami` |
| `int:` | 整数 | `int:9324` |
多个参数按顺序传递:
```
bof run shell.o str:whoami int:9324
```
## BOF
### shell
启动 `cmd.exe`,通过匿名管道捕获 stdout 和 stderr,并将所有输出返回给操作者。支持可选的 PPID 欺骗,以在进程遥测中掩盖父子关系。
**概要**
```
bof run shell.o str: [int:]
bof run shell.o str:"whoami /all" int:9324
```
省略 `int:ppid` 或传入 `0` 则在不进行 PPID 欺骗的情况下启动。完全省略 `str:command` 将打印当前工作目录。
**输出**
```
.\bof.exe run shell.o str:whoami
CORP-WS-01\seba
```
```
.\bof.exe run shell.o str:"net localgroup administrators" int:9324
Alias name administrators
Comment Administrators have complete and unrestricted access...
Members
-------------------------------------------------------------------------------
Administrator
seba
The command completed successfully.
```
**参数**
| 参数 | 类型 | 默认值 | 描述 |
|---------------|---------|--------|------------------------------------------------------------------------|
| `str:command` | 字符串 | — | 传递给 `cmd.exe /c` 的命令。完全省略将打印当前工作目录 |
| `int:ppid` | 整数 | `0` | 要欺骗为父进程的 PID。传入 `0` 或省略则禁用 PPID 欺骗 |
**OPSEC**
Shell 总是会启动 `cmd.exe`。进程创建事件(Event ID 4688,Sysmon Event ID 1)会记录一个新的 `cmd.exe` 进程,无论是否使用 PPID 欺骗。欺骗只会更改记录的父 PID,并不会抑制该事件的产生。
PPID 欺骗的目标必须拥有 `PROCESS_CREATE_PROCESS | PROCESS_DUP_HANDLE` 权限才能被访问。运行在更高完整性级别或作为 SYSTEM 运行的进程会导致 `OpenProcess` 失败,并使 BOF 以退出码 1 退出。一个稳定的目标是 `explorer.exe`,它在每个交互式会话中都以中等完整性级别运行。
完整分析:[cyber.sebafvs.com/tools/bof/collection/bofs/shell](https://cyber.sebafvs.com/tools/bof/collection/bofs/shell)
### ps
以父子树的形式列出正在运行的进程。列包含:PID、名称(按深度缩进)、线程、架构、完整性级别、PPL 状态和所有者。
**概要**
```
bof run ps.o
```
无参数。
**输出**
```
.\bof.exe run ps.o
[312 processes]
PID NAME THD ARC Integrity PPL USER
----- -------------------------------------- ---- --- --------- ----- ----
0 Idle 8 --- - - SYSTEM
4 System 243 x64 - Full SYSTEM
104 smss.exe 2 x64 - Full SYSTEM
...
8324 explorer.exe 100 x64 Medium - CORP-WS-01\seba
12048 cmd.exe 1 x64 Medium - CORP-WS-01\seba
```
**列**
| 列 | 描述 |
|-----------|------------------------------------------------------------------------------------------------------------|
| PID | 进程 ID |
| NAME | 映像名称,按父子深度缩进 |
| THD | 线程数 |
| ARC | 架构:`x64`、`x86`、`---`(不同会话)、`???`(访问被拒绝 — 很可能是 PPL) |
| Integrity | Token 完整性级别:`Untrusted` / `Low` / `Medium` / `High` / `System` / `?` / `-` |
| PPL | Protected Process Light 状态:`-`(无)、`Light`、`Full`、`?`(查询失败) |
| USER | 通过 WTS 会话数据解析出的 `DOMAIN\username` |
## 贡献
请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
请参见 [LICENSE](LICENSE)。
标签:BOF, Cobalt Strike, Python安全, 客户端加密, 攻击诱捕, 攻击载荷, 欺骗防御, 知识库安全, 网络信息收集