给了一个artifact先翻看一下,大多数是QUIC和发现SMB流量,说明是Windows流量分析
发现了一堆smb2加密流量

注意到有NTLMSSP,说明有个NTLM协议,这里用NTMLRawUnhide提取一下信息
python NTLMRawUnhide.py -i artifact.pcap -o out.hash
这里可以得到信息:主机名APT,域名WORKGROUP,用的KALI,Challenge是de4223bdc2c58d00
这里讲一下,challenge是 NTLMSSP 的认证过程的一环
NTLMSSP是使用NTLM协议进行身份验证的Microsoft 协议。
- 客户端向服务器发送一个请求
- 服务器接收到请求后,生成一个8位的Challenge,发送回客户端
- 客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,作为response发送给服务器
- 服务器校验response
这里的最后一长串是挑战的答案,根据这个答案和challenge爆破验证密码是否正确
hashcat -m 5600 out.hash rockyou.txt用hashcat爆破一下
结果是mypassword
之后需要用这个密钥推导出会话的离线密钥,用于解密
import hashlib, hmac
from Crypto.Cipher import ARC4
from ntlmv2_crack import nt_hash # 爆破脚本里的 MD4
# 三层推导:密码 → NT Hash → NTLMv2 Hash → "锁"
lock = hmac.new(
hmac.new(nt_hash('mypassword'),
'APTWORKGROUP'.encode('utf-16-le'), hashlib.md5).digest(),
bytes.fromhex('29b10ec063eabb61b9e426ed94ff89b1'), # 包里抄的 NTProofStr
hashlib.md5).digest()
# 开锁:RC4 解密包里"寄"过来的钥匙
key = ARC4.new(lock).decrypt(bytes.fromhex('cf2c27bdb6cea56049b43e4499c97485'))
print(key.hex())
# 231ce1f973f7b1215b16c5b47035f030之后要做的就是解密smb3流量,在No.8068里面找到session id,这里注意需要换成小端序

0x000000005328b51b 转换后就是 1bb5285300000000
打开首选项,protocols里面找到smb2,填入刚才算入的信息

流量就解密成功了

找到Read Response,显示的Data字段即为keyfile.txt的内容

最后一步是解密flag.enc,尝试得到是AES-CBC加密
openssl enc -d -aes-256-cbc -pbkdf2 -in flag.enc \
-pass pass:fa317cdb5f898ad01089b5432464052def12721f7f30f5c13d0af1f8b03e5295grey{7r1v14l_70_f0ll0w_7h3_5mb3_7r41l}