183 words
1 minute
TCTT25 Forensics: Hidden Payload
Hidden Payload [200 pts] - Digital Forensics Write-up
โจทย์
ไฟล์ที่ได้รับ:
hidden_payload.iso (362kb)ดาวน์โหลดไฟล์
| ไฟล์ | ดาวน์โหลด |
|---|---|
| hidden_payload.iso | 📥 Download from GitHub |
ข้อสังเกต
- ไฟล์ที่ได้รับเป็นไฟล์ .iso (สามารถเปิดด้วยโปรแกรม Unzip ใด ๆ ได้)
- มีไฟล์ถูกบีบอัดด้านในคือ filler.txt
แนวคิดการแก้โจทย์
1. ใช้โปรแกรม Unzip ในการดูไฟล์ที่อยู่ด้านใน
สำรวจสิ่งที่เป็นประโยชน์ต่อการแก้โจทย์
- เมื่อ Extract ไฟล์ออกมา พบว่าเป็นไฟล์เปล่า
- ใช้คำสั่ง exiftool filler.txt -v ดูแล้วไม่พบข้อมูลใด ๆ
- ใช้คำสั่ง exiftool hidden_payload.iso -v แล้วไม่พบข้อมูลใด ๆ
2. ใช้คำสั่ง strings หา Hint
strings hidden_payload.isoพบข้อความเข้ารหัส:
SGludDogUmlqbmRhZWwga2V5ICgxMjgtYml0KSA9IEFTQ0lJICdKJyByZXBlYXRlZCBhbmQgaGV4LWVuY29kZWQgCg==3. ถอดรหัส Hint ด้วย CyberChef
นำไปถอดด้วย CyberChef ได้ข้อความว่า:
Hint: Rijndael key (128-bit) = ASCII 'J' repeated and hex-encodedJ = 4a เมื่อนำไปเข้ารหัสแบบ Hex
4. ค้นหาข้อมูลที่ซ่อนด้วย hexdump
จาก Hint พบว่ามีการเข้ารหัสซ่อนไว้ใน .iso อีก ให้ทำการสำรวจโดยใช้:
hexdump -C hidden_payload.iso | lessหลัง Sector ที่ 30 (ส่วน Directory Record) พบว่ามีข้อความที่อ่านไม่ได้อยู่ ที่ Offset 102400 (00019000)
5. Extract ข้อมูลที่เข้ารหัส
copy byte-level ตั้งแต่ Offset 102400 ออกมา ด้วยคำสั่ง:
dd if=hidden_payload.iso of=enc.bin bs=1 skip=102400 count=20486. ถอดรหัส AES-128-ECB
ถอดรหัสไฟล์ enc.bin ด้วยคำสั่ง:
openssl enc -d -aes-128-ecb -in enc.bin -out dec.txt -K 4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a -nopad7. วิเคราะห์ PowerShell Script
เมื่อเปิดดูไฟล์ dec.txt จะพบ PowerShell Script:
$key = 0x4A$data = @(0x2c,0x26,0x2b,0x2d,0x31,0x3a,0x25,0x3d,0x2f,0x38,0x39,0x22,0x2f,0x26,0x26,0x15,0x32,0x25,0x38,0x15,0x22,0x23,0x2e,0x2e,0x2f,0x24,0x15,0x39,0x25,0x15,0x2f,0x2b,0x39,0x33,0x37)$decoded = $data | ForEach-Object { [char]($_ -bxor $key) }Write-Output ($decoded -join "")จาก PowerShell Script พบว่ามีการนำข้อมูลไป XOR
8. ถอดรหัส XOR ด้วย Python
นำข้อมูลไป XOR ด้วย Python Script อย่างง่าย:
HEX_VALUES = [0x2c,0x26,0x2b,0x2d,0x31,0x3a,0x25,0x3d,0x2f,0x38,0x39,0x22, 0x2f,0x26,0x26,0x15,0x32,0x25,0x38,0x15,0x22,0x23,0x2e,0x2e, 0x2f,0x24,0x15,0x39,0x25,0x15,0x2f,0x2b,0x39,0x33,0x37]
KEY = 0x4A
out = []for n in HEX_VALUES: out.append(chr((n ^ KEY) & 0xFF))
print("".join(out))ผลลัพธ์
เมื่อรัน Python Script จะได้ Flag:
flag{powershell_xor_hidden_so_easy}Credits
Writeup by netw0rk7 | Original Repo
TCTT25 Forensics: Hidden Payload
https://blog.lukkid.dev/posts/tctt25-forensics-hidden-payload/