Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
ShadowSpray — 一个用于在整个域中喷洒Shadow Credentials的工具,以期利用域中其他对象上长期被遗忘的GenericWrite/GenericAll DACL。 | Kitploit
工具/GitHubGitHub/dec0ne/shadowspray
权限提升漏洞分析漏洞利用渗透测试身份验证红队
GitHubdec0ne/shadowspray

ShadowSpray

一个用于在整个域中喷洒Shadow Credentials的工具,以期利用域中其他对象上长期被遗忘的GenericWrite/GenericAll DACL。

查看仓库
49079143年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ShadowSpray

一款在整个域中进行 Shadow Credentials 喷洒攻击的工具,旨在利用域中其他对象上早已被遗忘的 GenericWrite/GenericAll DACL。

为什么需要这个工具

在很多攻防演练中,我观察到(通过 BloodHound)“Everyone”/“Authenticated Users”/“Domain Users”或其他包含域中几乎所有用户的广泛组,拥有对其他域对象的 GenericWrite/GenericAll DACL。

示例

这些权限可以被滥用来在目标对象上添加 Shadow Credentials,并获取其 TGT 和 NT Hash。

我突然想到,我们可以尝试在整个域中喷洒 Shadow Credentials,看看哪些能成功(显然这种方法更适合非隐蔽性攻防演练,不要在需要隐蔽性的红队行动中使用)。当成功添加 Shadow Credentials 后,我们只需执行完整的 PKINIT + UnPACTheHash 流程,就能得到 NT Hash。

由于这个过程非常快,可以在攻防演练的一开始就使用,希望在你真正开始之前就能拥有一些用户和计算机的权限。

注意:我复用了我之前的工具中的大量代码,因此杀毒软件/EDR 可能会将其标记为 KrbRelayUp……

这个工具的工作原理

大致流程如下:

  1. 使用提供的凭据登录域(或使用当前会话)。
  2. 检查域功能级别是否为 2016(否则停止,因为 Shadow Credentials 攻击将不起作用)。
  3. 从 LDAP 收集域中所有对象(用户和计算机)的列表。
  4. 对列表中的每个对象执行以下操作:
    1. 尝试向对象的“msDS-KeyCredentialLink”属性添加 KeyCredential。
    2. 如果上述操作成功,则使用 PKINIT 通过添加的 KeyCredential 请求 TGT。
    3. 如果上述操作成功,则执行 UnPACTheHash 攻击以揭示用户/计算机的 NT Hash。
    4. 如果指定了 --RestoreShadowCred:移除添加的 KeyCredential(清理现场……)
  5. 如果指定了 --Recursive:使用我们成功拥有的每个用户/计算机帐户重复相同过程。

ShadowSpray 支持 CTRL+C,因此如果你希望在任意时刻停止执行,只需按下 CTRL+C,ShadowSpray 将在退出前显示到目前为止恢复的 NT Hash(如下面的演示所示)。

演示

https://user-images.githubusercontent.com/54464773/194827503-b1eead1a-e09a-41ca-9d9b-0a7a6f0ad6a0.mp4

用法

 __             __   __        __   __   __
/__` |__|  /\  |  \ /  \ |  | /__` |__) |__)  /\  \ /
.__/ |  | /~~\ |__/ \__/ |/\| .__/ |    |  \ /~~\  |


Usage: ShadowSpray.exe [-d FQDN] [-dc FQDN] [-u USERNAME] [-p PASSWORD] [-r] [-re] [-cp CERT_PASSWORD] [-ssl]

    -r   (--RestoreShadowCred)       攻击完成后恢复“msDS-KeyCredentialLink”属性。(可选)
    -re  (--Recursive)               递归执行 ShadowSpray 攻击。(可选)
    -cp  (--CertificatePassword)     证书密码。(默认 = 随机密码)


通用选项:
    -u  (--Username)                 用于初始 LDAP 身份验证的用户名。(可选)
    -p  (--Password)                 用于初始 LDAP 身份验证的密码。(可选)
    -d  (--Domain)                   域的 FQDN。(可选)
    -dc (--DomainController)         域控制器的 FQDN。(可选)
    -ssl                             使用 LDAP over SSL。(可选)
    -y  (--AutoY)                    不要求确认直接开始 ShadowSpray 攻击。(可选)

待办事项

  • 代码重构和清理!!!
  • 添加详细输出选项
  • 添加将添加的 KeyCredentials / 请求的 TGT / 收集的 NT Hashes 保存到磁盘文件的选项
  • Python 版本 ;)
  • 欢迎其他建议

缓解与检测

摘自 Elad Shamir 关于 Shadow Credentials 的博客文章:

  • 如果环境中不常使用 PKINIT 身份验证,或目标帐户不常使用,则“请求 Kerberos 身份验证票证 (TGT)”事件 (4768) 在证书信息属性不为空时可能暗示异常行为。

  • 如果为目标帐户配置了 SACL 以审核 Active Directory 对象修改,则“目录服务对象已修改”事件 (5136) 在修改 msDS-KeyCredentialLink 的主体不是 Azure AD Connect 同步帐户或 ADFS 服务帐户(通常充当密钥预配服务器并合法地为用户修改此属性)时可能暗示异常行为。

  • 更具体的预防性控制措施是添加一个访问控制项 (ACE),以拒绝主体 EVERYONE 修改任何不打算注册密钥信任无密码身份验证的帐户(尤其是特权帐户)的 msDS-KeyCredentialLink 属性。

  • 检测 UnPACing 和影子凭据 作者:Henri Hambartsumyan,来自 FalconForce

ShadowSpray 特定的检测:

  • 该工具尝试在极短的时间内修改域中的每个用户/计算机对象,当失败时(大多数情况下),它会生成一个 LDAP_INSUFFICIENT_ACCESS 错误。可以使用与检测常规密码喷洒相同的方法围绕这一点构建检测。

致谢

  • Elad Shamir 对 Shadow Credentials 的研究及其出色的工具 Whisker。
  • Will Schroeder 以及所有为 Rubeus 做出贡献的人,我们都熟知并喜爱它。基本上所有 TGT/TGS/UnPACTheHash 功能都来自那里。
  • Cube0x0 他的出色工具 KrbRelay 中的一些代码(特别是通过 WINAPI 修改 LDAP 属性的部分)被用在此处。
  • Michael Grafnetter 他的工具 DSInternals 被用来帮助实现 Shadow Credentials 功能。
  • Orange-Cyberdefense 他们开发的 GOAD 是我使用的 Active Directory 研究实验室,在演示视频和图片中可以看到。
  • Martijn Laarman 本工具中使用的漂亮的 进度条。
下载工具