一、说明
最近工作中需要实现一个需求:检查下公司网络中所有服务器及虚拟机,是否有使用默认账号和弱密码来登录管理的。于是先网上搜了下密码审计类的开源工具,发现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
|