Berpikirlah seperti seorang hacker dan tanyakan pada diri sendiri seberapa cepat kata sandi dapat dipecahkan, tergantung pada strukturnya. Ketika seorang hacker atau penguji penetrasi merusak sistem dan ingin mengakses kata sandi plaintext dari dump database, mereka harus terlebih dahulu memecahkan hash kata sandi yang disimpan. Banyak penyerang terjun ke dalam konsep ini: mereka mencoba serangan kriptografi sewenang-wenang apa pun yang mereka inginkan, dengan sedikit alasan. Diskusi ini akan menunjukkan beberapa metode pemecahan kata sandi yang efektif dan bagaimana analisis statistik kata sandi dapat digunakan bersama dengan alat untuk menciptakan metode terbatas waktu untuk memecahkan kata sandi yang efisien dan berhasil. Mengapa ini penting?
Pemecahan kata sandi adalah usaha yang sekarat. Pengguna perlu membuat kata sandi yang lebih kompleks, dan beberapa pengembang backend mulai menggunakan mekanisme seperti Bcrypt untuk menggantikan fungsi hash standar. Nilai hash Bcrypt membutuhkan waktu lebih lama untuk dihasilkan, dan karena itu, kata sandi menjadi lebih sulit untuk dipecahkan. Cracker perlu menghasilkan hash dengan sangat cepat untuk memecahkan kata sandi secara efisien, jadi Bcrypt adalah alat yang sangat kuat untuk melawan serangan semacam itu. Untuk mengilustrasikan contoh ini, program pemecah kata sandi yang dibuat oleh 25 cluster GPU yang diluncurkan pada tahun 2012 mampu mencapai kecepatan pembuatan hash NTLM 350 miliar hash per detik, dibandingkan dengan kecepatan pembuatan hash Bcrypt 71.000. Dengan menggunakan ini sebagai model perbandingan, untuk setiap hash Bcrypt yang dihasilkan, 5 juta hash NTLM dapat dihasilkan. Ketika dihadapkan dengan algoritma Bcrpyted, peretas harus melakukan lebih banyak tebakan perhitungan pada kata sandi dan tidak dapat mengandalkan penggunaan kekuatan kasar untuk setiap kemungkinan.
Catatan: Jika penyerang mengetahui bahwa panjang kata sandi sangat pendek sehingga tidak memakan waktu lama untuk memecahkan ruang kunci dengan kekuatan brute, maka langkah serangan tambahan tidak diperlukan.
Efisiensi waktu menjadi faktor kunci dalam keberhasilan memecahkan kode. Meskipun akan baik untuk menutupi seluruh ruang kritis kata sandi pengguna, waktu yang dibutuhkan untuk melakukannya biasanya tidak layak. Oleh karena itu, ketika memecahkan, penting untuk mencoba serangan yang paling hemat waktu terlebih dahulu dan, jika tidak berhasil, melanjutkan dengan serangan kriptografi yang lebih lambat yang mencakup lebih banyak ruang kunci. Cara tercepat adalah serangan kamus sederhana berdasarkan kata sandi pengguna yang umum digunakan dan dump kata sandi sebelumnya. Mulai dari sana, Anda harus mencoba untuk memanipulasi kamus untuk menambahkan angka atau simbol di akhir atau mengubah huruf. Ini disebut serangan hybrid atau serangan berbasis aturan. Selanjutnya, Anda dapat mencoba menggunakan kemampuan pembelajaran mesin untuk menghasilkan kemungkinan kata sandi. Rantai Markov adalah contoh yang baik. Dengan menggabungkan unsur-unsur umum yang ada dalam bahasa Inggris untuk membentuk kata-kata (misalnya, "ing", "er", "qu"), tebakan yang baik tentang kata sandi dapat dihasilkan, seperti kata sandi di bawah ini. Meskipun sangat mudah untuk memecahkan kata sandi khusus ini dengan metode apa pun, untuk menyederhanakan semua vektor serangan, kami akan menggunakan kata sandi ini. Password1234Password1234
Akhirnya, serangan brute force yang ditargetkan (disebut serangan topeng) menutupi semua ruang kunci dari kata sandi tertentu berdasarkan struktur kata sandi. Yang saya maksud dengan "struktur" kata sandi adalah jenis dan urutan karakter yang digunakan untuk membuat kata sandi. Misalnya, "struktur" dengan huruf besar, diikuti oleh 7 huruf kecil, diikuti oleh 4 digit (dicatat sebagai). Password1234ullllllldddd
Huruf kecil, huruf besar, simbol, angka (l) (u) (s) (d)
Jadi, jika seorang penyerang memutuskan untuk menggunakan struktur ini untuk membuat semua kemungkinan kombinasi karakter, dia akhirnya akan menemukan kata sandi. Maka pertanyaan penyerang menjadi: Struktur apa yang harus ditargetkan terlebih dahulu ketika menyerang sekumpulan hash? Password1234
Untuk membantu menjawab pertanyaan ini, saya melakukan beberapa analisis statistik pada dump kata sandi populer untuk melihat apakah ada struktur kata sandi yang lebih umum daripada struktur kata sandi lainnya dan sejauh mana struktur ini benar. Ukuran sampel lebih dari 34 juta kata sandi yang diekspos ke publik termasuk dump kata sandi terkenal seperti RockYou, LinkedIn, phpBB, dan banyak lagi.
Gambar berikut menunjukkan frekuensi struktur masker untuk setiap masker unik. Garis merah menunjukkan garis 50%, yang muncul setelah masker ke-13 yang paling sering muncul.
Ini berarti bahwa 13 struktur topeng unik pertama menyumbang 50% dari sampel sandi. Struktur lebih dari 20 juta sandi dalam sampel ditempatkan di 13 masker pertama. Hasil ini cukup mengejutkan dalam hal universalitas kata sandi terstruktur. 50% lainnya ada di dalam ekor kanan yang panjang dan telah dikurangi dalam grafik ini. Bahkan, dari 260.500 topeng unik, hanya 400 yang ditampilkan pada grafik ini. Konsep kriptografi terstruktur universal ini luar biasa; Namun, ini tidak mengherankan jika Anda mempertimbangkan bagaimana pengguna membuat dan mengingat kata sandi mereka. Berdasarkan data analisis, ada beberapa faktor logis yang membantu menjelaskan bagaimana hal ini mungkin terjadi. Ketika pengguna diminta untuk memberikan kata sandi yang berisi huruf besar, itu digunakan sebagai karakter pertama lebih dari 90% waktu. Ketika diminta untuk menggunakan angka, sebagian besar pengguna akan menambahkan dua digit di akhir kata sandi (mungkin tahun kelulusan). Pilihan paling populer berikutnya adalah menutup password dengan empat digit (mungkin tahun sebelumnya atau tahun ini). Dalam hal ini, nomor paling populer berikutnya memiliki satu nomor di akhir dan tiga nomor di akhir. Kesamaan struktural seperti ini memungkinkan penyerang untuk memprediksi apa struktur kata sandi pengguna yang paling mungkin.
Dengan menggunakan pengetahuan struktural ini, dapat dengan aman diasumsikan bahwa pengguna kemungkinan besar akan mengatur kata sandi mereka ke than (huruf acak), meskipun semuanya dimulai dengan 9 huruf dan memiliki 9 huruf. Oleh karena itu, kita berasumsi bahwa dengan struktur kata sandi, jika kita melihat huruf-huruf berturut-turut, kemungkinan besar itu adalah kata. Ini adalah asumsi yang sangat berguna untuk kerupuk karena menghilangkan banyak ruang kunci. Ini kemudian berubah menjadi serangan hibrida yang memanfaatkan signifikansi statistik dari struktur kriptografi universal. potatoespwivwdhpp
Biasanya, sebagai penguji penetrasi, bahkan jika kita merusak satu set hash, kita mungkin tidak punya waktu untuk memecahkan semua hash. Namun, merusak mereka dapat membantu meningkatkan akses ke sistem dan membawa penemuan yang lebih berguna bagi pelanggan. Oleh karena itu, ketika memecahkan kata sandi, dapat berguna untuk menentukan berapa banyak waktu yang akan dialokasikan untuk memecahkan satu set hash. Dengan menggunakan struktur yang ditemukan dalam analisis sebelumnya, seorang penyerang dapat menentukan sepuluh struktur populer teratas yang dia ingin menutupi berdasarkan persyaratan kompleksitas kata sandi yang diurutkan oleh waktu penyelesaian tercepat. Akhirnya, penyerang dapat membatasi waktu metodenya dengan menghabiskan waktu tidak lebih dari satu jam untuk melakukan crack. Hal ini ditemukan dalam tes penetrasi baru-baru ini untuk mendapatkan hash. Berikut ini adalah snapshot hasil dari cracker berbasis CPU.
Struktur tercepat untuk diselesaikan dalam kasus ini adalah, kita mendefinisikannya sebagai satu huruf besar, diikuti oleh tiga huruf kecil ("W" untuk "kata"), dan kemudian empat digit. Hashset memiliki 69 kata sandi yang cocok dengan struktur, dan CPU standar saya mampu melintasi semua kemungkinan struktur dalam satu menit. Kami menghentikan crack pada 62 menit dan crack menghasilkan 221 hash crack unik yang cocok dengan 491 akun, menghasilkan total 11% kebocoran. Alasan perbedaan besar dalam jumlah retak kata sandi dan kebocoran akun adalah karena pengaturan Office cenderung menyebabkan orang menggunakan kata sandi umum. Jika penyerang menentukan bahwa kata sandi umum digunakan di lingkungan, semua pengguna dengan kata sandi yang sama juga akan terancam. U (W3) dddd
Meskipun serangan hibrida atau serangan berbasis aturan (misalnya) dapat memecahkan beberapa kata sandi ini lebih cepat, struktur kata sandi serangan memungkinkan kita untuk menutupi lebih banyak ruang kunci. Metode ini adalah langkah berikutnya yang efektif jika serangan Faster terbukti gagal merusak hash target. Selain itu, penting untuk diingat bahwa contoh ini dilakukan pada CPU yang cukup biasa-biasa saja, dan melakukan serangan yang sama pada GPU yang kuat dapat mengurangi waktu ini menjadi beberapa detik. Oleh karena itu, waktu yang tepat kurang penting daripada teori eksekusi yang efektif. best64
Analisis statistik membantu kita menyerang struktur kata sandi umum secara umum; Namun, ada beberapa alat yang dapat membantu menargetkan aplikasi tertentu. Alat seperti CeWL dapat merayap kata-kata dari halaman web dan digunakan untuk menghasilkan daftar kata atau kamus khusus untuk perusahaan. Hal ini efektif karena perusahaan cenderung menggunakan password yang terkait dengan industri, perusahaan, atau pekerjaan mereka. Selain itu, karena kami telah menentukan bahwa kata sandi yang umum digunakan sedang populer di lingkungan kerja, kata sandi yang telah retak juga dapat digunakan sebagai dasar untuk kata sandi lain, yang mungkin serupa. Misalnya, jika kita menemukan bahwa "" adalah kata sandi pengguna, kita dapat memasukkan "" ke dalam daftar kata baru, memasukkannya ke dalam set aturan, dan kemudian menemukan bahwa orang lain memiliki kata sandi "". Konsep menggunakan kata-kata dasar retak (seperti ' ') dan memodifikasi dengan karakter di sekitarnya sangat efektif dalam memecahkan hash yang dibuang dari lingkungan perusahaan, yang dapat ditelusuri kembali ke konsep penggunaan kembali kata sandi. Berdasarkan tes penetrasi yang kami lakukan, ini paling cocok digunakan untuk memecahkan 20% terakhir hash yang tidak dipecahkan. AcmeCorp1234AcmeCorpAcmeCorp@2015AcmeCorp
Penting juga untuk memangkas kamus agar semua password yang ditebak sesuai dengan persyaratan yang ditetapkan oleh aplikasi, sehingga tidak terbuang waktu untuk menebak password yang tidak bisa ditebak karena panjang atau komposisi karakter.
Mulai dari serangan tercepat dan mencakup ruang kunci paling sedikit (serangan kamus standar) ke ruang kunci paling lambat dan maksimum (kekuatan kasar murni) adalah kemajuan yang paling ideal untuk mempertimbangkan waktu yang dialokasikan untuk serangan. Oleh karena itu, penyerang harus menerapkan metode standar yang mempertimbangkan hal ini. Jika akun yang ingin dirusak oleh penyerang selesai pada tahap pertama, mungkin tidak ada alasan untuk melanjutkan dengan serangan lain; Namun, dalam banyak kasus, serangan kamus sederhana mungkin tidak cukup jika ada akun target, atau penyerang hanya ingin merusak sebanyak mungkin akun, sehingga serangan hibrida yang menggunakan struktur statistik dan serangan brute force yang ditargetkan mungkin diperlukan. Oleh karena itu, pembentukan metode sangat penting untuk keberhasilan crack, yang dapat mencakup metode yang disebutkan sebelumnya bersama dengan beberapa proses otomatis. Alat terbaru (seperti PRINCE) dapat membantu memfasilitasi pemecahan kata sandi. Penting untuk mengembangkan toolband seperti PRINCE untuk mencoba dalam metode, tetapi memahami fungsi di balik alat dan tidak bergantung sepenuhnya pada mereka akan membuat cracking lebih efisien.
Dengan menganalisis menggunakan kata sandi ini, struktur yang paling populer dapat ditentukan dengan tingkat kompleksitas yang dibutuhkan. Oleh karena itu, pengembang mungkin harus mengimplementasikan beberapa kontrol untuk mencegah pengguna menggunakan beberapa struktur yang sangat populer ini untuk meratakan kurva grafik sebelumnya. Namun, masalah dengan ide ini adalah bahwa tanpa struktur sederhana, pengguna mungkin merasa sulit untuk mengingat kata sandi mereka. Saya merekomendasikan menggunakan pengelola kata sandi yang memerlukan otentikasi ganda. Aplikasi ini akan menghasilkan dan menyimpan semua kata sandi Anda untuk Anda, jadi memori tidak menjadi masalah. Kata sandi yang mereka hasilkan secara acak dalam struktur dan dapat digunakan selama aplikasi mengizinkannya. Seperti yang saya sebutkan sebelumnya, enkripsi kata sandi adalah cara lain yang sangat efektif untuk memperlambat prospek penyerang. Terakhir, menerapkan strategi di kantor untuk membantu pengguna memahami bahaya berbagi kata sandi atau menggunakannya kembali adalah langkah sukses ke arah yang benar, bahkan jika pengguna tidak selalu mematuhinya. Meskipun kemungkinan besar mereka tidak akan mematuhinya sepanjang waktu, ini adalah kontrol yang efektif.
Pemecahan kata sandi mungkin merupakan konsep yang tidak jelas. Ketika kesulitan cracking meningkat, serangan yang ditargetkan berdasarkan efisiensi diperlukan, dan metode cracking pribadi harus ditetapkan. Tidak ada gunanya menginvestasikan uang untuk akhirnya meningkatkan kecepatan pembuatan hash. Oleh karena itu, penerapan metode dan proses yang disederhanakan menggunakan statistik dan alat sebagai sarana serangan dapat memfasilitasi pemecahan kata sandi. Pengembang dapat mengembangkan kontrol untuk mengatasi situasi ini, dan pengguna dapat menggunakan manajer kata sandi yang aman untuk meminimalkan efektivitas serangan ini; Namun, implementasi semacam itu belum terlalu populer. Saat ini, serangan statistik terhadap kata sandi efektif dalam hal jumlah retak dan efisiensi koneksi waktu. Pikirkan kata sandi Anda sendiri dan tanyakan pada diri sendiri seberapa cepat kata sandi dapat dipecahkan, tergantung pada struktur kata sandi dan kontrol apa yang ada di kantor Anda yang dapat menyebabkan penyerang meretas akun pengguna.