扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源:赛迪网 2007年10月03日
关键字:Ophcrack Geekwisdom 彩虹表 哈希表
跨平台密码破解器Ophcrack的破解速度简直是不可思议。到底有多快呢?它能在160秒内破解“Fgpyyih804423”这个密码。很多人都认为这个密码已经相当安全了。微软的密码强度判定工具认为该密码的安全级别是“强”。而Geekwisdom密码强度估算器认为该密码的安全强度是“普通”。
Ophcrack的破解速度为什么会这么快呢?这是因为它使用了彩虹表。我说的不是我用做桌面背景的那种真正的彩虹。
不过,彩虹表也是很美的。
要想理解彩虹表的工作原理,首先你得明白计算机是如何存储密码的,不管是在你自己用的台式机还是在远程的网络服务器那里。
密码决不会存储在纯文本文档中的。至少我们不应当这么做,除非你用的是世界上最幼稚的程序,而且你的目的就是构建世界上最不安全的系统。事实上,我们应当把密码作为哈希函数的输出值来存储。哈希是单向操作。即使攻击者能够读取密码的哈希表,他也不可能仅仅通过那个哈希表来重构密码。
但是攻击者可以用用彩虹哈希表来攻击密码的哈希表:通过庞大的、针对各种可能的字母组合预先计算好的哈希值。攻击者的计算机当然也可以在运行中计算所有的值,但是利用这个预先计算好哈希值的庞大表格,显然能够使攻击者能更快地执行级数规模的命令——假设攻击机器有足够大的RAM来将整个表存储到内存中(或者至少是表的大部分)。这就是个很典型的时间-内存权衡问题,尤其是黑客更倾向于使用这种捷径。
彩虹表有多庞大呢?Ophcrack的安装对话话会让你有个大致概念:
生成这些庞大的彩虹表需要花很长时间,但是一旦生成好了,那么每个攻击的计算机都可以利用这些表来破解更强的密码哈希表。
可用的最小彩虹表是最基本的字母数字表,就这样它的大小就有388MB。这是Ophcrack启动盘默认的表。即使这个最小的表也相当有效了。我曾经用它来攻击我在一个Windows XP虚拟机上设置的密码,结果如下:
found? seconds Password1! 700 Fgpyyih804423 yes 159 Fgpyyih80442% 700 saMejus9 yes 140 thequickbrownfoxjumpsoverthelazydog 700
当然,你用这种彩虹表无法破解那种带有非数字字母的字符的密码(比如%&^$#这样的),因为表里根本没有包含这些字符。你可能也注意到了那些passphrase,我也很喜欢它们,由于它们本身的长度问题,passphrase对此项技术是免疫的。但是,话又说回来了,该攻击可以在11分钟内破解所有可能14位数字字母密码组合中的99.9%,这还是用了最小的彩虹表。表越大、越全,攻击破解能力越强。Ophcrack文档描述了它所能使用的彩虹表之间的差异:
字母数字表 10k 388MB 包含所有字母数字混合密码中99.9%的LanManager表。这些都是用大小写字母和数字组成的密码(大约800亿组合)。
由于LanManager哈希表将密码截成每份7个字符的两份,我们就可以用该表破解长度在1到14之间的密码。由于LanManager哈希表也是不区分大小写的,该表中的800亿的组合就相当于12*10的11次方(或者2的83次方)个密码。
字母数字表 5k 720MB 包含所有字母数字组合的密码中99.9%的LanManager表。但是,由于表变成2倍大,如果你的计算机有1GB以上的RAM空间的话,它的破解速度是前一个的4倍。
扩展表 7.5GB 包含最长14个大小写字母、数字以及下列33个特殊字符(!"#$%&'()*+,-./:;<=>?@[\]^_`{|} ~)组成的密码中96%的LanManager表。该表中大约有7兆的组合,5*10的12次方(或者2的92次方)密码。
NT 8.5 GB 我们可以使用该表来破解计算机上的NT哈希表,这是LanManager 哈希表所做不到的。该表包含了用如下字符组成的可能密码组合的90%:
·最高6位字符由大小写字母、数字以及33个特殊字符(同上面列举的一样)
·7 大小写字母及数字
·8 小写字母及数字
该表包含7兆种组合,对应7兆的密码(NT哈希表不存在LanManager哈希表的弱点)。
需要注意的是,所有这些彩虹表都有其特定适用的密码长度和字母组合。太长的密码,或者包含表中没有的字符,那么用彩虹表就无法破解。
不幸的是,由于旧式LanManager哈希表不可饶恕的缺点,Windows服务器特别容易被彩虹表攻击。令我吃惊的是,Windows Server 2003在默认状态下竟然还支持该旧式Lan Manager。我强烈建议大家禁用Lan Manager哈希表,尤其是在那些存储所有用户的域证书的服务器上一定要禁用该哈希表。这将对你的所有Windows98用户造成很大的不便,但是我觉得为了提高安全性,这么做是值得的。
我听说明年发布的Windows Server2008最终会将LanManager哈希表去掉。Windows Vista已经不支持这些过时的哈希表了。在Vista系统中运行OphCrack的话结果请看下列对话框:
所有LM哈希表都是空的。请使用NT哈希表来破解剩余哈希表。我希望我能用NT表,但是我找不到要用8.5GBNT哈希的彩虹表的可靠来源。
Ophcrack工具不是很灵活。它不允许你自己生成彩虹表。因此,你得用Project彩虹破解工具,该工具能用来破解几乎所有字母组合以及任何哈希算法。但是,你得当心,彩虹表攻击最近才盛行的原因是由于电脑的2-4GB的内存最近才达到了让人能接受的水平。我的意思是说它很庞大。
下面是攻击安全性能更高的NT哈希表所需要生成的彩虹表的大小:
|
通常对台式机来说,用彩虹表攻击太夸张了。如果黑客能实现物理意义上访问主机,那么就没有任何安全性可言了。这是10项计算机安全不可变法则中的第3条。一旦黑客可以在物理意义上访问主机,那么他可以用很多工具来重新设置密码。
但是如果远程黑客从服务器或者数据库获得大量的密码的哈希列表,我们就有麻烦了。这种情况下,我们遭受彩虹表攻击的风险非常大。因此你决不能只依靠哈希技术——你总得给哈希表加些花样,这样得到的哈希值就与众不同了。给哈希表加花样,听起来很复杂(隐约还能感觉到很美味?),但其实很简单。在生成哈希表之前,给密码加个唯一的前缀就行:
|
这样,攻击者就无法用彩虹表来攻击你了——“密码”和“美味的鲜密码”生成的哈希结果是不匹配的。除非黑客知道你所有的哈希表都加了这个前缀。即使真的知道,他/她也得专门针对你的机器生成一个定制的彩虹表。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
去集群 更超群——大容量网络演进之路
2019 IBM 中国论坛
H3C 2019 Navigate 领航者峰会
助推数据中心网络现代化转型 打造灵活可靠基础架构平台