1. 攻击链概述:从低权限到域控的完整路径
这条攻击链展示了攻击者如何从最基础的Guest账户写权限开始,通过NTLM中继和Kerberoasting技术组合,最终获取域控制器SYSTEM权限的完整过程。在实际渗透测试中,这种攻击路径非常典型,它充分利用了Windows域环境中几个关键安全机制的弱点。
攻击链的核心在于利用NTLM认证协议的中继特性,将低权限账户的认证请求转发到高价值目标,再通过Kerberoasting技术提取服务账户的凭据。整个过程不需要任何漏洞利用,完全依靠协议特性和配置不当实现权限提升。
2. 初始攻击面:Guest账户写权限利用
2.1 Guest账户权限分析
Guest账户在Windows系统中默认是禁用的,但很多企业为了临时访客访问会启用它。这个账户通常被赋予了一些基本的写权限,比如:
- 对某些共享文件夹的写入权限
- 对特定注册表键值的修改权限
- 对某些服务配置的更改权限
攻击者首先会枚举Guest账户具有哪些写权限。常见的方法包括:
# 检查共享文件夹权限 net share Get-SmbShare | Get-SmbShareAccess # 检查文件系统权限 icacls "C:\target\folder" accesschk.exe -w -q -s -u "C:\target\folder"2.2 滥用写权限实现代码执行
一旦发现可写位置,攻击者会尝试上传恶意文件或修改配置。常见的技术包括:
- 覆盖脚本或配置文件
- 添加启动项或计划任务
- 修改服务二进制路径
例如,如果发现可以修改某个服务的注册表项:
reg add "HKLM\SYSTEM\CurrentControlSet\Services\VulnerableService" /v ImagePath /t REG_EXPAND_SZ /d "C:\malicious.exe" /f3. NTLM中继攻击详解
3.1 NTLM协议基础与中继原理
NTLM认证协议是Windows环境中广泛使用的认证机制,但它存在一个致命缺陷:认证过程不验证请求的来源。这意味着攻击者可以截获一个NTLM认证请求,然后将其"中继"到其他服务器。
中继攻击成功需要三个条件:
- 攻击者能够诱使目标发起NTLM认证
- 目标账户在目标服务器上有足够的权限
- 目标服务器未启用SMB签名或LDAP签名
3.2 实际中继攻击实施
使用工具如Responder和Impacket进行中继攻击:
# 启动Responder捕获NTLM认证 python Responder.py -I eth0 # 使用ntlmrelayx进行中继 python ntlmrelayx.py -t ldap://dc01 -smb2support关键点在于:
- 选择正确的协议(SMB或LDAP)
- 确定中继目标(通常是域控制器)
- 处理认证后的操作(如创建新用户、提取信息等)
4. Kerberoasting攻击技术剖析
4.1 Kerberos协议与服务票据
Kerberos是Windows域环境的主要认证协议。当用户请求访问某个服务时,域控制器会颁发一个使用服务账户密码加密的服务票据(ST)。Kerberoasting攻击就是利用这个机制来获取可破解的服务账户凭据。
4.2 实施Kerberoasting攻击
完整的攻击步骤:
- 枚举域内所有SPN(服务主体名称)
setspn -T domain.local -Q */*- 请求特定服务的TGS票据
Add-Type -AssemblyName System.IdentityModel New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/sql01.domain.local"- 导出票据并用工具破解
mimikatz # kerberos::list /export python tgsrepcrack.py wordlist.txt ticket.kirbi5. 组合攻击:从NTLM中继到域控提权
5.1 攻击链完整流程
- 通过Guest账户写权限上传恶意脚本
- 诱使高权限账户访问恶意资源触发NTLM认证
- 中继认证到域控制器LDAP服务
- 修改域对象属性(如设置SPN)
- 请求并导出服务票据
- 离线破解服务账户密码
- 使用服务账户权限进一步提权
5.2 关键防御措施
针对这条攻击链,企业可以采取以下防御措施:
- 禁用Guest账户或严格限制其权限
- 在所有关键服务上启用SMB签名和LDAP签名
- 使用强密码策略,特别是服务账户
- 监控异常的SPN修改和TGS请求
- 实施特权账户管理(PAM)解决方案
6. 实战中的注意事项与技巧
6.1 中继攻击成功率提升
- 选择LDAP协议而非SMB,因为域控制器通常不强制LDAP签名
- 针对特定高价值目标而非广播式攻击
- 结合多种触发NTLM认证的方法(如恶意文件、钓鱼邮件等)
6.2 Kerberoasting优化
- 优先针对使用用户账户而非计算机账户的SPN
- 关注具有高权限的服务账户(如Exchange、SQL Server)
- 使用规则化的字典提高破解效率
6.3 隐蔽性与规避检测
- 控制中继攻击的频率和规模
- 避免在正常工作时间进行大规模SPN枚举
- 清除日志中的攻击痕迹
7. 防御视角:检测与响应
7.1 攻击特征检测
安全团队应监控以下异常事件:
- 来自非常规位置的LDAP修改操作
- 短时间内大量的TGS请求
- Guest账户的异常活动
- 服务账户密码的暴力破解尝试
7.2 应急响应流程
一旦发现此类攻击:
- 立即隔离受影响系统
- 重置所有可能泄露的服务账户密码
- 审查域内所有SPN配置
- 检查域控制器上的异常对象
- 更新所有账户的凭据
8. 工具与资源推荐
8.1 攻击工具
- Impacket套件(ntlmrelayx.py等)
- Responder
- Mimikatz
- Hashcat(用于密码破解)
8.2 防御工具
- Microsoft ATA或Azure ATP
- Splunk或ELK堆栈用于日志分析
- BloodHound用于域权限分析
8.3 学习资源
- MITRE ATT&CK相关技术页面
- Microsoft关于NTLM和Kerberos的安全指南
- 渗透测试认证(如OSCP)相关教材