又來破解了!hashcat GPU與mask

很久以前有研究過破解 ZIP 的東西,其中一項就是利用 hashcat + GPU 來進行加速。那時的 GPU 還很弱,透過最近買的 NVIDA RTX 4090 ,算 PKZIP (ZipCrypto) 的速度達到了一秒 400億次 (46328.5 MH/s)。比起利用 JtR 的 5000萬次,將近提升了1000倍。

未什麼會突然又研究起這個,當然是接到了一個硬骨頭的單,讓我去啟用 GPU 來研究破解。這個需求是一個硬骨頭的單,不像之前接過的,數分鐘就破解了,真的是有認真的在設定密碼。用 GPU 破解了一整天,還是沒有個下落。

於是我開始研究了一下 hashcat 破解時所用的密碼組合,這邊就做一個紀錄。

密碼字集

理想的密碼字集,就是針對每個字的所有可能性都做嘗試,也就是 ASCII 的 0~255,但這就增加了複雜度。以下就是8到10個字的密碼種類數字,與用 GPU 破解的時間。

  • 8碼: 17878103347812890625 (14.5年)
  • 9碼: 4558916353692287109375 (3705年)
  • 10碼: 1162523670191533212890625 (944883年)

GPU 雖快,但還是比數學差的遠,單純的暴力法還是不行,於是要縮小字集。以一般的密碼都是用 0~9, a~z, A~Z, 還有一些特殊符號所組成,就一共有94個字 (數字10, 英文 52, 符號 32)

  • 數字: 0123456789
  • 英文: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
  • 符號: «space»!”#$%&'()*+,-./:;<=>?@[\]^_{|}~

以這個組合來算的話,8到10位數要破解的時間分別為

  • 8碼: 6095689385410816(0.00483年)
  • 9碼: 572994802228616704(0.45年)
  • 10碼: 53861511409489970176(42年)

看起來就沒這麼多年了,似忽值得一試。

 

Hashcat 字集定義

hashcat 預定了幾個字集,下面僅列出本文用到的

  • ?l = abcdefghijklmnopqrstuvwxyz
  • ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • ?d = 0123456789
  • ?s = «space»!"#$%&'()*+,-./:;<=>?@[\]^_{|}~

簡單的說,就是英數字與符號。那要讓 hash 利用這些字的所有組合來破解,就用以下的命令來進行

上面的命令首先用 “-1” 定義了其字元為所有的英數字與符號組合,然後以10碼來進行破解。但一般會想要先從短碼的開始進行,所以此時就要加上 –increment 參數來由短至長進行破解

這樣的話,程式𡰔會從1碼~10碼慢慢往前增加,來嘗試破解。

Hashcat 的 Session

忘記之前有沒有提到,就是也可以記錄下本前破解的 session,可以中間中斷再繼

 

一些組合

為了快速破解,也嘗試定義了一此自己的字集,但還是沒成功。留下來下次用了,除了13碼的數字比較快。其它幾個用 4090 大約各要40~60min

13位數的數字

9碼的小寫英數字

9碼大寫英數字

10碼小寫

10碼大寫

 

結語

本文是對 hashcat 的破解語法,進行了一點研究,其實破解還是不成功。關鍵的部份,只要增加密碼長度,幾乎是難以破解了。就算密碼很短,只要使用了不預期的字元 (如中文),依然是困難重重。

 

Leave a Reply(Name請以user_開頭,否則會被判定會垃圾息)

請輸入答案 4 × 8 =