Michael-Shabanov/coff_parser

GitHub: Michael-Shabanov/coff_parser

独立的纯 C 语言 Beacon Object File 加载器,可在无 C2 框架的条件下直接在内存中执行自定义 BOF,专注于本地提权、EDR 规避和红队攻防。

Stars: 0 | Forks: 0

# coff_parser: 高级独立 BOF 加载器与规避工具库 **coff_parser** 是一个生产级的、独立的 Beacon Object File (BOF) 加载器,使用纯防御性 C 语言编写。它旨在直接在内存中执行自定义的最小化 BOF,而无需依赖活动的 C2 框架,使其成为本地权限提升、规避测试和针对性红队操作的理想工具。 与庞大的 C2 代理不同,`coff_parser` 实现了严格的、轻量级的标准 Cobalt Strike Beacon API 子集(例如 `BeaconPrintf`、`BeaconDataParse`)。这强制执行了“自带 API (bring-your-own-API)”的理念,即 BOF 通过标准的 `DECLSPEC_IMPORT` 模式独立解析其所需的 Windows API,从而实现高度受控且 OPSEC 安全的执行。 ## 🛡️ 核心架构与 OPSEC 加载器实现了严格的 **4 阶段架构** 以安全地映射和执行对象: 1. **大小计算:** 使用安全的整数数学计算页面 aligned 的内存需求,以防止溢出攻击。 2. **节映射:** 将原始数据映射到已分配的虚拟内存缓冲区中。 3. **重定位:** 解析符号并应用 AMD64/i386 重定位。 4. **内存保护与执行:** 在执行前通过 `VirtualProtect` 应用细粒度的内存保护(`RX`、`RW`、`R`)。**不会分配懒惰的 `RWX` 内存。** ### 安全特性 * **防御性 C 语言编程:** 利用自定义的 `safe_math` 辅助函数和 `memcpy_s` 来防止缓冲区溢出和内存布局损坏。 * **快速失败解析:** API 解析严格执行 `DLL$Function` 语法或硬编码白名单。未限定的符号将安全地中止加载过程。 * **SEH 保护:** Payload 执行被包装在原生 `__try / __except` 块(结构化异常处理)中,以防止在 BOF 失败时加载器发生崩溃。 * **最小权限:** 仅在 Payload 或用户通过 CLI 参数明确要求时,才会请求 `SeDebugPrivilege`。 ## ⚔️ 包含的规避工具库 此仓库包含一组高级红队 BOF,展示了现代 EDR 规避和 MITRE ATT&CK 技术: * **`whoami_all.c` (T1033)**:提取并解析当前进程 Token,原生打印用户、组和权限,而不会生成 `cmd.exe`。 * **`token_steal.c` (T1134.001)**:演示访问令牌操纵。打开 `winlogon.exe`,复制 `NT AUTHORITY\SYSTEM` 令牌,并通过模拟将其应用于当前线程。 * **`lsass_snapshot.c` (T1003.001)**:高级 OS 凭据转储。通过使用 `PssCaptureSnapshot` API 创建 LSASS 的隐藏 VA 克隆来转储,从而规避直接的 `ReadProcessMemory` 钩子。 * **`werfault_dump.c` (T1003.001)**:静默进程退出规避。修改 IFEO 注册表项并触发未公开的 `RtlReportSilentProcessExit` API,强制合法的 `WerFault.exe` 转储 LSASS。 * **`super_bof_lsass.c`**:自主攻击链。动态解析 PID,从 `winlogon.exe` 窃取 SYSTEM 令牌,执行 LSASS 的 PSS 快照转储,随后进行完整的 OPSEC 清理(`RevertToSelf`)。 * **`direct_syscall.c` (T1106)**:Halo's Gate 技术的纯 C 实现。动态解析 PEB 和导出目录以在内存中解析 NTDLL 基址,提取系统服务号,并通过 `.text` 节存根执行 `syscall` 指令,从而绕过用户态 EDR 钩子。 ## 🛠️ 编写自定义 BOF 在为 `coff_parser` 编写您自己的 Payload 时,请遵守以下规则: 1. **入口点:** 您的代码必须包含一个 `void go(char* args, int len)` 函数。 2. **严格的 API 导入:** 使用 `DECLSPEC_IMPORT` 宏和 `DLLNAME$FunctionName` 语法显式声明包含该 Windows API 函数的 DLL(例如 `KERNEL32$OpenProcess`)。 3. **无 CRT 依赖:** 不要使用标准的 C 库函数(`strlen`、`malloc`、`printf`)。使用原生 Windows API(`lstrlenA`、`HeapAlloc`)。 4. **支持的 Beacon API:** 此加载器有意实现了一个最小的、OPSEC 安全的 API 子集。支持的函数仅限于:`BeaconPrintf`、`BeaconErrorPrintf`、`BeaconDataParse`、`BeaconDataInt`、`BeaconDataExtract` 和 `BeaconIsAdmin`。*(注意:依赖 `BeaconFormat*` 或外部 `base.c` 辅助程序的庞大第三方框架(如 TrustedSec BOFs)需要适配此最小化核心)。* ## ⚙️ 编译 代码库使用纯 C 编写,并利用了原生 Windows SEH。不需要外部 C++ 异常标志。 ### 1. 编译加载器 使用 MSVC 编译加载器。该项目旨在在级别 4(`/W4`)上干净地编译而不会出现警告。 ``` cl.exe /O2 /W4 parser.c /Fecoff_parser.exe ``` ### 2. 编译 BOF **关键:** BOF 必须在没有 C 标准库 (CRT) 的情况下编译。您*必须*禁用堆栈安全 cookie(`/GS-`),否则 BOF 在执行完成时将触发访问冲突(`0xC0000005`)。 **MSVC:** ``` cl.exe /c /GS- lsass_snapshot.c ``` ## 🚀 使用 执行加载器并传递编译好的 `.obj` 文件。 ``` Usage: coff_parser.exe [-p PID] [-e] -p PID : Pass a target PID to the BOF (automatically requests SeDebugPrivilege) -e : Explicitly request SeDebugPrivilege elevation (for autonomous BOFs) ``` **示例:** ``` :: Run a basic enumeration BOF coff_parser.exe whoami_all.obj :: Run a targeted BOF (e.g., steal token from PID 1234) coff_parser.exe token_steal.obj -p 1234 :: Run an autonomous attack chain requiring elevation coff_parser.exe super_bof_lsass.obj -e ```
标签:BOF加载器, Cobalt Strike, COFF文件解析, CTF学习, DAST, OPSEC, Raspberry Pi, Web报告查看器, Windows API, 内存执行, 内存映射, 内网渗透, 反射式加载, 安全 evasion, 安全意识培训, 安全防御绕过, 客户端加密, 恶意软件分析, 攻击诱捕, 本地提权, 端点可见性, 红队武器, 自定义载荷执行, 防御性C编程, 高危端口监控