夜雨聆风学习资料网

ARTICLE · 1001970

BOF插件绕过EDR实现DumpHash

BOF插件绕过EDR实现DumpHash
根据之前@曾哥文章中的抓取hash思路重写了一个BOF插件,在原功能基础上新增了一个-thread导出方式(用于某场景),应该还能绕过部分AV/EDR吧…?具体还能过哪些我没有去细测…!

BootHash BOF

BootHash BOF 主要用于导出目标主机 HKLM\SAM 和 HKLM\Security 注册表项为 .reg 文件,并提取 Windows BootKey;可以使用 RegReduction.ps1 + impacket-secretsdump 离线解密提取目标主机哈希。

原项目地址:https://github.com/AabyssZG/HashDump-BypassEDR

功能特性

  • 导出注册表:将 SAM 和 Security 注册表项导出为标准 .reg 格式文件
  • 提取 BootKey:从 HKLM\SYSTEM\CurrentControlSet\Control\Lsa 提取 Windows 启动密钥
  • 双导出模式:支持 process(默认,通过 reg.exe 进程导出)和 thread(当前线程内 API 递归导出)两种方式
  • 权限检查:执行前自动检查并启用 SeBackupPrivilege 特权
  • 命令提示:导出成功后自动输出 impacket-secretsdump 离线解密命令,可直接复制使用
  • 双传参模式:同时支持 inline-execute 命令行传参和 CNA 脚本 bof_pack 传参

项目结构

BootHash/├── entry.c          # BOF 主源码├── beacon.h         # Cobalt Strike BOF API 声明├── BootHash.cna     # CNA 脚本(注册 boothash 命令)├── Makefile         # 交叉编译 Makefile (mingw-w64)

编译

需要 mingw-w64 交叉编译工具链(Kali/Linux):

cd BootHashmake

编译完成后会生成 BootHash.x64.o 和 BootHash.x86.o。

使用方法

参数说明

参数
说明
-path <folder>
指定导出 SAM 和 Security 注册表的保存目录
-t <method>
导出方式:process(默认)或 thread
-bootkey
仅提取并打印 Windows BootKey

方式一:inline-execute 命令行

# 导出注册表(默认 process 方式)beacon> inline-execute BootHash.x64.o -path C:\Windows\Temp# 使用 thread 方式导出(当前线程内 API 导出,不创建 reg.exe 进程)beacon> inline-execute BootHash.x64.o -path C:\Windows\Temp -t thread# 仅提取 BootKeybeacon> inline-execute BootHash.x64.o -bootkey

方式二:CNA 脚本

  1. 在 Cobalt Strike 中加载 BootHash.cna 脚本
  2. 使用注册的 boothash 命令:
# 导出注册表beacon> boothash -path C:\Windows\Temp# 使用 thread 方式导出beacon> boothash -path C:\Windows\Temp -t thread# 仅提取 BootKeybeacon> boothash -bootkey

导出方式说明

方式
说明
优点
缺点
process
(默认)
调用 reg.exe 进程导出
格式兼容性最好
会创建子进程,可能被 EDR 监控
thread
当前线程内通过 Win32 API 递归遍历注册表并写入文件
不创建外部进程,隐蔽性更高
内存占用略高

注意:process 模式会优先尝试调用 advapi32.dll 的未文档化函数 RegExportKey,若失败则回退为 CreateProcessW 执行 reg.exe。

权限要求

  • 需要 管理员权限(SeBackupPrivilege)
  • 导出 SAM/Security 注册表需要 SYSTEM 或具有备份特权的管理员令牌

离线解密

将导出的 .reg 文件下载到本地后,先使用 RegReduction.ps1 还原为 .hive 文件,再使用 impacket-secretsdump 进行离线解密:

impacket-secretsdump -sam sam.hive -security security.hive -bootkey <bootkey> LOCAL
学习网安实战技术,戳“阅读原文”

相关学习资料