用户名加口令(也就是常说的密码)仍然是目前最常用的身份验证方式。在身份识别一文中,我们介绍了几种常用的针对口令验证的攻击和防范技术。今天这篇着重讲一下其中的暴力破解。

暴力破解

暴力破解的基本思想很朴素:通过不断重试来猜测口令。不过现在的系统都有防止自动化登录的机制,如验证码、多次输入错误口令后用户受限等;同时系统基本都是采用存储和对比口令摘要的方式进行验证。而前面讲过,摘要运算是单向加密,也就是无法从摘要计算出原文。因此不断重试并不是指采用尝试不同的口令直接登录系统的方式,而是通过尝试计算不同原文的摘要,试图找到与目标用户的口令摘要一致的摘要,从而确定口令原文的破解方式。多说一句,目标用户的口令摘要比较容易拿到:通过网络抓包或从数据库拖库得到。
对于上面的问题,最简单的方法就是对不同的原文进行穷举计算了。但实际上是不可行的,比如,对于10位的大小写字母加数字(先不算特殊字符了)组成的口令,其数量是(26×\times× 2+10)10 = 6210 = 8 .39 ×\times× 1017,这个就约等于84亿亿,按照现在PC主频计算,即使我们每纳秒可以校验一个摘要,也就是一秒钟10亿次,全部穷举也需要26年, 这还是中等强度的口令,如果是14位长度的口令,穷举就需要近4亿年。
那我们换一种思路,利用云计算、分布计算等方法,将上述给定长度口令的所有摘要事先计算出来,然后保存到一个巨大的数据库存储中,在需要破解时直接查询摘要所对应的口令原文。我们先计算这样的数据库存储都多大。就以摘要比较短的MD5为例,每个摘要是16个字节(128位), 10位口令产生的存储数据量是(10+16)×\times× 8.39×\times× 1017字节,约2.03万亿GB ,也就是说如果用PC里常见的1TB的硬盘,也得需要20亿块,按照目前机械硬盘中最便宜的容量价格比0.15元/GB,也需要3050亿元。另外,这还只是10位口令长度,128位摘要长度的情况……

彩虹表

由此可见,穷举计算或存储所有的摘要都是不实际的。在计算机科学里,这实际上就是经典的时间和空间选择问题。我们在开发设计程序时,有时就会遇到这样的问题:设计数据表时多存储一些冗余数据,程序查询执行时就会方便快捷很多;反之如果数据表中冗余数据较少,甚至没有,那程序查询时就要多做很多工作,查询执行的速度就会变慢。上述第一种情况就是用空间换时间,第二种情况就是用时间换空间。
回到破解口令的难题,那些可能把破解所有口令作为毕生目标的黑客们经过不断努力后发现,单纯利用时间换空间(直接穷举计算)或者空间换时间(存储所有的摘要)都是走不通的。那如果把两者结合起来呢,也就是说既消耗一部分时间也消耗一部分空间,达到两者的某种平衡,是不是就会让破解的难度大大降低呢?在此背景下,彩虹表这一暴力破解口令的利器就诞生了。彩虹表利用哈希链表的形式,保存了明文与哈希值的运算关系,但它只保存运算关系中的部分数据(相比较全部存储,空间消耗大大减少),破解者在使用彩虹表时,需要根据保存的数据自行计算还原整个运算关系(相比较穷举计算,时间消耗大大减少),以期找出中间需要的明文。
至于彩虹表的具体原理和使用方法还是比较复杂的,这里就不再展开。总之,理论和实践已经证明,彩虹表的应用确实可以大大加快口令破解的速度。而且,配合专门的硬件,比如用于比特币挖矿的一些设备与技术,可以让破解的速度提高到一个令人吃惊的程度。
目前,网上有很多彩虹表资源可以下载,有些比较好的还要收费。虽然已经大大减低了数据容量,一张彩虹表文件大小基本也在100GB以上。
不过,通过对摘要运算加盐,使相同的口令明文产生不同的摘要,可以有效抵御彩虹表的攻击,因为彩虹表的制作者在做彩虹表时并不知道你会用哪一种加盐规则。如果要使彩虹表依然有效,攻击者需要根据了解你的加盐规则,并根据规则修改或重新生成彩虹表。

字典攻击

上面说到的暴力破解和彩虹表都是根据口令长度和规则尝试所有可能数据进行破解。而字典攻击是指根据预先设定的“字典”生成口令进行尝试破解。而所谓字典,就是攻击者认为有可能出现在口令中的文本或数据的集合。比如常见的弱密码----“111111”,“123456”,“password”;包含用户信息的数据,如电话号码,生日,身份证,用户名;从其他系统泄露的口令集合等等。进行字典攻击时,从字典中取出数据并运用一定的变形规则,生成口令进行尝试。由此可见,字典攻击中的“字典”是关键,它的质量高低决定了破解的难易程度。实际上,字典攻击已经运用了社会工程学的办法,它利用用户设置口令的习惯,比如我们都喜欢用简单的口令,喜欢用自己记得住的口令,喜欢用相同或相似的口令,来进行破解攻击。大家有兴趣的话,可以下载几个常用的字典攻击工具,测试一下自己平常使用的登录口令是否强壮,看看工具花多长时间能把它给算出来。
结论
总结一下,防范常见暴力破解,使用口令验证方式时应注意以下几点:
系统必须使用口令摘要验证和存储,禁止明文验证;

  • 口令长度不应少于8位;
  • 口令应是数字、字母大小写及特殊字符的组合;
  • 系统应禁止使用弱口令;
  • 系统应采用验证码、多次登录失败禁用账户等方式防止自动化攻击;
  • 如果需要,系统可以采用摘要加盐的方式,抵御彩虹表攻击和重放攻击。

针对口令的暴力破解攻击方式相关推荐

  1. 暴力破解攻击工具汇总——字典很关键,肉鸡也关键

    lasercrack是一款爆力破解工具,ruby写的,现如今市面上常见的暴力工具如hydra,medusa都有着不错的破解效率. 破解RDP的软件也有很多,比如ncrack和Fast RDP Brut ...

  2. 网络安全进阶学习第一课——认证崩溃之弱口令与暴力破解

    文章目录 一.什么是弱口令? 二.暴力破解 1.暴力破解攻击产生原因 2.暴力破解分类 3.具体案例 一.什么是弱口令? 弱口令没有严格和准确的定义,通常认为它是容易被别人猜测到或被工具破解的口令均为 ...

  3. 入门系列之使用fail2ban防御SSH服务器的暴力破解攻击

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由SQL GM 发表于云+社区专栏 介绍 对于SSH服务的常见的攻击就是暴力破解攻击--远程攻击者通过不同的密码来无限次地进行登录尝试. ...

  4. 入门系列之使用fail2ban防御SSH服务器的暴力破解攻击 1

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由SQL GM 发表于云+社区专栏 介绍 对于SSH服务的常见的攻击就是暴力破解攻击--远程攻击者通过不同的密码来无限次地进行登录尝试. ...

  5. DVWA 之暴力破解攻击(Brute Force)

    暴力破解(Brute Force)的意思是攻击者借助计算机的高速计算不停枚举所有可能的用户名和密码,直到尝试出正确的组合,成功登录系统.理论上,只要字典足够大,破解总是会成功的.阻止暴力破解的最有效方 ...

  6. Python脚本,网站暴力破解攻击

    注意:此脚本可能会违反网站的使用条款和法律法规.在使用此脚本之前,请确保您有权进行此类攻击,并且仅攻击您有权攻击的目标. 主要思路如下: build_wordlist 函数:从给定的单词列表文件中构建 ...

  7. Windows应急响应(三 FTP暴力破解)

    0x00 前言 ​ FTP是一个文件传输协议,用户通过FTP可从客户机程序向远程主机上传或下载文件,常用于网站代码维护.日常源码备份等.如果攻击者通过FTP匿名访问或者弱口令获取FTP权限,可直接上传 ...

  8. 机器学习中的特征建模(特征工程)和算法选型建模 - 以暴力破解识别为例

    catalogue 1. 特征工程是什么?有什么作用? 2. 特征获取方案 - 如何获取这些特征? 3. 特征观察 - 运用各种统计工具.图标等工具帮助我们从直观和精确层面认识特征中的概率分布 4. ...

  9. 系统渗透与防护——信息收集与暴力破解

    信息收集 什么是扫描 指利用工具或软件来探测目标网络或主机的过程,是搜集信息的必备环节,用来获取目标的系统类型/软件版本/端口开放情况等信息,也可以检测己知或潜在的漏洞 常见扫描工具 Ping nma ...

  10. Exchange 暴力破解与防范

    针对Exchange漏洞的利用有很多种方式,但大多数攻击手法首先要有一个邮箱账号,所以,最重要的一步就是获取邮箱账号.获取邮箱账号最常见的攻击方式有两种,钓鱼邮件以及暴力破解. 本文整理了Exchan ...

最新文章

  1. Pycharm 建立工程,包含多个工程目录
  2. 展望:共融机器人的基础理论与关键技术
  3. 线程:创建--【J2SE】
  4. cdoj 1070 秋实大哥打游戏 带权并查集
  5. Spring Boot 整合 Swagger
  6. Objective -C Memory Management 内存管理 第一部分
  7. Flink 还是 Spark?阿里技术专家一语道破真相!
  8. marked override, but does not override
  9. C# 淘宝商品微信返利助手开发-(四)返利助手开发(2)淘宝分享的内容如何只取淘口令
  10. html游戏图标库,又一款开源图标库 CSS.GG,值得一用
  11. [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.16
  12. xpath 第一个元素_Chrome控制台的妙用之使用XPATH
  13. ESXi社区版NVMe驱动更新v1.1
  14. 苹果Magic Trackpad2成功被谷歌团队写进去个Linux
  15. [UE4]IES光源概述文件
  16. 什么是等保三级?基本流程是什么样的?
  17. EtherCat主站与从站简介
  18. AE TypeMonkey
  19. 推荐几个9月爆火的 GitHub 电商项目
  20. 学术圈很火的 超材料、超表面、超透镜:什么时候可以代替传统透镜?

热门文章

  1. Linux netstat命令详解
  2. 基于单片机智能交通灯控制系统设计外文文献_1000多套机械专业毕业设计免费分享(论文+DWG图纸+外文翻译+文献综述+开题报告+答辩) 友图网...
  3. ExtJs 系列视频教程
  4. java实现PDF转word,使用jacob插件
  5. matlab绘图坐标显示不全的解决方法
  6. Stanford CS224N: PyTorch Tutorial (Winter ‘21) —— 斯坦福CS224N PyTorch教程 (第三部分)
  7. Java表示语言(文化)代码及国家地区对照表
  8. 《涂抹Oracle—三思笔记之一步一步学Oracle》看书笔记(序言)
  9. Pycharm配置Git教程
  10. python读取身份证照片信息_Python身份证照片识别信息,python