一、說明
最近工作中需要實現一個需求:檢查下公司網絡中所有服務器及虛擬機,是否有使用默認賬號和弱密碼來登錄管理的。於是先網上搜了下密碼審計類的開源工具,發現hydra這個工具用的人蠻多的,功能也很強大,於是拿來安裝測試一下!
Hydra 可以根據使用者指定的用戶字名典文件、密碼字典文件、目標IP列表來暴力破解目標系統登錄用戶名和密碼。並且其支持多種協議以及並發連接!
GitHub項目地址:
1
|
https://github.com/vanhauser-thc/thc-hydra
|
經過官方測試,其可以在以下系統中安裝使用:
Linux, Windows/Cygwin, Solaris, FreeBSD/OpenBSD, QNX (Blackberry 10) and MacOS。
本文使用的版本 (Hydra v8.7) 目前支持的協議有:
Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, 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-HEAD, HTTPS-POST, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin, Rsh, RTSP, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5, SSH (v1 and v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC and XMPP.
二、安裝hydra
本機環境:
1
2
3
4
|
OS: CentOS Linux release 7.4.1708 (Core)
yum repo: http://mirrors.aliyun.com/repo/Centos-7.repo
SELinux: disabled
Firewalld: disabled
|
2.1 下載hydra安裝包
1
2
3
4
5
6
|
2.1.1 git下載
[root@imzcy ~]# git clone https://github.com/vanhauser-thc/thc-hydra.git
2.1.2 zip包下載
[root@imzcy ~]# wget https://github.com/vanhauser-thc/thc-hydra/archive/master.zip
|
2.2 安裝依賴包
可以根據自己的需求來安裝依賴包,需要使用到哪些模塊就安裝哪些模塊需要的包!
2.2.1 以下是官方文檔依賴包相關說明:
1
2
3
4
5
6
7
|
以下是使用用Ubuntu / Debian系統時,可以安裝的一些可選模塊所需的補充庫(將啟用除Oracle,SAP R / 3,NCP和Apple歸檔協議之外的所有可選模塊和功能)
apt-get install libssl-dev libssh-dev libidn11-dev libpcre3-dev \
libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev \
firebird-dev
對於所有其他Linux和基於BSD的系統,請使用系統軟件安裝程序並查找類似命名的庫,如上面的命令所示。在所有其他情況下,您必須下載所有源庫並手動編譯它們。
|
2.2.2 我這里因為只測試ssh、smb、rdp、telnet這幾個模塊。所以只安裝如下所示包
1
|
[root@imzcy ~]# yum -y install gcc libssh-devel openssl-devel
|
2.3 編譯安裝
1
2
3
4
|
[root@imzcy ~]# unzip master.zip
[root@imzcy ~]# cd thc-hydra-master
[root@imzcy thc-hydra-master]# ./configure
[root@imzcy thc-hydra-master]# make && make install
|
三、hydra語法格式及常用選項
語法:
1
2
3
|
hydra [some command line options] [-s PORT] TARGET PROTOCOL [MODULE-OPTIONS]
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] [-c TIME] [-ISOuvVd46] [service://server[:PORT][/OPT]]
|
常用選項:
選項 | 說明 | 示例 |
---|---|---|
-h | 查看所有可用的命令行選項 | hydra -h |
-U | 檢查模塊是否具有可選參數 | hydra -U smb |
-l | 指定用戶名 | -l zhangsan |
-p | 指定密碼 | -p 123456 |
-C | 使用冒號分隔的user:passwd格式,而不是-l/-p | -C zhangsan:123456 |
-L | 指定用戶名字典文件 | -L /root/user.dict |
-P | 指定密碼字典文件 | -P /root/passwd.dict |
-M | 指定目標IP列表文件 | -M /root/ip.dict |
-e | 嘗試“嘗試登錄為密碼”和“空密碼” | -e ns |
-s | 指定對應模塊使用的端口,例如:如果ssh端口不是默認22,這里可以指定 | -s 2222 |
-t | 指定線程數,默認16 | -t 1 |
-vV | 顯示詳細破解過程 | -vV |
-o | 指定將結果輸出到文件 | -o /root/result.txt |
-b | 指定-o選項輸出的結果信息的類型,默認為文本信息,可以自定為jsonv1和json格式。 | -b json |
-R | 恢復先前中止/崩潰的會話(當hydra被Control-C中止,被殺死或崩潰時,它會留下一個“hydra.restore”文件,其中包含恢復會話所需的所有信息。此會話文件每5分鍾寫入一次。注意:hydra.restore文件不能復制到不同的平台(例如從小端到大端,或從Solaris到AIX)) | -R |
-I | 忽略現有的恢復文件(不要等待10秒) | -I |
-S | 執行SSL連接 | -S |
-f | 在使用-M參數后,找到第一對登錄用戶和密碼的時候終止破解 | -f |
-W | 設置最大超時時間,單位秒,默認30秒 | -W 60 |
-q | 不要打印有關連接錯誤的消息 | -q |
四、使用ssh模塊暴力破解linux服務器用戶密碼
4.1 指定正確的用戶名、密碼、目標IP、模塊信息,查看一次破解的過程
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@imzcy ~]# hydra -l root -p 123456 192.168.1.10 ssh
Hydra v8.7-dev (c) 2018 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2018-11-18 18:09:46
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 1 task per 1 server, overall 1 task, 1 login try (l:1/p:1), ~1 try per task
[DATA] attacking ssh://192.168.1.10:22/
[22][ssh] host: 192.168.1.10 login: root password: 123456
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2018-11-18 18:09:57
[root@imzcy ~]#
|
4.2、指定用戶名、密碼字典及IP列表破解
如下所示命令各選項含義:-L指定用戶名字典文件、-P指定密碼字典文件、-M指定ip列表文件(非標准端口的主機可以加冒號分隔指定端口)、-o指定計算結果以文本格式輸出到results.txt文件中、-vV顯示詳細計算過程信息、-t指定線程為20、-e ns嘗試使用空密碼和單密碼登錄、指定使用模塊為ssh。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[root@imzcy ~]# cat user.dict
root
admin
[root@imzcy ~]#
[root@imzcy ~]# cat passwd.dict
123456
111111
111222
000000
00000000
[root@imzcy ~]#
[root@imzcy ~]# cat ip.dict
192.168.1.11
192.168.1.12:2222
192.168.1.13
[root@imzcy ~]#
[root@imzcy ~]# hydra -L /root/user.dict -P /root/passwd.dict -M ip.dict -o /root/results.txt -vV -t 20 -e ns ssh
|
五、使用smb模塊暴力破解windows服務器登錄密碼
windows破解和linux使用選項基本一致,只是使用的模塊不同而已,這里就不多做介紹了。但是需要注意的是windows遠程桌面rdp模塊和文件共享smb模塊都只能使用單線程。
1
2
|
[root@imzcy ~]# hydra -l zcy -p 13456 192.168.43.226 rdp
[root@imzcy ~]# hydra -L /root/user.dict -P /root/passwd.dict -M ip.dict -o /root/results.txt -vV -t 20 -e ns smb
|
六、補充安裝模塊需要的依賴包
假如有個模塊我們因為之前不需要用到或則忘記安裝導致沒有其需要的依賴包,那么使用這個模塊的時候就會報依賴包錯誤:[ERROR] Compiled without OPENSSL support, module not available!
1
2
3
4
5
6
|
[root@imzcy ~]# hydra -l admin -p 123456 -t 1 192.168.43.226 smb
Hydra v8.7-dev (c) 2018 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2018-11-18 14:01:01
[ERROR] Compiled without OPENSSL support, module not available!
[root@imzcy ~]#
|
這個時候,我們只需要安裝好這個依賴包,然后重新編譯一下hydra就行了。(在之前編譯過的包里面,需要執行以下make clean清除下之前的緩存。重新下載的新的hydra安裝包,就不需要執行make clean了。直接編譯配置完編譯安裝即可!)
1
2
3
4
5
6
|
[root@imzcy ~]# yum -y install openssl-devel
[root@imzcy ~]# cd thc-hydra-master/
[root@imzcy thc-hydra-master]# make clean
[root@imzcy thc-hydra-master]# ./configure
[root@imzcy thc-hydra-master]# make && make install
|