暴力破解原理
暴力破解法(Brute Force)又被称为穷举法,是一种密码分析的方法,即将密码进行逐个推算直到找出真正的密码为止。例如一个已知是四位并且全部由数字组成的密码,其可能共有10000种组合,因此最多尝试9999次就能找到正确的密码。理论上除了具有完善保密性的密码以外,利用这种方法可以破解任何一种密码,问题只在于如何缩短试误时间。有些人运用计算机来增加效率,有些人辅以字典来缩小密码组合的范围。
暴力破解一般来说有三种方式:
- 排列组合:将数字、大写字母、小写字母、各种特殊字符排列组合,若是在不知道密码的长度情况下需要更多的逐渐增多位数,这样的运算量非常的大,这种方法需要高性能的破解算法和CPU/GPU做支持。
- 字典破解:通过社会工程学与人们常用的密码建立破译字典,然后逐个尝试。
- 排列组合+字典破解:两种方式的结合,增大破解的几率
从暴力破解的方式我们就可以看出来,他有一个简单、通俗易懂的名字,叫做:猜。一个个试,总有一天可以试出来,因为大小写字母、数字、特殊符号的个数是有限的,他们的排列组合也是有限的,只是特别多而已。
这样的方式在遇到弱口令是十分有效的,例如简单的 123456、电话号码、abcde。
所以只要密码设置的足够长,足够复杂便可以防范暴力破解这样的攻击方式。
暴力猜解之BS架构
一般是对web应用程序中的高权限用户进行猜解,如网站的内容管理系统账户。一般针对 B/S的暴力猜解,使用Burp Suit 镜像表单爆破。
基于表单的暴力破解
我们采用pikachu作为示例
先通过burp抓包
抓包之后,进行暴力破解
结果,找到了密码
这是最简单的暴力破解方式,也就是没有验证码之类的情况下,就这么暴力破解。再看下一种情况。
基于验证码暴力破解
**在客户端验证的 **
也就是验证码是通过前端验证的,那么这种我们抓包之后,不需要验证码字段都可以实验破解。
on client常见问题:不安全的前端js实现验证码;不安全的将验证码在cookie中泄露;不安全的将验证
码在前端源代码中泄露
抓包,删掉验证码数据,把密码数据作为变量
攻击
效果:也能破解出来
然后看一下网页源代码
**在服务端校验的 **
看网页源代码,你就找不到前端js的校验代码部分了,因为这是服务端校验的,我们可以看服务端的代码
既然有了服务端校验,我们再通过上面的抓包删除验证码数据的情况就不行了
那么我们还使用这个数据包,并且使用刚才抓取到的验证码数据
再攻击,破解成功
这个原因是什么?on server常见问题:验证码在后台不过期,导致长期使用(php默认session是24分钟过期);验证码校验不严格,逻辑出现问题;验证码设计的太过简单和有规律的被猜解。
*Token***防爆破示例 **
有些网站是基于token值来做暴力破解防范的,比如京东淘宝等网站,刚开始登录时没有验证码,输入几次错误密码之后才有,我们抓包它的话你就会看到有token值,我们这里还是用pikachu来进行测试。
攻击,从结果可以看到,没有破解成功。
因为token的值每次请求之后,token值都会发生变化。那么如何处理呢,我们应该把每次响应回来的新的token值替换到每次后续请求中,所以token值是不能防范暴力破解的,不过防止csrf是很有效的。
解决方法
注意:破解方式为音叉;线程数设为1;Grep-Extract设置好开始 token" value="结束为 " />
,有郊载荷设为递归搜索 "token" value=" ,先设置攻击类型,然后设置密码和token值两个变量
配置参数,线程数改为1,因为有token,所以不能采用多线程的方法。
再配置参数
然后配置载荷
第一个密码载荷
第二个,选择我们的递归搜索
开始攻击,由于我们用的是1个线程,所以速度可能比较慢
如果你查看网页源代码的时候,发现代码中有验证码的数字,也就是代码没写好,出了图片验证码之
外,它把数据写到了代码中,那么验证码的绕过,我们也可以通过这种方式来搞。
以前微软的很多网站都有这种漏洞,我们关闭代理,然后去wooyun找找看,多看看别人的,有助于拓宽思路。
C/S架构暴力猜解
C/S即客户端/服务器,基于C/S架构的应用程序,如 ssh、ftp、sql-server、mysql 等,这些服务往往提供一个高权限的用户,而这个高权限的用户往往可以进行执行命令的操作,如 sql-server 的 sa ,mysql的root,oracle的sys和system帐号,使用这些高权限的用户能在很大程度上给开发人员带来方便,但如果口令被破解带来的危害也是相当大的。C/S架构主要使用的破解工具 Hydra、Bruter、X-scan
*hydra***的使用 **
hydra是著名黑客组织thc的一款开源的暴力密码破解工具,可以在线破解多种密码。官网:http://www.thc.org/thc-hydra,可支持AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP,FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-PROXY, HTTPS-FORM-GET, HTTPS,FORM-POST, HTTPS-GET, HTTPS-HEAD, 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, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP, SOCKS5, SSH (v1 and v2), Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC and XMPP等类型密码。
这款暴力密码破解工具相当强大,支持几乎所有协议的在线密码破解,其密码能否被破解关键在于字典是否足够强大。对于社会工程型渗透来说,有时能够得到事半功倍的效果。本文仅从安全角度去探讨测试,请勿用于非法事件。
在kali中已经集成好了,直接使用即可
通过命令来使用的,参数如下
hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns]
[-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV]
server service [OPT]
-R 继续从上一次进度接着破解。
-S 采用SSL链接。
-s PORT 可通过这个参数指定非默认端口。
-l LOGIN 指定破解的用户,对特定用户破解。
-L FILE 指定用户名字典。
-p PASS 小写,指定密码破解,少用,一般是采用密码字典。
-P FILE 大写,指定密码字典。
-e ns 可选选项,n:空密码试探,s:使用指定用户和密码试探。
-C FILE 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数。
-M FILE 指定目标列表文件一行一条。
-o FILE 指定结果输出文件。
-f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解。
-t TASKS 同时运行的线程数,默认为16。
-w TIME 设置最大超时的时间,单位秒,默认是30s。
-v / -V 显示详细过程。
server 目标ip
service 指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt
http-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2
ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp
rsh cvs svn icq sapr3 ssh smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd
firebird ncp afp等等。
OPT 可选项
**使用: **
1.手动创建用户名字典和密码字典,这里只是为了演示,只加了几个用户名和弱口令。真正破解时,需要利用密码字典生成器生成强大的字典
比如上传user.txt文件和top100.txt
2.破解ssh:
指令:hydra -L user.txt -P top100.txt -vV -e ns 192.168.0.20 ssh
比如我们先上传文件,就放到/root目录下吧
然后通过kali系统爆破一下它自己吧,如下图,成功了
破解成功,直接显示结果。也可以使用 -o 选项指定结果输出文件。这个我们可以试试看
hydra -L user.txt -P top100.txt -vV -e ns -o save.log 192.168.1.104 ssh
不过现在暴力破解很多都用的GPU,GPU比CPU的计算能力更强,挖矿、暴力破解等好多都用GPU,因为快。GPU更贵昂。
CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。
暴力破解防御
1、sleep
2、Token
3、限制尝试次数,锁定账户
4、二次验证
5、reCAPTCHA(ip验证)
6、行为识别
7、waf防御
8、间隔时间强制修改密码
9、取消密码登录
个人用户安全建议
1、使用复杂密码
2、不同网站使用不同密码
3、定期修改密码
4、防止被钓鱼
版权归原作者 非酋King 所有, 如有侵权,请联系我们删除。