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 filler.txt

  • ใช้คำสั่ง exiftool hidden_payload.iso -v แล้วไม่พบข้อมูลใด ๆ

exiftool iso

2. ใช้คำสั่ง strings หา Hint#

Terminal window
strings hidden_payload.iso

พบข้อความเข้ารหัส:

SGludDogUmlqbmRhZWwga2V5ICgxMjgtYml0KSA9IEFTQ0lJICdKJyByZXBlYXRlZCBhbmQgaGV4LWVuY29kZWQgCg==

strings output

3. ถอดรหัส Hint ด้วย CyberChef#

นำไปถอดด้วย CyberChef ได้ข้อความว่า:

Hint: Rijndael key (128-bit) = ASCII 'J' repeated and hex-encoded

J = 4a เมื่อนำไปเข้ารหัสแบบ Hex

Hint decoded

4. ค้นหาข้อมูลที่ซ่อนด้วย hexdump#

จาก Hint พบว่ามีการเข้ารหัสซ่อนไว้ใน .iso อีก ให้ทำการสำรวจโดยใช้:

Terminal window
hexdump -C hidden_payload.iso | less

หลัง Sector ที่ 30 (ส่วน Directory Record) พบว่ามีข้อความที่อ่านไม่ได้อยู่ ที่ Offset 102400 (00019000)

hexdump

5. Extract ข้อมูลที่เข้ารหัส#

copy byte-level ตั้งแต่ Offset 102400 ออกมา ด้วยคำสั่ง:

Terminal window
dd if=hidden_payload.iso of=enc.bin bs=1 skip=102400 count=2048

6. ถอดรหัส AES-128-ECB#

ถอดรหัสไฟล์ enc.bin ด้วยคำสั่ง:

Terminal window
openssl enc -d -aes-128-ecb -in enc.bin -out dec.txt -K 4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a -nopad

AES decrypt

7. วิเคราะห์ PowerShell Script#

เมื่อเปิดดูไฟล์ dec.txt จะพบ PowerShell Script:

Terminal window
$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:

Python XOR result

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/
Author
LUKKID
Published at
2025-12-13
License
CC BY-NC-SA 4.0