SUCTF2025-misc-SU_AD
字数 2153 2025-08-29 08:30:30

SUCTF2025-misc-SU_AD 域渗透分析教学文档

1. 流量分析与NTLM协议解密

1.1 初始流量观察

  • 流量包中存在SMB2协议流量
  • 需要解密NTLM协议部分以获取更多信息

1.2 提取NTLM认证信息

使用tshark命令提取关键字段:

# 过滤NTLM认证信息
tshark -r capture.pcap -Y "ntlmssp.auth.domain" -T fields -e ntlmssp.auth.domain -e ntlmssp.auth.username

分析结果:

  • Domain name: sk.com
  • User name: sk

1.3 提取NTLMv2哈希组件

需要收集以下三个关键组件:

  1. NTproofstring
  2. ModifiedNTLMv2Response
  3. ServerChallenge

提取命令:

# 提取ServerChallenge
tshark -r capture.pcap -Y "ntlmssp.ntlmserverchallenge" -T fields -e ntlmssp.ntlmserverchallenge

1.4 构建NTLMv2哈希格式

将提取的信息拼接成hashcat可识别的格式:

username::domain:server_challenge:NTproofstring:modifiedntlmv2response

注意:modifiedntlmv2response前面部分就是NTproofstring,需要手动删除重复部分

1.5 使用hashcat爆破密码

将拼接好的哈希存入2.txt,使用hashcat爆破:

hashcat -m 5600 2.txt /path/to/wordlist

爆破结果:密码为Eminem01

2. 解密GSS-API流量

2.1 使用获得的密码解密

  • Eminem01作为NTLMSSP的Password解密流量
  • 解密后可以观察到修改Administrator密码的操作

2.2 解析密码修改操作

参考Microsoft文档[MS-ADTS]:unicodePwd编码规则,提取出新密码:
1202)78M5CcE=+!2

2.3 DACL滥用分析

这是一个强制改密操作,参考ForceChangePassword技术实现

3. Kerberos流量解密

3.1 流量特征分析

  • 后续流量主要是Kerberos认证
  • 通过psexec脚本产生的SMB流量
  • 使用Administrator用户进行认证

3.2 制作Keytab文件

使用Create-KeyTab PowerShell脚本制作Administrator用户的keytab文件:

# 示例命令
Create-KeyTab -User Administrator -Domain sk.com -Password "1202)78M5CcE=+!2"

注意:用户名大小写敏感

3.3 导入Wireshark解密

将生成的keytab文件导入Wireshark解密DCERPC流量

4. VBScript分析与提取

4.1 过滤DCERPC流量

tshark -r capture.pcap -Y "dcerpc"

4.2 提取VBScript文件

  • 从流量中提取出混淆的VBScript
  • 进行反混淆处理

4.3 获取flag.zip密码

解混淆后得到base64编码的command,解码后获得flag.zip密码:
oOCDLbkZ9Mtu67Alyh8uAaFHy6KDsCbG

5. SMB2流量解密

5.1 Kerberos认证下的SMB2解密

由于Wireshark不支持自动解密Kerberos认证的SMB2流量,需要手动处理:

  1. 从TGS-REP中获取sessionKey
  2. 手动添加解密密钥

5.2 Session Key与Session ID对应关系

建立Session ID与sessionKey的映射表:

Session Id sessionKey
0500001000140000 c475652caee0502bbf57d0583c8d02f7
2100001000140000 057ca236576c77a46c3974840f1a407f
0d00001000140000 400ececb0dfa0b9e69debe0cd859b7b4
0900001000140000 2251c04efe1ea59d1d1871ef65ae1ce5
0100001000140000 9ea564454a9c0b1f68d152cb72e49baa

5.3 解密SMB2流量

  1. 在Wireshark中为每个Session ID添加对应的sessionKey
  2. 过滤smb2流量确认解密成功
  3. 导出SMB对象中的文件

6. 获取Flag

  1. 从解密的SMB流量中导出flag.zip
  2. 使用之前获取的密码oOCDLbkZ9Mtu67Alyh8uAaFHy6KDsCbG解压
  3. 获得flag:
    flag{Sk_l!kEs_aD_BuT_Ad_i5_7Oo_Hard_T_T}

7. 关键工具与参考

  1. 工具列表

    • tshark (Wireshark命令行工具)
    • hashcat (密码爆破工具)
    • Create-KeyTab (Keytab生成脚本)
    • John the Ripper (密码破解工具)
  2. 参考文档

    • [MS-ADTS]:unicodePwd | Microsoft Learn
    • ForceChangePassword | The Hacker Recipes
    • Kerberos认证过程详细分析(一) | MYZXCG
    • SMB解密技术文档 - TryHackMe
  3. 关键点总结

    • NTLMv2哈希的正确拼接格式
    • Kerberos Keytab的制作与使用
    • SMB2流量的手动解密方法
    • Session ID与sessionKey的对应关系
SUCTF2025-misc-SU_ AD 域渗透分析教学文档 1. 流量分析与NTLM协议解密 1.1 初始流量观察 流量包中存在SMB2协议流量 需要解密NTLM协议部分以获取更多信息 1.2 提取NTLM认证信息 使用tshark命令提取关键字段: 分析结果: Domain name: sk.com User name: sk 1.3 提取NTLMv2哈希组件 需要收集以下三个关键组件: NTproofstring ModifiedNTLMv2Response ServerChallenge 提取命令: 1.4 构建NTLMv2哈希格式 将提取的信息拼接成hashcat可识别的格式: 注意:modifiedntlmv2response前面部分就是NTproofstring,需要手动删除重复部分 1.5 使用hashcat爆破密码 将拼接好的哈希存入2.txt,使用hashcat爆破: 爆破结果:密码为 Eminem01 2. 解密GSS-API流量 2.1 使用获得的密码解密 将 Eminem01 作为NTLMSSP的Password解密流量 解密后可以观察到修改Administrator密码的操作 2.2 解析密码修改操作 参考Microsoft文档[ MS-ADTS ]:unicodePwd编码规则,提取出新密码: 1202)78M5CcE=+!2 2.3 DACL滥用分析 这是一个强制改密操作,参考ForceChangePassword技术实现 3. Kerberos流量解密 3.1 流量特征分析 后续流量主要是Kerberos认证 通过psexec脚本产生的SMB流量 使用Administrator用户进行认证 3.2 制作Keytab文件 使用Create-KeyTab PowerShell脚本制作Administrator用户的keytab文件: 注意:用户名大小写敏感 3.3 导入Wireshark解密 将生成的keytab文件导入Wireshark解密DCERPC流量 4. VBScript分析与提取 4.1 过滤DCERPC流量 4.2 提取VBScript文件 从流量中提取出混淆的VBScript 进行反混淆处理 4.3 获取flag.zip密码 解混淆后得到base64编码的command,解码后获得flag.zip密码: oOCDLbkZ9Mtu67Alyh8uAaFHy6KDsCbG 5. SMB2流量解密 5.1 Kerberos认证下的SMB2解密 由于Wireshark不支持自动解密Kerberos认证的SMB2流量,需要手动处理: 从TGS-REP中获取sessionKey 手动添加解密密钥 5.2 Session Key与Session ID对应关系 建立Session ID与sessionKey的映射表: | Session Id | sessionKey | |-------------------|------------------------------------| | 0500001000140000 | c475652caee0502bbf57d0583c8d02f7 | | 2100001000140000 | 057ca236576c77a46c3974840f1a407f | | 0d00001000140000 | 400ececb0dfa0b9e69debe0cd859b7b4 | | 0900001000140000 | 2251c04efe1ea59d1d1871ef65ae1ce5 | | 0100001000140000 | 9ea564454a9c0b1f68d152cb72e49baa | 5.3 解密SMB2流量 在Wireshark中为每个Session ID添加对应的sessionKey 过滤smb2流量确认解密成功 导出SMB对象中的文件 6. 获取Flag 从解密的SMB流量中导出flag.zip 使用之前获取的密码 oOCDLbkZ9Mtu67Alyh8uAaFHy6KDsCbG 解压 获得flag: flag{Sk_l!kEs_aD_BuT_Ad_i5_7Oo_Hard_T_T} 7. 关键工具与参考 工具列表 : tshark (Wireshark命令行工具) hashcat (密码爆破工具) Create-KeyTab (Keytab生成脚本) John the Ripper (密码破解工具) 参考文档 : [ MS-ADTS ]:unicodePwd | Microsoft Learn ForceChangePassword | The Hacker Recipes Kerberos认证过程详细分析(一) | MYZXCG SMB解密技术文档 - TryHackMe 关键点总结 : NTLMv2哈希的正确拼接格式 Kerberos Keytab的制作与使用 SMB2流量的手动解密方法 Session ID与sessionKey的对应关系