Keamanan siber dari berbagai sisi dalam satu tempat: serang target latihan sebagai red team, selidiki insiden sebagai blue team, dan kumpulkan petunjuk dari sumber terbuka lewat OSINT. Setiap tantangan punya petunjuk bertahap beserta tools yang bisa dipakai.
0/6 selesai · 0 poin
Red Team
Berpikir seperti penyerang: rekon, cari celah, eksploitasi.
red-01Mudah100 poin
Staging yang Lupa Dibersihkan
Skenario
Anda disewa untuk uji penetrasi PT NusaLogistik (fiktif). Satu-satunya titik masuk dalam cakupan adalah portal karyawan versi staging. Form login-nya dimatikan, tapi developer terkenal suka meninggalkan jejak.
Misi
Lakukan rekon pada portal, temukan berkas konfigurasi yang bocor, lalu ambil flag yang tersembunyi di dalam token layanan.
Halaman yang terlihat kosong sering menyimpan catatan di kode sumbernya. Baca HTML-nya, bukan tampilannya.
Tools
View Source (Ctrl+U) — membaca HTML mentah, termasuk komentar <!-- -->
DevTools → Elements — memeriksa elemen dan komentar di DOM
curl — curl -s <url> | less untuk melihat respons apa adanya
Petunjuk 2 — Yang dilarang justru menarik
robots.txt hanya permintaan sopan untuk crawler, bukan kontrol akses. Path yang di-Disallow sering menunjuk ke berkas sensitif.
Tools
curl — ambil robots.txt di folder yang sama dengan portal
gobuster / ffuf / dirsearch — enumerasi direktori & berkas (.bak, .old, ~) dengan wordlist bila tidak ada petunjuk
Burp Suite — memetakan semua request & respons situs target
Petunjuk 3 — Bongkar tokennya
Token tiga bagian dipisah titik itu JWT: header.payload.signature, masing-masing Base64URL. Isi payload tidak terenkripsi. Ada satu field yang nilainya bukan teks biasa.
Tools
CyberChef — resep JWT Decode, lalu From Hex untuk field yang aneh
jwt.io — melihat header & payload JWT (jangan tempel token produksi asli ke situs pihak ketiga)
Berpikir seperti pembela: deteksi, analisis, respons.
blue-01Mudah100 poin
Malam yang Terlalu Sibuk
Skenario
Tim SOC menerima alarm dari server portal PT NusaLogistik (fiktif) pada 12 Oktober 2026 dini hari. Ada lonjakan request dan file aneh di folder unggahan. Anda mendapat salinan access log web server-nya.
Misi
Rekonstruksi serangannya: siapa penyerang yang berhasil masuk, webshell apa yang ia unggah, dan ke server mana data dikirim keluar.
Hitung request per IP dan per status code. Banyak 401 beruntun ke /login lalu satu 302 adalah pola brute force yang berhasil. Hati-hati: tidak semua IP berisik itu berhasil masuk.
GoAccess — dasbor ringkas dari access log (goaccess access.log --log-format=COMBINED)
Petunjuk 2 — Ikuti jejaknya setelah login
Filter semua request dari IP penyerang dan baca berurutan. Fitur unggah avatar yang menerima berkas .php adalah tanda bahaya.
Tools
grep — grep '^<ip> ' access.log untuk timeline satu penyerang
Splunk / Elastic (Kibana) — query per IP lalu urutkan berdasarkan waktu
User-Agent — perhatikan kolom terakhir: perubahan UA menandai perubahan alat
Petunjuk 3 — Perintah yang disamarkan
Parameter ?c= pada webshell berisi perintah yang di-URL-encode lalu di-Base64. Dekode satu per satu; salah satunya mengirim arsip ke server luar.
Tools
CyberChef — resep URL Decode → From Base64
base64 -d — grep -o 'c=[^ ]*' access.log | cut -d= -f2 | sed 's/%3D/=/g' | while read x; do echo "$x" | base64 -d; echo; done
Python — urllib.parse.unquote + base64.b64decode untuk otomatisasi
blue-02Sedang150 poin
Bisikan Lewat DNS
Skenario
Dua hari setelah insiden portal, IDS menandai workstation 10.10.5.23 milik staf keuangan PT NusaLogistik (fiktif) karena menghubungi IP yang sama dengan server eksfiltrasi sebelumnya. Tim jaringan sempat merekam lalu lintasnya selama satu menit.
Misi
Buka capture-nya di Wireshark, cari tahu perintah apa yang diterima malware dari server C2, lalu rekonstruksi data yang dicuri. Data itulah flag-nya.
Jangan langsung membaca paket satu per satu. Cari tahu protokol apa saja yang ada dan dengan siapa workstation ini berbicara. Satu IP tidak termasuk jaringan internal 10.x.
Wireshark → Statistics → Conversations — tab IPv4 menunjukkan pasangan IP yang berkomunikasi
tshark — tshark -r capture.pcap -q -z conv,ip
Petunjuk 2 — Dengarkan percakapan dengan C2
Malware mengambil tugas lewat HTTP biasa. Rangkai paket TCP-nya menjadi satu percakapan utuh dan baca balasan servernya. Awas jebakan: string FLAG{...} yang ketemu lewat strings/grep belum tentu flag yang benar.
Tools
Display filter — http.request atau ip.addr == <ip-luar>
Follow → TCP Stream / HTTP Stream — klik kanan paket HTTP, lalu Follow untuk membaca request & response
File → Export Objects → HTTP — menyimpan semua berkas yang lewat HTTP
NetworkMiner — alternatif untuk mengekstrak berkas & host dari pcap
Petunjuk 3 — Data menyamar jadi nama domain
Tugas dari C2 menyebut zona DNS dan format label <seq>-<hex>, dikirim acak. Ambil semua query ke zona itu, urutkan berdasarkan nomor seq, gabungkan bagian hex-nya, lalu dekode.
CyberChef — resep From Hex untuk gabungan potongan hex
OSINT
Berpikir seperti penyelidik: kumpulkan, hubungkan, dan verifikasi informasi dari sumber terbuka tanpa menyentuh target.
osint-01Mudah100 poin
Liburan di Bandung, Katanya
Skenario
Seorang karyawan PT NusaLogistik (fiktif) mengunggah foto "liburan akhir pekan di Bandung" di hari yang sama ketika ia mengaku cuti sakit. Tim HR meminta bantuan verifikasi, dan Anda hanya diberi berkas foto aslinya.
Misi
Tentukan kapan foto itu benar-benar dipotret dan di mana lokasinya. Jangan percaya keterangan fotonya; percayai datanya.
FLAG{YYYYMMDD_lintang_bujur} (koordinat desimal, 3 angka di belakang koma)
Petunjuk Buka satu per satu hanya bila buntu.
Petunjuk 1 — Foto menyimpan lebih dari gambar
Foto dari ponsel biasanya membawa metadata EXIF: merek kamera, aplikasi edit, waktu, bahkan GPS. Unduh berkas aslinya, jangan tangkapan layar.
Tools
exiftool — exiftool -a -G1 liburan.jpg untuk melihat semua tag beserta grupnya
Jeffrey's Image Metadata Viewer / exif.tools — alternatif web (hanya untuk foto latihan, bukan foto pribadi)
File → Properties (Windows) / Get Info (macOS) — cara cepat melihat sebagian metadata
Petunjuk 2 — Tidak semua tanggal sama
Ada beberapa tag waktu. ModifyDate berubah saat foto diedit, sedangkan DateTimeOriginal mencatat saat rana ditekan. Keterangan (ImageDescription) bisa diketik siapa saja.
Tools
exiftool — exiftool -time:all -G1 liburan.jpg
CyberChef — resep Extract EXIF langsung di browser
Petunjuk 3 — Dari derajat ke peta
GPS di EXIF ditulis dalam derajat, menit, detik (DMS) plus arah. Desimal = derajat + menit/60 + detik/3600, lalu beri tanda minus untuk Selatan atau Barat. Tempel hasilnya ke peta untuk memastikan.
Tools
exiftool -n — exiftool -n -GPSPosition liburan.jpg langsung memberi angka desimal
Google Maps / OpenStreetMap — tempel "lintang, bujur" di kotak pencarian
Google Earth / Street View — bandingkan bentuk bangunan di foto dengan lokasi
osint-02Sedang150 poin
Server yang Tidak Ada di Daftar
Skenario
PT NusaLogistik (fiktif) meminta penilaian permukaan serang secara pasif. Menurut tim IT, semua layanan mereka ada di satu blok IP resmi. Anda sudah mengekspor riwayat sertifikat dari log Certificate Transparency dan data passive DNS untuk domain mereka.
Misi
Baca dokumen cakupan, lalu temukan satu subdomain yang masih aktif tetapi di-hosting di luar blok IP resmi (shadow IT).
FLAG{labelsubdomain_ip} (label paling kiri saja, mis. FLAG{www_192.0.2.10})
Petunjuk Buka satu per satu hanya bila buntu.
Petunjuk 1 — Daftar semua nama dulu
Log Certificate Transparency mencatat setiap sertifikat TLS yang pernah diterbitkan, jadi nama host yang tidak pernah dipublikasikan pun ikut tercatat. Ambil semua name_value unik. Sertifikat wildcard tidak menyebut nama host, jadi abaikan.
Tools
jq — jq -r '.[].name_value' crtsh.json | sort -u
crt.sh — di dunia nyata: https://crt.sh/?q=%25.domain.com&output=json
subfinder / amass (mode pasif) — mengumpulkan subdomain dari banyak sumber terbuka sekaligus
Petunjuk 2 — Ke mana nama itu menunjuk?
Passive DNS menyimpan riwayat jawaban DNS beserta kapan pertama dan terakhir terlihat. Saring rekaman A yang IP-nya bukan 192.0.2.x.
SecurityTrails / VirusTotal — sumber passive DNS di dunia nyata
Petunjuk 3 — Aktif atau sudah mati?
Ada lebih dari satu host di luar blok resmi, tapi beberapa sudah lama tidak terlihat. Bandingkan kolom last_seen dengan tanggal di dokumen cakupan; yang masih terlihat minggu ini adalah jawabannya.
Tools
sort — sort -t, -k5 passive-dns.csv untuk mengurutkan menurut last_seen
jq — jq '.[] | select(.name_value|test("<label>")) | {not_before, not_after}' crtsh.json untuk melihat sertifikat terbarunya
osint-03Sedang150 poin
Internet Tidak Pernah Lupa
Skenario
Sebagai bagian dari program security awareness yang disetujui PT NusaLogistik (fiktif) dan karyawannya, Anda diminta menilai jejak digital sysadmin mereka, Raka Pratama. Informasi seperti handle lama dan email pribadi sering dipakai penyerang untuk phishing yang sangat tertarget.
Misi
Mulai dari profil media sosialnya sekarang, temukan handle lama Raka lalu email pribadi yang pernah ia publikasikan.
Profil media sosial sering memuat tautan terverifikasi ke situs pemiliknya. Tautan itu tidak selalu terlihat di halaman, tapi ada di kode sumber.
Tools
View Source (Ctrl+U) — cari tag <link> dan <meta> di <head>
rel="me" — atribut yang dipakai Mastodon dkk. untuk memverifikasi kepemilikan situs
curl + grep — curl -s <url> | grep -i 'rel="me"'
Petunjuk 2 — Domain mati bukan berarti hilang
Situs yang sudah dimatikan sering masih punya salinan di arsip web. Cari domain lama Raka di indeks arsip.
Tools
Wayback Machine — di dunia nyata: web.archive.org/web/*/domain.com/*
archive.today — arsip alternatif, kadang menyimpan halaman yang tidak ada di Wayback
Sherlock / WhatsMyName — di dunia nyata: cek handle yang sama di ratusan situs
Petunjuk 3 — Yang dihapus pernah ada
Tangkapan terbaru menyebut email sudah dihapus. Buka tangkapan yang lebih lama satu per satu.
Tools
Perbandingan tangkapan — fitur Changes di Wayback Machine untuk membandingkan dua tanggal
grep — grep -rEo '[[:alnum:]._-]+@[[:alnum:].-]+' pada salinan halaman yang diunduh
Aturan main
Semua target ada di folder /ctf/ situs ini dan bersifat statis. Jangan menyerang bagian lain situs, server hosting, atau pihak mana pun.
Perusahaan, orang, akun, domain (.invalid), dan IP dalam skenario fiktif (IP dari blok dokumentasi RFC 5737).
Flag diperiksa di browser Anda dengan membandingkan hash SHA-256; tidak ada yang dikirim ke server. Progres disimpan di browser ini saja.
Teknik di sini hanya untuk latihan dan sistem yang Anda miliki izin tertulisnya. Teknik OSINT pada orang sungguhan butuh izin dan dasar yang sah; jangan dipakai untuk menguntit atau doxing.