2012年,什字LinkedIn泄露了650万条密码哈希。典破几天后,解和安全论坛上出现了一份破解清单,暴力里面超过一半的破解密码以明文形式躺着——"123456"、"password"、什字"linkedin"这些词反复出现。典破拿到这份清单的解和人用的不是某种神奇的黑客工具,而是暴力两种最基础也最普遍的密码攻击方式:字典破解和暴力破解。
字典破解的破解思路很直白。攻击者手里有一份"字典"文件,什字里面装着人类最常使用的典破密码。这份字典可能来自历年泄露的解和密码库,也可能是暴力根据目标人物的生日、宠物名、破解常用词汇专门生成的。然后程序拿着字典里的每一个词,挨个去试。试对了,门就开了。整个过程像拿一串钥匙挨个捅锁眼,钥匙不是随便造的,而是照着常见锁的规格批量配的。
这种方法的效率高得惊人。RockYou在2009年泄露的1400万条密码至今仍是安全圈最常引用的样本——分析显示,其中约30%的密码不超过6位,绝大多数是纯数字或纯字母。后来有人把这份数据整理成字典,叫rockyou.txt,收录了1400多万个条目,成了渗透测试的标配文件。用这份字典去攻击一个没有做任何防护的登录接口,命中率大概在20%到30%之间。换句话说,每三到五个账户里就有一个能被打开。不需要什么高深技术,一台普通笔记本跑几分钟就能出结果。
暴力破解走的是另一条路。它不猜你用什么词,它穷举所有可能性。从"a"开始,到"aa"、"ab"、"ac"……一直排下去。理论上,只要时间够、算力够,任何密码都能被暴力破解出来。问题就出在"时间够"这三个字上。
算一笔账。一个6位纯小写字母的密码,组合数是26的6次方,约3亿种。用普通家用电脑的CPU跑,每秒能试几百万次,几分钟到几十分钟能搞定。换成8位大小写字母加数字,组合数跳到62的8次方,大约218万亿种。同一台机器,需要跑好几年。如果密码到了12位,还混了符号,那基本就是天文数字,用现有硬件暴力穷举在宇宙寿命内都跑不完。
所以暴力破解的实际策略是"聪明地穷举"。工具会优先尝试短密码、纯数字、常见字符组合,而不是真的从零开始均匀遍历。Hashcat这类工具还支持用GPU加速,一块高端显卡每秒能算几十亿次哈希,比CPU快几百倍。这让暴力破解的适用范围从6位扩展到了8到9位。再长,就得靠集群或者专门硬件了。
两种方法经常混着用。先跑字典,把常见密码筛一遍;字典跑完没出结果,再切暴力模式,设定好字符集和长度范围接着跑。还有一种叫"规则攻击"的变体——拿字典里的词做变形,大写首字母、末尾加数字、把"o"换成"0"、把"a"换成"@"。因为很多人以为"P@ssw0rd"比"password"安全得多,其实在规则引擎面前,这种变形连一毫秒都撑不住。
真正让这两种攻击头疼的不是密码有多复杂,而是"慢"。如果系统在每次密码验证时故意拖时间——比如bcrypt算法可以把单次验证拉到几百毫秒——那攻击者的尝试速度就被压到了每秒几次。原来几分钟能跑完的字典,现在要跑几个月。再配上登录失败锁定、验证码、多因素认证,字典和暴力破解基本就废了。反过来,如果一个系统用MD5存密码、不限尝试次数、不设延迟,那不管密码多长,攻击者拿走哈希库之后想怎么跑就怎么跑,只是时间问题。
密码这件事,攻和防从来不是对称的。攻击者只需要找到一个突破口,防守方得堵住所有漏洞。字典和暴力破解之所以至今仍然有效,不是因为它们多先进,而是因为人类的密码习惯实在太容易被预测了。
顶: 4132踩: 325





评论专区