Use of violence cracking tools
About Brute force
0x00 前言
暴力破解在很多地方都可以用到,比如burp就自带暴力破解的选项,很实用,但是在web以外的服务,比如爆破ftp密码,ssh密码等等,就不能使用了。所以,hydra以及medusa的使用了。
暴力破解就是指,对不知道的账号密码(就是口令)进行猜测尝试,这种尝试很少是漫无目的的随意爆破,这样是没有意义的,往往是基于字典进行暴力猜解,而字典的生成,无非就是弱口令合集或者是那种姓名的拼音合集,是有依据的。这样不仅省了很多不必要的测试,还可以加大爆破成功的几率。
0x01 工具介绍
hydra是一款开源的密码破解工具,目前也有windows版本,我没下载过,一般是用kali自带的,方便简单。medusa也是一款暴力破解密码的神器,但是我发现用hydra的比medusa的多,其实从效率上来说,medusa比hydra要高。这两个爆破神器几乎支持所有的协议。
hydra
参数
-R 继续上次的破解(比如某次被迫中断)
-S 采用SSL链接
-s 指定非默认端口(比如ssh默认的端口是22,但是也会被改为是2222)
-l 指定用户名
-L 指定用户名字典
-p 指定密码
-P 指定密码字典
-e ns 可选选项,n跟s不一定同时使用,n表示使用空密码试探,s是指定用户和密码进行试探(个人不是很理解s)
-C 使用冒号分分割格式,例如”登录名:密码”来代替-P/-L参数
-M 这个就是一一对应,把你的用户名字典跟密码字典一行一行一一对应
-o 指定结果的输出文件
-f 在使用-M参数以后,找到第一对登录名或密码的时候中止破解(-f跟-M以后我找个实际例子,结合使用下瞅一瞅)
-t 设置线程,默认是16
-w 就是设置超时的时间,比如使用某个账号密码登陆,在一定时间内没有回应,就进行下一组爆破,节省时间,默认是30s
-v/V 显示详细过程
server 目标ip
service 支持的服务
示例
破解ssh:
hydra -L username.txt -P password.txt -t 20 -w 20 -o result.txt 10.10.10.10 ssh
破解ftp:
hydra 10.10.10.10 ftp -L username.txt -P password.txt -t 20 -e ns -vV -o result.txt
破解web:
get:hydra -L username.txt -P password.txt -t -vV e ns 10.10.10.10 http-from-get/admin/index.php
post: hydra -L username.txt -P password.txt -s 80 10.10.10.10 http-post-from"/admin/login.php:username=^USER^&password=^password^&submit=login:sorry password serror"
hydra -L username.txt -P password.txt -o result.txt -s 80 10.10.10.10 http-post-from"/admin/login.php:username=^USER^&password=^PASS^:<title>wrong username or password</title>"
get跟post我还没有实际进行尝试,之后再做修改吧。命令基本上都看懂了,post暴力破解的命令第二个:后面跟的就是登录不成功的返回信息了,可以自定义的。
破解https:
hydra -m /index.php -l muts -P pass.txt 10.10.10.10 https
这个也待测试。。。
破解telnet:
hydra 10.10.10.10 telnet -l 用户 -P 密码字典 -t 32 -s 23 -e ns -f -V
破解RDP(远程登陆3389):
hydra 10.10.10.10 rdp -L username.txt -P password.txt -V
其他的暂时没有用过,碰到了我再补充。
medusa
参数
-h 指定主机,就是ip
-H 主机列表
-u 用户名
-U 用户名列表
-p 密码
-P 密码列表
-C 组合条目文件(类似于hydra的-C)
-O 文件的日志信息
-e ns 类似于hydra,n为空密码,s意为账号和密码相同
-M 模块执行名称
-m 传递参数到模块
-d 显示所有的模块
-n 使用非默认的端口
-s 启用SSL
-r 重试间隔时间,默认3秒
-t 设置线程
-L 并行化,每个用户使用一个线程
-f 在人任何的主机上找到第一个账号/密码后,停止破解
-q 显示模块的使用信息
-v 0-6显示的详细级别
-w 0-10错误的调试级别
-V 显示版本
-Z 继续上次扫描
示例
查看可用模块:
medusa -d
查看模块帮助:
medusa -M postgres -q
破解ssh:
medusa -M ssh -h 10.10.10.10 -U username.txt -P password.txt -e ns -f
破解mysql:
medusa -M mysql -h 10.10.10.10 -U username.txt -P password.txt -e ns -f
破解telnet:
medusa -M telnet -h 10.10.10.10 -U username.txt -P password.txt -e ns -f
其实使用的方式就是需要加个模块,然后跟参数都可以了。
0x02 小结
其实这两种工具的具体效率,还是要看字典的内容,如果字典非常给力,那么工具的效率自然就可以提高。至于工具的使用,不同情况下搭配不同的参数就可以了,具体的使用,还是要在实践中学习。
附带上两位大佬的博客: