写在前边
用户名爆破和密码爆破是逃不开的话题之一。那么究竟什么是暴力破解呢?又有哪些危害?本文将带你探索一二!
01
原理科普
正式开始之前,先来了解一下与密码相关的内容。
为什么要使用密码?
说到密码大家肯定不陌生,在日常生活中都会接触到。文中现在所说的密码本质上就是口令。
在很多业务系统都存在前台和后台,用户浏览使用前端,管理员在后端进行管理,因为系统后端存在很多重要信息,是不允许用户看到的,因此我们需要在登录后台的时候设置一个口令,只有口令正确了才能进入后台。这样就能有效防止一些别有用心之人登录后台了。
什么是密码爆破?
前面说到了密码的作用,但如果攻击者想要进入后台肯定也是有办法的,那就是密码爆破。
密码爆破就是通过穷举法猜解密码的一种攻击手段,简单的说就是将密码进行逐个尝试直到成功为止。但人工手动爆破需要花费很长时间,这时就会利用计算机的强大性能帮助提升爆破速度。
靶场示例
要理解密码爆破,首先需要了解密码是如何传输的。此处以Dvwa靶场作为示例。
在浏览器开启抓包。
随机输入账号密码分析数据包。
可以看到,http使用的get请求方式,账号和密码都在url中。密码错误时会显示:
Username and/or password incorrect
那么在破解的时候就有思路了:
密码在url中的password字段,只需要循环遍历这个字段内容,再判断响应内容即可。
本文是笔者为了分析暴力破解写的一个简易脚本,对应环境为DVWA靶场中的暴力破解模块。
先看程序:
首先需要一个密码字典,密码字典就是一个存放了大量密码的txt文本文件(注意:假如你设置的密码在黑客的密码字典中,就会被破解成功)。
利用文件读取函数,遍历密码:
*Open函数打开当前目录的1000.txt文档,以只读方式打开“r”,复制赋值给变量f
读取变量f,以n为分割符(每一行代表一个密码),n就是换行符。
通过for循环依次取每一行数据。
构造url:
因为是网络请求,所以还导入了request模块:
通过request请求url:
通过if语句判断密码是否正确,因为密码错误会提示
Username and/or password incorrect
而这个提示会出现在html代码中,所以通过res.text来判断html中是否有这个提示,有就说明密码错误,否则就是正确的。
程序加入了head字段。
小科普:
User-agent是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
如果不携带这个UA字段,服务器就能一眼识别出来这是一个脚本程序,会对其进行拦截,反爬虫就用到了这个机制。加入了ua字段,就能进行伪装了。
Cookie是储存在用户本地终端上的数据,是网站为了识别用户和跟踪会话而存储在用户本地终端中的文本数据,也就是会话管理。一般情况下只需要这两个信息就够了。
02
密码爆破防范
针对密码爆破漏洞的修复建议:
1、提高密码的复杂度是防范密码爆破的第一道防线,因此密码设置一定要复杂,并及时修改系统默认密码。避免诸如000000、123456等弱口令。
较为常见的密码策略主要如下:
1)增加密码长度,密码越长被爆破的几率就会降低。建议12位数及以上,对于较为关键的密码最好能有16位;
2)能同时包含大小写字母、数字及特殊字符;
3)禁止使用邮箱、电话、用户名相关的密码。
2、加入验证码识别,每输入一次密码就需要对应的验证码,可以较为有效区分计算机和人,需要注意验证码需要保证能够随着页面或登录操作而同步刷新变化。
3、对密码爆破来说,如果要使用穷举法猜中答案,也就意味着会存在大量的登录次数,对此可以选择针对多次密码错误的用户锁定账户,或限制登录次数,从而有效增加密码爆破的时间成本。例如同一个账号密码连续错误5次后该用户即被锁定。
4、条件允许的情况下,可根据登录次数或时间定期更换密码,可以有效降低密码被爆破的风险。
— 往期回顾 —
关于安恒信息安全服务团队 安恒信息安全服务团队由九维安全能力专家构成,其职责分别为:红队持续突破、橙队擅于赋能、黄队致力建设、绿队跟踪改进、青队快速处置、蓝队实时防御,紫队不断优化、暗队专注情报和研究、白队运营管理,以体系化的安全人才及技术为客户赋能。
原文始发于微信公众号(安恒信息安全服务):九维团队-绿队(改进)| Python安全编码实践之防密码暴力破解科普
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论