IDN Bootcamp Bug Bounty : Langkah awal Menjadi Bug Hunter

Cornelius Yuli
9 min readMay 6, 2024

--

Tentang Penulis :
Halo semua, perkenalkan nama saya Cornelius. Saat ini berkuliah di salah satu politeknik negeri dengan jurusan Teknik Informatika dan Komputer. Saya sendiri mulai tertarik dengan dunia keamanan siber setelah bergabung dengan organisasi kampus tentang Cyber Security saat semester 2 dan mengikuti beberapa webinar mengenai keamanan sistem informasi.

Pada kesempatan ini saya ingin berbagi sedikit pengetahuan yang saya pelajari sekaligus sebagai hasil dari penugasan untuk dapat mengikuti beasiswa bootcamp dari IDNetworkers. Berikut daftar dari apa yang akan saya bahas
1. Mengenai Bug Bounty
2. Linux
3. Programming
4. Network
5. Pentingnya Materi Linux, Programming, dan Network untuk Belajar Bug Bounty
6. Pengalaman Saya Terkait Bug Bounty & CTF
7. Akhir Kata dan Harapan

1. Bug Bounty

Bug Bounty Illustration

Bug bounty adalah program yang ditawarkan oleh perusahaan untuk mereka yang berhasil menemukan bug atau celah pada sistem mereka dan melaporkannya. Individu atau kolompok yang berhasil akan diberikan appresiasi atau hadiah misalnya berupa uang tunai. Besaran hadiah sendiri tergantung pada tingkat resiko atau dampak bug tersebut pada sistem dan bisnis perusahaan.

Tujuan dari program ini tentunya untuk mengatahui celah keamanan sehingga dapat diperbaiki sebelum dieksploitasi secara berlebihan oleh orang lain. Dengan mengadakan program bug bounty celah keamanan yang tidak dideteksi oleh penguji keamanan internal dapat diketahui karena sistem akan diuji oleh ribuan orang dengan kemampuan dan teknik yang berbeda. Perusahaan biasanya membuka program bug bounty melalui website resmi mereka ataupun melalui platform lain seperti hackerone dan bugcrowd.

Biasanya sistem yang diuji merupakan sistem yang berjalan dan digunakan orang lain. Oleh karena itu perusahaan menetapkan parameter dan aturan tertentu bagi mereka yang ingin mengikuti prorgam ini. Misalnya pembatasan target (hanya pada subdommain tertentu), pelarangan teknik tertentu seperti DDoS, dilarang mengeksploitasi secara berlebihan seperti mengubah data akun, dilarang mempublikasi celah sebelum diperbaiki dan lain sebagainya.

2. Linux

Linux and Distro
source : NovaCostum

Linux merupakan sistem operasi sama seperti Windows OS ataupun MacOS. Linux dibangun dari dari kernel linux yang dirilis oleh Linus Tovalds. Karena Linux dikembangkan dibawah lisensi GNU sehingga berbeda dengan Windows OS dan MacOS, Linux merupakan sistem operasi gratis dan open source. Linux sendiri memiliki beberapa varian atau yang lebih sering disebut distro. Setiap distro yang diciptakan untuk kebutuhan dan keperluan yang berbeda, contohnya distro Kali Linux dan Parrot linux yang berfokus untuk pengujian keamanan.

Dalam pengujian keamanan dan pencarian bug pada sistem, penggunaaan sistem operasi linux dapat membantu karena banyaknya tools pengujian yang dikembangkan dan dibagikan komunitas. Selain dari banyaknya tools, banyak orang dikomunitas menggunakan linux karena banyaknya pilihan distro. Distro distro tersebut dikembangkan khusus untuk kebutuhan misalnya pentesting sehingga lebih mudah, cepat dan ringan.

Untuk installasi, karena linux merupakan sebuah OS maka linux perlu dipasang di sebuah mesin sama seperti OS lain. Namun selain itu dapat juga dengan virtual machine sebagai virtual machine, WSL (Windows Subsystem for Linux), ataupun dengan dualboot. Saya sendiri sudah mencoba ketiga cara tersebut dan menurut saya masing masing memiliki kelebihannya tersendiri

  • Virtual Machine : cara pemasangan seperti ini lebih aman karena mesin linux akan terisolasi. Sehingga error yang muncul tidak akan berdampak ke OS utama. Namun kekurangannya adalah sistem berjalan lebih berat karena harus menjalankan sistem operasi utama dan linux secara bersamaan.
  • WSL : Mirip dengan Virtual Machine namun keduanya memiliki cara yang berbeda untuk berinteraksi dengan host. kelebihan WSL adalah installasi yang mudah dan untuk menyalakannya cukup mudah.
  • Dual-Boot : Kelebihannya adalah lebih ringan karena resource perangkat tidak perlu dibagi. Namun apabila error muncul dan tidak bisa diperbaiki maka diperlukan installasi ulang. Saya sendiri sudah install ulang 3x karena muncul error akibat ceroboh dalam memodifikasi file sistem linux :)

Dalam menggunakan linux ada beberapa command perlu dikuasai untuk membantu dan mempermudah menyelesaikan tugas yang ingin dilakukan dengan efisien.

  • Navigasi Direktori dan Manipulasi File : pwd, cd, ls, mkdir, touch, cp, mv, rm, rmdir, echo, grep, cat, tac, tail
  • Pengelolaan Proses : ps, kill, htop, jobs
  • Pengaturan Izin : ls -al, chmod, chown , umask
  • Pengelolaan User : passwd, useradd, userdel, usermod
  • Pengelolaan Service : systemctl start stop restart enable disable
  • Informasi Sistem : whoami, uname, neofetch
  • Basic Operator : | (pipeline), >> << < (redirect), && (and), || (or)

3. Programming

Programming Illustration
source : vecteezy

Programming merupakan segala proses yang berkaitan dengan penulisan kode program. Program sendiri merupakan serangkaian intruksi agar mesin melakukan tugas seperti yang diminta. Agar komputer mengerti apa yang diperintahkan manusia, program harus ditulis menggunakan bahasa tertentu yang memiliki aturannya sendiri. Hasil dari penulisan tersebut disebut juga dengan source code. Nah source code akan diterjemahkan lagi oleh interpreter agar perintah dapat dipahami dan dimengerti oleh komputer. Jadi komputer gak langsung paham sama bahasa pemprogramman yang ada entah cpp, python, dan sebagainya.

Dalam pengembangan web, bahasa pemprogramman yang dipakai berbeda antara backend dan frontend. Front-end sendiri bagian dari aplikasi yang berinteraksi langung oleh user. Pada front-end sendiri diguanakan HTML, CSS, JavaScript. Sedangkan back-end merupakan bagian dari aplikasi yang berjalan di sisi server dan bertanggung jawab untuk pemprosesan logika dan data. Bahasa yang digunakan berupa PHP, Python, Java, Ruby, SQL, atapun framework seperti flask, ExpressJS, Laravel dan lain sebagainya.

Menurut saya dan para mentor yang saya ikuti, pemahaman mengenai programming membantu untuk mengidentifikasi dan memahami struktur website. Dengan memahami struktur website, kita bisa tahu celah keamanan yang mungkin ada karena keteledoran sang programmer dalam menulis code. Saya sendiri baru menguasai beberapa programming language seperti SQL Basic, python, dan html basic. Dan saat ini yang masih dalam proses belajar adalah javascript.

4. Network

Computer Network illustration
source : GeeksforGeeks

Secara umum jaringan merujuk kepada sesuatu yang saling terhubung, misalnya jaringan sel, jaringan bisnis dan sebagainya. Namun di dunia komputer, jaringan ini merujuk kepada jaringan komputer. Jaringan Komputer adalah kumpulan (dua atau lebih) komputer yang saling terhubung satu sama lain. Komputer saling terhubung dengan tujuan bertukar dan berbagi data baik secara wired(kabel) ataupun wireless(tanpa kabel).

Pemahaman networking dalam cyber security penting untuk mengetahui bagaimana komputer saling terhubung, bagaimana internet bekerja, bagaimana interaksi antara komputer, serta memahami bagaimana serangan mungkin digunakan dan cara antisipasinya. Untuk memahami jaringan komputer, terdapat konsep yang perlu dipelajari. Konsep tersebut adalah Model Refrensi Jaringan berupa OSI model dan TCP/IP model.

Source : https://pcr-online.biz/2016/02/11/a-brief-history-of-computer-networking/

Model Refrensi Jaringan adalah standarisasi mengenai bagaimana cara komputer berkomunikasi satu sama lain. Mengapa perlu distandarisasi? karena ketika di masa awal dimana komputer dapat terhubung satu sama lain, berbagai vendor mengembangkan cara dan aturannnya sendiri agar komputer buatan mereka dapat saling berkomunikasi. Dampaknya komputer yang berbeda vendor tidak dapat saling berkomunikasi. Oleh karena itulah diciptakan standar yang menyatukan bagaimana banyak komputer dapat saling berkomunikasi meskipun berbeda merek. Model yang cukup terkenal adalah model OSI yang membagi menjadi 7 Layer dan model TCP/IP yang membagi menjadi 4 layer.

OSI and TCP/IP Model
Source : Huawei HCIA Datacom

Baik pada OSI ataupun TCP/IP, layer paling bawah akan berinteraksi dengan physical world dan layer paling atas akan berinteraksi dengan user. Setiap layer menyediakan service tertentu untuk layer atasnya dan layer atas akan bargantung dengan service yang disediakan oleh layer bawahnya. Berikut adalah penjelasan dari tiap layer pada TCP/IP

  • Application Layer : Lapisan ini terdapat protokol agar aplikasi dapat mengakses internet ataupun saling bertukar data. Misalnya protokol http(80), HTTPS(443) telnet(23), SMTP(25), FTP(20 & 21)
  • Host-to Host/Transport Layer : lapisan ini bertugas mengatur pertukaran dan pengiriman packet dan bertanggung jawab untuk memulai dan membuat koneksi end to end antara “host pengguna” dan “host server” (misalnya three handshake pada TCP). Protokol yang terdapat pada layer adalah TCP yang mengutamakan keandalan dan reliabel, dan UDP yang mengutamakan kecepatan dan kesederhanaan
  • Internet/network Layer : lapisan ini memiliki fungsi utama untuk memberikan logical address (yaitu IP address) dan mengatur pengalamatan serta penerusan packet (routing). Kedua fungsi tersebut terdapat pada protokol IP (Internet address). Protokol lainnya yang diguanakan adalah protokol ICMP yang berfungsi menyediakan laporan/pesan error, dan protokol IPX.
  • Network access layer : lapisan ini bertanggung jawab dengan pengiriman packet dari satu node ke node lain, physical addressing (Mac address), pemotongan packet menjadi lebih kecil (framming). Pada layer ini juga mengatur standarisasi dari kabel, pin, voltage, dan interface.

5. Pentingnya Materi Linux, Programming, dan Network untuk Belajar Bug Bounty

Lalu mengapa materi diatas penting untuk memulai bug bounty ataupun mempelajari keamanan komputer? Seperti yang disebutkan sebelumnya bahwa pada linux terdapat banyak tools untuk menguji keamanan yang dikembangkan komunitas, selain itu command command tersebut akan membantu dalam penggunaan linux bahkan dapat melakukan tugas otomatis secara berulang (melalui shell scripting)

Pada Programming sendiri membantu untuk memahami bagaimana sebuah sistem ataupun website dibangun, materi ini juga membantu memahami struktur dari sistem, dan kerentanan yang dapat terjadi bila konfigurasi sistem tidak sempurna. Misalnya saja apabila website tidak memfilter karakter khusus berupa : #, ‘, =, {}, dan karakter lain yang jarang digunakan oleh user umum maka penyerang dapatmenggunakan karakter khusus tersebut sebagai payload untuk masuk ke sistem.

Lalu bagaimana dengan materi Networking? Saya sendiri cukup banyak menuliskan materi networking karena saya merasa banyak sekali materi computer network yang penting terutama model jaringan OSI dan TCP/IP. Misalnya saja pada application layer, port atau service yang terbuka sering menjadi celah bagi para penyerang untuk masuk. Penutupan port yang tidak digunakan adalah hal yang utama yang harus dilakukan. Selain itu dengan mengetahui transport layer kita dapat mengetahui teknik penyerangan yang dapat digunakan misalnya untuk mengecek port yang terbuka akankah akan menggunakan TCP scan atau UDP scan, teknikmenyibukan lalu lintas dapat menggunakan TCP SYN flooding, serta mengetahui bagaimana ciri lalu lintas jaringan yang mencurigakan, dan lain sebagainya.

6. Pengalaman Bug Bounty & CTF

Untuk pengalaman bug bounty saat ini saya belum memilikinya. Karena sampai saat ini saya belum melaporkan apabila saya menemukan celah atau bug. Namun saya memiki pengalaman beberapa kali mengikuti perlombaan CTF. CTF sendiri merupakan kompetisi dalam bentuk team untuk menguji pengetahuan dibidang cyber security. Setiap tim akan diminta mencari string (Flag) dari challange atau soal yang diberikan.

Lomba CTF pertama saya yaitu KMIPN V 2023 yang diselenggarakan di Surabaya, Jawa Timur. KMIPN (Kompetisi Mahasiswa Informatika Politeknik Nasional) sendiri merupakan berupa ajang perlombaan bagi institusi perguruan tinggi vokasi di bidang informatika, didalamnya terdapat berbagai cabang mata lomba salah satunya keamanan siber.

Untuk percobaan lomba pertama, saya sangat bangga bisa maju sebagai finalis. Meskipun tiap challange memiliki tingkat kesulitan dari sulit hingga mudah, tetap saja ada perasaan sangat senang apabila berhasil mengirimkan flag yang benar. Pada akhir lomba karena write-up tiap tim di kumpulkan di Google Drive, saya memiliki kesempatan untuk melihat teknik dan cara yang digunakan tim lain dalam menyelesaikan challenge.

Namun pada perlombaan KMIPN ini, tim saya tidak pulang sebagai juara melainkan tim teman saya yang berhasil mendapat juara 2. Tetapi pengalaman ini menjadi motivasi bagi saya untuk terus belajar. Setelah berhasil sampai ke final pada KMIPN, saya bersama tim juga mencoba perlombaan CTF lain yaitu GEMASTIK yang diadakan oleh kemdikbud, dan juga yang diadakan oleh Cyber Jawara.

Akhir kata

Mungkin itu saja yang dapat saya bagikan pada kesemapatan ini. Target saya sendiri pada tahun ini adalah menjadi pemenang dalam KMIPN yang diselenggarakan tahun ini bulan Juli. Saya berharap bisa membalas kekalahan saya dan tim pada KMIPN 2023 dan keluar sebagai juara. Oleh karena itu saya berharap bisa menjadi salah satu orang yang diterima untuk mengikuti bootcamp yang diadakan oleh IDNetworkers ini dan mendapatkan ilmu sebanyak banyaknya.
Terima kasih sudah membaca hingga akhir!

--

--