Forensics
Hard
300 points
Exfiltrated
Recuite 2025 - HCMUS
6 tháng 10, 2025
DNS Exfiltration
SAM
NTLM
Password Cracking

Forensics
Exfiltrated - Writeup#
Thông tin Challenge#
- Thể loại: Forensics
- Tệp:
capture.pcap - Gợi ý: Flag là mật khẩu đăng nhập Administrator, bọc trong
BPCTF{}
Phân tích#
Mẫu Exfiltration qua DNS#
Toàn bộ lưu lượng liên quan tới các truy vấn DNS tới domain đáng ngờ rnicrosofft.xyz (typosquatting!).
Mẫu:
- Các truy vấn tới
*.N.updates.rnicrosofft.xyz(N = số thứ tự sequence) - Mỗi subdomain chứa một đoạn base64 được mã hóa
- Đoạn đầu:
H4sIAAAAAAAAA→ đây là tiền tố thường thấy của dữ liệu gzip!
Ví dụ:
H4sIAAAAAAAAA+w8CXiURZbVgUCCHEECBAT5EZRACHQuEhiFXJ.0.updates.rnicrosofft.xyz
ySEBMDEUXSJJ2kSae77e4AAZQojGR00Kxnxs36RfFz4/WZGY9h.1.updates.rnicrosofft.xyz
Trích xuất dữ liệu#
pythonimport subprocess, re, base64, gzip
# Trích xuất lưu lượng DNS
result = subprocess.run(['tcpdump', '-r', 'capture.pcap', '-n', 'port 53'],
capture_output=True, text=True)
# Parse theo số thứ tự sequence
dns_data = {}
pattern = r'0\+ TXT\? ([A-Za-z0-9+/=]+)\.(\d+)\.updates\.rnicrosofft\.xyz'
for line in result.stdout.split('\n'):
match = re.search(pattern, line)
if match:
dns_data[int(match.group(2))] = match.group(1)
# Ghép và giải nén
combined = ''.join([dns_data[i] for i in sorted(dns_data.keys())])
decoded = base64.b64decode(combined)
decompressed = gzip.decompress(decoded)
Kết quả sơ bộ:
- 55,116 chunk DNS
- 2,755,796 bytes ở dạng base64
- 11,079,680 bytes sau khi giải nén (decompressed)
Các tệp bị exfiltrate#
bashfile exfiltrated_data.bin
# POSIX tar archive
tar -xvf exfiltrated_data.bin
# Kết quả giải nén: SAM, SYSTEM
Các hive registry Windows:
- SAM: Security Account Manager (chứa hash mật khẩu)
- SYSTEM: Chứa boot key dùng để giải mã SAM
Trích xuất hash mật khẩu#
Dùng pypykatz hoặc công cụ tương tự trên hai file SAM và SYSTEM:
bashpypykatz registry --sam SAM SYSTEM
Ví dụ đầu ra:
Boot Key: 9a2ff52cd74d450e0c309f9ba1875d63
Administrator:500:aad3b435b51404eeaad3b435b51404ee:e05a7fb0593bee4aab25939341c46065:::
Administrator NTLM hash: e05a7fb0593bee4aab25939341c46065
Crack mật khẩu#
Hash được crack ra thành: blackpinker597
Xác minh:
pythonfrom passlib.hash import nthash
nthash.hash("blackpinker597")
# Kết quả: 'e05a7fb0593bee4aab25939341c46065' ✓
Flag#
BPCTF{blackpinker597}
Những điểm rút ra#
Mẫu tấn công#
- DNS có thể được dùng để bypass cơ chế bảo mật mạng.
- Dữ liệu được chia nhỏ (chunk), base64-encode, và nhúng vào subdomain.
- Sử dụng số thứ tự (sequence numbers) để ghép lại đúng thứ tự.
- Dùng nén (gzip) để giảm kích thước truyền tải.
Cách phát hiện#
- Lượng lớn truy vấn TXT/DNS bất thường.
- Domain đáng ngờ / typosquatting (ví dụ
rnicrosofft.xyz). - Subdomain dài chứa chuỗi base64.
- Mẫu tuần tự (sequence) trong tên subdomain.
Biện pháp giảm thiểu#
- Giám sát các bất thường trên DNS (volume / pattern).
- Giới hạn độ dài và tần suất truy vấn DNS.
- Chặn/blacklist domain đáng ngờ.
- Dùng giải pháp lọc/giám sát DNS (DNS filtering, DNS logging).
- Bảo vệ các hive registry (SAM/SYSTEM) và hạn chế truy cập vật lý/privilege.
- Sử dụng mật khẩu mạnh, duy nhất và chính sách quản lý mật khẩu an toàn.
Công cụ sử dụng#
tcpdump— phân tích gói tinpypykatz— trích xuất credential từ SAM/SYSTEMpasslib(hoặchashcat/john) — xác minh / crack NTLMgzip,tar— xử lý nén và lưu trữ
300
Points
Hard
Difficulty
Forensics
Category