hydra簡介
hydra(九頭蛇)是著名黑客組織thc的一款開源的暴力破解密碼工具,可以說是在市面上公開的工具中功能最強大的破解工具之一。
kali是默認安裝了hydra的,hydra幾乎支持所有協議的在線破解。hydra在網絡安全滲透過程中是一款必備的測試工具。
hydra支持的服務有:POP3,SMB,RDP,SSH,FTP,POP3,Te.NET,MYSQ... ...
hydra支持的服務
hydra安裝
一般都是預裝在kali中的,這里就不介紹安裝方法了。
hydra參數講解
還是通過-h參數查看幫助文檔:
hydra -h
我只使用過一些常用參數,有些沒用過的也只能將幫助文檔里的英文進行翻譯。所以英文詞匯量足夠的,可以直接看幫助文檔,直接跳過這里的參數講解,看后面的實操演示。
-R:繼續上一次中止/崩潰的任務。
-I:(這個是i的大寫)忽略已經修復的文件。
-S:指定爆破密碼時采用SSL連接。
-s:指定端口,適用于攻擊目標端口非默認的情況。例如:http服務使用非80端口。
-l:(這個是L的小寫)指定要爆破賬戶名,適合在知道用戶名爆破密碼時使用。
-L:指定賬戶名的字典文件。
-p:(小寫)指定單個密碼,適合在知道密碼爆破用戶名時使用。
-P:(大寫)指定賬戶密碼的字典文件。
-x:這個參數主要是在沒有合適的密碼字典文件時,讓hydra通過傳入的參數暴力破解密碼用的,用的比較少。
-y:在暴力破解時禁止使用指定的符號。
-r:在暴力破解時不適用隨機生成字符串的方式。
-e:可傳項nsr,n:空密碼試探,s:使用指定用戶和密碼相同,r:賬戶密碼反轉(比如賬戶root,密碼toor)。
-u:賬戶名循環使用,需要和-x一起使用才有效果。
-C:當用戶名與密碼存儲到一個文件時使用此參數,注意,文件(字典)存儲的格式必須為“用戶名:密碼”的格式。
-M:指定多個攻擊目標,此參數為存儲攻擊目標的文件的路徑(建議為絕對路徑)。注意:列表文件存儲格式必須為“地址:端口”
-o:將找到用戶密碼對寫入文件中而不是輸出到控制臺。
-b:指定-o參數輸出文檔的格式。
-f:只要爆破成功一個賬戶就停止該主機的爆破,需要和-M一起使用。
-F:只要爆破成功一個賬戶就停止爆破,需要和-M一起使用。
-t:指定爆破時的任務數量(可以理解為線程數),默認為16
-T:指定爆破時的任務數量,默認64,需要和-M一起使用。
-w:每次請求等待響應的時間。
-W:每個線程兩次請求之間的等待間隔。
-c:每次線程嘗試登錄的等待時間。
-4:使用IPv4的地址。
-6:使用IPv6的地址。
-v:詳情模式。
-V:顯示每次請求的賬戶名和密碼。
-d:debug調試模式。
-O:使用SSL的v2活著v3。
-K:不做失敗的重復請求,適用于-M批量掃描。
-q:不打印連接錯誤的信息。
-U:顯示服務端的詳細信息。
-m:需要和-U一起適用,用于指定模塊的特定選項
hydra實操演示-windows密碼破解
先檢查一下目標主機的賬戶,并設置一個密碼,沒有密碼也不是不可以,但是就顯得后面破解的動作沒有意義了。
這里是要利用共享文件夾的smb協議訪問,所以也檢查一下是否進行了共享:
net share
為了看到滲透的效果,這里提前將目標的遠程桌面打開:
打開遠程連接
檢查一下遠程連接打開后對應端口是否打開:
netstat -nao
除了3389是遠程桌面用的端口,還有445、139都是smb協議會用到的端口。
目標主機的ip地址是192.168.218.131,公網中找目標主機的話,可以用掃描工具隨機找,這里就直接在目標主機上查看就行:
ipconfig
用攻擊機掃描一下目標主機開放的端口:
目標主機的端口開發狀態
看到這幾個端口被開放了,就表示攻擊目標已經準備好了。
接下來就是要準備一些字典文件了,可以從Kali中找現成的來用:
Kali中自帶的密碼字典
但是我準備的機器密碼是自己隨意設置的,應該不會出現在Kali中的密碼字典中,這里就手動添加一下。
之后就可以用hydra嘗試破解密碼了,命令如下:
hydra -l chen -P passwords_john.txt smb://192.168.218.130
破解結果
這里準備的目標機器管理員賬戶是chen,一般品牌機可以使用一些默認的管理員賬戶,例如administrator、admin。
前面利用的是smb協議,利用rdp協議也是一樣的,只要將命令中的協議換一下:
hydra -l chen -P passwords_john.txt rdp://192.168.218.130
執行之后沒有獲取到密碼:
執行結果
從返回的結果中可以看到出現了一些錯誤。主要是freerdp模塊無法和目標主機建立連接導致的,這個無法連接不是賬戶名密碼不對,就是單純的無法連接,連密碼都還沒校驗。
遇到這種情況要耐心分析原因,不要輕易判定字典中沒有正確的密碼,可以嘗試根據報錯信息找找對應的帖子,或者換一個爆破工具。我這里選擇躺平,因為無法在Kali使用xfreerdp命令連接上Windows的遠程桌面,不清楚是freerdp工具有問題,還是目標Windows有什么策略限制了。
hydra實操演示-linux ssh密碼破解
準備一個Linux的目標機器,檢查一下ssh的端口是否打開:
目標主機的端口開發狀態
直接只用這個命令:
hydra -l root -P pass.lst ssh://192.168.218.129
執行后得到結果:
執行結果
現在應該比較少了,但是平時最好都加個參數-e nsr,會嘗試空密碼、賬戶密碼相同、賬戶密碼反轉,這些都是很低級的失誤,但是開發有時候就喜歡犯低級錯誤。
hydra實操演示-Linux ftp密碼破解
先查看一下有沒有ftp相關的端口被打開:
目標主機的端口開發狀態
這里我們選擇攻擊2121端口,命令如下:
hydra -L user.txt -P pass.txt ftp://192.168.218.129 -s 2121 -e nsr -vV
需要準備用戶名字典和密碼字典,按照比較常用的賬戶密碼就行,太多了就比較浪費時間。
執行結果
hydra實操演示-HTTP登錄
找一個不需要驗證碼的登錄接口,使用hydra進行爆破,命令如下:
hydra -l admin -P passwords_john.txt -f 192.168.218.129 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed"
稍微解釋一下,參數-f的作用是找到一個有效賬戶后停止爆破。參數http-post-form表示請求方式和傳參類型,現在應該不會有get請求進行登錄的,如果真遇到這類奇葩了,可以使用http-get作為參數。
后面一長串字符串第一個英文冒號前面是請求的地址,兩個冒號之間的是post的body數據,username和password這兩個參數名可以通過頁面上提交請求看F12中的network記錄,也可以直接看頁面的源碼中對參數的定義。至于^USER^和^PASS^是固定寫法,就是從前面命令中傳入的用戶名和密碼。最后第二個冒號之后的內容表示有這個字符串就是登錄失敗。
執行結果
這里要提一下,命令中第二個冒號之后跟的默認是失敗的依據,但是也可以通過S指定成功的依據,例如
hydra -l admin -P passwords_john.txt -f 192.168.218.129 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:S=index.php"
執行結果
hydra實操演示-MySQL密碼破解
還是先檢查有沒有將MySQL的端口打開:
目標主機的端口開發狀態
直接使用如下命令:
hydra -l root -P pass.txt mysql://192.168.218.129 -e nsr -vV
執行結果
hydra圖形化界面
可以通過命令xhydra打開hydra的圖形化控制臺:
hydra的圖形化控制臺
如果對hydra的參數有一定了解,基本都能將控制臺上的選項和參數對應起來。
這里就不對圖形化控制臺進行演示了,效果其實和命令行是完全一致的。
總結
hydra的功能非常強大,而且相對以前的版本,現在的hydra穩定性已經有了較明顯的提升。但是要想用hydra做好爆破工作,還是要多熟悉各個參數的作用,要積累各種爆破場景的經驗。
提醒一下,密碼爆破的核心其實是字典,hydra這類工具只是起到檢驗字典內容的作用。