暴力破解
简介
暴力破解也可称为穷举法、枚举法,是一种常见的网络安全攻击方法,它利用计算机程序自动尝试大量的密码组合来破解密码。这种攻击方法通常用于获取未经授权的访问权限,如入侵网络系统或个人账户。
漏洞成因
存在默认用户
未修改默认密码
密码强度不够
开启不必要的服务
后端代码的校验方法不合理
…
攻击方法
使用穷举法来对密码进行逐个猜解,通常会使用字典来提高破解效率。
字典
定义
一个包含若干字符集合的文件,一般用于暴力破解猜解。
生成工具
crunch
简介
crunch 是一个 kali 自带生成字典的一个工具,一种创建密码字典工具,该字典通常用于暴力破解。使用 Crunch 工具生成的密码可以发送到终端、文件或另一个程序。
基本语法
crunch <min-len> <max-len> [<charset string>] [options]
options
-b
指定文件输出的大小,避免字典文件过大。
-c
指定文件输出的行数,即包含密码的个数。
-d
限制相同元素出现的次数。
-s
指定一个开始的字符,即从自己定义的密码 xxxx 开始。
-e
定义停止字符,即到该字符串就停止生成。
-f
调用库文件(/etc/share/crunch/charset.lst)。
-i
改变输出格式,即 aaa,aab -> aaa,baa。
-I
通常与 -t 联合使用,表明该字符为实义字符。
-m
通常与 -p 搭配。
-o
将密码保存到指定文件。
-p
指定元素以组合的方式进行。
-q
读取密码文件,即读取 pass.txt。
-r
定义重某一字符串重新开始。
-t
指定密码输出的格式。
-u
禁止打印百分比(必须为最后一个选项)。
-z
压缩生成的字典文件,支持 gzip、bzip2、lzma、7z。
举例
生成字母组合
crunch 1 4
生成指定字符组合
crunch 8 8 -t 199505%% -e 19950530
生成缺位的手机号码
crunch 11 11 -t 1503453%%%% -o 1.txt
生成元素的组合
crunch 7 7 -t %%%.com -s 111.com -e 123.com
社工密码生成器
在线网站
https://password.iculture.cc/index
下载到本地使用
https://github.com/zgjx6/SocialEngineeringDictionaryGenerator/blob/master/index.html
字典优化技巧
根据注册提示信息进行优化:对目标站点进行注册,摸清楚账号密码的一些限制,比如目标站点要求密码必须是 6 位以上,字母数字组合,则可以按照此优化字典,比如去掉不符合要求的密码。
如果爆破的是管理后台,往往这种系统的管理员是 admin/administrator/root/manager 等用户名的机率比较高,可以使用这几个账号加随便一个密码尝试登录,观看返回的结果,确定用户名。
如:输入 xxx/yyy 返回"用户名或密码错误",输入 admin/yyy 返回"密码错误",则可以确定用户名是 admin。
因此可以只对密码进行爆破即可,提高效率。
…
HTTP 工作流程
1.客户端向 DNS 服务器发起查询请求,请求目标域名的 IP 地址。
2.客户端通过三次握手和 Web 服务器建立 TCP 连接。
3.客户端向 Web 服务器发起 GET 请求。
GET包的内容
Host:描述客户端希望请求的网站 URL。
User-Agent:描述了客户端的操作系统和浏览器版本。
Cookie:描述客户端的身份信息。
4.服务器向客户端发送响应报文并包含内容。
响应状态码
1XX:通知消息
2XX:请求成功
200:OK
3XX:重定向
302:临时重定向
307:永久重定向
4XX:客户端错误
404:网页未找到
5XX:服务器错误
500:服务器内部错误
5.客户端和服务器通过四次挥手结束 TCP 连接。
Web 暴力破解
由于不同的网站登录认证的程序写法不一样,所以需要根据具体情况来构造正确格式的请求包进行猜解。一般使用 Burpsuite 来构造具体数据包。
防护方法
使用随机图形验证码,在不影响用户体验的前提下尽可能复杂。
后端验证,不要做前端验证,并且保证后端验证的合理性。
验证码不能复用,使用后立马销毁并重新生成一个验证码。
使用 6 位以上长度的手机验证码。
做双因素认证。
使用密码多次输错后账户锁定方式。
定期更换密码,并保证密码的复杂度。