HITB PRO CTF 2019

Ini cerita khusus mengenai HITB CTF di Abu Dhabi, sedangkan cerita jalan-jalan saya tuliskan di posting lain. Dari websitenya acaranya, rencananya ada 20 tim tingkat dunia yang diundang, pemenang dari berbagai CTF lain di dunia tapi akhirnya hanya 19 team yang berkompetisi. Di akhir kami akhirnya peringkat 9 dari 19.

Tim PDKT yang lolos di HITB tercantum di CTF Time. Saya tidak akan bercerita detail tentang tim ini, silakan kunjungi website/sosmed/github masing-masing anggota teamnya: farisv, visat, wearemarching, zeroload. Sengaja saya link tidak ke linkedin langsung, supaya kalau di masa depan informasi profilenya ingin dianonimkan akan lebih mudah. Ada yang baru tingkat 3, dan sisanya belum lama lulus (tidak seperti saya yang sudah lebih 20 tahun lulus S1).

Ranking akhir pemenang bisa dilihat di: https://ctftime.org/event/918 . Di posting ini saya ingin bercerita mengenai teknis CTF ini, dari format lombanya sampai teknis beberapa soalnya.

Format lomba adalah attack defense murni, tidak ada soal jeopardy. Semua tim diberikan berbagai service yang sama, dan kita perlu menyerang service team lain sambil mempertahankan tim kita. Supaya lebih jelasnya, saya akan memberikan contoh sederhana (bukan soal sesungguhnya).

Misalnya kita diberi layanan image gallery. Ternyata di programnya ada bugnya: bisa mengupload selain image, jadi kita bisa menjalankan kode kita sendiri atau mungkin ada bug lain: bisa melihat image orang lain. Nah panitia akan menaruh flag (berupa string kode) ke dalam image, dan akan mengupload ke semua peserta (flagnya beda untuk tiap service dan tim tiap peserta).

Tugas kita adalah mencuri flag dari peserta lain, dan memastikan orang tidak bisa mengambil flag kita. Bagian sulitnya adalah: fungsionalitas harus tetap jalan, jadi kita tidak bisa membela diri dengan mematikan servicenya atau memblok semua iamge, atau memblok peserta. Jadi ada program dari panitia yang akan menguji bahwa fungsionalitas masih jalan. Di contoh ini galery harus bisa tetap menerima image dan tetap bisa didownload imagenya. Jadi patchnya harus cukup eksak, kalau membuat layanannya tidak berjalan, poin kita akan dikurangi.

Panitia sudah membuat repositori semua soal dengan writeup dari panitia (dengan solusi yang diharapkan panitia). Ini bisa diakses umum di:

https://github.com/HackerDom/proctf-2019

Terlihat bahwa team PDKT berhasil pertama menyelesaikan salah satu soal drone_racing (first blood untuk soal itu).

Kita bisa menjalankan tcpdump untuk memonitor layanan kita agar bisa mempelajari eksploit yang dikirimkan team lain. Tapi tcpdump ini tidak selalu ampuh karena beberapa hal:

  • Team lain mengirimkan eksploit yang obfuscated
  • Kadang data yang dikirimkan sangat besar (misalnya image), padahal disk space virtual machine yang diberikan sangat terbatas
  • Kadang layanan memakai SSL (encrypted), jadi harus diintercept dengan cara khusus (tidak bisa sekedar tcpdump)
  • Kadang layanan memakai enkripsi custom

Jika ada beberapa team yang mendapatkan skor terlalu banyak dari satu soal, soal itu akan dipensiunkan dan diganti dengan soal yang lain. Soal-soal hari pertama baik yang bisa maupun yang tidak bisa diselesaikan juga dipensiunkan di hari ketiga.

Menurut saya beberapa soal dirancang tidak bisa diselesaikan dalam waktu sehari, dan memang diharapkan peserta meneruskan pengerjaan soal di hotel. Jadi jika ada lomba semacam ini, sebaiknya persiapkan stamina dengan baik.

Ada beberapa soal yang saya benar-benar tidak kepikiran karena tidak tahu bahwa suatu hal itu mungkin. Misalnya saya tidak memperhatikan di soal rubik bahwa bisa saja terjadi use after free karena menggunakan alokasi stack manual di F#. Saya tidak tahu bahwa ini bisa dilakukan di F# dan bahwa tidak ada pengecekan yang dilakukan oleh runtime .NET.

Satu soal yang membuat menyesal adalah SepToN. Saya tahu persis harus bagaimana: melakukan attack terhadap Substitution–permutation network. Dulu saya sempat mempelajari ini khusus AES untuk melakukan fault injection attack di hardware, tapi saya tidak pernah benar-benar mempraktikkan variasi SPN yang tidak wajar (di kasus ini round-nya hanya 4).

Saya merasa soal-soal enkripsi blok ini cukup mengada-ada. Saya tidak pernah menemukan di dunia nyata orang yang membuat block cipher custom sendiri. Sedangkan untuk berbagai kasus kelemahan kriptografi yang lain, memang saya temukan. Saya merasa stuck karena saya pikir attack hanya bisa dilakukan terhadap BMP header (4 byte) saja. Setelah membaca writeupnya, ternyata komponen Alpha bisa digunakan.

Ada satu team yang berhasil menyelesaikan soal SepToN ini, dan dari satu soal ini saja, mereka mendapatkan nilai yang sangat banyak. Tidak ada defense khusus yang bisa dilakukan untuk menangkal ini, jadi semua tim lain juga pasrah.

Soal yang diberikan sangat bervariasi, dan bahkan ada soal IOT juga. Saya sendiri awalnya diundang karena akan ada materi khusus IOT, tapi ternyata bagian ini dibatalkan. Ternyata dalam lomba ini tetap ada satu soal IOT. Saya agak menyesal tidak memperhatikan bahwa diberikan kabel mini USB untuk ST-LINK, dan baru di hari kedua saya sadari kabel ini ada dan bisa dipakai mengekstrak firmwarenya. Sayangnya waktunya tidak cukup, dan soal tidak diteruskan untuk hari ketiga. Saya jarang melakukan reversing kode ARM thumb (terakhir adalah ketika melakukan RE Pokemon Go Plus), dan prosesnya agak lama.

Ada juga satu soal berhubungan dengan AI (adversarial attack). Saya merasa sedikit kesal dengan diri sendiri karena tidak pernah benar-benar mencoba attack terhadap AI meskipun tahu teorinya. Saya tahu dengan tepat bagaimana neural networknya bekerja, dan saya mencoba-coba mengimplementasikan neural network sederhana dengan layer deconvolutional tapi akurasinya masih terlalu rendah.

Kesulitan utama dalam mengerjakan CTF seperti ini adalah: memilih soal untuk dikerjakan. Ada beberapa soal yang dari awal sepertinya sudah terlihat sangat sulit, tapi ternyata mudah (misalnya soal ca), dan karena sudah merasa akan ribet, kami jadinya tidak menyelesaikannya. Beberapa soal lain terlihat sulit dan memang sangat sulit (misalnya convolutional) dan saya merasa ini hampir mustahil selesai sehari (dan memang semua tim gagal menyelesaikan ini).

Di sisi lain: kadang soal sulit bisa memiliki solusi sederhana yang tidak diharapkan pembuat soal. Team PDKT berhasil menyelesaikan soal Drone Racing yang mestinya sangat rumit (overflow file .class) dengan hanya menggunakan trik database.

Saya kagum dengan dedikasi team PDKT yang selagi lomba juga sambil mengurus final Cyber Jawara, jadi waktunya agak tersita karena sambil lomba juga mengurusi lomba di Indonesia. Semoga berikutnya akan ada lebih banya lagi yang kemampuannya setara, supaya minimal bisa membantu penyelenggaraan lomba di Indonesia.

Penutup

CTF offline seperti ini memang cocok untuk anak muda, sedangkan saya merasa agak lelah karena masalah perjalanan dan perbedaan time zone dan stamina tidak seperti waktu saya masih muda. Selain itu sudah lama juga saya tidak ikut CTF yang umum seperti ini, dua tahun terakhir saya hanya ikutan CTF Flare On saja. Mungkin kalau pekerjaan utama saya sehari-hari berhubungan dengan security, akan lebih mudah untuk update ilmu security/CTF setiap hari.

CTF seperti ini butuh tetap mengerjakan soal di hotel. Ini juga alasan saya tidak membawa Risna dan anak-anak, karena tidak akan bisa bersenang-senang di hari lomba. Sepertinya sekarang ini saya lebih cocok dengan CTF jangka panjang seperti Flare On supaya santai.

Pemain CTF juga harus belajar banyak hal baru, termasuk juga topik sulit seperti AI. Topik dasar enkripsi secara menyeluruh juga perlu dikuasai Saya sendiri jadi terinspirasi untuk akan lebih banyak menuangkan hal-hal seperti ini dalam bentuk tulisan (sudah lama tidak menulis teknis dasar).

Semoga di tahun-tahun berikutnya team Indonesia bisa lebih baik lagi.

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”