您的位置 首页 php

密码暴力破解工具:hydra

hydra简介

hydra(九头蛇)是著名黑客组织thc的一款开源的暴力破解密码工具,可以说是在市面上公开的工具中功能最强大的破解工具之一。

kali 是默认安装了hydra的,hydra几乎支持所有协议的在线破解。hydra在网络安全渗透过程中是一款必备的测试工具。

hydra支持的服务有: POP3 SMB RDP SSH FTP ,POP3, Telnet ,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:使用 ip v6的地址。
-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这类工具只是起到检验字典内容的作用。

文章来源:智云一二三科技

文章标题:密码暴力破解工具:hydra

文章地址:https://www.zhihuclub.com/151838.shtml

关于作者: 智云科技

热门文章

网站地图