Flare-On 5 (2018)

Ini sudah keempat kalinya saya mengikuti challenge tahunan Flare-On dari FireEye. Saya sudah pernah menuliskan tentang Flare-On ini di posting saya yang lain, tapi akan saya ulangi sedikit.

Flare-On adalah challenge reverse engineering, alias tantangan membongkar program. Bentuk Flare-On adalah challenge, semua yang selesai adalah pemenang. Ini ibaratnya seperti marathon, semua yang berhasil menyelesaikan disebut sebagai finisher. Ini berbeda dari CTF lain yang biasanya sifatnya adalah lomba (seperti lari Sprint) di mana yang duluan memecahkan adalah pemenangnya (contoh seperti ini adalah ketika saya menang hadiah ke Hong Kong dari reverse engineering). 

Hadiah Flare-On Tahun ini

Panitia sudah memberikan write-up tentang bagaimana caranya menyelesaikan berbagai soal yang ada, jadi saya tidak akan membuat write-up.  Tapi ada permintaan supaya saya menuliskan: ilmu apa sih yang dibutuhkan buat menyelesaikan masing-masing level? memang kadang membaca sebuah write-up itu terasa membingungkan kalau belum tahu dasar ilmunya. Jadi di posting ini akan saya tuliskan deskripsi challengenya, dan ilmu apa yang perlu diketahui untuk menyelesaikan tiap challengenya. Tahun ini dari Indonesia hanya Faco lagi yang solve, dan dari Thailand ada 2 orang lain selain saya.

Chal 1: Minesweeper Championship Registration

Ini adalah bentuk challenge reverse engineering paling sederhana. Ini sekedar memfilter orang-orang yang blank sama sekali soal reverse engineering. Misalnya ada yang bertanya di Twitter apa invitation codenya, padahal itulah soalnya (mencari invitation code).

Solusi untuk soal ini sangat sederhana, dengan decompiler Java didapatkan jawabannya, hanya sebuah if saja yang perlu dibaca. Hal yang perlu diketahui hanya ini: sebuah program bisa ditulis dalam berbagai bahasa, setelah mengetahui bahasanya, kadang kita bisa mendapatkan decompilernya dan bisa membaca kodenya.

Meskipun soal ini terlihat amat sangat sederhana, bukan berarti tidak terpakai. Sekitar 20 tahun yang lalu ada banyak aplikasi shareware yang proteksinya segampang ini, hanya ada satu password statik saja. Bahkan beberapa tahun terakhir ini  ketika para ahli security membongkar firmware router, ditemukan juga perbandingan statik seperti ini (account  backdoor dengan password statik).

Chal 2: Ultimate minesweeper

Tantangan ini mulai agak serius: hacking game. Gamenya sangat sederhana, hanya minesweeper. Tugas kita hanya satu: mencari tahu di mana yang bukan bom, tapi kebanyakan isinya adalah bom (900 sel dan hanya 3 yang bukan bom).

Cara yang manual adalah dengan mengklik satu per satu 900 kali untuk mencari tahu lokasi yang bukan bomb karena posisinya tidak akan berubah. Cara yang lebih cerdas adalah dengan membaca kode atau melakukan debugging untuk melihat isi memori, supaya tahu mana yang ada bombnya.

Ini adalah contoh di mana pengetahuan programming diperlukan. Jika Anda adalah programmer, maka akan terbayang bahwa perlu ada struktur data board (biasanya dalam bentuk array 2 dimensi) yang isinya apakah di suatu posisi ada bomb atau tidak. Jika Anda programmer yang membuat program semacam ini tentunya akan bisa mendebug program sendiri dan bisa menentukan di mana bom dan bukan bom.

Challenge ini sederhana karena 90% nama bisa dibaca dan tidak menyesatkan. Hanya ada satu bagian kecil saja yang dibuat agak membingungkan (bagian mengisi lokasi yang bukan bom).

Ini masih game yang super sederhana dan banyak yang menyerah tapi orang-orang ini sebagian ingin bisa membongkar dan mengakali game di App Store/Play Store. Untuk game yang serius, ada lebih banyak lagi hal-hal yang perlu dicatat oleh game, lokasi pemain, jumlah koin, kondisi musuh dsb. Jika Anda tahu cara kerja game (meskipun tidak pernah memprogram langsung), Anda akan terbayang data apa saja yang disimpan.

Secara teknis, program ini dibuat dengan .NET, diperlukan pengetahuan bahwa ada banyak debugger sekaligus decompiler .NET. Cara termudah adalah dengan dnspy yang bisa mendecompile dan mendebug. Menelusuri program bisa dilakukan cukup jelas, mulai dari klik sampai dia membaca memori yang berisi struktur data board.

Chal 3: FLEGGO

Di sini tantangan sudah masuk lebih serius: membongkar native code alias kode assembly. Ini hanya sedikit lebih sulit dari challenge pertama, karena di challenge pertama kita bisa mendapatkan kodenya dengan membaca source code Java. Kali ini yang dibaca adalah assembly, tapi string passwordnya masih jelas di file.  

Masalah utamanya adalah: ada 48 file. Ini masih bisa dilakukan satu per satu, tapi butuh waktu lama. Di sini diperlukan otomasi, bagaimana mengulangi proses yang sama 48 kali.  Proses otomasi ini juga penting dalam dunia nyata, contohnya FireEye pernah harus mengecek 10 ribu komputer untuk mengetahui apakah BIOS-nya diinfeksi malware atau tidak.

Orang yang tidak bisa mengotomasi ini sering saya temui dalam hidup, dulu saya pernah menuliskan tentang admin yang membuat secara manual 100 account dan menginstall satu per satu semua software. Inti dari otomasi adalah membuat program atau skrip untuk mengulangi berbagai pekerjaan manual.

Jadi ilmu dasar untuk menyelesaikan soal ini adalah: keahlian membaca assembly dasar dan memprogram untuk mengotomasi pembuatan solusi.

Chal 4: binstall

Ini contoh serius dari sebuah malware yang disederhanakan dan dijinakkan. Ini merupakan versi sederhana dari trojan banking sejenis Zeus dan sejenis berbagai malware lain yang membajak browser. Di sini sudah banyak dipakai berbagai teknik yang mulai rumit, seperti obfuscation dan dll injection. Karena malware ini sudah disederhanakan, ilmu dari berbagai buku dan tutorial website masih bisa digunakan.

Challenge ini mengkombinasikan .NET (installer), .dll (native code) dan .js (javascript).  “Malware” ini  akan menginjeksikan skrip pada website flare on dan menambahkan command baru. Malware yang sesungguhnya akan aktif di sebuah situs banking dan mencuri password kita, atau mengubah tujuan transfer ke nomor lain.

Ada banyak sekali ilmu dasar analisis malware yang perlu dimengerti untuk menyelesaikan soal ini. Saran saya adalah: bacalah salah satu buku analisis malware, dan coba praktikkan ilmunya pada soal ini.

Chal 5: Web 2.0

Beberapa tahun lagi WebAssembly akan populer. Saat ini WebAssembly sudah disupport semua browser, tapi masih belum banyak dipakai oleh berbagai website. Sebagai reverse engineer, kita harus berpikir maju dan mulai belajar membaca kode yang akan populer, bukan yang sudah populer.

Challenge di bab ini adalah untuk memahami kode WASM, dan sebenarnya setelah dipelajari bisa diselesaikan dengan sangat mudah menggunakan debugger yang ada di browser. Saat ini belum banyak resource reverse engineering web assembly, jadi kita perlu membaca banyak dasar teori untuk menyelesaikan soal ini.

Chal 6: Magic

Soal ini adalah mengenai binary Linux. Soalnya rada mengada-ada, kita diminta mengisi 666 password yang dihasilkan dari algoritma tertentu. Ada banyak cara menyelesaikan ini, baik dengan otomasi, ataupun memahami algoritma supaya tidak perlu menjawab sama sekali.

Dalam mencari bug di dunia nyata, kita tidak akan diberi program sederhana yang mudah dibongkar. Berbagai program di Linux ukurannya besar dan hasil compile  dari ratusan ribu atau jutaan baris kode. Soal ini sekedar mensimulasikan bahwa kadang kita harus memahami beberapa algoritma yang ada di sebuah file biner dan memahaminya dengan benar.

Dasar ilmu untuk menyelesaikan soal ini adalah: kriptografi (dasar) dan pengetahuan debugging binary Linux. Beberapa tool juga bisa dipelajari (misalnya pexpect, frida, gdb) untuk mengotomasi solusinya.

Chal 7: WOW

Soal ini hanya bisa dijalankan di Windows 7 64 bit karena memakai teknik Heaven’s Gate. Ini hanyalah salah satu contoh teknik aneh yang dipakai oleh malware. Ada banyak sekali teknik-teknik lain yang dipakai oleh malware untuk mempersulit debugging.

Secara umum untuk menyelesaikan soal semacam ini kita perlu banyak mengikuti perkembangan malware dan teknik-teknik terbaru yang dipakai oleh malware untuk menyulitkan debugging.

Chal 8: Doogie Hacker

Challenge ini sebenarnya bisa dianggap sebagai selingan saja. Pengetahuan yang perlu dimiliki adalah melakukan reverse engineering boot sector. Jaman dulu banyak virus boot sector sederhana, dan sekarang ini ada yang namanya “bootkits” yang kompleks (rootkit yang bisa menginfeksi boot sector/MBR).

Hanya diperlukan keahlian dasar membaca kode 16 bit plus sedikit ilmu kriptografi untuk menyelesaikan ini. Soal ini juga merupakan pengantar untuk soal terakhir yang lebih kompleks. Soal sederhana seperti ini diberikan supaya pemain merasa sedikit tenang.

Chal 9: leet editr

Ini contoh lain penggunakan teknik yang digunakan oleh malware. Kali ini yang dipakai adalah VirtualAlloc dan VirtualProtect yang mempersulit debugging. Tapi sayangnya soal ini masih kurang kompleks sehingga ada beberapa shortcut untuk menyelesaikannya. Seperti challenge no 7, diperlukan pemahaman cukup dalam mengenai trik malware dan internal Windows untuk menyelesaikan soal ini.

Chal 10: golf

Ini soal yang luar biasa,  berupa penggunaan hypervisor dengan menggunakan VT-X Extension dari Intel. Diperlukan pemahaman yang cukup dalam mengenai prosessor dan hypervisor untuk bisa menyelesaikan soal ini. Pembuat CTF tidak main-main dalam mengimplementasikan soal ini. Teknik semacam ini hanya dipakai oleh malware tingkat lanjut.

Di sini fitur Intel VT-X digunakan untuk mengimplementasikan sebuah instruction set khusus tapi tetap memakai register prosessor itu sendiri. Untuk menyelesaikan soal ini diperlukan banyak membaca mengenai hardware virtualization.

Chal 11: malware skillz

Ini soal tahun lalu yang disederhanakan. Jika sudah membaca soal dan solusi tahun lalu, tentunya akan tahu betapa panjangnya proses memahami soal ini. Bagi yang sudah menyelesaikan soal tahun lalu, menyelesaikan ini sangat gampang, segala macam tipuannya sudah terbaca dari awal dan soalnya sudah disederhanakan dari tahun sebelumnya.

Ini adalah soal yang paling dekat dengan malware yang sesungguhnya. Di soal ini juga diberikan file pcap yang merupakan hasil sniffing jaringan yang perlu kita analisa.

Untuk menyelesaikan soal ini diperlukan kombinasi dari berbagai hal:

  • Pengetahuan jaringan (Wireshark, protokol DNS dan SMB)
  • Reverse engineering native code
  • Enkripsi, hashing, dan berbagai algoritma lainnya
  • Reverse engineering .NET
  • Pengetahuan mengenai git

Chal 12: Suspicious Floppy Disk

Soal ini awalnya seperti soal no 8, kita perlu melakukan reverse engineering kode 16 bit pada sebuah floppy disk. Di sini berbagai teknik DOS yang lama seperti intercepting interrupt digunakan. Saya menyangka tantangan kali ini akan memanfaatkan berbagai trik DOS yang kompleks (misalnya kode polymorphic) sehingga saya mempersiapkan diri membuat custom instrumentation untuk Bochs.

Dengan menuliskan kode instrumentasi saya bisa mencatat berbagai perintah yang dieksekusi sejak titik tertentu (minta password) sampai ada hasilnya. Ternyata jumlah instruksi yang dieksekusi banyak sekali. Setelah dipelajari lebih dalam lagi, ternyata isinya adalah sebuah virtual machine untuk arsitektur one instruction set computer (OISC) subleq.

Untuk yang menyelesaikan soal tahun lalu, tentunya akan ingat bahwa ini adalah soal no 11 tahun lalu. Ada pembahasan yang cukup dalam mengenai soal ini (jumlah halaman solusinya: 81 halaman). Saya juga membaca berbagai pendekatan lain untuk memahami yang dilakukan kode ini, termasuk juga membuat plot instruction pointer terhadap waktu. 

Di sini diperlukan pengetahuan bagaimana sebuah interpreter bekerja. Saya mengimplementasikan ulang virtual machine subleq dalam C, lalu menjalannya. Bedanya dengan tahun lalu: kode subleq ini sangat panjang.  Ada sekitar 500 ribu instruksi dieksekusi untuk menampilkan pesan dan mengecek password. Tahun lalu ini relatif pendek dan bisa dianalisis cukup cepat.

Akhirnya mau tidak mau saya harus membaca kode subleqnya, ternyata kodenya dipenuhi dengan sampah untuk mempersulit pembacaan. Contoh sampah adalah operasi aritmatika yang hasilnya dibuang. Ternyata kode subleq ini merupakan virtual machine juga. Jadi ini adalah virtual machine di dalam virtual machine. Virtual machine yang diimplementasikan oleh kode subleq adalah RSSB (Reverse subtract and skip if borrow), salah satu jenis one instruction set computer selain subleq.

Kode RSSB jauh lebih sulit dibaca dari subleq, dan saya perlu membuat kode python custom untuk menyederhanakan kode RSSB-nya. Ternyata kode inipun dipenuhi dengan sampah sehingga sulit dibaca.  Di sini menurut saya yang dibutuhkan adalah ketekunan. Ini seperti kembali ke awal belajar membaca kode assembly (tanpa decompiler).

Jadi intinya untuk menyelesaikan soal ini butuh sedikit membaca teori dan banyak kesabaran.

Liburan Songkran 2018

Songkran merupakan tahun baru Thailand, dan merupakan hari yang sangat dirayakan di Thailand, seperti Lebaran di Indonesia atau Natal di negara mayoritas Kristen.  Libur utama Songkran sendiri hanya 3 hari, tapi seperti Natal/Lebaran, biasanya kantor akan libur sekitar seminggu.

Selama 11 tahun di sini, kami lebih sering pulang ketika Songkran, karena selain libur panjang, polusi udara di Chiang Mai biasanya sedang buruk. Polusi ini dikarenakan pembakaran ladang dari Thailand (sedikit, kurang dari 200 titik api) dan dari negara sekitar (banyak, ribuan titik api). Tapi sesekali kami tinggal di Chiang Mai. Dan tahun ini kami tinggal di Chiang Mai.

Menurut cerita dari penduduk Chiang Mai, dulu perayaan utama Songkran hanyalah memercik air sebagai simbol pensucian dan menghapus nasib sial, tapi sekarang dirayakan dengan festival saling siram air (dengan ember dan pistol air). Sebagai anak kecil, Jonathan sangat menyukai perang air ini, dan tahun lalu dia kecewa karena harus pulang ke Indonesia di masa Songkran. Lanjutkan membaca “Liburan Songkran 2018”

Tantangan Flare On

Di posting ini saya ingin memperkenalkan kompetisi Flare On untuk para reverse engineer sekaligus mengajak ikutan buat yang belum ikutan. Flare On adalah tantangan dalam bentuk CTF (silakan baca tulisan saya ini untuk yang belum tahu apa itu CTF) khusus di bidang reverse engineering yang diadakan oleh Fireye. Tantangannya 6 minggu, semua peserta yang bisa menyelesaikan semua tantangan akan dianggap pemenang dan dapat hadiah. Ini bisa dibandingkan dengan lari Marathon (lama, butuh stamina, tingkat kesulitannya bisa sangat tinggi, semua yang selesai dianggap sebagai finisher), dan kebanyakan CTF lain bisa dibandingkan dengan lari sprint (biasanya hanya 2 hari, kesulitan soal dibatasi supaya bisa selesai dalam hitungan jam) .

Reverse Engineering (RE)

Saya sudah menulis soal pengenalan reverse engineering dan tulisan pengantar jika ingin memulai reverse engineering. Inti reverse engineering adalah: membongkar/memahami kode (terutama kode biner, tapi tidak selalu biner). Contoh kode biner yang perlu dipahami:

  • Software yang dibeli atau download (tanpa source code)
  • Malware
  • Kode exploit

Contoh penggunaan reverse engineering:

  • Software dari Hacking Team (untuk menghack orang, software ini banyak dibeli oleh beberapa pemerintah dunia) ternyata ada backdoornya.
  • Berbagai file yang kena ransomware berhasil didekrip karena ada kelemahan dalam enkripsinya, dan ini ditemukan dengan reverse engineering (dan tentunya ilmu kriptografi)
  • Malware yang sangat spesifik (misalnya yang digunakan untuk hacking Bank Sentral Bangladesh) harus dianalisis khusus, tidak akan ketemu oleh antivirus biasa
  • Malware yang tertarget (via email/web) untuk perusahaan tertentu juga perlu dianalisis secara khusus
  • Berbagai software legal ternyata menginstall rootkit (kasus terbaru saat ini di game Street Fighter)
  • Untuk melakukan pentesting secara benar untuk aplikasi mobile
  • Berbagai router dan benda IOT perlu direverse engineer untuk mengetahui cara kerjanya
  • Berbagai exploit disebarkan via halaman web (via Javascript yang diobfuscate, memanfaatkan kelamahan Flash/Java/IE, lalu mengandung kode biner berisi shell code)

Lanjutkan membaca “Tantangan Flare On”

Membuat Soal CTF

Setelah kemarin mengkritik mengenai soal CTF yang ngawur, saya ingin memberikan contoh soal CTF yang saya berikan di idsecconf. Harapan saya menulis ini adalah: supaya peserta CTF tahu apa yang saya pikirkan ketika membuat soal dan apa yang saya harapkan dari peserta.

Perlu diketahui bahwa saya menyumbangkan soal ini secara gratis, tidak ada imbalan apapun dari pihak idsecconf. Ini bukan mengiklankan idsecconf (buat yang tidak tahu: saya tinggal di Chiang Mai, Thailand, tidak ada kepentingan apapun dengan event apapun di Indonesia). Dan setelah membaca posting saya sebelumnya, Anda juga bisa membandingkan soal-soal ini dengan soal dari CTF internasional lainnya. Saya menuliskan ini untuk menunjukkan keterbukaan, saya tidak malu membuat soal ini, saya punya semangat berbagai ilmu.

Salah satu peserta telah mengirimkan writeupnya juga, sehingga Anda bisa melihat apakah jalan pikiran peserta sudah seperti yang saya harapkan: Cyber Security IPB dan Abdilah.

Tahun ini saya diminta agak mendadak untuk menyumbang soal CTF IDSECCONF. Karena mendadak, saya tidak mengeluarkan soal sulit. Soal yang sulit perlu ditest ulang untuk memastikan bisa berjalan dengan baik, dan perlu diuji oleh panitia lain. Soal-soal inipun sebenarnya sudah ada di komputer saya sejak lama.
Lanjutkan membaca “Membuat Soal CTF”

Dunia CTF dan CTF Tingkat Dunia

Sebagian pihak ternyata “tidak terima” dengan pendapat saya di tulisan sebelumnya, bahwa event CTF (capture the flag) tertentu itu levelnya buruk. Mereka berpendapat itu hanya “pendapat sebagian orang saja”. Di tulisan ini saya akan membahas seputar dunia CTF, dan apa yang saya maksud dengan CTF Tingkat dunia. Buat Anda yang blank mengenai dunia CTF, bisa membaca perkenalan CTF oleh saya di posting ini.

Setelah membaca defense dari pihak Cyberjawara, yang penuh dengan kekonyolan, sampai tidak tahu harus mulai dari mana (contohnya: katanya tidak semua writeup dipublish publik karena pembuat soal tidak mengijinkan), saya memutuskan untuk memperkenalkan dengan gamblang dunia CTF bagi semua orang.
Lanjutkan membaca “Dunia CTF dan CTF Tingkat Dunia”

Bikin CTF yang bener dong, jangan malu-maluin

Daripada sekedar menyindir (sindiran sudah dilakukan puluhan orang dari beberapa tahun lalu), sekalian lah saya posting terbuka bagi penyelenggara lomba Capture The Flag (CTF) yang super ngawur, terutama CTF Cyber Jawara. Beberapa CTF Indonesia sudah baik (seperti botani.cf Gemastik, atau idsecconf), tapi Cyberjawara ini sudah parah, jadi bahan tertawaan setiap tahun tetap saja tidak membaik (tahun ini saja sudah ada beberapa, misalnya ini, ini dan ini). Padahal ini adalah kegiatan ID SIRTII (Indonesia Security Incident Response Team on Internet Infrastructure)

ctf
Lanjutkan membaca “Bikin CTF yang bener dong, jangan malu-maluin”

Security CTF

Di posting ini saya hanya ingin memperkenalkan apa itu kompetisi security CTF (capture the flag). Posting ini akan membahas apa itu security CTF, apa manfaatnya ikut security CTF, seperti apa saja soal-soalnya, dan bagaimana caranya mulai ikut.

Sebenarnya selain security CTF ada berbagai CTF yang lain, tapi dalam posting ini selanjutnya saya akan menyebut CTF saja untuk security CTF. Setelah ikutan CTF-nya Noosc saya jadi lebih tertarik dengan CTF lalu gabung dengan team Rentjong (yang sejak sebelum saya bergabung sudah memiliki prestasi luar biasa). Anggota team ini kebanyakan bapak-bapak yang waktunya sedikit sekali setiap kali ada event CTF, dan melalui posting ini saya ingin memperkenalkan CTF ini ke publik, supaya suatu saat team dari Indonesia bisa masuk minimal 10 besar di https://ctftime.org/

Apa itu CTF

CTF adalah satu jenis kompetisi di bidang information security, biasanya formatnya ada tiga: jeopardy, attack-defence, dan mixed. Dalam format jeopardy, kita diminta menyelesaikan berbagai task, dan mendapatkan poin, pemenangnya adalah yang poinnya paling banyak. Dalam format attack-defence, tiap team menyerang dan mempertahankan sistem komputer yang diberikan kepada team tersebut. Format mixed artinya campuran dari kedua itu (tergantung panitianya, mungkin ada aturan khusus).

Setiap kita menyelesaikan soal, kita akan mendapatkan sebuah string yang jadi flagnya (misalnya “Flag{MyFlag}”), dan kemudian kita submit string tersebut ke sistem submisi, sebagai tanda bahwa kita berhasil menyelesaikan soalnya.

Manfaat ikut CTF

Selain menyenangkan (untuk refreshing), mengikuti CTF juga bermanfaat untuk menguji dan menyegarkan ilmu informatika (dari mulai networking, kriptografi sampai programming), ilmu mencari di Google (ilmu Google-fu), serta memaksa kita mengikuti perkembangan terbaru. Untuk Anda yang merasa jago dan sudah mengenal berbagai aspek komputer, inilah ajang untuk menguji kemampuan Anda.

Untuk Anda yang ingin jadi hacker, atau hobinya ngehack, ini adalah ajang legal tingkat dunia di mana Anda bisa menunjukkan kebolehan Anda. Perlu diingat, bahwa di sini Anda diminta untuk menyelesaikan tugas, bukan menyerang server dengan DOS (denial of service attack). Di hampir tiap event CTF selalu ada yang melakukan ini. Ini sama saja seperti Anda diminta bertanding bersama dengan orang-orang, tapi karena Anda nggak mampu bertanding, Anda malah merusak tempat pertandingannya, sehingga tidak ada yang bisa bertanding di situ.

Di Amerika, beberapa team CTF tingkat atas dunia, seperti PPP (Plaid Parliament of Pwning dari Carnegie Mellon University) sangat dikenal di kalangan banyak perusahaan, sehingga alumni PPP ini banyak dicari oleh perusahaan besar (seperti Facebook atau Microsoft).

Team

Sebagian besar event CTF ditujukan untuk team, dan tidak dibatasi jumlah anggota teamnya, sebagian kecil CTF membatasi jumlah anggota team (terutama untuk lomba offline), dan sebagian lagi hanya ditujukan untuk individu.

Hadiah dan Ranking

Banyak event CTF yang memberikan hadiah, mulai dari hadiah kecil seperti lisensi software, sampai hadiah besar seperti uang cash atau tiket pesawat. Biasanya hanya sedikit yang mendapatkan hadiah karena hanya beberapa pemenang saja, tapi banyak yang ikut semua CTF karena ingin belajar, dan mendapatkan ranking tinggi. Situs ctftime.org mentrack tim-tim yang mendaftar di situs mereka, dan memberikan rangking berdasarkan pencapaian dalam tiap event CTF (tiap event bobotnya berbeda). Situs tersebut juga berisi link ke banyak soal dan pembahasan (istilahnya writeup).

Bentuk kompetisi

Kebanyakan CTF online sifatnya jeopardy (walau ada juga yang attack defence, dengan akses VPN), dan hampir semuanya gratis untuk diikuti siapa saja. Sebagian CTF hanya memberikan soal kategori tertentu saja (misalnya SqiLab CTF yang diadakan oleh NotSoSecure hanya berurusan dengan code injection), tapi kebanyakan CTF memberikan soal campuran dalam berbagai kategori.

Jenis soal

Saya akan membahas beberapa kategori yang biasanya ada: web, crypto, forensic, reversing, pwnables, dan misc. Biasanya dalam tiap kategori ada pointnya, yang menyatakan tingkat kesulitan soalnya, misalnya web100 lebih mudah dari web200.

Perlu dicatat bahwa semua soal dalam sebuah CTF jarang sekali bisa diselesaikan dengan tool standar. Contohnya: Anda tidak bisa menjalankan sqlmap langsung untuk mendapatkan akses via SQL Injection (biasanya panitia sudah merancang soalnya seperti itu). Jadi script kiddies yang cuma bisa memakai tool akan segera berguguran.

Soal dalam kategori web biasanya adalah bagaimana masuk ke web site tertentu, atau bagaimana mendapatkan hak akses tertentu (misalnya dari user biasa mendapatkan hak akses admin). Cara masuk webnya bisa berbagai cara, misalnya bisa dari SQL injection, XSS injection, hash extension attack, dsb. Di sini keahlian yang dibutuhkan adalah pemahaman yang baik mengenai teknologi web. Soal dari CTF Noosc hampir semuanya kategori web (silakan lihat writeup yang saya tulis). Contoh lain bisa dilihat dari writeup oleh Rizki Wicaksono (dari ilmuhacking.com, anggota team Rentjong).

Sesuai namanya, soal dalam kategori crypto berhubungan dengan kriptografi. Soalnya bisa sangat sederhana (ini contoh writeup cryptanalysis untuk menyelesaikan substitution cipher), sampai lebih rumit, misalnya mencari kelemahan dari custom encryption yang diberikan. Di sini ilmu kriptografi sangat diperlukan.

Soal dalam kategori forensic meminta kita mengekstrak flag dari data yang diberikan (jadi biasanya kita tidak berurusan dengan memahami/reverse kode program). Contohnya: mengekstrak informasi yang disembunyikan dengan steganography, mengekstrak data dari disk image, memory dump. Pemahaman mengenai berbagai format data dibutuhkan untuk menyelesaikan soal-soal dalam kategori ini. Ini ada dua contoh writeup soal forensic: soal steganografi dan soal memory dump.

Soal dalam kategori reversing meminta kita mereverse engineer sebuah kode (bisa binary, bisa source code), tujuannya untuk mendapatkan flag dari kode tersebut. Keahlian untuk membaca kode assembly biasanya diperlukan untuk menyelesaikan ini (walaupun kadang soalnya bisa berupa source code, seperti yang saya bahas di sini)

Soal dalam kategori pwnables meminta kita mengexploit service yang berjalan di suatu mesin remote. Source dan atau binary (biasanya sih hanya binary saja) dari service yang berjalan akan diberikan dalam soal. Ini merupakan gabungan dari reverse engineering dan exploit writing. Dalam kategori soal reversing, kode diberikan kepada kita dan dijalankan di mesin kita, sementara dalam pwnables, kode dijalankan di mesin remote, dan flag yang harus kita ambil ada dalam mesin remote tersebut. Ini contoh writeup dari team Rentjong dalam lomba di Malaysia.

Soal dalam kategori misc tidak termasuk dalam semua kategori di atas, dan kadang-kadang gabungan dari kategori-kategori di atas.

Berbagai writeup puntuk semua kategori di atas bisa dilihat di https://ctftime.org/writeups

Mulai ikutan

Jika ingin ikut sebuah CTF, bisa langsung mendaftar untuk event terdekat, yang bisa dilihat di https://ctftime.org/event/list/upcoming, hampir tiap minggu ada event baru. Kadang ada juga event yang tidak terdaftar di situ, misalnya jika sifatnya hanya teaser. Weekend ini, 26/27 April 2014 ada event teaser di https://ctf.dragonsector.pl/ yang hadiahnya adalah diskon untuk event offline (ini untuk individual).

Jika event sifatnya adalah team, Anda tetap bisa mendaftar sebagai individu (atau buat saja team dengan anggota satu orang). Jika punya teman-teman yang tertarik hal yang sama, Anda bisa mendaftar bersama. Ketika event berlangsung, semua bisa bertemu (baik di dunia nyata ataupun maya) untuk membahas dan mengerjakan soalnya.

Silakan mencari-cari event dan silakan mencoba. Event CTF biasanya 48 jam atau lebih dan biasanya weekend, jadi Anda bisa meluangkan waktu sebisanya di weekend (misalnya mungkin ketika bangun pagi di hari Minggu, atau sepulang kencan di sabtu malam), karena gratis, Anda juga nggak akan rugi uang. Sebagian orang memakai nama asli, tapi kebanyakan memakai nickname ketika mendaftar, jadi Anda juga tidak akan merasa malu kalau kalah (atau tidak jadi mengerjakan soalnya jika sibuk saat weekend).

Selain event online, di Indonesia sudah diadakan juga beberapa event CTF offline, tapi sayangnya ini tidak banyak didokumentasikan (jarang yang menulis writeupnya), dan kadang eventnya sangat lokal (misalnya ICT USO EXPO Makassar). Kemhan juga mengadakan Cyber Defence Competition

Sebagai tambahan, jika Anda tertarik sedikit sejarah CTF, Anda bisa membacanya di Edisi 29 Echo ezine, ini adalah tulisan member team Rentjong yang sudah berpengalaman dalam banyak CTF. Di artikel itu juga diceritakan tentang berbagai kendala ikut event CTF dari Indonesia, misalnya koneksi Internet yang lambat. Anda juga bisa membaca banyak artikel security lain di Echo ezine (berguna untuk CTF). Buat yang belum tahu, Echo e-zine ini adalah publikasi security dalam bahasa Indonesia sejak 2003.