OffSec adalah perusahaan yang membuat Kali Linux dan Exploit DB serta memberikan sertifikasi security. Berbeda dengan kebanyakan sertifikasi security lain, sertifikasi ini sifatnya praktis, dan berlaku selamanya (tidak perlu update/retake setiap beberapa tahun). Sebelum masuk ke tipsnya, saya ingin cerita tentang apa itu ujian OffSec.
Di profesi saya yang lain (sebagai programmer/developer), saya suka memberikan test atau ujian praktis pemrograman untuk membuktikan bahwa programmer memang beneran bisa memprogram. Di dunia pentest, ini agak lebih sulit, karena target pentest bisa sangat luas, seseorang yang kebetulan menemukan bug IDOR di Google atau Facebook (mungkin sudah ahli di bidang web) mungkin akan bengong ketika diminta testing Active Directory (bidang red team). Ujian Offsec ini menurut saya yang paling dekat dengan dunia nyata untuk melihat wawasan seorang pentester.
Sebagai pembanding sertifikasi security yang lain, silakan lihat link berikut ini. Informasinya lengkap, bahkan ada informasi biaya jika mouse dihover di atas masing-masing sertifikasinya. Untuk pentest dan exploitation bisa dilihat di kanan atas adalah sertifikasi dari Offsec.
Contents
Ujian OffSec
Sebelum ujian, ada materi/kelas Offsec, sifatnya belajar mandiri dengan diberi diktat dan video serta forum diskusi. Kita bisa sekedar membayar untuk mendapatkan materinya saja tanpa perlu ujian. Untuk mendapatkan sertifikasi, kita perlu mengambil ujiannya.
Ujiannya memang tidak murah, belasan hingga puluhan juta rupiah. Tapi setelah mendapatkan sertifikasi ini, Anda akan bisa “balik modal” dalam hitungan bulan.
Ujian Offsec ini cukup mendekati dunia nyata, bukan soal pilihan ganda, dan bukan sekedar mengikuti instruksi. Ada cukup banyak sertifikasi yang diberikan, yang cukup populer adalah: OSCP, OSWE dan OSEP (yang semuanya ini sudah saya ambil). Selain tiga itu, masih ada lagi beberapa sertifikasi yang lain.
Deskripsi singkat ketiga sertifikasi tersebut: Sertifikasi OSCP sifatnya entry level dan umum, OSWE sifatnya fokus whitebox testing web app, dan OSEP untuk pentest yang tingkat lanjut.
Untuk yang belajar security secara otodidak, dan tidak punya gelar yang berhubungan dengan Informatika atau Security, sertifikasi OffSec ini bisa dijadikan ajang untuk membuktikan bahwa Anda memang sudah memiliki kemampuan praktis.
Untuk OSCP dan OSEP, kita diberi akses ke lab, dan harus berhasil masuk ke mesin dan mendapatkan flag (sebagai pengganti file penting di dunia nyata). Kita tidak diberitahu kelemahannya apa, atau perintah apa yang harus dijalankan. Kita harus mencari sendiri jalan masuk berdasarkan hasil scan, mencari eksploit yang sesuai (dan mungkin sedikit memodifikasi eksploitnya), lalu menjalankan serangan.
Bedanya OSCP dan OSEP adalah tingkat kesulitannya di OSCP mesin-mesin tidak berhubungan, sedangkan di OSEP, kita melompat dari satu mesin ke mesin lain. Di OSCP kita tidak peduli ada antivirus, tapi di OSEP ada antivirus diaktifkan.
Untuk OSWE, kita diberikan source code aplikasi web dan harus menemukan dan mengeksploitasi aplikasi web tersebut. Aplikasi di OSWE merupakan aplikasi custom. Ini seperti di dunia nyata, pentester akan sering menemukan source code aplikasi internal perusahaan.
Semua ujiannya open book dan bahkan open Internet. Asalkan tidak meminta bantuan orang lain, dan tidak meminta bantuan AI. Ada beberapa tool yang dilarang sesuai level ujiannya. Ini mirip dengan: ketika kita ujian penjumlahan SD, tidak boleh memakai kalkulator, tapi ketika sudah level Universitas, boleh memakai kalkulator. Contohnya di ujian OSCP hanya boleh sekali memakai metasploit, tapi di OSEP ini boleh dipakai sebanyak mungkin. Di OSCP tidak boleh memakai sqlmap, di OSEP boleh, dsb.
Menurut saya batasannya cukup realistis. Di pentest dunia nyata juga ada banyak batasan. Biasanya kita memang boleh mengakses internet di berbagai pentest. Tapi tetap tidak boleh menceritakan pentest ke orang lain (karena ada NDA). Di sebagian tempat bahkan setelah masuk jaringan internal, tidak boleh koneksi ke luar sama sekali.
Beberapa perusahaan bahkan ada yang tidak mengijinkan penggunaan tool otomatis (seperti Nessus) untuk scanning live system mereka. Ternyata katanya pernah kejadian bahwa scanningnya ternyata destruktif ketika ketemu aplikasi internal perusahaan yang penuh bug.
Semua ujian Offsec sekarang sifatnya proctored (diawasi), dan waktunya ada yang 24 jam (misalnya OSCP), ada yang 48 jam (misalnya OSEP, OSWE). Setelah berhasil, kita perlu mendokumentasikan langkah yang kita ambil dalam bentuk laporan. Ini juga sama dengan dunia nyata: kita perlu membuat laporan hasil pentest.
Tips
Kali ini saya ingin memberi tips persiapan sebelum ujian Offsec dan ketika ujian, tapi tidak membahas soal ujian. Tips ini berdasarkan pengalaman pribadi (OSCP, OSWE dan OSEP) plus hasil dari ngobrol dengan teman-teman yang sudah maupun belum lulus. Perlu dicatat: semua tips harap dicek dulu dengan peraturan terbaru (karena peraturan sering diupdate).
Offsec tidak mengijinkan detail ujian mereka untuk dibagikan, yang membagikan bisa diban seumur hidup. Bahkan jika kita tidak memproteksi laporan kita, lalu laporannya bocor, sertifikasi kita bisa dicabut. Jadi kebanyakan review berbagai sertifikasi Offsec (OSCP, OSWE, OSEP), semuanya berupa cerita pengalaman umum saja.
Di sisi lain: membahas sesuatu yang sangat teknis, tanpa menyebutkan detail apakah terpakai atau tidak di ujian, dibolehkan. Misalnya mau membuat repository belajar OSCP dan di dalamnya ada materi SQL injection, ini dibolehkan. Topik SQL injection adalah topik security yang umum dan terpakai di manapun, tidak spesifik Offsec.
Saat ini setahu saya semua tips yang tertulis di sini legal/diperbolehkan. Contoh tips lama yang tidak boleh lagi dilakukan adalah: merekam layar ketika ujian. Dulu ada yang memberi tips untuk merekam agar nanti bisa dicapture layarnya untuk laporan, tapi ini sudah tidak diperbolehkan: Can I record my screen when taking the exam? – Offensive Security Support Portal (offensive-security.com). (lihat juga diskusi reddit ini ketika aturan tersebut ditambahkan).
Perlu dicatat, tidak semua tips ini berlaku untuk semua orang. Contohnya: yang pekerjaan sehari-harinya coding aplikasi Web, mungkin tidak perlu persiapan banyak untuk mendapatkan OSWE. Gaya belajar tiap orang juga berbeda-beda, jadi coba cari sendiri apa yang cocok buat Anda.
Waktu ujian OSCP dulu, saya tidak memakai Virtual Machine (VM) sama sekali, langsung memakai laptop yang memakai Linux. Tapi setup yang disarankan saat ini adalah: kita memakai VM Kali yang terhubung via VPN ke exam lab. Sementara itu browser di host (sistem operasi utama yang menjalankan software Virtual Machine) perlu selalu aktif untuk pengawasan/proctoring.
Sebelum Ujian
Tips ini untuk persiapan sebelum ujian.
Siapkan catatan sebelum ujian
Ada banyak pengetahuan dasar yang perlu dimiliki pentester untuk berbagai ujian Offsec. Misalnya ketika menyerang sebuah host, kita menemukan akun mysql/postgresql/mssql/mongo berikut passwordnya, maka minimal harus tahu tool apa untuk melakukan koneksi database, cara mengquery database, menginsert, delete, update.
Sebagian orang yang kerjanya sebagai developer mungkin hapal berbagai perintah dan syntax SQL, tapi tidak semua orang akan ingat. Jadi sebaiknya buat catatan pribadi, saya sendiri membuat catatan dengan Obsidian.
Perlu diingat bahwa ujian Offsec adalah open book/open web, jadi boleh membuat dan membaca catatan pribadi. Cara terbaik menurut saya adalah: minimal mencoba sekali berbagai perintah ini (misalnya koneksi ke mysql), dan tidak perlu dihapal, hanya perlu dicatat berikut contoh commandnya. Ketika ujian, sudah siap dengan perintah apa yang harus dipakai.
Sebenarnya kadang mudah sekali menggunakan Google ketika ujian, tapi jika semuanya sudah tersedia di catatan lokal maka akan lebih cepat. Catatan lokal juga mengurangi risiko bahwa situs yang kita tuju sedang down ketika ujian.
Sangat penting untuk mencoba perintah, dan bukan sekedar membaca saja. Ketika mencoba perintah (misalnya mysql), kita juga pasti perlu menginstall programnya (misalnya mysql client), jadi ketika ujian tidak perlu lagi menginstall tools ekstra. Instalasi tool ketika ujian akan membuang waktu, apalagi jika ternyata ada dependensi ratusan megabyte yang harus didownload juga.
Siapkan Tool dan Script
Di github ada banyak tool yang mempermudah proses recon dan eksploitasi, tapi pastikan bahwa toolnya diijinkan. Akan lebih baik lagi jika sudah membuat tool/skrip sendiri yang dipakai ketika latihan, jadi bisa langsung pakai, dan karena buatan sendiri maka hampir pasti diijinkan (tapi jika toolnya sangat otomatis, tetap bisa dilarang, harus konfirmasi dengan proktor).
Belajar Docker
Belajar memakai docker/docker-compose menurut saya adalah keahlian pentester yang sangat berguna. Biasanya untuk instalasi software kompleks diperlukan banyak langkah, tapi dengan docker (dan docker-compose), kita (biasanya) cukup menjalankan satu perintah saja untuk menginstall sesuatu. Jadi misalnya ingin belajar mysql, hanya perlu menjalankan perintah docker untuk mendownload menjalankan database servernya.
Biasakan memakai shell dan tool standard
Memakai Zsh (dan beberapa shell alternatif lain) memang sangat nyaman, tapi biasakan memakai shell standard (bash, atau bahkan dash) karena secara default sekarang kebanyakan distribusi Linux masih memakai bash. Ketika mendapatkan shell di mesin remote tidak akan bingung jika fitur tertentu yang ada di Zsh (misalnya autocomplete) tidak jalan.
Di Windows, biasakan memakai PowerShell karena sekarang semua mesin Windows sudah memakai PowerShell. PowerShell sudah masuk default Windows sejak Windows 7 (tahun 2009, yaitu 14 tahun yang lalu). Perhatikan bahwa ada beberapa versi PowerShell, dan ada hal yang hanya jalan di PowerShell baru.
Membuat Lab latihan sendiri
Bagian ini tidak wajib, tapi berguna untuk beberapa course (misalnya OSEP). Tarif memperpanjang Lab saat ini ratusan USD per bulan, sedangkan jika kita membeli Mini PC second hand untuk dijadikan lab harganya tidak sampai 200 USD, dan masih bisa dijual lagi.
Lab bisa dibuat dengan ESXi, ProxMox, atau bahkan software virtual machine biasa seperti VMWare/VirtualBox. Di Github juga sudah ada beberapa skrip yang bisa otomatis mensetup lab.
Untuk course OSCP, lab-nya sangat bagus, dan bervariasi sehingga sulit membuat lab sendiri. Untuk ini sebaiknya langganan Hack The Box atau layanan sejenis.
Belajar dari orang lain
Jika punya mentor, sebaiknya berdiskusi dengan mentor. Jika tidak minimal bergabunglah dengan forum Offsec dan berbagai forum lain. Ini akan sangat membantu kalau kita stuck.
“Bersihkan” komputer
Tips ini khusus untuk persiapan beberapa hari sebelum ujian. Perhatikan program apa yang tidak boleh dipakai, lalu uninstall program tersebut. Perhatikan juga aturan terbaru.
Contoh aturan terbaru (baru beberapa bulan yang lalu): ChatGPT tidak boleh dipakai. Saya memakai extension ChatGPT di Chrome, dan ada kemungkinan saya tidak sengaja memakai extension tersebut, jadi untuk amannya, saya menguninstall extension tersebut sebelum ujian. Perlu dicatat juga bahwa browser Edge juga bisa secara otomatis membuka Bing Chat, yang memakai engine ChatGPT, jadi juga dilarang.
Jika Anda pentester, mungkin sudah menginstall Burp Pro, dan ini juga tidak diijinkan. Daripada salah launch program (karena refleks pekerjaan pentest sehari-hari), sebaiknya didisable/uninstall dulu. Intinya: apapun yang dilarang, sebaiknya dihapus atau disembunyikan di folder lain untuk mencegah salah memakai file atau tool.
Saya kurang tahu peraturan tentang smartwatch di OffSec, apakah ini dimasukkan kategori elektronik yang dilarang (beberapa sertifikasi lain ada yang eksplisit melarang ini), tapi sebaiknya dilepas juga daripada dipermasalahkan. Berbagai smartwatch ini punya aplikasi notifikasi, chat/messaging, bahkan ada aplikasi ChatGPT.
Matikan segala macam program chat, jangan cuma dihide di taskbar, tapi exit dari program karena jika sekedar dihide, masih bisa muncul notifikasi. Selain menguninstall, cara lain adalah dengan membuat akun khusus yang masih bersih, belum terinstall apapun.
Testing Versi Kali Linux
Sebaiknya jangan mengupdate versi Kali Linux tepat sebelum ujian. Sesekali update dari Kali Linux ini membuat error baru. Sebaiknya gunakan versi kali yang sama ketika mengakses lab ketika berlatih, jadi bisa yakin 100% bahwa berbagai program yang dipakai berjalan lancar.
Kadang upgrade Kali Linux ini gagal dan muncul error. Kasus error ini biasanya tidak sulit diperbaiki. Menurut saya yang lebih mengkhawatirkan adalah: ketika upgrade Kali, banyak tool otomatis diupgrade. Upgrade sebuah tool kadang lebih baik, kadang fungsionalitasnya berubah (kadang sekedar opsi/command line yang berubah), ada yang ditambah atau dikurangi, dan kadang ada error spesifik tool baru.
Ketika Ujian
Berikut ini tips yang bisa dipakai ketika ujian.
Terminal
Memakai terminal di dalam Virtual Machine (VM) Kali Linux menurut saya kurang nyaman. Menjalankan aplikasi grafik (Broser, Terminal dsb) dalam Kali terasa lag. Padahal spesifikasi komputer saya sudah cukup OK: Intel i9 Gen 11 (4 Core saya assign ke Kali), RAM 64 GB (saya assign 16 GB Untuk Kali Linux), dan kartu grafik yang cukup modern RTX 3060 RAM 12 GB.
Supaya terasa lebih nyaman, saya menjalankan aplikasi Terminal di Windows, lalu melakukan ssh ke dalam VM Kali Linux. Dengan ini saya bisa browsing dengan browser di Windows (lebih nyaman dan cepat karena bisa mengakses GPU), copy paste hasil search ke Terminal bisa lebih cepat.
Ketika melakukan serangan ke sebuah host, biasanya kita akan membuka banyak window terminal, misalnya satu window msfconsole
untuk menerima shell dan window lain untuk menjalankan exploit. Supaya mudah mengatur berbagai window ini, saya memakai Tmux. Program ini sangat fleksibel, kita bisa mengcustomize segalanya, misalnya bisa melabeli window/pane (misalnya dengan komentar “msf host1”) jadi tidak lupa/salah ketika menjalankan perintah.
Dengan Tmux, jika ssh ke Kali VM error/putus (atau window terminal tidak sengaja ter-close), kita bisa meneruskan lagi sesinya. Kita juga bisa meneruskan sesinya langsung dalam terminal di Kali. Tmux juga mendukung logging, jadi kita bisa menyimpan sesi tmux ke file.
Apapun shell yang dipakai (zsh, bash, atau yang lain): aktifkan fitur history shell sehingga mudah mengulangi command. Selain itu ini juga akan sangat berguna ketika membuat laporan, bisa dicek lagi perintah apa yang dijalankan.
Logging msfconsole
Untuk me-log input/output msfconsole, kita bisa menambahkan setting di .msf4/msfconsole.rc
:
spool /home/kali/kali-root.log
set ConsoleLogging true
set SessionLogging true
setg lhost tun0
Setahu saya diperbolehkan membuat logging ini, setidaknya ketika saya ujian ini diperbolehkan (dan saya cantumkan di report), tapi silakan cek lagi untuk memastikan.
Dengan log ini, saya bisa dengan mudah mereview lagi hal-hal yang sudah dilaukkan. Ini juga sangat berguna untuk membuat screen capture untuk laporan.
Buat draft laporan selagi ujian
Walaupun sudah menyiapkan logging, tapi tetap tuliskan langkah-langkahnya, plus screenshotnya. Dengan membuat draft, kita akan ingat jika ada screenshot yang terlewat. Meskipun sudah memiliki log metasploit, dan shell history, memiliki screenshot akan lebih baik, sebagai tambahan backup jika tidak sengaja menghapus log metasploit/terminal.
Reverse Shell dengan SSH
Setelah belajar memakai chisel dan autoroute di metasploit, menurut saya cara pivoting termudah ke subnet lain adalah menggunakan ssh. SSH bisa menjadi SOCKS proxy dengan opsi -D (untuk local proxy) dan -R (untuk reverse socks proxy).
SSH juga bisa melakukan port forwarding. Misalnya kita ingin melakukan remote desktop ke sebuah host, biasanya kita melakukannya dari Kali. Dengan SSH forwarding, kita bisa melakukan Rdesktop ini dari Windows, menggunakan program bawaan Windows.
Untuk remote desktop contohnya begini:
- IP Kali Linux adalah 192.168.1.100
- Kali Linux terhubung ke VPN, dan mendapatkan IP 172.17.1.100
- Kita ingin melakukan remote desktop ke 172.17.1.200
Dari host utama yang menjalankan VM (misalnya Windows/macOS) , kita bisa melakukan:
ssh -L 10000:172.17.1.200:3389 [email protected]
Sekarang kita bisa melakukan remote desktop dari Windows kita ke localhost:10000
Memakai Static Binary
Ketika kita berhasil masuk ke sebuah host, dan host itu memiliki akses ke subnet lain, maka kita ingin melakukan scanning subnet yang baru. Biasanya ti sebuah host tidak akan diinstall nmap dan aneka tools lain.
Salah satu trik adalah memakai SOCKS proxy (baik dengan Chisel atau SSH) dan menjalankan berbagai perintah (misalnya nmap) via proxysocks. Tapi ini sangat lambat.
Cara termudah dan tercepat untuk melakuan scanning adalah dengan mengirimkan static nmap binary, jadi tidak perlu instalasi, cukup copy saja. Ini juga berlaku untuk tool-tool lain, misalnya ada versi statik gobuster yang bisa dipakai untuk scanning.
Penutup
Walau dengan persiapan sebaik apapun, pentester yang baik juga tetap ada kemungkinan tidak lolos (ada rekan-rekan senior yang butuh 2-3 kali baru lolos ujian tertentu).
Perlu diperhatikan juga, ternyata kadang ada masalah di mesin ujian, jadi ketika ada masalah dan yakin bahwa mesinnya yang error, kita boleh bertanya pada support.
Kalau memang sangat ingin mendapatkan sertifikasinya, ya harus coba lagi. Sertifikasi Offsec ini berlaku seumur hidup, sedangkan banyak sertifikasi lain harus tiap beberapa tahun perlu diupdate (dan perlu bayar lagi). Jadi jika gagal, dan mengambil lagi, anggap saja ini biaya update sertifikat.
Untuk mengukuran mengasah skill menurut saya sertifikasi OffSec sangat bagus. Tapi perlu diingat juga, sertifikasi ini mungkin bukan yang terbaik untuk semua kasus. Contohnya: jika memang sering mengambil proyek dari Inggris dan negara persemakmurannya, sertifikasi spesifik seperti CREST mungkin akan lebih baik (jika perusahaannya meminta sertifikasi tertentu).
Terima kasih untuk artikelnya… Kalo boleh saya ingin donasi, apakah ada Paypal atau dari crypto