GPU破解神器Hashcat使用簡介

wyzsk發表於2020-08-19
作者: ccSec · 2013/09/30 20:13

0x00 背景


目前GPU的速度越來越快,使用GPU超強的運算速度進行暴力密碼破解也大大提高了成功率,曾經看到老外用26塊顯示卡組成的分散式破解神器讓我羨慕不已。要說目前最好的GPU破解HASH的軟體,非HashCat莫屬了。下面我就為大傢俱體介紹一下HashCat系列軟體。

0x01 所需硬體及系統平臺


HashCat系列軟體在硬體上支援使用CPU、NVIDIA GPU、ATI GPU來進行密碼破解。在作業系統上支援Windows、Linux平臺,並且需要安裝官方指定版本的顯示卡驅動程式,如果驅動程式版本不對,可能導致程式無法執行。

如果要搭建多GPU破解平臺的話,最好是使用Linux系統來執行HashCat系列軟體,因為在windows下,系統最多隻能識別4張顯示卡。並且,Linux下的VisualCL技術(關於如何搭建VisualCL環境,請參考官方文件http://hashcat.net/wiki/doku.php?id=vcl_cluster_howto),可以輕鬆的將幾臺機器連線起來,進行分散式破解作業。 在破解速度上,ATI GPU破解速度最快,使用單張HD7970破解MD5可達到9000M/s的速度,其次為NVIDIA顯示卡,同等級顯示卡GTX690破解速度大約為ATI顯示卡的三分之一,速度最慢的是使用CPU進行破解。

0x02 HashCat軟體簡介


HashCat主要分為三個版本:Hashcat、oclHashcat-plus、oclHashcat-lite。這三個版本的主要區別是:HashCat只支援CPU破解。oclHashcat-plus支援使用GPU破解多個HASH,並且支援的演算法高達77種。oclHashcat-lite只支援使用GPU對單個HASH進行破解,支援的HASH種類僅有32種,但是對演算法進行了最佳化,可以達到GPU破解的最高速度。如果只有單個密文進行破解的話,推薦使用oclHashCat-lite。

目前最新的軟體版本為HashCat v0.46、oclHashcat-plus v0.15、oclHashcat-lite v0.15。但是經過一段時間的測試,發現有時候版本越高,速度越慢。所以推薦在使用沒有問題的情況下,無需升級到最新版本。根據測試,oclHashcat-lite v0.10的運算速度比v0.15的運算速度快20%,所以單個密文破解還是推薦使用oclHashcat-lite v0.10。

0x03 HashCat軟體使用


HashCat系列軟體擁有十分靈活的破解方式,可以滿足絕大多數的破解需求,下面我就為大家簡單介紹一下。

1.指定HASH型別

在HashCat中--hash-type ?引數可以指定要破解的HASH型別,執行hashcat主程式加上--help引數,在* Generic hash types:中可以看到各種HASH型別的代號,如圖所示:  enter image description here

不同版本的HashCat所支援的hash型別有所不同,如果沒有指定--hash-type引數,那麼程式預設為MD5型別。

2.指定破解模式

在HashCat中--attack-mode ?引數可以可以指定破解模式,軟體一共支援5種破解模式,分別為

0 Straight(字典破解)
1 Combination(組合破解)
3 Brute-force(掩碼暴力破解)
6 Hybrid dict + mask(混合字典+掩碼)
7 Hybrid mask + dict(混合掩碼+字典)

下面為大家介紹兩個最常用的破解方式:字典破解和掩碼暴力破解。

使用字典破解MD5:

oclHashcat-plus64.exe --hash-type 0 --attack-mode 0 {HASH檔案} [字典1] [字典2] [字典3]…

如:

oclHashcat-plus64.exe --hash-type 0 --attack-mode 0 d:md5.txt d:dict1.txt d:dict2.txt

字典破解由於受到磁碟和記憶體速度的影響,速度無法達到GPU的最大運算速度,基本上一個5GB的字典,對於MD5破解來說10分鐘內可以跑完。

使用掩碼暴力破解SHA1:

oclHashcat-plus64.exe --hash-type 100 --attack-mode 3 {HASH檔案} [掩碼]

{掩碼的設定}

對於掩碼,這邊需要稍微做一個說明。Hashcat預設的掩碼一共有9種,如圖所示:

enter image description here

?l表示a-z,?u表示A-Z,?d表示0-9,?a表示鍵盤上所有的特殊字元,?s表示鍵盤上所有的可見字元,?h表示8bit 0xc0-0xff的十六進位制,?D表示8bit的德語字元,?F表示8bit的法語字元,?R表示8bit的俄語字元。

那麼有同學可能會問了,如果我要用掩碼錶示小寫+數字怎麼辦呢?這就需要用到自定義字符集這個引數了。軟體支援使用者最多定義4組字符集,分別用

--custom-charset1 [chars]
--custom-charset2 [chars]
--custom-charset3 [chars]
--custom-charset4 [chars]

來表示,在掩碼中用?1、?2、?3、?4來表示。

比如說我要設定自定義字符集1為小寫+數字,那麼就加上

-- custom-charset1 ?l?d

如果要設定自定義字符集2為abcd1234,那麼就加上

--custom-charset2 abcd1234

如果要破解8位的小寫+數字,那麼需要設定自定義字符集1為

--custom-charset1 ?l?d

設定掩碼為?1?1?1?1?1?1?1?1。 如果已知密碼的第一位為數字,長度為8位,後幾位為大寫+小寫,那麼需要設定自定義字符集1為

--custom-charset1 ?l?u

設定掩碼為?d?1?1?1?1?1?1?1。

{掩碼的長度}

對於已知長度的密碼,可以使用固定長度的掩碼進行破解。比如要破解11位數字,就可以這樣寫掩碼?d?d?d?d?d?d?d?d?d?d?d。

對於想要破解一些未知長度的密碼,希望軟體在一定長度範圍內進行嘗試的,可以使用--increment引數,並且使用--increment-min ?定義最短長度,使用--increment-max ?定義最大長度。比如要嘗試6-8位小寫字母,可以這樣寫

--increment --increment-min 6 --increment-max 8 ?l?l?l?l?l?l?l?l

{舉例}

破解8-11位數字+小寫

oclHashcat-plus64.exe --hash-type 100 --attack-mode 3 --increment --increment-min 8 --increment-max 11 --custom-charset1 ?l?d d:sha1.txt ?1?1?1?1?1?1?1?1?1?1?1 

0x04 HashCat引數最佳化


HashCat本身考慮到系統資源的分配,預設引數下並沒有最大化的來使用硬體資源。如果我們想要讓破解速度最大化,就需要對一些引數進行配置。

1.Workload tuning 負載調優。

該引數支援的值有1,8,40,80,160

--gpu-accel 160

可以讓GPU發揮最大效能。

2.Gpu loops 負載微調

該引數支援的值的範圍是8-1024(有些演算法只支援到1000)。

--gpu-loops 1024

可以讓GPU發揮最大效能。

3.Segment size 字典快取大小

該引數是設定記憶體快取的大小,作用是將字典放入記憶體快取以加快字典破解速度,預設為32MB,可以根據自身記憶體情況進行設定,當然是越大越好XD。

--segment-size 512

可以提高大字典破解的速度。

0x05 結束語


本文只是簡單介紹HashCat的一些常見用法,希望能夠讓大家更快的學會HashCat的使用。本人剛接觸Hashcat不久,如果文章有什麼缺點或不足也希望大家能夠及時提出,在使用過程當中有什麼疑問可以跟帖提問。如果想要更加詳細的瞭解HashCat,請大家參閱官方文件:http://hashcat.net/wiki/

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章