Evaporated
๐ Kesimpulan Challenge ini tidak hanya tentang forensik filesystem, tetapi juga: analisis struktur file pemahaman format PNG membedakan metadata vs data asli
๐ Write-Up: Evaporated
(half slop)
๐ Deskripsi Singkat
Diberikan sebuah file evaporated.zip yang berisi:
evaporated.001(image forensik)evaporated.001.txt(metadata dari FTK Imager)
Challenge ini mengarah pada analisis digital forensics untuk menemukan data tersembunyi.
๐ Tahap 1 โ Identifikasi File
Ekstrak file:
~/FGTE/foren/evaporated/forWU
โฏ unzip evaporated.zip
Archive: evaporated.zip
inflating: evaporated.001
inflating: evaporated.001.txtCek tipe file:
~/FGTE/foren/evaporated/forWU
โฏ file evaporated.001
evaporated.001: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS ", sectors/cluster 8, Media descriptor 0xf8, sectors/track 63, heads 255, hidden sectors 498636800, dos < 4.0 BootSector (0x80), FAT (1Y bit by descriptor); NTFS, sectors/track 63, sectors 161791, $MFT start cluster 6741, $MFTMirror start cluster 2, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number 0840cf29c0cf28886; contains bootstrap BOOTMGRHasil:
NTFS filesystem
๐ Ini menunjukkan bahwa file adalah image NTFS hasil akuisisi (FTK Imager).
๐ Tahap 2 โ Mount Image
Karena ini logical image tanpa partition table, mounting langsung:
mkdir chall
sudo ntfs-3g -o ro evaporated.001 chall๐ Tahap 3 โ Eksplorasi File System
Kita cek isi filenya:
~/FGTE/foren/evaporated/forWU
โฏ ls chall/
drwxrwxrwx - root 28 Aug 2025 ๎ฟ $RECYCLE.BIN
drwxrwxrwx - root 28 Aug 2025 ๎ฟ 'System Volume Information'
.rwxrwxrwx@ 1.3M root 24 Apr 2025 ๏ 'Pertemuan 2 - dasar transmisi, gelombang elektromagnetik, kapasitas channel 2024.pdf'
.rwxrwxrwx 2.5M root 22 Aug 2025 ๏
RobloxScreenShot20250822_094618484.png
.rwxrwxrwx 2.7M root 22 Aug 2025 ๏
RobloxScreenShot20250822_094740606.png
.rwxrwxrwx 2.9M root 23 Aug 2025 ๏
RobloxScreenShot20250823_140554259.png
.rwxrwxrwx 3.2M root 23 Aug 2025 ๏
RobloxScreenShot20250823_152901122.png
.rwxrwxrwx 2.2M root 23 Aug 2025 ๏
RobloxScreenShot20250823_153246330.png
.rwxrwxrwx 1.8M root 24 Aug 2025 ๏
RobloxScreenShot20250824_152303314.png
.rwxrwxrwx 3.2M root 24 Aug 2025 ๏
RobloxScreenShot20250824_165340850.png
.rwxrwxrwx 41k root 23 Jul 2018 ๏ฑ 'Segoe UI Italic.ttf'
.rwxrwxrwx 11k root 8 Jun 2025 ๏
'sender gui.png'
.rwxrwxrwx@ 3.5M root 28 Apr 2025 ๎ฏ 'TrueCrypt Setup 7.1a.exe'
.rwxrwxrwx@ 2.3M root 12 Aug 2025 ๎ฏ winbox64.exeAku udah cek RobloxScreenShot, tapi isinya malah muncak :'). Udah aku analisis tapi gak guna :D.
Aku cek Recycle Bin dulu aja karena sus daripada .exenya:
~/FGTE/foren/evaporated/forWU
โฏ ls chall/\$RECYCLE.BIN/
drwxrwxrwx - root 28 Aug 2025 ๎ฟ S-1-5-21-3056431194-2433350566-3139343528-1001
~/FGTE/foren/evaporated/forWU
โฏ ls chall/\$RECYCLE.BIN/S-1-5-21-3056431194-2433350566-3139343528-1001/
.rwxrwxrwx 78 root 28 Aug 2025 ๏
$IE59JVC.png
.rwxrwxrwx 1.6M root 28 Aug 2025 ๏
$RE59JVC.png
.rwxrwxrwx 129 root 28 Aug 2025 ๓ฑป desktop.iniDitemukan:
$RE59JVC.png
$IE59JVC.png
๐ Struktur ini khas Windows:
$Rxxxxxโ file asli$Ixxxxxโ metadata
๐ Tahap 4 โ Analisis Metadata
Cek $I file:
~/FGTE/foren/evaporated/forWU/chall/$RECYCLE.BIN/S-1-5-21-3056431194-2433350566-3139343528-1001
โฏ xxd \$IE59JVC.png
00000000: 0200 0000 0000 0000 1f09 1900 0000 0000 ................
00000010: 40fa 27f4 7717 dc01 1900 0000 4500 3a00 @.'.w.......E.:.
00000020: 5c00 6c00 6f00 6700 6f00 2000 6e00 6f00 \.l.o.g.o. .n.o.
00000030: 6300 7400 7200 6100 2000 6c00 7500 7000 c.t.r.a. .l.u.p.
00000040: 7200 6100 2e00 7000 6e00 6700 0000 r.a...p.n.g...Terlihat string UTF-16:
E:\logo noctra lupra.png
๐ Artinya:
File asli bernama logo noctra lupra.png
Telah dihapus (masuk Recycle Bin)
๐ Tahap 5 โ Analisis File PNG
Cek file utama:
~/FGTE/foren/evaporated/forWU/chall/$RECYCLE.BIN/S-1-5-21-3056431194-2433350566-3139343528-1001
โฏ file \$RE59JVC.png
$RE59JVC.png: dataTidak dikenali sebagai PNG normal.
Cek hex:
~/FGTE/foren/evaporated/forWU/chall/$RECYCLE.BIN/S-1-5-21-3056431194-2433350566-3139343528-1001
โฏ xxd \$RE59JVC.png | head
00000000: 8950 4441 0d0a 1a0a 0000 000d 4e43 4c50 .PDA........NCLP
00000010: 0000 0400 0000 039a 0806 0000 0006 4720 ..............G
00000020: 2800 0000 0970 4859 7300 000e c400 000e (....pHYs.......
00000030: c401 952b 0e1b 0000 04b1 6954 5874 584d ...+......iTXtXM
00000040: 4c3a 636f 6d2e 6164 6f62 652e 786d 7000 L:com.adobe.xmp.
00000050: 0000 0000 3c3f 7870 6163 6b65 7420 6265 ....<?xpacket be
00000060: 6769 6e3d 27ef bbbf 2720 6964 3d27 5735 gin='...' id='W5
00000070: 4d30 4d70 4365 6869 487a 7265 537a 4e54 M0MpCehiHzreSzNT
00000080: 637a 6b63 3964 273f 3e0a 3c78 3a78 6d70 czkc9d'?>.<x:xmp
00000090: 6d65 7461 2078 6d6c 6e73 3a78 3d27 6164 meta xmlns:x='adSudah keliatan jelas lah ya itu salahnya di mana :v.
Header:
89 50 44 41 โ SALAH
Seharusnya:
89 50 4E 47 โ PNG
๐ Kesimpulan:
Header PNG telah dimodifikasi (obfuscation)
๐ง Tahap 6 โ Perbaikan Header PNG
Kita bisa liat di website ini: https://en.wikipedia.org/wiki/List_of_file_signatures
Perbaiki signature:
~/FGTE/foren/evaporated/forWU
โฏ printf '\x89\x50\x4E\x47\x0D\x0A\x1A\x0A' | dd of=test.png bs=1 seek=0 count=8 conv=notrunc
8+0 records in
8+0 records out
8 bytes copied, 8.444e-05 s, 94.7 kB/sPerbaiki chunk:
โญโ ๏ง ๏ผ ~/FGTE/foren/evaporated/forWU โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ๎ kali ๏ 08:01:40
โฐโโฏ printf 'IHDR' | dd of=test.png bs=1 seek=12 count=4 conv=notrunc
4+0 records in
4+0 records out
4 bytes copied, 6.628e-05 s, 60.4 kB/sValidasi:
โญโ ๏ง ๏ผ ~/FGTE/foren/evaporated/forWU โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ๎ kali ๏ 08:01:48
โฐโโฏ pngcheck -v test.png
File: test.png (1640735 bytes)
chunk IHDR at offset 0x0000c, length 13
1024 x 922 image, 32-bit RGB+alpha, non-interlaced
chunk pHYs at offset 0x00025, length 9: 3780x3780 pixels/meter (96 dpi)
chunk iTXt at offset 0x0003a, length 1201, keyword: XML:com.adobe.xmp
uncompressed, no language tag
no translated keyword, 1180 bytes of UTF-8 text
chunk IDAT at offset 0x004f7, length 1639444
zlib: deflated, 32K window, default compression
chunk IEND at offset 0x190917, length 0
No errors detected in test.png (5 chunks, 56.6% compression).Hasil: PNG valid. Ini saya pakai printf aja biar sekalian bisa memahami 'dd'. Atau liat aja perbedaannya (gak bisa ngasih garis bawah):


๐ Tahap 7 โ Deteksi Anomali
Saat dianalisis:
convert fixed.png โ warning: IDAT too much image data
๐ Ini indikasi penting:
Data gambar lebih banyak dari yang didefinisikan oleh IHDR
๐ง Tahap 8 โ Analisis Raw Pixel
Ekstrak IDAT saya meminta AI untuk membuat codenya biar makin enak:
โญโ ๏ง ๏ผ ~/FGTE/foren/evaporated/forWU โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ๏ 1m 4s ๎ kali ๏ 08:07:41
โฐโโฏ python3
Python 3.13.11 (main, Dec 8 2025, 11:43:54) [GCC 15.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import struct, zlib
...
... data = open("test.png","rb").read()
... pos = 8
... idat = b""
...
... while pos < len(data):
... length = struct.unpack(">I", data[pos:pos+4])[0]
... ctype = data[pos+4:pos+8]
... chunk = data[pos+8:pos+8+length]
...
... if ctype == b'IDAT':
... idat += chunk
...import struct, zlib
data = open("fixed.png","rb").read()
pos = 8
idat = b""
while pos < len(data):
length = struct.unpack(">I", data[pos:pos+4])[0]
ctype = data[pos+4:pos+8]
chunk = data[pos+8:pos+8+length]
if ctype == b'IDAT':
idat += chunk
pos += 12 + length
raw = zlib.decompress(idat)
print(len(raw))
... pos += 12 + length
...
... raw = zlib.decompress(idat)
... print(len(raw))
...
4195328Hasil:
4195328 bytes
๐งฎ Tahap 9 โ Hitung Baris Sebenarnya
Per baris:
1 (filter) + 1024 ร 4 = 4097 byte
Total baris:
4195328 / 4097 โ 1024 baris
Sedangkan IHDR:
height = 922
๐ Artinya:
Ada 102 baris tersembunyi
๐ฏ Tahap 10 โ Hex Editing
Cara lebih cepat tanpa Python:
Ubah IHDR height
Dari:
00 00 03 9A (922)
Menjadi:
00 00 04 00 (1024)
Perbaiki CRC

https://www.nayuki.io/page/png-file-chunk-inspector Saya pakai website ini biar aman sejahtera
Gunakan CRC baru:
7F 1D 2B 83
Saya gantinya pakai versi web aja biar enak (https://hexed.it/):
Dari ini:

Menjadi:

Validasi:
โญโ ๏ง ๏ผ ~/FGTE/foren/evaporated/forWU โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ๎ kali ๏ 08:33:07
โฐโโฏ pngcheck -v test.png
File: test.png (1640735 bytes)
chunk IHDR at offset 0x0000c, length 13
1024 x 1024 image, 32-bit RGB+alpha, non-interlaced
chunk pHYs at offset 0x00025, length 9: 3780x3780 pixels/meter (96 dpi)
chunk iTXt at offset 0x0003a, length 1201, keyword: XML:com.adobe.xmp
uncompressed, no language tag
no translated keyword, 1180 bytes of UTF-8 text
chunk IDAT at offset 0x004f7, length 1639444
zlib: deflated, 32K window, default compression
chunk IEND at offset 0x190917, length 0
No errors detected in test.png (5 chunks, 60.9% compression).๐ผ๏ธ Tahap 11 โ Hasil Akhir
Setelah height diperbaiki:
Gambar terbuka normal
Bagian bawah muncul
Flag terlihat jelas
๐ Flag

๐ง Insight / Pembelajaran
PNG mempercayai IHDR, bukan jumlah data IDAT
Data bisa disembunyikan di luar batas height
Warning seperti:
textIDAT: too much image dataadalah indikasi penting
๐ Teknik ini dikenal sebagai:
PNG Hidden Rows / Height Mismatch


