None

Pada kesempatan kali ini, saya akan mencoba membahas dan menyelesaikan salah satu tantangan Capture The Flag (CTF) dari platform picoCTF, yaitu challenge yang berjudul "Ph4nt0m 1ntrud3r."

Dalam write-up ini, saya akan menjelaskan proses penyelesaiannya secara bertahap dan mudah dipahami, mulai dari analisis awal terhadap challenge, identifikasi petunjuk yang tersedia, hingga metode yang digunakan untuk menemukan flag. Tujuannya bukan hanya sekadar mendapatkan flag, tetapi juga memahami konsep keamanan siber dan teknik analisis yang digunakan dalam proses eksploitasi challenge tersebut.

Melalui pembahasan ini, diharapkan teman-teman yang sedang belajar cyber security atau sedang mengerjakan challenge serupa dapat memperoleh gambaran yang lebih jelas mengenai cara berpikir (problem-solving mindset) dalam menyelesaikan tantangan CTF.

Mari kita mulai proses analisis dan melihat bagaimana "Ph4nt0m 1ntrud3r" dapat dipecahkan langkah demi langkah. ๐Ÿšฉ

https://play.picoctf.org/practice/challenge/459?page=1&search=ph

Pada challenge ini, peserta diminta untuk menganalisis bagaimana seorang penyerang dapat melakukan infiltrasi data ke dalam suatu sistem dan berupaya memperoleh informasi rahasia berupa flag yang tersembunyi di dalam lalu lintas komunikasi jaringan. Dengan kata lain, tantangan ini mensimulasikan skenario analisis aktivitas intrusi yang terjadi pada sebuah jaringan komputer.

Fokus utama dari challenge ini adalah analisis jaringan (network traffic analysis) menggunakan perangkat lunak Wireshark. Melalui tools tersebut, peserta dapat melakukan inspeksi terhadap paket-paket data yang terekam dalam suatu file capture (pcap), kemudian mengidentifikasi pola komunikasi yang mencurigakan, aktivitas transfer data yang tidak biasa, maupun indikasi adanya eksfiltrasi informasi oleh pihak yang tidak berwenang.

๐Ÿ”Ž Step 1 โ€” Initial Traffic Inspection

Pada tahap pertama, langkah yang dilakukan adalah melakukan pemeriksaan awal terhadap file network capture (PCAP) untuk memahami gambaran umum lalu lintas jaringan yang terekam. Proses ini penting karena membantu analis mengidentifikasi jenis komunikasi, jumlah paket, serta protokol yang digunakan sebelum melakukan analisis yang lebih mendalam.

Langkah awal yang dapat dilakukan adalah menampilkan seluruh paket yang terdapat pada file capture menggunakan tools TShark, yaitu versi command-line dari Wireshark.

Perintah berikut digunakan untuk membaca dan menampilkan isi traffic dari file PCAP:

tshark -r myNetworkTraffic.pcap

Perintah tersebut akan menampilkan daftar paket yang terekam di dalam file myNetworkTraffic.pcap, termasuk informasi penting seperti:

  • Timestamp (waktu paket dikirim)
  • Source dan Destination IP
  • Protocol yang digunakan
  • Informasi tambahan dari paket

Melalui output ini, analis dapat memperoleh gambaran awal mengenai aktivitas komunikasi yang terjadi di dalam jaringan.

None

Langkah berikutnya adalah mengidentifikasi distribusi protokol yang muncul dalam traffic. Hal ini dilakukan untuk mengetahui protokol mana yang paling dominan dan berpotensi menyimpan informasi penting terkait challenge.

Perintah berikut dapat digunakan:

tshark -r myNetworkTraffic.pcap -q -z io,phs

Penjelasan parameter:

  • -r โ†’ membaca file PCAP
  • -q โ†’ menjalankan mode quiet (mengurangi output yang tidak diperlukan)
  • -z io,phs โ†’ menampilkan Protocol Hierarchy Statistics, yaitu statistik hierarki protokol dalam traffic

Output dari perintah ini akan menampilkan struktur hierarki protokol, seperti:

  • Ethernet
  • IP
  • TCP / UDP
  • HTTP / DNS / protokol lainnya

Dengan melihat statistik tersebut, analis dapat menentukan protokol mana yang perlu difokuskan untuk investigasi lebih lanjut, terutama protokol yang sering digunakan untuk transfer data atau komunikasi aplikasi, karena kemungkinan besar flag tersembunyi di dalam payload komunikasi tersebut.

None

Berdasarkan hasil yang diperoleh dari analisis menggunakan perintah sebelumnya, terlihat bahwa lalu lintas jaringan dalam file capture didominasi oleh protokol TCP (Transmission Control Protocol).

Implikasi dari temuan ini adalah bahwa kemungkinan besar informasi penting, termasuk flag, disisipkan di dalam payload paket TCP. Payload TCP merupakan bagian dari paket yang membawa data aktual yang dikirimkan antara host sumber dan host tujuan, sehingga sering menjadi lokasi utama untuk menyimpan atau mentransmisikan informasi tersembunyi dalam berbagai skenario capture the flag (CTF) maupun analisis forensik jaringan.

๐Ÿ”Ž Step 2 โ€” Extract TCP Payload

Setelah diketahui bahwa sebagian besar lalu lintas jaringan menggunakan TCP, langkah berikutnya adalah melakukan ekstraksi payload dari paket TCP untuk melihat data yang sebenarnya ditransmisikan antar host. Payload ini sering kali menjadi tempat penyisipan data penting, termasuk informasi tersembunyi atau flag dalam skenario Capture The Flag.

Untuk mengekstrak data mentah dari payload TCP, kita dapat menggunakan TShark dengan perintah berikut:

tshark -r myNetworkTraffic.pcap -Y "tcp" -T fields -e tcp.segment_data

Perintah tersebut memiliki beberapa fungsi utama:

  • -r myNetworkTraffic.pcap โ†’ membaca file capture jaringan
  • -Y "tcp" โ†’ memfilter hanya paket yang menggunakan protokol TCP
  • -T fields โ†’ menampilkan output dalam format field tertentu
  • -e tcp.segment_data โ†’ mengekstrak data payload TCP dalam bentuk hexadecimal

Hasil dari perintah ini akan menampilkan data payload TCP dalam format hexadecimal. Format ini merepresentasikan data biner yang dikodekan dalam bentuk angka heksadesimal, sehingga belum dapat langsung dibaca sebagai teks atau informasi yang bermakna.

None

๐Ÿ”„ Proses Konversi Data

Agar data tersebut dapat dianalisis lebih lanjut, diperlukan proses transformasi data melalui beberapa tahapan decoding.

1. Konversi Hexadecimal menjadi Binary

Langkah pertama adalah mengubah representasi hexadecimal menjadi data biner asli. Proses ini bertujuan untuk merekonstruksi kembali data mentah yang dikirimkan dalam paket jaringan.

Contoh pendekatan yang umum digunakan di lingkungan sistem berbasis Unix adalah menggunakan utilitas seperti:

xxd -r -p

Perintah tersebut akan mengubah string hexadecimal menjadi data biner asli.

2. Decode Base64

Setelah data biner diperoleh, sering kali ditemukan bahwa data tersebut masih dikodekan menggunakan Base64, sebuah metode encoding yang umum digunakan dalam transmisi data melalui jaringan.

Untuk mendekode data tersebut dapat digunakan perintah:

base64 -d

Proses ini akan mengubah string Base64 menjadi teks asli atau file yang sebenarnya dikirimkan dalam komunikasi TCP.

None

Hasil masih sangat acak, kemungkinan data disembunyikan lebih cerdas

๐Ÿง  Step 3 โ€” Identifying Suspicious Packet Pattern

Setelah melakukan ekstraksi payload TCP, langkah berikutnya adalah mencoba mengidentifikasi pola komunikasi yang tidak biasa di dalam traffic jaringan. Pada deskripsi challenge disebutkan bahwa:

"attacker has cleverly concealed his moves in well timely manner"

Pernyataan tersebut mengindikasikan bahwa penyerang kemungkinan menyembunyikan aktivitasnya dengan cara mendistribusikan data secara terstruktur dalam paket-paket tertentu, misalnya dengan ukuran payload yang konsisten atau pola pengiriman yang berulang.

Dalam analisis forensik jaringan, pendekatan seperti ini sering digunakan dalam teknik covert channel atau data exfiltration, di mana informasi rahasia dikirimkan secara bertahap melalui paket jaringan dengan karakteristik tertentu (misalnya ukuran payload yang sama).

๐Ÿ” Analisis Berdasarkan Panjang TCP Payload

Untuk mengidentifikasi pola tersebut, salah satu metode yang dapat dilakukan adalah memfilter paket TCP berdasarkan panjang payload. Dalam kasus ini, ditemukan indikasi bahwa beberapa paket memiliki ukuran payload yang sama, yaitu 12 byte.

Filter berikut digunakan untuk mengekstrak payload dari paket TCP dengan panjang tersebut:

tshark -r myNetworkTraffic.pcap -Y "tcp.len==12" -T fields -e tcp.segment_data | xxd -p -r | base64 -d

Penjelasan tahapan perintah tersebut:

  1. tshark -r myNetworkTraffic.pcap Membaca file capture jaringan.
  2. -Y "tcp.len==12" Memfilter hanya paket TCP yang memiliki panjang payload 12 byte.
  3. -T fields -e tcp.segment_data Mengambil data payload TCP dalam format hexadecimal.
  4. xxd -p -r Mengonversi data hexadecimal menjadi bentuk biner asli.
  5. base64 -d Melakukan decode Base64 untuk mendapatkan data sebenarnya yang ditransmisikan.
None

๐Ÿ”Ž Rekonstruksi Fragmen Data dari TCP Payload

Hasil decoding pada tahap sebelumnya menunjukkan bahwa data yang diperoleh menyerupai potongan flag, namun masih terlihat tidak berurutan atau terfragmentasi. Kondisi ini mengindikasikan bahwa data kemungkinan besar tidak dikirimkan sebagai satu paket utuh, melainkan dipecah menjadi beberapa segmen kecil sebelum ditransmisikan melalui jaringan.

Strategi seperti ini sering digunakan dalam teknik data obfuscation atau covert data transmission, di mana informasi sensitif disebarkan dalam beberapa paket kecil untuk menghindari deteksi sederhana pada analisis jaringan. Dalam konteks forensik jaringan, fenomena tersebut dikenal sebagai packet fragmentation at the application layer, di mana data logis dipecah menjadi beberapa payload kecil yang dikirimkan secara bertahap.

Dari hasil observasi dapat disimpulkan dua karakteristik utama:

  1. Data flag dipecah menjadi beberapa segmen kecil Setiap paket TCP membawa sebagian kecil informasi yang jika dilihat secara individual belum membentuk data yang bermakna.
  2. Urutan paket tidak langsung membentuk pesan yang utuh Oleh karena itu, fragmen-fragmen tersebut perlu direkonstruksi kembali berdasarkan urutan waktu (timestamp) atau sequence paket yang terdapat pada traffic capture.

Dalam praktik analisis jaringan menggunakan tools seperti Wireshark maupun TShark, pendekatan yang umum dilakukan adalah:

  • Mengurutkan paket berdasarkan timestamp
  • Menggabungkan payload secara berurutan
  • Melakukan kembali proses decoding atau interpretasi data

Dengan melakukan rekonstruksi terhadap urutan pengiriman paket, potongan-potongan data yang sebelumnya terlihat acak dapat digabungkan sehingga membentuk string yang utuh, yang dalam konteks challenge ini kemungkinan besar merupakan flag yang tersembunyi di dalam lalu lintas jaringan.

๐Ÿงฉ Step 4 โ€” Filtering Specific Packet Sizes

Pada tahap ini dilakukan analisis lebih lanjut terhadap pola ukuran payload TCP. Dari observasi sebelumnya terlihat bahwa penyerang tidak mengirimkan data secara acak, melainkan menggunakan ukuran paket tertentu untuk menyisipkan informasi. Pola ini sering ditemukan dalam teknik covert communication, di mana data disembunyikan dalam paket dengan ukuran spesifik untuk menghindari deteksi sederhana.

Dalam kasus ini ditemukan bahwa payload yang relevan memiliki ukuran 12 byte dan 4 byte. Oleh karena itu, proses analisis difokuskan pada paket-paket dengan ukuran tersebut.

Perintah berikut digunakan untuk mengekstrak dan merekonstruksi data dari paket yang memenuhi kriteria tersebut menggunakan TShark:

tshark -r myNetworkTraffic.pcap -Y "tcp.len==12 || tcp.len==4" -T fields -e frame.time -e tcp.segment_data | sort -k4 | awk '{print $6}' | xxd -p -r | base64 -d

Perintah ini menggabungkan beberapa utilitas command-line untuk melakukan filtering, ekstraksi, rekonstruksi, dan decoding data secara berurutan.

โš™๏ธ Breakdown Command

๐Ÿ”น -Y "tcp.len==12 || tcp.len==4"

Parameter ini digunakan untuk memfilter paket TCP berdasarkan ukuran payload. Hanya paket dengan panjang 12 byte atau 4 byte yang akan diproses lebih lanjut.

Pendekatan ini bertujuan untuk mengisolasi paket-paket yang diduga mengandung fragmen data tersembunyi.

๐Ÿ”น -e frame.time -e tcp.segment_data

Parameter ini digunakan untuk mengekstrak dua informasi penting dari setiap paket:

  • frame.time โ†’ timestamp paket, yang menunjukkan waktu paket ditangkap
  • tcp.segment_data โ†’ payload TCP dalam format hexadecimal

Informasi waktu diperlukan untuk memastikan bahwa fragmen data dapat direkonstruksi sesuai urutan pengiriman yang sebenarnya.

๐Ÿ”น sort

Perintah ini digunakan untuk mengurutkan paket berdasarkan timestamp, sehingga potongan data dapat disusun kembali sesuai dengan kronologi komunikasi jaringan.

Urutan waktu sangat penting dalam proses rekonstruksi karena data yang tersembunyi biasanya dikirimkan secara berurutan dalam beberapa paket berbeda.

๐Ÿ”น awk '{print $6}'

Perintah awk digunakan untuk mengambil kolom yang berisi payload TCP saja, sehingga hanya data yang relevan yang diproses pada tahap berikutnya.

Dengan demikian, informasi lain seperti timestamp atau metadata paket tidak ikut diproses lebih lanjut.

๐Ÿ”น xxd -p -r

Perintah ini berfungsi untuk mengonversi data hexadecimal menjadi raw binary. Langkah ini diperlukan karena payload TCP yang diekstrak oleh TShark masih berada dalam representasi hexadecimal.

๐Ÿ”น base64 -d

Tahap terakhir adalah melakukan decoding Base64 untuk mengubah data biner tersebut menjadi teks ASCII yang dapat dibaca.

Metode encoding Base64 sering digunakan dalam transmisi data melalui jaringan karena mampu merepresentasikan data biner dalam bentuk teks.

๐Ÿ Final Output

Hasil akhir:

picoCTF{1t_w4snt_th4t_34sy_tbh_4r_e5e8c78d}
None