防止密码暴力破解的常见防御措施(DVMA)
在前文中我们已经学习了如何利用代码和工具对外部网站的密码进行破解。本文将聚焦于如何保护自己的网站防止他人进行暴力破解。你可能在生活中遇到过类似情况比如有人尝试用已知手机号破解支付宝账号。那么像支付宝这样的平台是如何防御暴力破解的呢本文将分级别介绍常见的防御措施并讲解如何利用工具进行相关测试。实验环境说明本次实验依旧基于DVWA 靶场安全级别设置为Medium。进入 Brute Force 相关题目进行测试。一、Medium 安全级别延迟响应防御查看源码时会发现多了一行 sleep(2)即登录失败后服务器会延迟 2 秒返回结果。主要特点用户名和密码校验收到用户名和密码后直接查表进行匹配。延时响应当用户名或密码不匹配时服务端延迟 2 秒响应。影响分析显著延长暴力破解所需总时间降低破解效率。但本质上只是增加时间成本如果攻击者有足够耐心仍可能成功破解。二、High 安全级别引入 Token 防御High 级别的防御措施更加完善主要包括CSRF Token 校验具体什么是 CSRF Token 校验可以参考Check Anti-CSRF Token (AI)-CSDN博客除用户名和密码外新增了名为 ntc srf token 的一次性 Token。每次请求都需带上服务端下发的 Token且 Token 用过即失效。防止第三方网站利用已登录用户身份发起伪造请求。随机延迟响应sleep 时间变为 0~3 秒随机进一步增加破解难度。工具测试与配置要点1. 抓包分析开启 Burp Suite 代理登录抓包发现请求中新增了 Token 字段。2. Intruder 模块配置这次有两个字段需要添加一个是密码一个是 Token如下图破解模式选择sniper 不适用因为只能拆解一个字段。pitchfork 可以考虑但实际上也不适用因为 Token 是一次性的不能与密码字典一一对应。cluster bomb 也不行因为 Token 用一次即失效不能与密码做交叉验证。因此这里只能用 pitchfork 模式。第一个字段为密码载入密码字典如下图3. 递归匹配 Token这里需要用到 Burp Suite 的 recursive grep 递归匹配模式从上一次 HTTP 响应中提取 Token。在 Options 中设置 grep extract 规则匹配隐藏字段中的 Token 值。我们要去添加一个规则。这个规则当然是从 http 响应结果值里面去匹配到一个文本但是怎么匹配呢你现在又没有一个响应结果啊所以我们先拿到一个响应结果再说。实际上在 DVWA 的关卡里面它是怎么样去保存这个 cookie并且发给服务器的呢它是放在了前端的一个 input 的 hidden 属性字段里面所以我们选中它。选中它之后BP 会生成一个规则。它的意思是什么呢在上一次 http 的响应结果里面如果说有一串文本它的前面是 value 等于号 , 后面是(空格)/这串东西的话那中间的这个内容就是我们需要的 token 值。点了确定后就有这个规则了。第一次请求需手动填入 Token后续自动递归提取。看一下我这个啊第一次的 Token 你要复制到下面那个框框里面如果你是从上面的步骤一直做下来的正常来说是只有一个规则的博主这里有两个纯纯手贱。我们来分析一下这个 token 是我们填进去了然后发起了一次 http 的请求服务器又给了他一个 token。他把拿到的这个 token 作为第二次请求然后发起请求又得到一个 token把这个 token 作为第三次请求的 token它是串行依次这样去访问的。这边排序一下就可以知道哪个是正确的密码了就是这个 password。4. 结果过滤与标记我们其实在看上面的图的时候会有个疑问如果我们的数量太大了一下子抓包的响应数太多怎么办那我们可以先过滤一下。回到题目来我们这次输入一个正确的账号密码看看。Welcome to the password protected areaadmin这一串就是我们要过滤的内容。然后我们要再抓一次包不然第一次的 Token 就没有了我们也就不能叠罗汉了。之前做过的操作再复刻一遍就行了。可在 Options 中设置 grep match如响应结果中包含 Welcome to the password protected areaadmin 即自动打标记便于快速定位正确密码。这个 √ 是它自己打的。三、Impossible 安全级别账户锁定机制Impossible 级别的防御措施极为严格主要包括Token 校验持续存在每次请求仍需有效 Token。错误次数限制与账户锁定-连续输错密码超过三次账户将被锁定 15 分钟。-理论上一小时最多尝试 4 次一天最多 96 次极大降低暴力破解的可能性。锁定时间可进一步延长如支付宝等平台可能锁定一小时、一天或需短信/人脸识别等方式解锁。错误次数记录数据库记录每个账户的错误尝试次数超过上限即禁用账户。进一步延长响应时间sleep 时间进一步增加提高攻击成本。本质分析通过限制尝试次数从根本上杜绝了暴力破解的可能是最有效的防御方式之一。