一、暴力猜解简介
暴力猜解简单来说就是将密码进行逐个推算,直到找出真正的密码为止。
二、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
三、B/S架构暴力猜解
一般是对web应用程序中的高权限用户进行猜解,如网站的内容管理系统账户。一般针对 B/S的暴力猜解,使用Burp Suit 镜像表单爆破。
API接口暴力猜解参考 https://xz.aliyun.com/t/6330
四、防范暴力猜解
防止暴力破解是非常简单的,无论是B/S架构或者是C/S架构,下面总结出以下几点。
1、密码的复杂性
毫无疑问,密码设置一定要复杂,这是最基本的,最低层的防线,密码设定一定要有策略:
①对于重要的应用,密码长度最低位8位数以上,尽量在8位数之16位数之间。
②绝不允许以自己的手机号码,邮箱等关键“特征”为密码。
③用户名与密码不能有任何联系,如用户名为“admin”,密码为“admin888”。
④仅仅以上三点是不够的,比如说“12345678”、“222222222”、“11111111”这样的密码,长度够了,但是也极为危险,因为这些即为弱口令。这些密码一般都已经被收录到了攻击者的字典之中。所以就必须要增加密码的复杂性。比如以下方案:
·至少一个小写字母(a-z)
·至少一个大写字母(A-Z)
·至少一个数字(0-9)
·至少一个特殊字符(*&^%$#@!)
如果你感觉你的密码足够强大,就让攻击者去攻击几年吧,虽然这只是句玩笑,也说明了密码策略的重要性,密码复杂,不单单是对暴力破解有防范,也对其他的攻击有防范,例如MD5密码破解,你的密码足够复杂,CMD5解密也是比较难的。
2、验证码措施
验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans
Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机和人的公共全自动程序。
使用验证码可以有效的防止:恶意破解密码、刷票、论坛灌水等。可以说验证码最主要的是防范“机器人”
至今验证码不单单可以有效的防止暴力破解,刷票,网络水军,也可以要用来防护CSRF等其他一些不安全的因素。
虽然说验证码简单,有效,但是也看什么类型的验证码,至今验证码可以分为很多种,有图片验证码,有手机验证码,有邮箱验证码,还有答题验证码。
3、登陆日志(限制登录次数)
使用登陆日志可以有效的方式暴力破解,登陆日志意为:当用户登录时,不是直接进行登陆,而是去登陆日志里面去查找,用户时候不是已经登陆错误了,还有登陆错误的次数,时间。如果连续是连续错误,将采取某种措施。
例如Oracle数据库就有一种机制,当密码输入错误三次之后,每次登陆时间间隔为10秒钟,这样就大大减少了被破解的风险,我们完全可以做到登陆第三次错误后延时10秒登陆,第四五延时15秒,这样也是一种有效的解决暴力破解的方案。
有些朋友可能会问,当登陆错误几次之后,我们直接封锁账户24小时,这样不就更方便了吗?显然这样做是可以,但是不要忘记,攻击者是不能在破解了,但是你还能登陆吗?所以,不要直接进行封锁账户。
暴力破解防范还有其他很多种方法,读者可以根据自身的需求去寻找合适自己的方案。