🧩 File Carving & Data Recovery β€” Advanced Techniques

File carving adalah teknik merekonstruksi file dari raw data tanpa metadata filesystem β€” berguna ketika filesystem corrupt, file sudah dihapus, atau Anda hanya punya blok mentah (dd image) tanpa tabel partisi. Ini adalah teknik paling vital dalam digital forensic karena file yang dihapus sering menyimpan bukti paling penting β€” malware yang sudah dibersihkan, dokumen yang dihapus attacker, atau flag yang ditinggalkan di unallocated space. Dari hierarchy-digital-evidence-acquisition, ini ada di Level 4 β€” active persistent storage dan Level 3 β€” transient files.

Prinsip Emas Carving

β€œDeleted β‰  Gone.” File yang dihapus tidak hilang β€” hanya inode/entrinya yang ditandai sebagai tersedia. Data fisik tetap ada di media sampai ditimpa file baru. Dengan tool carving yang tepat, file yang β€œdihapus” 5 tahun lalu pun bisa direcover β€” selama belum ditimpa.


Daftar Isi


Teori Dasar β€” Bagaimana File Bisa Di-recover

Struktur File di Disk

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  $MFT Entry (alokasi file)                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ Header  β”‚ β”‚ Filename β”‚ β”‚ Metadata β”‚ β”‚ Data Runs   β”‚ β”‚
β”‚  β”‚ (0x46)  β”‚ β”‚ Namaku.txtβ”‚ β”‚ size, ts β”‚ β”‚ cluster 100β†’β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”˜
                                                   β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Cluster 100-105 (Data Run)                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”           β”‚
β”‚  β”‚HDR   β”‚DATA  β”‚DATA  β”‚DATA  β”‚DATA  β”‚DATA  β”‚           β”‚
β”‚  β”‚0xFFDBβ”‚Namakuβ”‚...   β”‚...   β”‚...   β”‚...   β”‚           β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”˜           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Saat file dihapus:

  1. $MFT entry ditandai not in use (byte pertama = 0x00)
  2. Data cluster tidak dihapus β€” hanya ditandai sebagai tersedia (available)
  3. File Name di Recycle Bin dipindahkan, tapi data asli tetap di cluster asli
  4. SSD TRIM β†’ cluster benar-benar dikosongkan (diisi 0x00)

Konsep Carving

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Unallocated Space (raw bytes)                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”β”‚
β”‚  β”‚0xFFβ”‚0xD8β”‚0xFFβ”‚0xE0β”‚0x00β”‚0x10β”‚0x4Aβ”‚0x46β”‚... β”‚0xFFβ”‚β”‚
β”‚  β”‚    β”‚ ^^^^^^^ JPEG Header ^^^^^^^^^^    β”‚  β”‚0xD9β”‚β”‚
β”‚  β”‚    β”‚ ────────── JPEG Data ─────────────   β”‚    β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜β”‚
β”‚                                                    β”‚
β”‚  Carving: cari magic bytes β†’ baca sampai footer     β”‚
β”‚  β†’ extract cluster β†’ file utuh                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Carving tidak menggunakan metadata filesystem. Ia hanya mencari pola bytes (magic number) di raw data, lalu mengikuti struktur file untuk membaca seluruh konten hingga footer.

Carving vs File System Recovery

AspekFile System RecoveryFile Carving
MetodeRekonstruksi $MFT / inode tableCari magic bytes
Butuh metadataYa β€” butuh entry utuhTidak
File terfragmentasiBisa recover (ada di metadata data runs)Sulit β€” hanya contiguous
SSD TRIMTidak bisaTidak bisa
File overwriteTidak bisaSebagian β€” file rusak
ToolsTestDisk, R-Studio, GetDataBackforemost, scalpel, photorec

File Signature β€” Magic Bytes

Universal Signatures

Setiap format file punya magic bytes β€” byte pertama yang unik. Carving tool menggunakan database signature ini.

# Signatures built-in di foremost:
/etc/foremost.conf
 
# Signatures built-in di scalpel:
/etc/scalpel/scalpel.conf
 
# Cari sendiri β€” cek header file
xxd file.jpg | head -1
# Output: 00000000: ffd8 ffe0 0010 4a46 4946 0001 ...  β†’ JPEG

Magic Bytes Reference (Paling Sering di CTF)

FormatMagic Bytes (Hex)OffsetFooter (Hex)
JPEGFF D8 FF E0 atau FF D8 FF E10FF D9
PNG89 50 4E 47 0D 0A 1A 0A049 45 4E 44 AE 42 60 82
GIF47 49 46 38 37 61 atau 38 39 61000 3B
BMP42 4D0β€”
TIFF49 49 2A 00 atau 4D 4D 00 2A0β€”
PDF25 50 44 46 (%PDF)025 25 45 4F 46 (%%EOF)
ZIP50 4B 03 04050 4B 05 06 (EOCD)
RAR52 61 72 21 1A 07 000β€”
7z37 7A BC AF 27 1C0β€”
GZIP1F 8B 080β€”
BZ242 5A 680β€”
ELF7F 45 4C 46 (.ELF)0β€”
RIFF (AVI/WAV)52 49 46 46 xx xx xx xx 41 56 490β€”
MP3 (ID3v2)49 44 33 (ID3)0β€”
MP400 00 00 18 66 74 79 700β€”
DOCX/XLSX (ZIP)50 4B 03 04 14 00 06 00050 4B 05 06
Mach-OFE ED FA CE atau FE ED FA CF0β€”

Custom Signature β€” Cari Flag Manual

# Cari string CTF/flag di raw image
strings disk.dd | grep -i "CTF\|flag\|KEY\|secret"
 
# Cari di unallocated space khusus
# Gunakan blkls dari Sleuth Kit
blkls -s disk.dd > unallocated.raw
strings unallocated.raw | grep -i "CTF\|flag"
 
# Cari magic bytes manual dengan xxd
xxd disk.dd | grep "ffd8 ffe0"  # Cari JPEG header di raw

Carving Tools β€” Benchmark & Use Case

Foremost (Tier 1 β€” Default)

Kelebihan: Cepat, default signatures built-in, mudah. Kekurangan: Tidak bisa fragmented file recovery, konfigurasi terbatas.

# Basic carving β€” cari semua tipe file
foremost -i disk.dd -o output/
 
# Carving dengan tipe spesifik β€” cuma JPEG + PDF
foremost -t jpeg,pdf -i disk.dd -o output/
 
# Verbose + quiet mode
foremost -v -q -i disk.dd -o output/
 
# Config file
foremost -c /etc/foremost.conf -i disk.dd -o output/

Output structure:

output/
β”œβ”€β”€ audit.txt       # Log carving: file ditemukan, size, offset
β”œβ”€β”€ jpg/            # Recovered JPEG files
β”‚   β”œβ”€β”€ 00000001.jpg
β”‚   β”œβ”€β”€ 00000002.jpg
β”‚   └── ...
β”œβ”€β”€ pdf/
β”œβ”€β”€ zip/
└── ...

Scalpel (Tier 2 β€” More Configurable)

Kelebihan: Konfigurasi signature sangat detail, bisa custom header/footer. Kekurangan: Config file perlu diedit dulu β€” tidak langsung jalan.

# Edit /etc/scalpel/scalpel.conf β€” uncomment tipe file yang dicari
# Contoh:
# jpeg    y       200000000     \xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xfe\x00\x3c\x43\x52\x45\x41\x54\x4f\x52\x3a\x20\x47\x64\x6a\x70\x65\x67\x20\x76\x65\x72\x20\x31\x2e\x30\x0a\xff\xdb\x00\x43\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05\x04\x04\x05\x0a\x07\x07\x06\x08\x0c\x0a\x0c\x0c\x0b\x0a\x0b\x0b\r\x0e\x12\x10\x0d\x0e\x11\x0e\x0b\x0b\x10\x16\x10\x11\x13\x14\x15\x15\x15\x0c\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14
 
# Jalankan carving
scalpel -i disk.dd -o output/

PhotoRec (Tier 1 β€” Most File Types)

Kelebihan: Mendukung 480+ file signature, bisa photRec dari partisi yang tidak dikenal. Kekurangan: Interactive (bukan CLI murni), lambat untuk file besar.

# PhotoRec adalah interactive β€” harus pilih disk, partisi, output
sudo photorec /path/to/disk.dd
# Pilih file type β†’ [File Opt] β†’ Select all
# Pilih destination β†’ [Search]

Bulk Extractor (Tier 2 β€” Feature Extraction)

Kelebihan: Mengekstrak feature bukan file β€” URL, email, credit card, hash, DNA sequences. Sampai ribuan feature per detik. Kekurangan: Tidak menghasilkan file utuh β€” hanya ekstrak feature.

bulk_extractor -o output/ disk.dd
# Output: url.txt, email.txt, telephone.txt, etc.
# Di CTF: cari flag.txt, base64.txt
 
# Cari flag di hasil bulk_extractor
grep -i "CTF\|flag" output/*.txt

ddrescue (Tier 2 β€” Damaged Media)

Kelebihan: Bisa recover data dari disk yang mulai rusak (bad sector). Kekurangan: Butuh waktu lama β€” mencoba baca ulang sector berkali-kali.

# Clone disk yang rusak β€” log bad sector ke mapfile
ddrescue -d -r3 /dev/sdb disk_image.dd rescue.log
 
# Retry bad sector dengan backtrack
ddrescue -d -r3 -R /dev/sdb disk_image.dd rescue.log

Advanced Carving β€” Fragmented File Recovery

4.1 The Fragmentation Problem

Contiguous file (mudah):
β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
β”‚HDR  β”‚D1   β”‚D2   β”‚D3   β”‚D4   β”‚D5   β”‚D6   β”‚D7   β”‚D8   β”‚D9   β”‚ β†’ utuh
β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜

Fragmented file (sulit):
β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”
β”‚HDR  β”‚D1   β”‚  OTHER β”‚  FILE  β”‚D2   β”‚D3   β”‚D4   β”‚D5   β”‚
β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”˜
                  ^^^^^^^^^^^ data file lain menyela

Fragmented file adalah tantangan terbesar carving. Sebagian besar tool hanya bisa recover file yang contiguous (blok datanya berurutan). File terfragmentasi butuh teknik khusus:

4.2 Bifragment Gap Carving (BGC)

Untuk file yang terpecah menjadi 2 bagian dengan celah di tengah:

# Tool: smartmontools + custom script
# Atau gunakan scalpel dengan konfigurasi multi-segment
 
# Prinsip: cari header β†’ baca N bytes β†’ cek apakah footer tercapai
# Jika tidak β†’ ada gap β†’ cari sisa setelah gap

BGC hanya untuk 2 fragment β€” untuk 3+ fragment, carving sangat sulit bahkan dengan tool mahal.

4.3 Object-Based Carving

Bukan cari header/footer file, tapi cari struktur internal file. Contoh untuk ZIP:

# ZIP central directory (EOCD) β€” bisa recover file ZIP walaupun terfragmentasi
# Tools: zip, unzip, custom Python parser
 
# ZIP file walau fragmented bisa di-recover kalau EOCD-nya utuh
# EOCD ada di END file β€” mencari dari offset terakhir disk
 
# Foremost bisa recover ZIP fragmented dengan config khusus
# Edit /etc/foremost.conf β†’ maksimum carving size dinaikkan

4.4 Machine Learning Carving (Advanced)

Beberapa tool baru pakai ML untuk mendeteksi perbatasan file β€” tapi jarang di CTF karena resource heavy. Relevan untuk penelitian forensik.


SSD & TRIM β€” Musuh Besar Carving

Bagaimana TRIM Bekerja

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  TRIM Command Sequence:                                  β”‚
β”‚                                                         β”‚
β”‚  1. File dihapus                                        β”‚
β”‚  2. OS kirim TRIM ke SSD controller                     β”‚
β”‚     ("cluster 100-200 sudah tidak dipakai")             β”‚
β”‚  3. SSD controller kosongkan cluster tersebut           β”‚
β”‚     (diisi 0x00 secara internal)                        β”‚
β”‚  4. Data ASLI HILANG PERMANEN β€” tidak bisa direcover   β”‚
β”‚     (berbeda dari HDD yang hanya tandai sebagai kosong) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

HDD vs SSD:

AspekHDDSSD
File dihapus β€” bisa carving?βœ… Ya β€” data tetap ada❌ Tidak β€” TRIM hapus instan
Format cepat β€” bisa carving?βœ… Ya❌ TRIM triggered
Overwrite β€” data hilang?❌ Bisa recover 1-2 overwriteβœ… Sekali overwrite = hilang
File slackβœ… Ada β€” data file sebelumnya❌ Tidak ada (SSD nulis per page)

Mitigasi TRIM β€” Forensic Write Blocker

# Write blocker HARDWARE (Tableau, WiebeTech)
# Mencegah SSD menerima TRIM command dari OS
 
# Atau software write blocker:
# Linux: mount -o ro,noatime,nodiratime
# Gunakan dd dengan oflag=direct,noatime
dd if=/dev/sdb of=/evidence/ssd.dd bs=4M conv=noerror,sparse iflag=fullblock,noatime

Di CTF: Jika soal memberikan file .dd atau .e01, biasanya TRIM sudah tidak relevan karena image sudah diambil sebelum analisis. Tapi awareness penting β€” jangan kaget kalau soal dengan SSD image tidak punya file carved dari unallocated space.


Recovery by File Type

1. Gambar (JPEG / PNG / GIF)

# Foremost β€” signature already included
foremost -t jpeg -i disk.dd -o carved_jpg/
 
# Cek metadata gambar yang di-recover
exiftool carved_jpg/00000001.jpg
 
# Cek steganografi β€” gambar bisa nampung hidden data!
zsteg carved_jpg/00000001.png
steghide extract -sf carved_jpg/00000001.jpg
 
# Cari flag dalam gambar β€” strings juga
strings carved_jpg/*.jpg | grep -i "CTF\|flag"

CTF Pattern: Gambar sering dijadikan container steganografi β€” cek LSB, metadata, dan embedded ZIP.

2. Dokumen (PDF)

# Foremost β€” PDF signature default
foremost -t pdf -i disk.dd -o carved_pdf/
 
# Ekstrak teks
pdftotext carved_pdf/00000001.pdf output.txt
 
# Cari metadata
pdfinfo carved_pdf/00000001.pdf
 
# Cari embedded file dalam PDF
pdfdetach -list carved_pdf/00000001.pdf
pdfdetach -save 1 carved_pdf/00000001.pdf

3. Archive (ZIP / RAR)

# ZIP carving β€” butuh EOCD (End of Central Directory) intact
foremost -t zip -i disk.dd -o carved_zip/
 
# Coba buka semua file yang di-recover
for f in carved_zip/*.zip; do
    unzip -l "$f" 2>/dev/null && echo "=== $f OK ===" || echo "=== $f CORRUPT ==="
done

4. Office Documents (DOCX / XLSX β€” Actually ZIP)

DOCX/XLSX adalah ZIP yang berisi XML. Carving = ZIP carving.

# Setelah di-recover sebagai ZIP:
unzip recovered.docx -d docx_extracted/
cat docx_extracted/word/document.xml | grep -i "CTF\|flag"
# Atau parse content langsung
strings recovered.docx | grep -i "CTF\|flag"

5. Executable (EXE / ELF)

# PE (Windows) β€” magic bytes: MZ (4D 5A)
foremost -t exe -i disk.dd -o carved_exe/
 
# ELF (Linux) β€” magic bytes: 7F 45 4C 46
# Tidak ada pada foremost default β€” tambahkan ke config:
echo -e "elf\ty\t200000000\t\\x7f\x45\x4c\x46" >> /etc/foremost.conf

6. Database (SQLite)

# SQLite magic bytes: 53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00
# Tidak di default foremost β€” tambahkan di config:
echo -e "sqlite\ty\t200000000\t\\x53\x51\x4c\x69\x74\x65\x20\x66\x6f\x72\x6d\x61\x74\x20\x33\x00" >> /etc/foremost.conf
 
# Setelah di-recover:
sqlite3 recovered.db ".tables"
sqlite3 recovered.db "SELECT * FROM flag;"

Anti-Forensics & Counter-Measures

Anti-Forensics Techniques

TeknikEfekCara Kerja
Secure Deletion (shred, srm)Overwrite file dengan random dataBaca file β†’ tulis 0xFF β†’ hapus β†’ data asli hilang
DoD 5220.22-M7-pass overwrite3x random + 1x complement + 3x random β€” standar militer
Disk Wiping (DBAN, nwipe)Hapus seluruh diskWrite 0x00/0xFF/random ke semua sector
TRIM & NVMe FormatInstant wipe SSDNVMe format command hapus seluruh NAND dalam detik
File ShreddingFragmentasi + renamePotong file kecil-kecil, rename random, sebar ke berbagai folder
Metadata WipingHapus exif, timestamp, $MFT entryexiftool -all= atau SetMACE
SteganographySembunyiin file di media lainData dikodekan di LSB gambar/audio β€” tidak ketahuan carving
EncryptionFile terlihat randomData encrypted tidak punya magic bytes β€” carving tidak mendeteksi

Counter Anti-Forensics

# 1. Cari file shredding β†’ cari file tiny (1-5 KB) dalam jumlah besar
find recovered/ -type f -size -5k | wc -l
 
# 2. Cari hidden stream (NTFS ADS)
# NTFS alternate data stream
find . -type f -exec stream_query {} \;
 
# 3. Cari file dengan nama random
ls output/ | grep -E "^[a-z0-9]{20,}\."
 
# 4. Cek slack space β€” data sisa dari file sebelumnya
# Menggunakan blkls
blkls -s disk.dd > slack.raw
strings slack.raw | grep -i "CTF\|flag"
 
# 5. Cari file terenkripsi β€” detect entropy tinggi
# Gunakan binwalk entropy analysis
binwalk -E disk.dd
# Output: entropy plot β€” puncak tinggi = compressed/encrypted data

Carving in CTF Context

Flowchart Soal Carving

Dapet file image (.dd/.e01/.img)
    β”‚
    β”œβ”€β”€ Cek tipe image: file image.dd
    β”œβ”€β”€ Cek strings dulu: strings image.dd | grep -i "CTF\|flag"
    β”œβ”€β”€ Mount (jika bisa): mount -o loop,ro image.dd /mnt
    β”‚   └── Cari flag langsung di filesystem
    β”‚
    └── Mount gagal atau tidak ada file? β†’ Carving
        β”‚
        β”œβ”€β”€ blkls -s image.dd > unallocated.raw (unallocated space)
        β”œβ”€β”€ foremost -i unallocated.raw -o carved/
        β”œβ”€β”€ Cek hasil: ls carved/*/
        β”‚   β”œβ”€β”€ Ada file? β†’ cari flag di file yang di-recover
        β”‚   └── Tidak ada? β†’ cek dengan scalpel / photorec
        β”‚
        └── Cari hidden data
            β”œβ”€β”€ bulk_extractor
            β”œβ”€β”€ binwalk -Me
            └── strings + grep

Cold Start β€” Jika Baru Dapat Soal Carving

1. strings image.dd | grep -i "CTF\|flag"
   βœ… Jika dapat β†’ submit. Selesai.

2. file image.dd + strings + exiftool
   β†’ Cek tipe, metadata, deskripsi

3. foremost -T -i image.dd -o output/
   β†’ Cek output: file apa yang muncul? Gambar? ZIP? PDF?

4. strings output/*/* | grep -i "CTF\|flag"
   β†’ Cari flag di semua file yang di-recover

5. binwalk -Me image.dd
   β†’ Cari embedded file yang tidak ketahuan foremost

6. bulk_extractor -o bulk/ image.dd
   β†’ Cari pattern: base64, hex, URL, email

Jika 1-6 tidak dapat flag β†’ cari hidden sector, slack space, atau NTFS ADS.


Cheat Sheet β€” Command Matrix

# === CARVING QUICK START ===
foremost -T -i image.dd -o output/           # Carving semua tipe
foremost -t jpeg,pdf,zip -i image.dd -o out/  # Tipe spesifik
scalpel -i image.dd -o output/                # Scalpel (edit config dulu)
photorec image.dd                             # Interactive
 
# === UNALLOCATED SPACE ===
blkls -s image.dd > unallocated.raw           # Extract unallocated
blkls -f image.dd > slack.raw                 # Extract slack space
 
# === FILE ANALYSIS ===
file recovered.jpg                            # Cek tipe file
strings recovered.jpg | grep -i "flag"        # Cari string dalam file
exiftool recovered.jpg                        # Metadata
binwalk -Me recovered.jpg                     # Embedded file
 
# === HIDDEN DATA ===
bulk_extractor -o bulk/ image.dd              # Feature extraction
binwalk -E image.dd                           # Entropy analysis
 
# === CUSTOM SIGNATURE ===
# Add custom magic bytes to foremost config:
echo -e "sqlite\ty\t200000000\t\\x53\\x51\\x4c\\x69\\x74\\x65" >> /etc/foremost.conf
 
# === DISK CLONE ===
dd if=/dev/sdb of=image.dd bs=4M status=progress
dcfldd if=/dev/sdb of=image.dd bs=4M hash=sha256
ddrescue -d -r3 /dev/sdb image.dd rescue.log  # Damaged media
 
# === FILE FOUND β†’ VERIFY ===
sha256sum recovered/*
file recovered/*
strings recovered/* | grep -i "CTF\|flag"


File Carving & Data Recovery Β· Deleted β‰  Gone Β· Magic Bytes = Kunci Β· TRIM = Musuh SSD Β· Foremost + Scalpel + PhotoRec = Holy Trinity Β· Strings Dulu, Carving Kemudian Β· Fragmented File = Tantangan Besar