Di episode #23 kita sempat iseng-iseng melihat trafik sendiri lewat Burp Suite. Kali ini saya ingin masuk ke sisi lain: bagaimana serangan terhadap password yang bocor itu bekerja di dunia nyata, dan kenapa MFA yang sering kita abaikan justru penyelamat utama. Catatan ini saya tulis setelah mencoba hashcat dan John the Ripper di mesin virtual sendiri — bukan untuk memecahkan hash orang lain, tapi untuk memahami seberapa cepat password lemah kita bisa ditebak kembali.

Password Bocor Bukan Berarti Langsung Terbaca
Begini analogi untuk programmer: password yang tersimpan di database modern itu seperti sidik jari digital — bukan teks aslinya, tapi hasil hash-nya. Database bocor tidak serta-merta berisi “rahasia123” dalam bentuk jelas; yang bocor adalah string hash seperti $2y$10$.... Masalahnya, hash dirancang satu arah: mudah dihitung ke depan, mustahil (secara praktis) dibalik. Jadi pelaku tidak “membuka” hash — mereka menebak password kandidat, meng-hash-nya, dan membandingkan hasilnya. Kalau cocok, tebakan itu benar.
Ini yang membuat dua hal menentukan: seberapa cepat satu hash bisa ditebak, dan seberapa banyak kandidat yang perlu dicoba. Di sinilah password cracking masuk — dan di sinilah juga kita melihat kenapa keputusan desain password di episode #3 (bcrypt/Argon2, bukan MD5) sangat berpengaruh nyata.
Hashcat vs John the Ripper
Dua tool paling terkenal, keduanya gratis dan legal dipakai di hash milik sendiri:
- Hashcat — fokus ke kecepatan, memanfaatkan GPU. Diklaim sebagai “advanced password recovery utility” resminya, dan mendukung ratusan jenis hash (bcrypt, MD5, SHA, NTLM, dll).
- John the Ripper (JtR) — lebih ramah pemula, bagus untuk hash format aneh hasil ekstraksi dari berbagai sumber, punya mode “jumbo” yang mendukung banyak format.
Saya sendiri mulai dari John karena instalasi dan pemakaiannya lebih sederhana. Perintah dasarnya kira-kira begini — ini contoh untuk hash milik sendiri di lab:
# hash.txt berisi SATU baris hash milik sendiri dari lab john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt john --show hash.txt
Catatan penting soal legalitas: kedua tool ini hanyalah mesin perbandingan hash. Yang menentukan apakah penggunaannya sah atau tidak adalah hash siapa yang Anda masukkan. Menguji hash password Anda sendiri di lab = sah. Menguji hash hasil curian dari orang lain = pelanggaran, dan di Indonesia tindakannya bisa masuk ranah UU ITE. Di episode #22 kita sudah bahas prinsip izin tertulis untuk penetration testing — prinsip yang sama berlaku di sini.
Dictionary vs Brute Force vs Rule-Based
Tiga strategi utama, dengan karakter berbeda:
| Strategi | Cara kerja | Cocok untuk | Kelemahan |
|---|---|---|---|
| Dictionary | Coba daftar kata umum (rockyou.txt: sekitar 14 juta password dari breach besar) | Password lemah, kata biasa | Password acak tak tertebak |
| Brute force | Coba semua kombinasi karakter sistematis | Password sangat pendek | Ruang pencarian meledak eksponensial |
| Rule-based | Daftar kata + transformasi (ganti a→@, tambah tahun, kapitalisasi) | Kebiasaan manusia yang dapat diprediksi | Butuh aturan yang tepat |
Yang menarik: password “P@ssw0rd2026!” tampak kuat di mata manusia, tapi untuk attacker yang menjalankan aturan transformasi (dictionary + rules), itu hanyalah kata “password” dengan substitusi standar dan tahun — urutan pencarian yang sangat awal. Pelajaran yang saya catat: kekuatan password bukan dari tampilan eksotisnya, tapi dari apakah ia masuk pola yang bisa diprediksi manusia.
Kenapa bcrypt/Argon2 Memperlambat Semuanya
Di episode #3 kita sudah memilih bcrypt/Argon2 untuk penyimpanan. Efek praktisnya di cracking: dua password yang sama-sama jelek, hash-nya dipecahkan dalam waktu yang sangat berbeda.
MD5 murni bisa dihitung miliaran kali per detik di GPU modern — password 8 karakter berpola bisa habis dalam hitungan menit. bcrypt dirancang lambat secara sengaja: satu hash memakan waktu puluhan milidetik. Perkalian kecil di level hash berubah jadi perbedaan raksasa di level serangan massal. Ini sebabnya saya menulis di catatan #3 bahwa “hash murah adalah hash yang salah” — bukan karena MD5 jelek secara matematis, tapi karena ia terlalu cepat untuk jadi pagar.
MFA: Penyelamat Saat Password Tetap Jatuh
Ini bagian yang paling membuat saya tenang setelah mencoba semuanya di lab. Bahkan dengan password 20 karakter dan hash bcrypt sempurna, skenario ini tetap mungkin: password Anda bocor lewat breach di layanan lain, dan Anda termasuk yang memakai ulang password. Tidak ada teknik hashing yang menyelamatkan resep seperti ini.
MFA mengubah permainan: attacker sudah punya password, tapi tidak punya faktor kedua. Passkey (dibahas di #3) bahkan lebih jauh — tidak ada password sama sekali yang bisa dicuri dari sisi server. Inilah prioritas saya sebagai developer untuk pengguna: paksa MFA di akun admin, dukung passkey kalau memungkinkan, dan blokir pemakaian password yang sudah bocor — API “Have I Been Pwned” misalnya punya mode kHash yang tidak membocorkan password Anda ke pihak ketiga.
Yang Saya Terapkan Setelah Catatan Ini
- Uji password lama saya sendiri di lab — kalau pecah dalam menit, ganti.
- Semua akun admin wajib MFA; password manager (dibahas di #3) jadi fondasi untuk generate password acak panjang.
- Di aplikasi yang saya bangun: selalu bcrypt/Argon2 dengan cost memadai, jangan pernah MD5/SHA1 untuk password, dan sediakan rate limit + backoff untuk login.
- Pertanyaan evaluasi: kalau hash password admin bocor besok, seberapa lama MFA sebagai pertahanan terakhir bertahan?
Catatan penutup: cracking adalah alat untuk memahami pertahanan. Semakin cepat kita memecahkan password lemah sendiri, semakin jelas prioritas perbaikan — di situlah letak nilai latihan ini, bukan pada kemampuan membuka akses orang lain.
Sumber
- Hashcat — Wiki resmi: https://hashcat.net/wiki/
- John the Ripper — https://www.openwall.com/john/
- OWASP Authentication Cheat Sheet — https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html
- NIST SP 800-63B (Digital Identity Guidelines — Authentication): https://pages.nist.gov/800-63-3/sp800-63b.html
- Have I Been Pwned — Passwords API (mode kHash): https://haveibeenpwned.com/API/v3#PwnedPasswords
- Episode terkait seri ini: #3 (Password & Authentication), #22 (Ethical Hacking & Legalitas), #23 (Web Proxy & Burp Suite)
Komentar Terbaru