Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
dumpguard_bof — Beacon Object File (BOF) 版的 DumpGuard,用于从现代 Windows 系统的会话中提取 NTLMv1 哈希。 | Kitploit
工具/GitHubGitHub/0xedh/dumpguard_bof
密码攻击漏洞利用后渗透利用渗透测试身份验证红队
GitHub0xedh/dumpguard_bof

dumpguard_bof

Beacon Object File (BOF) 版的 DumpGuard,用于从现代 Windows 系统的会话中提取 NTLMv1 哈希。

查看仓库
222247个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

DumpGuard BOF

DumpGuard 的 Beacon Object File (BOF) 移植,用于从现代 Windows 系统的会话中提取 NTLMv1 哈希。

Demo

关于本项目

本仓库包含 DumpGuard 的 Beacon Object File (BOF) 实现,从原始的 C#/.NET 实现移植到纯 C 语言,以便在 Havoc 和其他支持 BOF 执行的 C2 框架中使用。

这是一个概念验证 (PoC) 和学习练习。

这个 BOF 移植是我个人学习远程凭据保护协议、Kerberos 身份验证流程以及底层 Windows 安全机制细节的一部分。将该工具从 C# 移植到纯 C 以用于 BOF 执行的过程主要是一次教育尝试。

请注意:

  • 此代码可能包含错误、缺陷或不完整的实现。
  • 它尚未在所有 Windows 版本或配置上进行全面测试。
  • 某些边界情况或协议细节可能未被正确处理。
  • 实现方式可能与原版存在差异,这可能会影响可靠性。
  • 这是非生产就绪代码。使用风险自负 Ü。

如果您发现任何问题或有改进建议,欢迎贡献代码。如需稳健且经过充分测试的实现,请参考原始 DumpGuard 工具。

原始研究

此 BOF 基于 @bytewreck 在 SpecterOps 的研究和工具:

  • 原始工具: github.com/bytewreck/DumpGuard
  • 博客文章: 捕获 Credential Guard 未防御之际

概述

DumpGuard 利用 Windows 远程凭据保护 (RCG) 从登录用户提取 NTLMv1 哈希,无需访问 LSASS 内存,也无需管理员权限。即使启用了 Credential Guard,它也能正常工作。

工作原理

  1. 在本地模拟 CredSSP/RDP 服务器。BOF 扮演一个虚假的 RDP 服务器。
  2. 欺骗 Windows SSPI 执行完整的 Kerberos + CredSSP 身份验证。
  3. 接收用户的凭据,这些凭据封装在 TSRemoteGuardCreds 中。
  4. 调用 LSA 的 TSSSP 包,使用已知的挑战计算 NTLMv1 响应。

4 轮 CredSSP 流程

在第 4 轮之后,我们获得了加密的凭据 blob。奇迹发生在当我们使用 TSSSP 包调用 LsaCallAuthenticationPackage 时。LSA 将我们的请求通过 RDPEAR -> TSRemoteGuard -> MSV1_0 进行路由,后者会解密秘密并为我们计算 NTLMv1 响应。

背景

Credential Guard 将 NTLM 和 Kerberos 秘密隔离在安全的 VBS 空间 (LsaIso.exe) 中,防止像 Mimikatz 这样的直接内存访问攻击。然而,Credential Guard 仍然需要使用这些秘密进行合法的身份验证。这就是该技术所利用的接口。

如需深入了解技术细节,请参见:捕获 Credential Guard 未防御之际

实现

此 BOF 移植仅实现了原始 DumpGuard 工具中的 "Self" 模式。此版本未实现 "All" 模式。

Self 模式

通过远程凭据保护协议转储当前进程用户的 NTLMv1 哈希。

  • 权限要求: 无(在当前用户上下文中运行)
  • Credential Guard 状态: 无论是否启用 Credential Guard 均可工作
  • 要求: 拥有已注册 SPN 的账户凭据

提取其他用户的哈希

虽然此 BOF 仅实现 "self" 模式,但您仍然可以通过例如注入到以该用户身份运行的进程中来提取其他用户的 NTLMv1 哈希。例如,如果您拥有管理员权限,可以将 BOF 注入到其他已登录用户拥有的进程中,以获取他们的哈希。

先决条件

SPN 启用账户

此技术需要拥有已注册服务主体名称 (SPN) 的账户凭据。实现此目的的一种方法是创建机器账户并为其添加 SPN。

步骤 1:创建机器账户

使用 Impacket:

root@kitploit:~
python3 addcomputer.py -computer-name 'YOURCOMPUTER$' domain.local/user:password -dc-ip <DC_IP>

示例输出:

root@kitploit:~
[*] Successfully added machine account YOURCOMPUTER$ with password <random_password>.

步骤 2:为机器账户添加 SPN

使用 krbrelayx 的 addspn.py:

root@kitploit:~
python3 addspn.py -u domain.local\\YOURCOMPUTER\$ -p '<password>' -s host/yourspn.domain.local --target-type samname <DC_IP>

步骤 3:验证 SPN(可选)

使用 pywerview:

root@kitploit:~
python3 pywerview.py get-adobject -d domain.local -u YOURCOMPUTER\$ -p '<password>' -t <DC_IP> --sam-account-name YOURCOMPUTER\$

在输出中查找 serviceprincipalname: host/yourspn.domain.local。

使用

Havoc C2

root@kitploit:~
inline-execute /path/to/dumpguard.x64.o x <domain> <username> <password> <spn>

注意: x 参数是在域名之前必须提供的占位符/虚拟参数。这可能会在将来的版本(如果有)中解决。

示例:

root@kitploit:~
inline-execute /tmp/dumpguard.x64.o x sevenkingdoms.local EVIL_COMPUTER$ MXj070PQpCkNmZiYsRbIu8YYwgDKPD2r host/EVILSPN.sevenkingdoms.local

示例输出:

root@kitploit:~
[DG] Domain: sevenkingdoms.local
[DG] User: EVIL_COMPUTER$
[DG] SPN: host/EVILSPN.sevenkingdoms.local
[DG] checkpoint 1: init APIs
[DG] SSPI init OK
[DG] checkpoint 2: acquire creds
[DG] checkpoint 3: starting SSPI loop
[DG] Round 1
[DG] AS-REQ: LTK derived, etype=18 len=32
[DG] AS-REQ: sending to KDC...
[DG] Round 2
[DG] Round 3
[DG] NTLMv1: SEVENKINGDOMS\EVIL_COMPUTER$::GOAD-WIN2025::6D270E39AD2DE48B561895C3257D7123FE84F1438B147E2A:1122334455667788

重要: 提取的 NTLMv1 哈希属于运行 BOF 进程的用户,而非用于身份验证的机器账户 (EVIL_COMPUTER$)。机器账户凭据仅用于向 KDC 进行身份验证并建立远程凭据保护会话。

输出格式为 hashcat 兼容的 NTLMv1 格式:

root@kitploit:~
DOMAIN\user::HOSTNAME::NTRESPONSE:CHALLENGE

构建

root@kitploit:~
make clean && make

输出:build/dumpguard.x64.o

要求

  • 目标必须是加入域的 Windows 机器
  • 您需要拥有已启用 SPN 的账户凭据(见先决条件)
  • BOF 在当前进程用户的上下文中运行

参考文献

Microsoft 文档

  • Credential Guard 概述
  • 远程凭据保护
  • AcquireCredentialsHandle
  • InitializeSecurityContext
  • AcceptSecurityContext
  • LsaRegisterLogonProcess
  • LsaConnectUntrusted
  • LsaCallAuthenticationPackage

Microsoft 协议

  • MS-RDPEAR - 远程桌面协议:身份验证重定向虚拟通道协议
  • MS-CSSP - 凭据安全支持提供程序协议

研究论文与博客文章

  • 捕获 Credential Guard 未防御之际 - Valdemar Caroe, SpecterOps (2025)
  • 传递挑战:击败 Windows Defender 凭据保护 - Oliver Lyak (2022)
  • Windows 利用技巧:利用任意文件写入实现本地权限提升 - James Forshaw, Project Zero (2018)
  • LSA 低语者项目 - Evan McBroom, SpecterOps

许可证

BSD 3-Clause 许可证

原始 DumpGuard 工具采用 BSD 3-Clause 许可证,版权 (c) 2025 Valdemar Carøe。此 BOF 移植保留相同的许可条款。


如有疑问、报告错误或贡献代码,请在 GitHub 上提交 issue。

下载工具
轮次客户端 -> 服务器服务器 -> 客户端
1SPNEGO + TGT-REQTGT-REPLY (来自真实 KDC)
2AP-REQ (服务票据)AP-REP + MIC
3PubKeyAuth (绑定哈希)服务器绑定哈希
4AuthInfo (TSRemoteGuardCreds)无