IDN Bootcamp Bug Bounty : Langkah awal Menjadi Bug Hunter

1 week ago 15
BOOK THIS SPACE FOR AD
ARTICLE AD
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.

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, linux digunakan karena banyak orang dikomunitas yang menggunakan untuk tujuan serupa dan linux sendiri terdapat distro dikembangkan khusus untuk kebutuhan pentesting sehingga lebih 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, tailPengelolaan Proses : ps, kill, htop, jobsPengaturan Izin : ls -al, chmod, chown , umaskPengelolaan User : passwd, useradd, userdel, usermodPengelolaan Service : systemctl start stop restart enable disableInformasi Sistem : whoami, uname, neofetchBasic Operator : | (pipeline), >> << < (redirect), && (and), || (or)
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. Source code akan diterjemahkan oleh interpreter agar perintah dapat dipahami dan dimengerti oleh komputer.

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.

Pemahaman mengenai programming ini membantu untuk mengidentifikasi dan memahami struktur website. programming language saat ini telah saya pelajari adalah SQL Basic, python, dan html basic. Sedangkan yang masih dalam proses belajar adalah javascript.

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 yang 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 kesederhanaanInternet/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.

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.

Lalu bagaimana dengan materi Networking? Saya sendiri cukup banyak menuliskan materi networking karena saya merasa banyak sekali materi computer network yang penting. 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, untuk menyibukan lalu lintas dapat menggunakan TCP SYN flooding, bagaimana ciri lalu lintas jaringan yang mencurigakan, dan lain sebagainya.

Untuk pengalaman bug bounty saat ini saya belum memilikinya. Namun saya memiki pengalaman mengikuti perlombaan CTF pada KMIPN V 2023 yang diselenggarakan di Surabaya, Jawa Timur. 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. KMIPN sendiri merupakan pengalaman pertama saya mengikuti ajang perlombaan CTF. Meskipun hanya sampai ke babak final, pengalaman mengikuti perlombaan CTF ini memberikan motivasi bagi saya untuk terus mendalami cyber security.

Mungkin itu saja yang dapat saya bagikan pada kesemapatan ini. Saya berharap bisa menjadi salah satu orang yang diterima untuk mengikuti bootcamp yang diadakan oleh IDNetworkers ini. Terima kasih sudah membaca hingga akhir!

Read Entire Article