暴力破解基础知识(一)
1、暴力破解原理
顾名思义,暴力破解的原理就是使用攻击者自己的用户名和密码字典,一个一个去枚举,尝试是否能够登录。因为理论上来说,只要字典足够庞大,枚举总是能够成功的!
但实际发送的数据并不像想象中的那样简单--“ 每次只向服务器发送用户名和密码字段即可!”,实际情况是每次发送的数据都必须要封装成完整的 HTTP 数据包才能被服务器接收。但是你不可能一个一个去手动构造数据包,所以在实施暴力破解之前,我们只需要先去获取构造HTTP包所需要的参数,然后扔给暴力破解软件构造工具数据包,然后实施攻击就可以了。
Web暴力破解通常用在,已知部分信息,尝试爆破网站后台,为下一步的渗透测试做准备。
2、暴力破解实例
这里使用dvwa渗透测试平台中的暴力破解模块来进行演示 先使用任意账号密码尝试登录,
并同时使用firefox F12进行抓包分析
3、必要的信息收集
这一步的作用是,收集构造HTTP数据包所需要的参数,比如cookie、get/post、referer、提交得字段名等。
cookie:用在暴力破解过程中保持和服务器的连接
referer:一些网站需要验证
referer信息,告诉服务器,我是从哪个页面转过来的
post/get: 决定数据包的提交方式
字段名:通常存放在cookie当中,知道正确的字段名,才能将数据正确的提交给服务器
可以看到cookie里面除了 username 和 password 字段之外还有一个 token,这个通常是用来防止CSRF攻击的。 收集到以上信息之后,我们就可以构造用于攻击的数据包。
4、实施攻击
需要用到的参数收集完毕之后,接下来就需要使用到爆破软件,这里我们先讲一个专用与爆破的软件——Hydra(九头蛇)
通过-h可以查看关于工具使用的命令
Hydra暴力破解
Hydra是一款非常强大的暴力破解工具,它是由著名的黑客组织THC开发的一款开源暴力破解工具。Hydra是一个验证性质的工具,主要目的是:展示安全研究人员从远程获取一个系统认证权限。
链接:https://github.com/maaaaz/thc-hydra-windows/releases/tag/v9.1
重要参数:
-h 帮助文档
-l LOGIN or -L FILE 使用指定登录名,或从文件加载多个登录名
-p PASS or -P FILE 使用指定密码,或从文件加载多个密码
-f / -F 发现了一个可用的用户名和密码对时,即终止爆破,通常与-M参数 一起使用。
-f表示每个主机,-F表示任意主机
-t TASKS 可以理解为线程数,每次启用指定数量个线程对单个主机进行爆破,默认值为16个,通常主机会限制同时连接的线程数量
-4 / -6 默认使用IPv4,也可以指定为IPv6 (put always in [] also in -M)
-v / -V / -d 分别是详细模式、展示每次登陆的用户名和密码对、debug模式
-s PORT 如果服务使用的不是默认端口,那可以这样指定
5、Hydra暴力破解
网站的协议是http协议,提交登陆的请求方式是POST方式
hydra -l admin -P C:\Users\Fuzj\Desktop\pass.txt -f -t 4 -vV 127.0.0.1 http-post-form "/DVWA-master/login.php:username=^USER^&password=^PASS^:Error"
-l admin指定用户名 -P C:\Users\Fuzj\Desktop\pass.txt 指定密码字典 -f 出现一个结果终止爆破,可根据情况添加参数 http-post-form 指定协议 /DVWA-master/login.php:username=^USER^&password=^PASS 指定爆破参数
6、Medusa暴力破解
Medusa(美杜莎)是一个速度快,支持大规模并行,模块化的爆力破解工具。可以同时对多个主机,用户或密码执行强力测试。Medusa和hydra一样,同样属于在线密码破解工具。Medusa是支持AFP, CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare),NNTP,PcAnywhere, POP3, PostgreSQL, rexec, RDP、rlogin, rsh, SMBNT,SMTP(AUTH/VRFY),SNMP, SSHv2, SVN, Telnet, VmAuthd, VNC、Generic Wrapper以及Web表单的密码爆破工具
medusa暴力破解ssh,首先目标机是开放了ssh服务 我们在受害主机上开启ssh服务,并检查服务状态
在攻击主机上执行爆破命令
medusa -u root -P pass.txt -h 192.168.142.136 -M ssh
-u指定用户名
-P指定密码字典(这两个参数大写都是指定字典) 等待一段时间后爆破的结果就会显示
根据爆破的结果进行远程登录,即获得目标主机的权限