龙空技术网

密码暴力破解工具:hydra

会测试的鲸鱼 5837

前言:

眼前同学们对“破解密码神器”大约比较关怀,朋友们都需要了解一些“破解密码神器”的相关资讯。那么小编同时在网络上网罗了一些有关“破解密码神器””的相关知识,希望姐妹们能喜欢,各位老铁们快快来学习一下吧!

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:使用IPv6的地址。-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  -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这类工具只是起到检验字典内容的作用。

标签: #破解密码神器