HASHCAT是一個逐一遞迴(暴力)運算去還原HASH的工具,沒有特別高深的技巧,最重要的就是運算能力。即便是擁有運算能力,對於常見的八位數密碼,依舊需要花上許多時間,如果是八位數純數字密碼,筆者電腦需要跑15分鐘,再加一位變成九位數,就要花上兩小時半。
密碼不一定是純數字,也可能加上英文字母,英文字母又有大小寫之分,更不要說有特殊符號,或者超過八位數,這些可能性都是讓計算時間大幅延長,輕則一年,多則上百年,因此暴力破解並不適合一般設備,就算換張頂規顯示卡,算力四倍,計算時間剩四分之一,一年變成三個月,還是要不久的時間。
因此,得把計算時間簡化成一週,這才是合理的時程。為此,需要去減少嘗試的組合,所幸,密碼並非是毫無章法,基本上都內藏一些規律,這些規律使得密碼容易被記住,如果掌握些規律,就能夠優先嘗試較為可能的組合,進而減少還原密碼的時間。
密碼設計是一門心理學,這個人會使用的密碼,會參照一些訊息,簡單來說是出生年月日、英文姓名或電話號碼等。這些訊息就藏在這個人的環境之中,如果你仔細觀察,也許就能從相處之中發現。
不過,想要用hashcat破解密碼成為駭客,這是不實際的,因為太沒有效率了。我也不建議拿它當作破解別人帳密的工具,這是違法的事情,但是如果是用在自己身上,也許就能順利找回自己遺忘的密碼。
入門:如何使用hashcat
先從官方網站下載HASHCAT,然後解壓縮後的資料夾內執行cmd,裡面會有幾個example.cmd作為範例,以下是簡單的模板跟範例,複製下面範例執行之後,HASHCAT就會進行運算。。
hashcat.exe <破解方法> <Hash類型> <Hash值>
hashcat.exe -a 3 -m 0 5E8667A439C68F5145DD2FCBECF02209
-a 3 是指用 暴力破解法。
-m 0 是指hash類型為 MD5
5E8667A439C68F5145DD2FCBECF02209 是本次要嘗試的密碼,本身為87654321。
計算出來後,按向上鍵並在最後面打上 –show,就可以看出還原出來的密碼。
hashcat.exe -a 3 -m 0 5E8667A439C68F5145DD2FCBECF02209 --show
=> 5E8667A439C68F5145DD2FCBECF02209:87654321
就算拿到hash值,但也要知道是甚麼樣的hash類型才能復原,這才是實戰的重點,拿範例學習實在很容易。如果找出hash類型並不在本文範疇內,有興趣可以自行搜尋或是等待日後補充。
hashcat.exe -a 3 -m 100 A7D579BA76398070EAE654C30FF153A4C273272A
-m 100 是指hash類型為 SHA1
A7D579BA76398070EAE654C30FF153A4C273272A 是本次要嘗試的密碼,本身為87654321。
同一組字串換一種HAHS類型之後,計算速度不到MD5的一半,意味者計算時間的加倍與更多。如今MD5跟SHA1並不是主流(重要級)的加密方法,因為被算出的速度很快。真的要實戰,碰上使用其他種HASH加料,會比範例還要更花上不少的時間去計算。
暴力破解可行,只是太久。接下來要使用字典,讓計算可以更快完成。
正文:字典破解HASH
假設你會錄取wifi的shakehand包,然後得到一組HASH,這組還原了,你就有了wifi密碼。要知道wifi的Preshare Key至少會有八位,以及它的性質是供它人使用,所以不會設一堆令人難以理解的規律。
今天有一間旅館,名稱為「好和平」,電話為「49-5969798」,然後發現wifi有分成房間,你住在「501」房,要連上名為「room501」的wifi。※皆屬虛構
78AAE7BACFD940C154CB8F4BDE7E0BEBCBBAC566
92ED10EFAF1DC063FAB36CCB0C9BBA375912541A
54B87CC9227E6347950C268B883EA7C6C4B7C2BD
這有三個HASH,代表不同種可能,為了方便進行,這邊都是以「SHA1」類型。以下列出一些目前發現的線索,並且列出可能的組合。
NICEPEACE
NicePeace
nicepeace
Nice
nice
Peace
peace
NP
N
P
495969798
495
969798
room501
Room501
Room
501
把上面內容存成「sample.txt」放到hashcat資料夾,然後可以運行下方指令。
hashcat.exe -a 1 -m 100 78AAE7BACFD940C154CB8F4BDE7E0BEBCBBAC566 sample.txt sample.txt
hashcat.exe -a 1 -m 100 92ED10EFAF1DC063FAB36CCB0C9BBA375912541A sample.txt sample.txt
hashcat.exe -a 1 -m 100 54B87CC9227E6347950C268B883EA7C6C4B7C2BD sample.txt sample.txt
這會用從字典中,將兩個詞組合新字串,第一個詞從sample.txt出,第二個詞從sample.txt出。藉此,順利地破解出所有的密碼。
一個好字典,需要把各種訊息納入,並且做適當切割與轉化,這種思路便足以使用多數的情境。網路上有許多密碼字典,動則數十GB,甚至更大,如果使用者的密碼用得太過於簡單,用這樣的字典就能夠找出來,無須費心蒐集資訊。
最後,本文是HASHCAT的教學,並不鼓勵拿去破解他人的密碼。也希望可以今後在選擇密碼的時候,反思密碼會不會太容易被破解,避免使用很容易被他人知道的個人資料。