Monday, January 21, 2008

使用Rainbow tables和Ophcrack的组合工具破解Windows密码

本文为寻找人生的起点(http://blog.cn-ic.org/)原创,如需转载,请注明出处,并保留原文链接。

从前面的两篇文章(得到WindowsXP管理员权限的有效方法John/bkhive/samdump, 在Linux下破解SAM密码)可以看出我对Windows系统权限突破的兴趣。由于目前的压迫尚未推翻,所以反抗还在继续。这次讨论的是采用Rainbow Table与Ophcrack结合的另外一种暴力破解机制。这里假设的前提是你已经得到加密hash。如果你还没有办法得到hash,请参考上面提到的两篇文章。

说实话,google上关于rainbow tables的相关说明并不多。相信最全的解释可以通过这个链接 了解。但是wiki的,英文的,除非有特别必要的需求之前我还没有打算细细研究。但是据我目前的了解,作如下解释,不确切之处还请指出:

Rainbow tables是一些表,它可以是指定字符的各种组合以及这些组合经过MD5或LM或NTLM等加密手段加密后的对照表。所以可想而知,这些表是相当庞大的。当你得到这些表后,破解hash密码实际上相当于字典破解了,速度相对普通的暴力破解会大大增加。下面让我告诉你著名的基于Rainbow tables的开源破解软件Ophcrack的帮助文档里面描述的表有多大吧:
针对LM密码的Rainbow Tables:

1.包含所有字母和数字1-7位组合的Table分成有两个 Alphanumeric SSTIC04-10k(388MB)和Alphanumeric SSTIC04-5k(720MB),从我查得的资料表明这两个Table在密码组合个数上是一致的。但是Alphanumeric SSTIC04-5k文件更大一倍,如果有1G以上的内存的话,破解速度快4四倍(为什么会有这种诡异的差异,没有查到)。他们包含800亿个hash, 由于LM加密对大小写不敏感,所以能破解2^83个1-14位的LM密码。
下载地址: http://lasecwww.epfl.ch/~oechslin/projects/ophcrack/

2.LM延伸表,包含所有字母+数字+33个特殊字符(!”#$%&’()*+,-./:;<=>?@[\]^_`{} ~)的96%的1-7位组合包含7万亿个hash,能破解2^92个LM密码。大小7.5G
获取方式:目前没有官方下载,可以通过ophcrack的网站购买DVD,价格$240,地址:http://www.objectif-securite.ch/en/products.php
另外我找到freerainbowtables.com的bt下载,号称更大,33.8G(http://www.freerainbowtables.com/tables/lm.php),或者下载软件自己生成(生成方式见本文后面)。
针对NTLM密码的Rainbow Tables:
1.NT hash table: 包含1-6位的字母+数字+33个特殊字符组合,7位字母+数字组合,8位小写字母+字符组合;包含7万亿个hash,能破解7万亿个密码。大小8.5G
获取方式: 目前没有官方下载,可以通过ophcrack的网站购买DVD,大小就是上面描述的8.5G,价格$240,地址:http://www.objectif-securite.ch/en/products.php
同样可以上 freerainbowtables.com看看(地址:http://www.freerainbowtables.com/tables/ntlm.php),有很多选择,最大的1-9位小写字母+数字组合有123G,小心你的磁盘。
从上面的内容我们可以看到Rainbow tables都相当庞大。而实际上这些东西从某种意义上来说都只是字典文件而已。当然它跟传统的字典是有区别的,它是一个庞大的字符加密hash与字符加密前的对照表,使用相应破解工具在破解过程中进行的只是对比的工作,省却了将字符加密计算的过程,从而大大节省了时间。
如果上面提到的Rainbow Tables的获取有困难,或者不满意他们的组合方式,也可以自己生成,这里有一个开源工具:
RainbowCracK:http://www.antsight.com/zsl/rainbowcrack/作者可能是个叫Lei Shuang 的国人。
目前最新版本:rainbowcrack-1.2
提供Windows二进制码(rainbowcrack-1.2-win.zip)和可用于所有平台(Windows/Linux/Unix等)的源码(rainbowcrack-1.2-src.zip
提供自定义组合字符,
提供lm,md5,sha1以及自定义组合加密方式。如果加一个补丁( Algorithm patch for RainbowCrack 1.2)还提供NTLM,MD2, MD4 and RIPEMD160加密算法
如果你打算使用工具自己生成的大Table的话,你需要做好心理准备,需要强劲的CPU,大的磁盘可用空间,以及大量的时间(使用单台PC以年为单位的时间)。所以该工具的主页上也有一些Table提供下载。

讲了半天,上面提到的还只是Rainbow tables的各种表,至于如何使用这些表,还需要一个工具。这里推荐大名鼎鼎的Ophcrack:
Ophcrack主页:http://ophcrack.sourceforge.net/
最新版本:Ophcrack-2.4.1,提供Windows二进制文件包(ophcrack-win32-installer-2.4.1.exe )和可用于所有平台(Windows/Linux/Unix等)的源码(ophcrack-2.4.1.tar.gz)
使用该软件破解需要两个条件
1.需要另外提供Rainbow tables,就是上面提到的
2.要求已经得到密码的hash,方法可参考John/bkhive/samdump, 在Linux下破解SAM密码,所以主页还提供了 bkhive-1.1.1.tar.gzsamdump2-1.1.1.tar.gz
另外Ophcrack还提供一个Live CD,最新版本1.2.2,下载地址:ophcrack-livecd-1.2.2.iso
ophcrack-livecd 基于一个叫SLAX6的小Linux 系统,整个系统包括SLAX6,ophcrack for linux 以及一些小的字母+数字的Rainbow tables。大小477M
所以只要可以通过光盘启动,无需安装就可以开始破解了。
关于Windows密码的LM加密和NTLM加密:
LM又叫LanManage,它是Windows古老而脆弱的密码加密方式。任何大于7位的密码都被分成以7为单位的几个部分,最后不足7位的密码以0补足7位,然后通过加密运算最终组合成一个hash。所以实际上通过破解软件分解后,LM密码破解的上限就是7位,这使得以今天的PC运算速度在短时间内暴力破解LM加密的密码成为可能(上限是两周),如果使用Rainbow tables, 那么这个时间数量级可能被下降到小时。而这种脆弱的加密方式在Windows2003还在使用。当然我们也可以通过设定注册表参数禁用LM加密,代之以 NTLM方式加密(默认生成LM以及NTLM两种方式的加密hash).方法如下:
1. 打开注册表编辑器;
2. 定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa;
3. 选择菜单“编辑”,“添加数值”;
4. 数值名称中输入:LMCompatibilityLevel ,数值类型为:DWORD,单击 确定;
5. 双击新建的数据,并根据具体情况设置以下值:
0 - 发送 LM 和 NTLM响应;
1 - 发送 LM 和 NTLM响应;
2 - 仅发送 NTLM响应;
3 - 仅发送 NTLMv2响应;(Windows 2000有效)
4 - 仅发送 NTLMv2响应,拒绝 LM;(Windows 2000有效)
5 - 仅发送 NTLMv2响应,拒绝 LM 和 NTLM;(Windows 2000有效)
6. 关闭注册表编辑器;
7. 重新启动机器
在Windows NT SP3引入了NTLM加密以及Windows2000以后逐步引入的NTLM 2.0加密解决了这个问题,让我们在短期内破解长度超过8位的密码成为一种运气。但是LM加密方式默认还是开启的,除非通过上面的方法刻意关闭它。

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home