1跑慕、介紹
Hashcat 是一款用于破解密碼的工具万皿,據(jù)說是世界上最快最高級的密碼破解工具摧找,支持 LM 哈希、MD5牢硅、SHA 等系列的密碼破解蹬耘,同時也支持 Linux、Mac减余、Windows 平臺综苔。
工具地址:https://hashcat.net
項目地址:https://github.com/hashcat/hashcat
2、安裝
Mac
Mac 用戶直接使用 brew 安裝即可
brew install hashcat
Linux
對于 Debain 的 Linux位岔,比如 Kali如筛、Ubuntu 可以直接使用 apt 進行安裝
apt install hashcat
或者下載官方二進制文件進行安裝
在 https://github.com/hashcat/hashcat/releases 里下載最新版壓縮包,這里以 6.2.4 版為例
tar zxvf hashcat-6.2.4.7z
cd hashcat-6.2.4
chmod +x hashcat.bin
./hashcat.bin
Windows
在 https://github.com/hashcat/hashcat/releases 里下載最新版壓縮包抒抬,解壓后可以看到 hashcat.exe
3杨刨、使用
常用參數(shù):
-r 使用自定義破解規(guī)則
-o 指定破解成功后的 hash 及所對應的明文密碼的存放位置
-m 指定要破解的 hash 類型,如果不指定類型擦剑,則默認是 MD5
-a 指定要使用的破解模式妖胀,其值參考后面對參數(shù)∽ビ冢“-a 0” 字典攻擊做粤,“-a 1” 組合攻擊;“-a 3” 掩碼攻擊
-D 指定 opencl 的設備類型
--show 顯示已經(jīng)破解的 hash 及該 hash 所對應的明文
--force 忽略破解過程中的警告信息,跑單條 hash 可能需要加上此選項
--remove 刪除已被破解成功的 hash
--username 忽略 hash 文件中的指定的用戶名,在破解 linux 系統(tǒng)用戶密碼 hash 可能會用到
--increment 啟用增量破解模式,你可以利用此模式讓 hashcat 在指定的密碼長度范圍內執(zhí)行破解過程
--increment-min 密碼最小長度,后面直接等于一個整數(shù)即可,配置 increment 模式一起使用
--increment-max 密碼最大長度,同上
--outfile-format 指定破解結果的輸出格式 id ,默認是 3
--self-test-disable 關閉啟動自檢
-a 破解模式:
0 | Straight (字段破解)
1 | Combination (組合破解)
3 | Brute-force (掩碼暴力破解)
6 | Hybrid Wordlist + Mask(字典+掩碼破解)
7 | Hybrid Mask + Wordlist(掩碼+字典破解)
-D 指定設備類型
1 | CPU
2 | GPU
3 | FPGA, DSP, Co-Processor
一般使用 -D 2 指定 GPU 破解
掩碼設置:
l | abcdefghijklmnopqrstuvwxyz 純小寫字母
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ 純大寫字母
d | 0123456789 純數(shù)字
h | 0123456789abcdef 十六進制小寫字母和數(shù)字
H | 0123456789ABCDEF 十六進制大寫字母和數(shù)字
s | !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 特殊字符
a | ?l?u?d?s 鍵盤上所有可見的字符
b | 0x00 - 0xff 匹配密碼空格
掩碼設置舉例:
八位數(shù)字密碼:?d?d?d?d?d?d?d?d
八位未知密碼:?a?a?a?a?a?a?a?a
前四位為大寫字母捉撮,后面四位為數(shù)字:?u?u?u?u?d?d?d?d
前四位為數(shù)字或者是小寫字母,后四位為大寫字母或者數(shù)字:?h?h?h?h?H?H?H?H
前三個字符未知妇垢,中間為admin巾遭,后三位未知:?a?a?aadmin?a?a?a
6-8位數(shù)字密碼:--increment --increment-min 6 --increment-max 8 ?d?d?d?d?d?d?d?d
6-8位數(shù)字+小寫字母密碼:--increment --increment-min 6 --increment-max 8 ?h?h?h?h?h?h?h?h
自定義掩碼規(guī)則:
--custom-charset1 [chars]等價于 -1
--custom-charset2 [chars]等價于 -2
--custom-charset3 [chars]等價于 -3
--custom-charset4 [chars]等價于 -4
在掩碼中用 ?1、?2闯估、?3灼舍、?4 來表示
注意:
- --custom-charset1 abcd ?1?1?1?1?1 等價于 -1 abcd ?1?1?1?1?1
- -3 abcdef -4 123456 ?3?3?3?3?4?4?4?4 表示前四位可能是 adbcdef,后四位可能是 123456
另外 Hash 模式與 ID 的對照表由于太長涨薪,這里就不放了骑素,可以直接 hashcat -h 進行查看
4、示例
MD5
密碼為 8 位數(shù)字
hashcat -a 3 --force d54d1702ad0f8326224b817c796763c9 ?d?d?d?d?d?d?d?d
密碼為 4 位小寫字母+數(shù)字
hashcat -a 3 --force 4575621b0d88c303998e63fc74d165b0 -1 ?l?d ?1?1?1?1
密碼為 1-4 位大寫字母+數(shù)字
hashcat -a 3 --force 8fb5a3e7338ce951971d69be27fc5210 -1 ?u?d ?1?1?1?1 --increment --increment-min 1 --increment-max 4
指定特定字符集:123456abcdf!@+- 進行破解
hashcat -a 3 -1 123456abcdf!@+- 8b78ba5089b11326290bc15cf0b9a07d ?1?1?1?1?1
由于在終端里可能會把部分字符識別為特殊字符刚夺,因此需要轉義一下
hashcat -a 3 -1 123456abcdf\!\@+- 8b78ba5089b11326290bc15cf0b9a07d ?1?1?1?1?1
如果不知道目標密碼的構成情況献丑,可以直接使用 ?a 表示使用所有字符進行破解
hashcat -a 3 19b9a36f0cab6d89cd4d3c21b2aa15be --increment --increment-min 1 --increment-max 8 ?a?a?a?a?a?a?a?a
使用字典破解
hashcat -a 0 e10adc3949ba59abbe56e057f20f883e password.txt
使用字典批量破解
hashcat -a 0 hash.txt password.txt
字典組合破解
hashcat -a 1 77b3e6926e7295494dd3be91c6934899 pwd1.txt pwd2.txt
經(jīng)過測試,這里的字典組合破解侠姑,不是說簡單的將兩個字典的內容合并去重形成 1 個字典進行去重创橄,而是說字典 1 的內容加上字典 2 的內容組合成一個字典,例如:
pwd1.txt 字典為:
admin
test
root
pwd2.txt 字典為:
@2021
123
那么組合后的字典就是這樣的:
admin@2021
admin123
test@2021
test123
root@2021
root123
字典+掩碼破解莽红,也是和上面一樣的組合方法妥畏,只不過 pwd2.txt 換成了掩碼
hashcat -a 6 e120ea280aa50693d5568d0071456460 pwd1.txt ?l?l?l
Mysql4.1/5
hashcat -a 3 -m 300 --force 6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 ?d?d?d?d?d?d
可以使用 select authentication_string from mysql.user; 查看當前數(shù)據(jù)庫中的密碼哈希值邦邦。
sha512crypt
, SHA512 (Unix)
sha512crypt , SHA512 (Unix) 破解,為了避免系統(tǒng)誤識別到特殊字符醉蚁,這里為哈希值加了單引號
hashcat -a 3 -m 1800 --force '$6$mxuA5cdy$XZRk0CvnPFqOgVopqiPEFAFK72SogKVwwwp7gWaUOb7b6tVwfCpcSUsCEk64ktLLYmzyew/xd0O0hPG/yrm2X.' ?l?l?l?l
可通過 cat /etc/shadow 獲取哈希值
或者不刪除用戶名燃辖,直接使用 --username 參數(shù)
hashcat -a 3 -m 1800 --force 'qiyou:$6$QDq75ki3$jsKm7qTDHz/xBob0kF1Lp170Cgg0i5Tslf3JW/sm9k9Q916mBTyilU3PoOsbRdxV8TAmzvdgNjrCuhfg3jKMY1' ?l?l?l?l?l --username
NTLM
NT Hash
hashcat -a 3 -m 1000 209C6174DA490CAEB422F3FA5A7AE634 ?l?l?l?l?l
LM Hash
hashcat -a 3 -m 3000 F0D412BD764FFE81AAD3B435B51404EE ?l?l?l?l?l
NetNTLM Hash
hashcat -a 3 -m 5500 teams.six::::822795daaf96s0a811fs6dd7b01dscssc601635cc1339basda6:e125cddcf51337asc7 -1 ?l?u ?1?1?1?1?d?d?d?d --force
MSSQL (2005)
hashcat -a 3 -m 132 --force 0x01008c8006c224f71f6bf0036f78d863c3c4ff53f8c3c48edafb ?l?l?l?l?l?d?d?d
WordPress 密碼 hash
hashcat -a 3 -m 400 --force '$P$BYEYcHEj3vDhV1lwGBv6rpxurKOEWY/' ?d?d?d?d?d?d
具體加密腳本在 ./wp-includes/class-phpass.php 的 HashPassword 函數(shù)
Discuz 用戶密碼 hash
hashcat -a 3 -m 2611 --force 14e1b600b1fd579f47433b88e8d85291: ?d?d?d?d?d?d
其密碼加密方式 md5(md5(
salt)
RAR 壓縮密碼
首先獲取 rar 文件的 hash 值,我們可以使用另一款哈希破解工具 John 提供的 rar2john 工具將 rar 文件里的 hash 提取出來网棍。
rar2john 下載地址:http://openwall.info/wiki/_media/john/johntheripper-v1.8.0.12-jumbo-1-bleeding-e6214ceab-2018-02-07-win-x64.7z
# 獲取 rar 文件 hash
rar2john.exe 1.rar
hashcat 支持 RAR3-hp 和 RAR5
對于 RAR5郭赐,示例如下:
hashcat -a 3 -m 13000 --force '$rar5$16$b06f5f2d4c973d6235e1a88b8d5dd594$15$a520dddcc53dd4e3930b8489b013f273$8$733969e5bda903e4' ?d?d?d?d?d?d
對于 RAR3-hp
hashcat -a 3 -m 12500 --force '$RAR3$*0*5ba3dd697a8706fa*919ad1d7a1c42bae4a8d462c8537c9cb' ?d?d?d?d
RAR3-hp 哈希頭為
*0*,而不是
*1*确沸,中間的數(shù)值是0(-hp)而不是1(-p)捌锭,-p 尚未得到支持,只支持 -hp
關于 RAR 參數(shù) -p 和 -hp 的區(qū)別:
-p:只對 RAR 文件加密罗捎,里面的目錄和文件名沒加密观谦;
-hp:對目錄中的文件名和子目錄都進行加密處理
ZIP 壓縮密碼
和 rar 破解過程一樣,我們需要先提取 zip 文件的哈希值桨菜,這里可以使用 zip2john 進行獲取豁状,zip2john.exe 在上面下載的 rar2john.exe 的同級目錄下。
# 獲取 zip 文件 hash
zip2john.exe 1.zip
hashcat -a 3 -m 13600 '$zip2$*0*3*0*18b1a7e7ad39cb3624e54622849b23c7*5b99*3*5deee7*a418cee1a98710adce9a*$/zip2$' --force ?d?d?d?d?d?d
這里 ZIP 的加密算法使用的 AES256
office 密碼
和 rar 與 zip 破解過程一樣倒得,我們需要先提取 office 文件的哈希值泻红,這里可以使用 office2john.py 進行獲取,office2john.py 在上面下載的 rar2john.exe 和 zip2john.exe 的同級目錄下霞掺。
# 獲取 office 文件 hash
python office2john.py 1.docx
測試中發(fā)現(xiàn) python 會出現(xiàn)告警信息谊路,不過這個告警信息不會影響程序執(zhí)行
hashcat -a 3 -m 9600 '$office$*2013*100000*256*16*cd8856416b1e14305a0e8aa8eba6ce5c*18cada7070f1410f3a836c0dfc4b9643*befcde69afeafb3e652719533c824413b00ce4a499589e5ac5bd7a7a0d3c4f3d' --force ?d?d?d?d?d?d
這里哈希頭為 2013 所以使用 9600 破解模式,如果是 2010 則要使用 9500 破解模式菩彬,2007 則使用 9400 破解模式缠劝。
WIFI 密碼
要破解 WIFI 密碼,首先要抓到 WIFI 的握手包骗灶,要想得到 WIFI 的握手包惨恭,就需要在監(jiān)聽時剛好有設備連接了該 WIFI,但這就需要運氣加成耙旦,因此可以我們可以主動將該 WIFI 的設備踢下去脱羡,一般設備就會自動連接該 WIFI,此時我們就抓到握手包了免都。
抓取 WIFI 握手包
1锉罐、將網(wǎng)卡處于監(jiān)聽狀態(tài)
airmon-ng check
airmon-ng check kill // 關閉影響監(jiān)聽狀態(tài)的進程
airmon-ng start wlan0
wlan0 是網(wǎng)卡名稱,一般都是 wlan0琴昆,如果不是則需要根據(jù)自己的情況進行修改氓鄙,可通過 iwconfig 進行查看網(wǎng)卡的名稱
當使用 iwconfig 查看網(wǎng)卡名稱變?yōu)?wlan0mon 說明此時網(wǎng)卡已經(jīng)處于監(jiān)聽模式了
2、掃描可用 WIFI
airodump-ng wlan0mon
3业舍、獲取wifi的握手包
airodump-ng -c (上一步掃描的 CH ) --bssid (想要破解 WIFI 的 bssid ) -w (握手文件存放目錄) wlan0mon
這里以 ssid 為 teamssix 的 WIFI 為例
airodump-ng -c 1 --bssid 5E:C1:1B:A2:37:F1 -w ./ wlan0mon
為了順利得到 WIFI 的握手包抖拦,可以將該 WIFI 下的設備強制踢下去
aireplay-ng -0 0 -a (要破解的 wifi 的 bssid ) -c (強制踢下的設備的 MAC 地址) wlan0mon
可以看到 teamssix 這個 WIFI 有一個設備正在連接升酣,該設備的 MAC 地址為:38:26:2C:13:D3:33,使用以下命令可以將其強制踢下去
aireplay-ng -0 0 -a 5E:C1:1B:A2:37:F1 -c 38:26:2C:13:D3:33 wlan0mon
等待設備重新連接后态罪,當右上角出現(xiàn) WPA handshake 的時候說明獲取成功
4噩茄、破解密碼
使用 aircrack-ng 將握手包轉換成 hccapx 格式
aircrack-ng 1.cap -j 1
hashcat -a 3 -m 2500 1.hccapx ?d?d?d?d?d?d?d?d --force
或者使用 hashcat 官網(wǎng)提供的在線工具進行格式轉換:https://hashcat.net/cap2hashcat/
hashcat -a 3 -m 22000 1.hc22000 ?d?d?d?d?d?d?d?d --force
5、其他
Hashcat 在有時破解的時候會提示 All hashes found in potfile!复颈,這表明該 hash 已經(jīng)被破解出來過了绩聘,可以使用 hashcat [哈希值] --show 查看已破解出來的明文密碼。
如果想再次破解已經(jīng)破解過的密碼耗啦,刪除 ~/.hashcat/hashcat.potfile 文件里的對應記錄即可凿菩。
在使用GPU模式進行破解時,可以使用 -O 參數(shù)自動進行優(yōu)化
在實際破解過程中帜讲,可以先使用 top 字典進行破解衅谷,不行再試試社工字典,比如姓名+生日的組合字典
Hashcat 參數(shù)優(yōu)化:
--gpu-accel 160 可以讓GPU發(fā)揮最大性能
--gpu-loops 1024 可以讓GPU發(fā)揮最大性能
--segment-size 512 可以提高大字典破解的速度
參考文章:
https://bipy.me/post/crack-rar/
https://www.sqlsec.com/2019/10/hashcat.html
https://blog.csdn.net/weixin_44064908/article/details/103920329