Ap3x/COFF-Loader

GitHub: Ap3x/COFF-Loader

Cobalt Strike Beacon Object File 加载器的 C++ 重新实现,支持在独立环境中加载、解析和执行 BOF 文件。

Stars: 66 | Forks: 15

# COFF-Loader 这是对 [TrustedSec COFF Loader](https://github.com/trustedsec/COFFLoader) 的重新实现。我决定创建这个仓库来挑战我对 Windows PE 格式的理解。这种技术最初用于 [Cobalt Strike](https://www.cobaltstrike.com/)。对于希望使用 VS Debugger 并跟踪其内存操作加载器执行情况的用户,本项目使用 Visual Studio 2022 开发。 在编写此代码时,我主要使用了以下资源: - [Microsoft PE Format](https://learn.microsoft.com/en-us/windows/win32/debug/pe-format) - [Otterhacker's COFF Loader Article](https://otterhacker.github.io/Malware/CoffLoader.html) ## 下载 预构建的 `COFFLoader.exe` 可从最新的 [GitHub Actions run](https://github.com/Ap3x/COFF-Loader/actions) 获取。前往最近一次成功运行的记录并下载 `COFFLoader` 构件。 ## 构建 ### 前置条件 - Visual Studio 2022(带有 C++ 工作负载) - CMake(随 Visual Studio 附带) ### 构建 ``` cmake -B build -G "Visual Studio 17 2022" -A x64 cmake --build build --config Release ``` 这将构建: - `build/Release/COFFLoader.exe` — COFF 加载器 - `build/bofs/*.obj` — 来自 [Beacon-Object-File-Library](https://github.com/Ap3x/Beacon-Object-File-Library) 子模块的所有 BOF 目标文件 ## 用法 ``` COFFLoader.exe ``` `function name` 是 BOF 函数入口名称。通常是 `"go"`。 ### 示例 ``` # 运行 WhoAmI BOF COFFLoader.exe go build\bofs\WhoAmI.obj # 运行 Ipconfig BOF COFFLoader.exe go build\bofs\Ipconfig.obj # 运行 EnumDeviceDrivers BOF COFFLoader.exe go build\bofs\EnumDeviceDrivers.obj # 运行 GetSystemDirectory BOF COFFLoader.exe go build\bofs\GetSystemDirectory.obj ``` ### 内置 BOF 以下 BOF 由 [Beacon-Object-File-Library](https://github.com/Ap3x/Beacon-Object-File-Library) 子模块构建: | BOF | 描述 | |-----|-------------| | WhoAmI | 获取当前用户名 | | EnumDeviceDrivers | 枚举已加载的设备驱动程序 | | GetSystemDirectory | 获取系统目录路径 | | Ipconfig | 列出网络适配器配置 | | FileExfiltrationUrlEncoded | URL 编码的文件窃取 | | RegistryPersistence | 基于注册表的持久化 | | TimeStomp | 修改文件时间戳 | ### BOF 参数 为了向 BOF 传递参数,我使用了与 [Otterhacker's COFF Loader](https://github.com/OtterHacker/CoffLoader) 完全相同的代码。结构体如下: ``` typedef struct _Arg { char* value; size_t size; BOOL includeSize; } Arg; ``` 你可以在[这里](./Src/main.cpp)的第 25 行查看该用法的示例。 ## 示例 ![demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/5ec7c7ea89000639.gif) ### 参考资料 - [Microsoft PE Format](https://learn.microsoft.com/en-us/windows/win32/debug/pe-format) - 这是一篇非常棒的博客文章 --> [Otterhacker COFF Loader Article](https://otterhacker.github.io/Malware/CoffLoader.html) - [TrustedSec COFFLoader](https://github.com/trustedsec/COFFLoader) - [TrustedSec Situational Awareness BOF Repo](https://github.com/trustedsec/CS-Situational-Awareness-BOF) - [Otterhacker COFF Loader Repo](https://github.com/OtterHacker/CoffLoader) - [Cobalt Strike BOF C API](https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/topics/beacon-object-files_bof-c-api.htm)
标签:Bash脚本, BOF加载器, C++, Cobalt Strike, COFF加载器, EDR绕过, HTTP工具, Linux, PE格式, Visual Studio, Windows internals, 中高交互蜜罐, 代理, 内存加载, 后渗透, 恶意软件开发, 攻击诱捕, 数据擦除, 无文件攻击, 无线安全, 高交互蜜罐