| # | Mode |
|---|---|
| 0 | Straight |
| 1 | Combination |
| 3 | Brute-force |
| 6 | Hybrid Wordlist + Mask |
| 7 | Hybrid Mask + Wordlist |
Mode serangan ini juga dikenal sebagai" Serangan Kamus ". Tidak banyak yang bisa dikatakan, hanya saja diberikan kamus, hashcat akan membaca isi kamus baris demi baris, menghitung nilai hash setiap baris, dan membandingkannya dengan nilai hash target.
Contoh:
hashcat -a 0 -m 400 contoh400.hash contoh.dict
Baidu memberi tahu saya bahwa kombinasi adalah kata benda, yang berarti: "kombinasi; konsorsium; kombinasi kata sandi; celana dalam". Mode serangan ini sebenarnya sangat sederhana, yaitu menggabungkan isi dari dua kamus kata sandi. Menggunakan mode serangan ini memerlukan penentuan dua kamus kata sandi tidak lebih, tidak kurang. Misalkan kita memiliki dua kamus kata sandi dict1.txt dan dict2.txt yang isinya adalah:
berburu kucing Pelangi
dan
paris rock
maka perintah:
hashcat -m 0 -a 1 hash.txt dict1.txt dict2.txt
Kamus yang sebenarnya dicoba adalah:
huntingparis Batu Berburu Kucingparis kittyrock Pelangi Paris rainbowrock
Kata-kata di dict1.txt di kiri dan kata-kata di dict2.txt di kanan, total 3×2=6.
Parameter yang terkait dengan pola ini adalah:
-j, - -rule-left -k, - -rule-right
-Aturan setelah j bekerja di sebelah kiri, dan aturan setelah-k bekerja di sebelah kanan, seperti menambahkan parameter-j' $-', maka kamus yang sebenarnya dicoba adalah:
hunting-paris Batu Berburu kitty-paris Kucing-batu Hujan-BusurParis rain-bowrock
Tambahkan parameter-j'^!', Maka kamus yang sebenarnya dicoba adalah:
! BerburuParis ! Batu Berburu ! kucingparis ! Batu Kucing ! rainbowparis ! rainbowrock
menambahkan parameter-k'^ >', maka kamus yang sebenarnya dicoba adalah:
berburu > paris Berburu batu kitty > paris kucing > batu hujan > bowparis Aturan apa ini? Penggunaan "$" dan "^" mirip dengan ekspresi reguler, jadi apakah itu reguler? Sebenarnya tidak. Aturan hashcat diimplementasikan sendiri. Ini adalah bagian besar lagi. Untuk detailnya, lihat Serangan Berbasis Aturan3. Brute-force
mencoba berbagai kombinasi kumpulan karakter tertentu. Menurut wiki resmi hashcat, metode ini sudah ketinggalan zaman dan telah digantikan sepenuhnya oleh Mask-Attack, sehingga tidak ada penelitian,
4. Mask Attack
Ini adalah metode serangan yang relatif baru, contohnya adalah sebagai berikut:
hashcat -a 3 -m 0 md5.hash ? Aku? Aku? Aku? Aku? lMeskipun menurut tabel "Attack Modes", -a 3 sesuai dengan Brute-force, pada kenyataannya, -a 3 menggunakan Mask Attack. Mask Attack dapat dianggap sebagai kekuatan kasar tingkat lanjut. Parameter
-m digunakan untuk menentukan jenis fungsi hash, dan nilai md5 disimpan dalam file md5.hash. Kuncinya adalah string terakhir "? l? l? l? l? l? l". String seperti itu disebut masker.
Masker adalah string yang terdiri dari beberapa placeholder. "? l" adalah placeholder, di mana "?" adalah kata kunci, yang digunakan untuk memodifikasi "l" berikutnya. "? l" bersama-sama mewakili kumpulan karakter. Selain "? l", ada juga "? u", "? d", "? h", "? h", "? s", "? a" dan "? b" mewakili kumpulan karakter seperti yang ditunjukkan pada tabel di bawah ini.
| ? | Kumpulan Karakter |
|---|---|
| l | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| u | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| d | 0123456789 |
| h | 0123456789abcdef |
| h | 0123456789abcdef |
| s | ! "#$% & ' () * +, -. /:; < = >? @ [\] ^_` ~ {|} |
| a | ? Aku? Kamu? d? s |
| b | 0 – 0xff |
Dengan cara ini, kita akan mengerti, "? l? l? l? l? l" sebenarnya setara dengan kamus kriptografi:
aaaaa aaaab ... zzzzz
Dengan cara yang sama, "? l? u? d" setara dengan kamus kriptografi:
aA0 aA1 ... bA0 ... zZ9
Kumpulan karakter pada tabel di atas adalah built-in dari hashcat, kita juga dapat menentukan kumpulan karakter sendiri:
- -custom-charset1= kumpulan karakter 1 - -custom-charset2= kumpulan karakter 2 - -custom-charset3= kumpulan karakter 3 - -custom-charset4= kumpulan karakter 4
Parameter – custom-charsetN dapat disingkat menjadi-n, misalnya – custom-charset1 dapat disingkat menjadi-1. Kumpulan karakter yang ditentukan dengan-n ditentukan dalam topeng sebagai placeholder "? N", seperti:
-1 abc123 ? 1? 1? 1
setara dengan kamus kriptografi:
aaa ... aa3 ... Setelah 333
-N, selain string yang mewakili kumpulan karakter, ini juga dapat berupa. File yang berakhir dengan hcchr, yang menyimpan kumpulan karakter. hashcat dilengkapi dengan banyak file. hcchr, di direktori charsets/paket instalasi.
Kumpulan karakter yang diwakili oleh placeholder "??" adalah "?" itu sendiri. Selain itu, ketika karakter lainnya digunakan sebagai placeholder, karakter tersebut mewakili karakter itu sendiri. Misalnya, "? lwerner? d" setara dengan kamus kata sandi:
awerner0 awerner1 ... zwerner9
Dengan pengetahuan di atas, Anda akan mudah memahami Masker. Masker terdiri dari beberapa placeholder, masing-masing placeholder adalah kumpulan karakter, dan masker adalah kombinasi dari setiap kumpulan karakter placeholder. Jumlah placeholder sama dengan panjang kata sandi. Apa keuntungan dari desain ini dibandingkan dengan hanya memberikan kumpulan karakter dan panjang kata sandi?
Misalkan kita mengetahui kata sandi seseorang dengan total 7 digit, digit pertama adalah huruf besar, 3 digit berikutnya adalah huruf kecil, dan 3 digit terakhir adalah angka. Jika itu adalah peretasan brute force tradisional, diperlukan kumpulan karakter A-Z, A-Z, dan 0-9, dengan total 62 karakter, dan perlu dicoba hingga 62^7=3 521 614 606 208 kali, yang merupakan tingkat triliun. Menggunakan masker untuk menggambarkan kata sandi ini adalah "\u\l\l\l\d\d\d", yang mudah dihitung. Ada total (26^4) × (10^3) =456 976.000 kemungkinan, yaitu 100 juta tingkat, 4 orde besarnya lebih sedikit dari metode sebelumnya.
Untuk mengambil langkah mundur, meskipun kita tidak mengetahui distribusi kata sandi, mudah untuk mensimulasikan efek peretasan brute force tradisional dengan menggunakan masker.
Pertanyaannya sekarang adalah masker itu tetap, berapa banyak placeholder di dalamnya yang ditulis mati, dan apa yang harus kita lakukan jika kita tidak tahu panjang kata sandi. Tidak apa-apa jika kata sandi seseorang terlalu panjang. Jika kata sandi orang lain hanya memiliki 3 digit dan kita memiliki 4 placeholder, bukankah kerugian besar jika kita tidak dapat memecahkannya? Haruskah kita mulai dari 1 dan menulis topeng dengan setiap panjang? Betapa merepotkannya itu.
Ada dua solusi, satu adalah menggunakan file masker, menulis beberapa masker dalam satu file, lalu menentukan file ini di baris perintah. Perhatikan bahwa file masker harus diakhiri dengan. hcmask.
Misalnya, isi test.hcmask adalah:
? aku ? Aku? aku ? Aku? Aku? aku ? Aku? Aku? Aku? l
Gunakan file ini dengan perintah berikut:
hashcat -m 0 -a 3 - -show md5.hash test.hcmask
Solusi lain adalah dengan menambahkan parameter – increment, yang memberi tahu hashcat, tekan masker yang kami berikan, mulai dari satu placeholder, coba dua lagi, tiga lagi, sampai panjang yang kami berikan. Misalnya kita menulis placeholder "abc" untuk ini, lalu hitung nilai md5 dari string berikut:
A:0cc175b9c0f1b6a831c399e269772661 b:92eb5ffee6ae2fec3ad71c777531578f c:4a8a08f09d37b73795649038408b5f33 ab:187ef4436122d1cc2f40dc2b92f0eba0 ac:e2075474294983e013ee4dd2201c7a73 ba:07159c47ee1b19ae4fb9c40d480856c4 bc:5360af35bde9ebd8f01f492dc059593c ca:5435c69ed3bcc5b2e4d580e393e373d3 cb:d0d7fdb6977b26929fb68c6083c0b439 abc:900150983cd24fb0d6963f7d28e17f72 abc:900150983cd24fb0d6963f7d28e17f72 bac:79ec16df80b57696a03bb364410061f3 bca:b64eab8ce39e013604e243089c687e4f cba:3944b025c9ca7eec3154b44666ae04a0 cab:16ecfd64586ec6c1ab212762c2c38a90
Sebelum ":" adalah string asli untuk menghitung nilai hash, dan setelah ":" adalah nilai hasn yang dihitung. Simpan konten di atas dalam file md5.hash, lalu jalankan perintah berikut:
hashcat -m 0 -a 3 - -show - -username md5.hash abc
Tambahkan parameter – username karena setiap nilai hash kami memiliki string asli di depan, jika Anda tidak menambahkan parameter ini, hashcat akan menunjukkan bahwa nilai hash yang benar tidak ditemukan. Dengan menambahkan parameter ini, hashcat akan berpikir bahwa string sebelum nilai hash adalah nama pengguna untuk nilai hash, sehingga nilai hash dapat dimuat dengan lancar.
Hasil berjalan adalah hanya satu hash yang diselesaikan:
900150983cd24fb0d6963f7d28e17f72:abc
Sekarang tambahkan parameter – kenaikan, jalankan lagi:
hashcat -m 0 -a 3 - -tampilkan - -kenaikan - -nama pengguna md5.hash abc
Kali ini, dua hash lagi diselesaikan:
0cc175b9c0f1b6a831c399e269772661:a 187ef4436122d1cc2f40dc2b92f0eba0:ab
Terlihat bahwa – kenaikan memainkan peran. Namun pada saat yang sama, kita juga tahu bahwa dengan parameter ini, hashcat hanya akan mencoba a, ab, dan abc secara berurutan, dan tidak akan mengatur dan menggabungkan placeholder di luar urutan, mencoba berbagai kemungkinan.
Serangan Hibrida mirip dengan Serangan Kombinator. Serangan Kombinator menggabungkan dua kamus, sedangkan serangan Hibrida menggabungkan satu kamus dan topeng.
Misalkan kita sudah memiliki kamus example.dict dengan isi berikut:
Halo werner
Kemudian perintah:
hashcat -m 0 -a 6 md5.hash contoh.dict ? d? d
setara dengan hanya menggunakan kamus:
halo00 Halo 01 ... halo99 werner00 werner01 ... werener99
Kemudian perintah:
hashcat -m 0 -a 7 md5.hash ? d? dexample.dict
Setara dengan hanya menggunakan kamus:
00hello 01 Halo ... 99Halo 00werner 01werner ... 99werener