「域渗透」Shadow Credentials 利用

admin 2022年11月8日23:37:00评论101 views字数 1898阅读6分19秒阅读模式

    许多文章介绍Shadow Credentials利用可能都当做一种权限维持的方式,其实再Windows Server 2016功能级别下还可以配合Relay等,相当于可以把之前的配置RBCD换为配置Shadow Credentials。

背景

    申请TGT之前有一个过程叫做pre-auth,客户端可以告知KDC使用 DES、RC4、AES128 或 AES256 加密请求,或使用非对称(使用证书)预认证。预认证的不对称方式就称为 PKINIT(这是2016引入的)。

    比如说普通的可以看到加密方式为AES256:

「域渗透」Shadow Credentials 利用
req-body

什么是PKINIT?

    PKINIT 是不太常见的非对称密钥方法。客户端有一个公私钥对,并用他们的私钥对预认证数据进行加密,KDC 用客户端的公钥对其进行解密。此外,KDC 还有一个公私密钥对,允许交换会话密钥。

    Windows Server2016域功能级别中,LDAP有一个名为 msDS-KeyCredentialLink 的属性,可以在其中设置公钥。当使用 PKINIT 进行预认证时,KDC 将检查认证用户是否知道匹配的私钥,如果匹配,将发送 TGT。

    所以说如果我们可以控制能够编辑其他对象的 msDS-KeyCredentialLink属性的帐户的话,那么这允许我们创建密钥对,附加到该属性中的公钥,并获得对目标对象(可以是用户或计算机)的持久和隐秘访问。

「域渗透」Shadow Credentials 利用
img

利用条件

  1. 位于域功能级别为 Windows Server 2016 或更高版本的域中(或至少一个运行 Windows Server 2016 或更高版本的域控制器)

  2. DC拥有自己的密钥对(用于会话密钥交换)(例如,在启用 AD CS 或存在证书颁发机构 (CA) )

  3. 可以控制编辑目标对象的 msDs-KeyCredentialLink 属性的帐户

  4. 开启PKINIT支持

Key Trust Mode

    并且微软还引入了一个Key Trust模式,以支持在不支持证书信任的环境中进行无密码身份验证。在 Key Trust 模式下,PKINIT 身份验证是基于原始密钥数据,而不是证书建立的。

    客户端的公钥存储在名为 msDS-KeyCredentialLink 的多值属性中,但是DC还是需要用于密钥交换的证书,所以说条件2还是必须的。

所以说基于这个Key Trust模式,我们上述的攻击才可以成立。

「域渗透」Shadow Credentials 利用
img

有权限修改msDs-KeyCredentialLink 属性的帐户有:

  1. 域管
  2. KeyCredential Admins
  3. Acl高权限用户
  4. 机器账号给自己新增

利用思路

1.直接修改目标msDs-KeyCredentialLink 属性

使用工具:

https://github.com/eladshamir/Whisker

https://github.com/ShutdownRepo/pywhisker

Whisker.exe add /target:"TARGET_SAMNAME" /domain:"FQDN_DOMAIN" /dc:"DOMAIN_CONTROLLER" /path:"cert.pfx" /password:"pfx-password"
pywhisker.py -d "FQDN_DOMAIN" -u "user1" -p "CERTIFICATE_PASSWORD" --target "TARGET_SAMNAME" --action "list"

2.Relay的方式修改目标msDs-KeyCredentialLink 属性

   可以使用常规relay方法,比如我们知道机器账户可以自己给自己新增,那么:

  1. webdav配合efs这类工具无需签名利用
  2. -remove-mic,利用1040绕过签名
python3 ntlmrelayx.py  --shadow-credent --shadow-target 'dc2$' -t ldap://dc1 --remove-mic

还可以relay特殊用户、DA的NTLM请求,因为高权限用户也可以修改这个属性。

3.用来域内权限维持

略,懂就懂。

与RBCD的区别

  1. 攻击的目标对象可以是用户账户也可以是机器账户
  2. 不需要利用默认MAQ特性去添加机器账户
  3. 不需要目标机器当前存活

PKINIT 协议文档:https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-pkca/d0cf1763-3541-4008-a75f-a577fa5e8c5b




「域渗透」Shadow Credentials 利用

原文始发于微信公众号(黑客在思考):「域渗透」Shadow Credentials 利用

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月8日23:37:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   「域渗透」Shadow Credentials 利用https://cn-sec.com/archives/1398525.html

发表评论

匿名网友 填写信息