Forensics
Hard
300 points

Exfiltrated

Recuite 2025 - HCMUS
6 tháng 10, 2025
DNS Exfiltration
SAM
NTLM
Password Cracking
Recuite 2025 - HCMUS
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#

python
import 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#

bash
file 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:

bash
pypykatz 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:

python
from 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#

  1. Lượng lớn truy vấn TXT/DNS bất thường.
  2. Domain đáng ngờ / typosquatting (ví dụ rnicrosofft.xyz).
  3. Subdomain dài chứa chuỗi base64.
  4. 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 tin
  • pypykatz — trích xuất credential từ SAM/SYSTEM
  • passlib (hoặc hashcat/john) — xác minh / crack NTLM
  • gzip, tar — xử lý nén và lưu trữ
300
Points
Hard
Difficulty
Forensics
Category