πŸ” PICOCTF SECTION 5 β€” Forensics & Filesystem

Environment: Terminal / Bash Filosofi: Cari β€œJarum” menggunakan mesin, bukan mata. Target: File SVG, Zip berisi ribuan folder, & Metadata.

Golden Rule

Jika grep biasa gagal, kemungkinan polanya diacak atau dipotong (fragmented).


FASE 1 β€” Analisis Konten Tersembunyi (SVG)

SVG (Scalable Vector Graphics) adalah file berbasis XML/Teks. Seringkali flag disembunyikan di dalam tag visual yang sangat kecil.

1.1 Identifikasi Awal

# Cek metadata biner (Kadang flag ada di Title/Creator)
exiftool drawing.flag.svg
 
# Baca isi teks mentah
cat drawing.flag.svg | grep "picoCTF"

Dalam tahap ini, kita menggunakan exiftool untuk memeriksa metadata dari file SVG. Metadata dapat berisi informasi seperti judul, pembuat, dan lain-lain. Jika flag disembunyikan dalam metadata, maka kita dapat menemukannya dengan menggunakan exiftool.

Selain itu, kita juga menggunakan cat untuk membaca isi teks mentah dari file SVG dan kemudian menggunakan grep untuk mencari pola β€œpicoCTF” di dalam teks tersebut.

1.2 Penanganan Fragmented Tags

Jika flag dipotong-potong ke dalam banyak tag <tspan>, gunakan PCRE Grep untuk menyatukannya:

# Ekstraksi teks di antara tag tspan dan hapus spasi/newline
grep -Po '(?<=>)[^<]+(?=</tspan>)' drawing.flag.svg | tr -d '\n '

Dalam beberapa kasus, flag dapat dipotong-potong ke dalam beberapa tag <tspan>. Untuk menangani hal ini, kita dapat menggunakan PCRE Grep untuk menyatukan teks di antara tag <tspan>.

Opsi -P digunakan untuk mengaktifkan mode Perl Compatible Regular Expressions (PCRE), yang memungkinkan kita menggunakan ekspresi reguler yang lebih kompleks. Ekspresi reguler (?<=>)[^<]+(?=</tspan>) digunakan untuk mencari teks di antara tag <tspan>.

Setelah ekstraksi teks, kita menggunakan tr -d '\n ' untuk menghapus spasi dan newline dari teks tersebut.

1.3 Contoh Kasus

# Diberikan file SVG dengan isi berikut:
 
# <svg>
 
# <text>
 
# <tspan>picoCTF{</tspan>
 
# <tspan>flag_</tspan>
 
# <tspan>di_sini}</tspan>
 
# </text>
 
# </svg>
 
# Ekstraksi teks di antara tag tspan
 
$ grep -Po '(?<=>)[^<]+(?=</tspan>)' file.svg
picoCTF{
flag_
di_sini}
 
# Hapus spasi dan newline
 
$ grep -Po '(?<=>)[^<]+(?=</tspan>)' file.svg | tr -d '\n '
picoCTF{flag_di_sini}

Dalam contoh di atas, kita memiliki file SVG dengan tag <tspan> yang berisi bagian-bagian flag. Dengan menggunakan PCRE Grep, kita dapat mengekstraksi teks di antara tag <tspan> dan kemudian menghapus spasi dan newline untuk mendapatkan flag lengkap.


FASE 2 β€” Pencarian Masif (Recursive Grep)

Tantangan β€œNeedle in the Haystack” di mana flag berada di salah satu dari ribuan file di dalam ratusan folder.

2.1 Grep Mode β€œTerminator”

# Cari teks "picoCTF{" di direktori saat ini dan semua subdirektorinya
grep -r "picoCTF{" .

Dalam tahap ini, kita menggunakan grep dengan opsi -r untuk melakukan pencarian rekursif di direktori saat ini dan semua subdirektorinya.

Opsi -r digunakan untuk mengaktifkan mode rekursif, yang memungkinkan grep untuk mencari di semua file dan subdirektori di direktori saat ini.

2.2 Tabel Perbandingan Opsi Grep

FlagFungsi
-rRecursive. Menyelam ke semua folder dan subfolder.
.Titik melambangkan direktori saat ini sebagai titik mulai.
-h(Opsional) Sembunyikan nama file, tampilkan isinya saja.
-i(Opsional) Lakukan pencarian dengan mode tidak membedakan huruf besar/kecil.
-n(Opsional) Tampilkan nomor baris dari hasil pencarian.

Dalam tabel di atas, kita dapat melihat beberapa opsi yang dapat digunakan dengan grep untuk melakukan pencarian masif.

2.3 Contoh Kasus

# Diberikan direktori dengan struktur berikut:
 
# .
 
# β”œβ”€β”€ file1.txt
 
# β”œβ”€β”€ file2.txt
 
# β”œβ”€β”€ folder1
 
# β”‚ β”œβ”€β”€ file3.txt
 
# β”‚ └── file4.txt
 
# └── folder2
 
# β”œβ”€β”€ file5.txt
 
# └── file6.txt
 
# Cari teks "picoCTF{" di direktori saat ini dan semua subdirektorinya
 
$ grep -r "picoCTF{" .
./file1.txt:picoCTF{flag_di_sini}
./folder1/file3.txt:picoCTF{flag_lain}
./folder2/file5.txt:picoCTF{flag_baru}

Dalam contoh di atas, kita memiliki direktori dengan beberapa file dan subdirektori. Dengan menggunakan grep dengan opsi -r, kita dapat mencari teks β€œpicoCTF{” di semua file dan subdirektori di direktori saat ini.


FASE 3 β€” Kerangka Berpikir Forensik File

Lain kali jika bertemu file gambar/dokumen, ikuti hierarki ini:

  1. Metadata: Gunakan exiftool (untuk .jpg, .png).
  2. Strings/Teks: Gunakan cat atau strings (untuk .svg atau biner).
  3. Visual: Buka gambarnya, cek detail kecil.
  4. Steganography: Gunakan steghide, zsteg, atau binwalk (untuk data tersembunyi di level bit).

Dalam tahap ini, kita memiliki kerangka berpikir forensik file yang dapat digunakan untuk menganalisis file gambar/dokumen.

3.1 Contoh Kasus

# Diberikan file gambar dengan format .jpg
 
# File tersebut memiliki metadata yang dapat dilihat dengan exiftool
 
$ exiftool file.jpg
ExifTool Version Number : 12.30
File Name : file.jpg
Directory : .
File Size : 1024 bytes
File Modification Date/Time : 2023:02:20 14:30:00+07:00
File Access Date/Time : 2023:02:20 14:30:00+07:00
File Inode Change Date/Time : 2023:02:20 14:30:00+07:00
File Permissions : rw-r--r--
File Type : JPEG
MIME Type : image/jpeg
JFIF Version : 1.01
Exif Byte Order : Little-endian (Intel, II)
Make : Canon
Camera Model Name : Canon EOS 5D
Orientation : Top-left side (Horizontal / normal)
X Resolution : 72
Y Resolution : 72
Resolution Unit : inches
Software : Adobe Photoshop CS6 (Macintosh)
Modify Date : 2023:02:20 14:30:00
Artist : John Doe
Copyright : 2023 John Doe
Exif Version : 0231
Flashpix Version : 0100
Color Space : sRGB
Components Configuration : Y, Cb, Cr,
Compressed Bits Per Pixel : 4
Pixel X Dimension : 1024
Pixel Y Dimension : 768
Display Scale : 72

Dalam contoh di atas, kita memiliki file gambar dengan format .jpg yang memiliki metadata yang dapat dilihat dengan exiftool. Metadata tersebut dapat berisi informasi seperti pembuat, tanggal modificasi, dan lain-lain.


Quick Reference β€” Cheat Sheet

# ═══ FORENSIK DASAR ═══
strings file.ext | grep "picoCTF"      # Ekstrak teks dari biner
exiftool file.jpg                      # Cek metadata
grep -r "picoCTF" .                    # Cari rekursif di folder
 
# ═══ EKSTRAKSI LANJUTAN ═══
grep -Po '(?<=>)[^<]+(?=</tspan>)'     # Regex PCRE untuk tag XML
tr -d '\n '                            # Hapus newline & spasi

Dalam bagian ini, kita memiliki quick reference atau cheat sheet yang dapat digunakan sebagai acuan untuk melakukan forensik dasar.


Anti-Pattern β€” Jangan Lakukan Ini

❌ Salahβœ… Benar
Buka satu-satu ribuan folderGunakan grep -r
Menyerah saat exiftool kosongCek konten teks dengan cat atau strings
Menganggap file gambar = biner sajaSVG adalah file teks (XML)

Dalam bagian ini, kita memiliki beberapa contoh anti-pattern atau praktik yang tidak baik yang harus dihindari saat melakukan forensik.


πŸ”— Lihat Juga

Dalam bagian ini, kita memiliki beberapa link yang dapat digunakan sebagai acuan untuk mempelajari materi lain yang terkait dengan picoctf.


PicoCTF Modul 1 | Forensics Β· Grep Β· SVG Β· Filesystem

Dalam modul ini, kita telah mempelajari beberapa konsep dasar forensik, termasuk penggunaan grep untuk mencari teks di dalam file dan direktori, penggunaan exiftool untuk memeriksa metadata file gambar, dan penggunaan strings untuk mengekstraksi teks dari file biner.

Kita juga telah mempelajari beberapa contoh kasus yang dapat digunakan sebagai acuan untuk mempraktekan konsep-konsep yang telah dipelajari.

Dengan mempelajari materi ini, kita dapat memperoleh kemampuan untuk melakukan forensik dasar dan mengembangkan kemampuan itu menjadi lebih lanjut dengan mempelajari materi lain yang terkait dengan picoctf.