SUCTF-2025 SU_AD 官方题解
字数 1718 2025-08-22 12:23:24

SharpADWS 分析与 Active Directory 滥用技术详解

1. ADWS 协议与 NetNTLMv2 认证分析

1.1 ADWS 协议概述

ADWS (Active Directory Web Services) 是微软提供的一种用于访问 Active Directory 的协议,基于 SOAP 和 HTTP/HTTPS。攻击者可以利用该协议枚举 Active Directory 信息。

1.2 NetNTLMv2 认证流量分析

使用 Wireshark 或 tshark 可以提取 NetNTLMv2 认证信息:

tshark -n -r adws-1.pcapng -Y 'ntlmssp.messagetype == 0x00000003' -T fields -e ntlmssp.auth.username -e ntlmssp.auth.domain -e ntlmssp.ntlmv2_response.ntproofstr -e ntlmssp.auth.ntresponse

关键字段:

  • ntlmssp.messagetype == 0x00000003:NTLMv2 响应消息
  • 用户名和域名
  • NTLMv2 响应哈希

1.3 获取 NTLM 挑战值

tshark -n -r adws-1.pcapng -Y 'ntlmssp.messagetype == 0x00000002' -T fields -e ntlmssp.ntlmserverchallenge

1.4 构造哈希文件进行爆破

将提取的信息格式化为 hashcat 可识别的格式:

username::domain:server_challenge:NTProofStr:NTResponse

使用 hashcat 进行爆破:

hashcat -a 0 -m 5600 ntlm_hash.txt rockyou.txt

其中 -m 5600 指定 NetNTLMv2 哈希模式。

2. Kerberos 与 Keytab 文件

2.1 Keytab 文件制作

Keytab 文件包含 Kerberos 主体的加密密钥,可用于解密 Kerberos 流量。参考 PTS2023-Talk-20-Decrypt_Kerberos_NTLM_with_Wireshark.pdf。

2.2 解密 Kerberos 流量

  1. 获取用户的 AES-256 密钥
  2. 在 Wireshark 中配置解密密钥
  3. 解密 SMB 流量(注意:Wireshark 目前不支持自动解密 Kerberos 认证的 SMB 流量,需手动添加密钥)

3. DACL 滥用与强制密码重置

3.1 DACL 滥用原理

DACL (Discretionary Access Control List) 控制着对象的安全权限。通过修改 DACL,攻击者可以强制重置用户密码。

关键操作:

  • 修改 unicodePwd 属性
  • 需要适当的权限(如 GenericAll 或 WriteDacl)

3.2 实现方式

参考 bloodyAD 项目实现,SharpADWS 项目中不包含此功能,需要手动实现。

4. 横向移动技术

4.1 Psexec with Kerberos

使用 Impacket 工具包的 psexec.py 进行横向移动:

  • 通过 Kerberos 认证而非 NTLM
  • 产生的 SMB 流量使用 Kerberos 认证
  • 与 NTLM 认证在 SMB3 协议上的区别可参考微软官方文档

4.2 WMIExec-Pro 技术

高级 WMI 远程执行技术:

  1. 通过 WMI 事件订阅远程执行 VBS 脚本
  2. 初始 VBS 脚本未混淆
  3. 使用 generator 函数进行混淆
  4. 可逆向还原原始 VBS 脚本

优势:

  • 绕过杀毒软件检测
  • 适用于横向移动

5. 完整攻击链示例

  1. 信息收集:通过 ADWS 协议枚举 Active Directory
  2. 凭证窃取:捕获 NetNTLMv2 哈希并爆破
  3. 权限提升:通过 DACL 滥用强制重置管理员密码
  4. 横向移动
    • 使用 Psexec with Kerberos
    • 或使用 WMIExec-Pro 技术
  5. 流量解密:通过 Keytab 文件解密 Kerberos 流量获取敏感信息

6. 防御建议

  1. 监控 ADWS 协议使用:异常查询行为可能表明攻击
  2. 保护 NTLM 认证
    • 启用 SMB 签名
    • 尽可能使用 Kerberos 而非 NTLM
  3. 限制 DACL 权限:定期审核敏感对象的权限
  4. 监控 WMI 事件订阅:异常 WMI 事件订阅可能是攻击迹象
  5. 启用高级日志记录:记录 Kerberos 和 NTLM 认证事件

7. 参考资源

  1. PTS2023-Talk-20-Decrypt_Kerberos_NTLM_with_Wireshark.pdf
  2. bloodyAD 项目
  3. Impacket 工具包
  4. 微软官方 Kerberos 和 NTLM 认证文档
  5. @whoami 和 @eson 的域渗透技术分享
SharpADWS 分析与 Active Directory 滥用技术详解 1. ADWS 协议与 NetNTLMv2 认证分析 1.1 ADWS 协议概述 ADWS (Active Directory Web Services) 是微软提供的一种用于访问 Active Directory 的协议,基于 SOAP 和 HTTP/HTTPS。攻击者可以利用该协议枚举 Active Directory 信息。 1.2 NetNTLMv2 认证流量分析 使用 Wireshark 或 tshark 可以提取 NetNTLMv2 认证信息: 关键字段: ntlmssp.messagetype == 0x00000003 :NTLMv2 响应消息 用户名和域名 NTLMv2 响应哈希 1.3 获取 NTLM 挑战值 1.4 构造哈希文件进行爆破 将提取的信息格式化为 hashcat 可识别的格式: 使用 hashcat 进行爆破: 其中 -m 5600 指定 NetNTLMv2 哈希模式。 2. Kerberos 与 Keytab 文件 2.1 Keytab 文件制作 Keytab 文件包含 Kerberos 主体的加密密钥,可用于解密 Kerberos 流量。参考 PTS2023-Talk-20-Decrypt_ Kerberos_ NTLM_ with_ Wireshark.pdf。 2.2 解密 Kerberos 流量 获取用户的 AES-256 密钥 在 Wireshark 中配置解密密钥 解密 SMB 流量(注意:Wireshark 目前不支持自动解密 Kerberos 认证的 SMB 流量,需手动添加密钥) 3. DACL 滥用与强制密码重置 3.1 DACL 滥用原理 DACL (Discretionary Access Control List) 控制着对象的安全权限。通过修改 DACL,攻击者可以强制重置用户密码。 关键操作: 修改 unicodePwd 属性 需要适当的权限(如 GenericAll 或 WriteDacl) 3.2 实现方式 参考 bloodyAD 项目实现,SharpADWS 项目中不包含此功能,需要手动实现。 4. 横向移动技术 4.1 Psexec with Kerberos 使用 Impacket 工具包的 psexec.py 进行横向移动: 通过 Kerberos 认证而非 NTLM 产生的 SMB 流量使用 Kerberos 认证 与 NTLM 认证在 SMB3 协议上的区别可参考微软官方文档 4.2 WMIExec-Pro 技术 高级 WMI 远程执行技术: 通过 WMI 事件订阅远程执行 VBS 脚本 初始 VBS 脚本未混淆 使用 generator 函数进行混淆 可逆向还原原始 VBS 脚本 优势: 绕过杀毒软件检测 适用于横向移动 5. 完整攻击链示例 信息收集 :通过 ADWS 协议枚举 Active Directory 凭证窃取 :捕获 NetNTLMv2 哈希并爆破 权限提升 :通过 DACL 滥用强制重置管理员密码 横向移动 : 使用 Psexec with Kerberos 或使用 WMIExec-Pro 技术 流量解密 :通过 Keytab 文件解密 Kerberos 流量获取敏感信息 6. 防御建议 监控 ADWS 协议使用 :异常查询行为可能表明攻击 保护 NTLM 认证 : 启用 SMB 签名 尽可能使用 Kerberos 而非 NTLM 限制 DACL 权限 :定期审核敏感对象的权限 监控 WMI 事件订阅 :异常 WMI 事件订阅可能是攻击迹象 启用高级日志记录 :记录 Kerberos 和 NTLM 认证事件 7. 参考资源 PTS2023-Talk-20-Decrypt_ Kerberos_ NTLM_ with_ Wireshark.pdf bloodyAD 项目 Impacket 工具包 微软官方 Kerberos 和 NTLM 认证文档 @whoami 和 @eson 的域渗透技术分享