深入 hashcat 系列:Hybrid Attack Mode (綜合攻擊模式)

by iok
發佈日期: 更新日期: 159 人次瀏覽
hashcat-hybrid

hashcat 是一套開源 (MIT License) 的離線密碼破解軟體,還能利用顯示卡 GPU 加快破解速度。其官網宣稱是「世界上最快的密碼破解工具」,廣泛支援許多常用的雜湊值演算法,以及破解攻擊模式。

「深入 hashcat 系列」是針對想要深耕資安領域的你,所撰寫的一系列文章。每篇文章針對 hashcat 其中一個參數、參數值或功能,進行說明,並搭配實做指令範例,幫助你快速掌握 hashcat 。

我們在前篇文章有提到 Combinator Attack,能組合 2 個的字典檔進行破解。而這次談到的 Hybrid Attack (綜合攻擊模式),則是能混合字典檔與 Mask Mode 進行破解。並套用至 hashcat 進行比對,確認密碼是否為字典檔中的單字。

*請留意文章中提到的工具軟體,請在授權環境下執行測試與使用,禁止在非授權環境下執行!

Photo by Michael Sum on Unsplash

Hybrid Attack Mode (混合攻擊模式)

人取密碼的時候,有時喜歡用英文名字加上數字組合。不管是,後綴數字(-a 6 mode),或是前綴數字 (-a 7 mode) 都是現今流行的取密碼習慣。例如,字典檔一樣截取美國國家社會安全局網頁公告 1922 年到 2021 年 100 個美國最常見的名字,依字母順序排列如下:

James
Robert
John
Michael
David
William
Richard
Joseph
Thomas

...
Ralph
Eugene
Russell
Bobby
Mason
Philip
Louis

ref: https://www.ssa.gov/oact/babynames/decades/century.html

直接利用 hashcat 的 hybrid attack mode (-a 6),來進行字典檔與後綴數字的組合。透過 --stdout 的選項,可以直接產生候選字典檔。

$ hashcat -a 6 name.txt ?d?d?d?d --stdout > list.txt
$ cat list.txt
James1234
James0801
James2001
James3101
James9801
...
David8877
David7877
David6523
David1991
David0112
....
William8534
William7477
William6923
William1055
William0255

留意到 hashcat 產生出來的候選字典檔,並不是按照順序逐字產生的,而是有一定亂數排序而成。產生完的字典檔,再用先前文章提到的 Straight Mode (-a 0),就可以進行破解了。 比方說,我們要破解的密碼是 George0502,MD5 雜湊值是 b607418f5aa54e5a7d6b99b18c0cd87a

$ echo -n "George0502" |md5sum |sed -e 's/  -//g' > hash.txt
$ cat hash.txt
b607418f5aa54e5a7d6b99b18c0cd87a
$ hashcat -a 0 -m 0 hash.txt list.txt
hashcat (v6.2.5) starting
...
Host memory required for this attack: 2 MB

Dictionary cache built:
* Filename..: list.txt
* Passwords.: 1000000
* Bytes.....: 10720000
* Keyspace..: 1000000
* Runtime...: 0 secs

b607418f5aa54e5a7d6b99b18c0cd87a:George0502

Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 0 (MD5)
Hash.Target......: b607418f5aa54e5a7d6b99b18c0cd87a
Time.Started.....: Sun Dec 25 15:04:44 2022 (0 secs)
Time.Estimated...: Sun Dec 25 15:04:44 2022 (0 secs)
Kernel.Feature...: Pure Kernel
Guess.Base.......: File (list.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 12318.1 kH/s (0.20ms) @ Accel:1024 Loops:1 Thr:1 Vec:16
Recovered........: 1/1 (100.00%) Digests
Progress.........: 131072/1000000 (13.11%)
Rejected.........: 0/131072 (0.00%)
Restore.Point....: 122880/1000000 (12.29%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidate.Engine.: Device Generator
Candidates.#1....: Kenneth9102 -> Jason8605
Hardware.Mon.#1..: Temp: 66c Util: 20%

若是要直接破解,也可利用 -a 6 進行密碼破解,效果就如同下面執行結果。留意到 keyspace 是 100 萬(100 * 10 * 10 * 10 * 10),一百個名字乘上 4 個 0 ~ 9 數字的組合,總共是 100 萬組候選密碼。

$ hashcat -a 6 -m 0 hash.txt name.txt ?d?d?d?d
hashcat (v6.2.5) starting

...
Dictionary cache hit:
* Filename..: name.txt
* Passwords.: 100
* Bytes.....: 672
* Keyspace..: 1000000
...
b607418f5aa54e5a7d6b99b18c0cd87a:George0502

Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 0 (MD5)
Hash.Target......: b607418f5aa54e5a7d6b99b18c0cd87a
Time.Started.....: Sun Dec 25 15:11:10 2022 (0 secs)
Time.Estimated...: Sun Dec 25 15:11:10 2022 (0 secs)
Kernel.Feature...: Pure Kernel
Guess.Base.......: File (name.txt), Left Side
Guess.Mod........: Mask (?d?d?d?d) [4], Right Side
Guess.Queue.Base.: 1/1 (100.00%)
Guess.Queue.Mod..: 1/1 (100.00%)
Speed.#1.........: 46239.5 kH/s (2.01ms) @ Accel:64 Loops:1024 Thr:1 Vec:16
Recovered........: 1/1 (100.00%) Digests
Progress.........: 204800/1000000 (20.48%)
Rejected.........: 0/204800 (0.00%)
Restore.Point....: 0/100 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:1024-2048 Iteration:0-1024
Candidate.Engine.: Device Generator
Candidates.#1....: James9102 -> Louis8605
Hardware.Mon.#1..: Temp: 72c Util: 14%

而前綴數字的破解方式 (-a 7) 也如同後綴數字 (-a 6),假如我們要破解的密碼是 0699Ethan,MD5 雜湊值是 4ffdb75dae86ffc2f071fd53d5dd977c。產生雜湊值的方式如下:

$  echo -n "0699Ethan" |md5sum |sed -e 's/  -//g' > hash2.txt
$ cat hash2.txt
4ffdb75dae86ffc2f071fd53d5dd977c

利用 hashcat Hybrid attack mode (-a 7) 直接進行破解,指令如下:

$ hashcat -a 7 -m 0 hash2.txt ?d?d?d?d name.txt
...
Dictionary cache hit:
* Filename..: name.txt
* Passwords.: 100
* Bytes.....: 672
* Keyspace..: 1000000

4ffdb75dae86ffc2f071fd53d5dd977c:0699Ethan

Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 0 (MD5)
Hash.Target......: 4ffdb75dae86ffc2f071fd53d5dd977c
Time.Started.....: Sun Dec 25 15:25:29 2022 (0 secs)
Time.Estimated...: Sun Dec 25 15:25:29 2022 (0 secs)
Kernel.Feature...: Pure Kernel
Guess.Base.......: File (name.txt), Right Side
Guess.Mod........: Mask (?d?d?d?d) [4], Left Side
Guess.Queue.Base.: 1/1 (100.00%)
Guess.Queue.Mod..: 1/1 (100.00%)
Speed.#1.........: 47597.8 kH/s (8.16ms) @ Accel:512 Loops:100 Thr:1 Vec:16
Recovered........: 1/1 (100.00%) Digests
Progress.........: 409600/1000000 (40.96%)
Rejected.........: 0/409600 (0.00%)
Restore.Point....: 0/10000 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-100 Iteration:0-100
Candidate.Engine.: Device Generator
Candidates.#1....: 1234James -> 4006Louis
Hardware.Mon.#1..: Temp: 72c Util: 14%

結語

hashcat 是如此強大,可以讓我們組合字典檔與遮罩模式(Mask mode),進行暴力密碼破解。到目前為止,我們已經學會應用 hashcat 4 種 不同的破解攻擊模式,搭配實做範例,相信你一定更能了解。

如果這篇文章有幫助到你,請幫我再下面按幾下 Like 讚鼓勵我,或是點選 「Buy me a coffee」,請我喝一杯咖啡,並將文章分享給你的朋友。

參考文獻:

相關文章

留言