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安全, 客户端加密, 攻击诱捕, 攻击载荷, 欺骗防御, 知识库安全, 网络信息收集