Halaman ini dimaksudkan sebagai pengenalan pertama kalian ke dalam perjalanan CTF kalian. Ada banyak sekali resources terkait CTF yang dapat kalian temukan di internet, jadi halaman ini akan menyajikan pendekatan yang efektif untuk meningkatkan skill CTF kalian.
Cara terbaik untuk belajar adalah dengan menyelesaikan challenges CTF, kemudian merasakan stuck, berproses, lalu stuck lagi, bertanya, dapatkan flag, ulangi. Selama melakukan itu, kalian akan mendapatkan ilmu baru, keterampilan baru, dan pemahaman tentang tools baru tentunya.
Dengan kata lain, selama kalian mencoba menyelesaikan challenges CTF lalu kalian merasa stuck, terjebak, tidak tahu jalan, itu sangat wajar. Karena memang seperti itu belajar. Kalian bisa bertanya ke anggota CCUG untuk membantu kalian menyelesaikan challenges (Dilarang bertanya saat CTF berlangsung). Get The Flag! 🚩
Apa itu CTF?
Capture The Flag atau biasa disingkat CTF, merupakan kompetisi keamanan siber di mana pemain harus memecahkan masalah terkait keamanan siber dalam bentuk challenges, dengan kerentanan yang sudah disematkan pada suatu challenge, tujuannya adalah mencari string atau teks rahasia (disebut flag) yang ada pada challenge tersebut, mengumpulkan flag pada platform CTF, kemudian mendapatkan poin sebanyak-banyaknya.
Fokus masalah sangat beragam, mulai dari aspek teoritis komputer hingga aspek terapan system administration, dan software engineering. Bermain CTF adalah cara yang bagus untuk menambah pengetahuan yang luas dalam segala hal, yang berkaitan dengan sistem komputer, sekaligus mencapai sense of accomplishment dan kompetisi.
Prasyarat
Sebelum kalian mulai mengerjakan challenges CTF, ada subset tools minimum yang kalian perlukan. Kalian memerlukan akses ke sistem UNIX, seperti Linux atau MacOS. Jika kalian menggunakan Windows dan tidak ingin memasang partisi terpisah (atau dual boot), kalian dapat menggunakan virtual machine (VM) seperti VMware atau VirtualBox, atau dengan Subsistem Windows untuk Linux (WSL). Banyak tools umum yang perlu kalian ketahui, cara menggunakannya dapat ditemukan di picoCTF resources. Kalian bisa mendapatkan banyak pemahaman dasar untuk topik-topik di CTF dan tools yang nantinya akan kalian butuhkan.
Binary Exploitation (PWN)
Kategori Binary Exploitation atau yang biasa disebut dengan Binex / PWN adalah kategori yang membutuhkan pemahaman pada program atau service yang diberikan. Kategori ini sedikit atau banyak membutuhkan pemahaman tentang Reverse Engineering, dikarenakan umumnya hanya diberikan compiled program berbahasa pemrograman C tanpa source code, beserta sebuah service (program yang sama dengan yang diberikan) yang berjalan pada sebuah server. Untuk memahami program yang diberikan harus melalui proses disassembling dan decompiling. Pada kategori ini, flag berada di service server yang diberikan, dan diperlukan kemampuan untuk menemukan kerentanan pada program kemudian mengirim payload eksploitasi ke service yang diberikan. Untuk mempelajari :
- Kerjakan challenge Binary Exploitation di picoCTF.
- Coba kerjakan challenge-challenge binex/pwn Advance di: pwnable.tw & pwnable.kr
- Youtube: LiveOverflow - Binary Exploitation Playlist, John Hammond - Binary Exploitation Playlist, pwn.college
Tools yang biasa dipakai pada kategori Binary Exploitation:
- Debugger (GDB, dengan ekstensi gdb seperti gef, pwndbg)
- Disassembler & Decompiler: (IDA atau Ghidra atau cutter).
- pwntool sangat berguna untuk pembuatan automasi eksploitasi.
Cryptography
Sesuai nama kategorinya yakni Cryptography, kategori ini befokus untuk mencari pesan asli (plaintext) yang sudah disembunyikan hingga menjadi pesan rahasia (ciphertext). Cryptography mengharuskan peserta untuk melakukan dekripsi pada flag yang sudah terenkripsi oleh suatu metode enrkripsi. Untuk mulai mempelajari Cryptography, dapat dimulai dari hal berikut:
- Kerjakan challenge dasar di cryptopals
- Dapat juga mempelajari di Cryptohack
- Asah kemampuan dengan mengerjakan challenge di picoCTF
- Resource lainnya: Crypton
Digital Forensics
Digital Forensics adalah kategori melakukan penganalisaan terhadap suatu berkas file, yang mana pada berkas file ini kita mencari suatu informasi yang menjadi tujuan untuk sebuah barang bukti, atau hasil dari peristiwa yang ada. pada kategori ini memiliki banyak tools yang digunakan. karena umumnya kategori ini mencakup beragam sub kategori:
- Stegnography
- Memory Dump
- Network Analys
- Log Analys
- File Repair
- Deobfuscated File
- PDF Parsing
Tools yang di gunakan pada kategori ini sangat banyak beberapa sudah dirangkum dalam repo berikut. https://github.com/DominicBreuker/stego-toolkit
Reverse Engineering
Kategori Reverse Engineering adalah kategori yang mengharuskan peserta untuk menemukan sebuah serial key atau flag, pada suatu program yang menerapkan suatu algoritma. Sama seperti Binary Exploitation, kategori ini juga sering membutuhkan disassembler dan decompiler, untuk membantu mengerjakannya. Kemampuan peserta dalam memahami bahasa pemrograman tingkat tinggi seperti C++, Java, Python, C, VB hingga bahasa tingkat rendah seperti assembly, akan sangat membantu.
Tools yang biasa dipakai pada kategori Reverse Engineering:
- Debugger (GDB, dengan ekstensi gdb seperti gef, pwndbg)
- Disassembler & Decompiler: (IDA atau Ghidra atau cutter).
- Resource assembly: Assembly Programming, x86 Assembly: Hello World! - John Hammond
Web Exploitation
Kategori Web Exploitation adalah salah satu kategori yang mudah proses pengerjaannya, karena umumnya, kategori ini tidak memerlukan tools berat untuk mengerjakannya. Berikut adalah pedoman yang bisa kalian pertimbangkan untuk mulai mendalami kategori Web Exploitation:
- Pengetahuan dasar dalam bahasa scripting. (Python adalah bahasa pemrograman yang sangat membantu)
- Pengetahuan dasar dalam bahasa Javascript, PHP, dan kerangka kerja (framework) web umum seperti NodeJS, Flask, Laravel, Codeigniter, dan sebagainya.
- Memahami protokol web umum seperti HTTP, HTTPS, IP, dan DNS.
- Memahami tentang RESTful API, dan interaksi client-server.
Pedoman tersebut dapat dipertimbangkan jika kalian tidak tau harus mulai dari mana untuk mendalami kategori Web Exploitation. Karena 90% internet menggunakan Javascript, memiliki pemahaman tentang sintaks dalam bahasa pemrograman tersebut akan membantu mengatasi "kebingungan" saat pertama kali mulai mengerjakan. Dan dengan mengetahui perspektif sebagai pengembang/developer web juga membantu dalam eksploitasi web.
Meskipun dikatakan "mudah dilakukan", namun seperti kategori lainnya, web dapat berkembang sedemikian rupa, bahkan menjadi kompleks, sehingga sangat penting untuk mengetahui dasar-dasarnya. Saat kalian dapat menyelesaikan challenges dengan bug yang relatif mudah seperti XSS, LFI, dan SQL Injection, kalian dapat secara bertahap beralih ke eksploit kompleks yang mungkin bercabang dari apa yang pertama kali kalian mulai dalam kategori ini, seperti pop chains atau XS-leaks atau bahkan web assembly. Cara terbaik untuk belajar adalah dengan mencoba challenges CTF apa pun dan lihat sendiri seperti apa challenge web itu.