Ophcrack与彩虹表

Ophcrack是一款利用彩虹表来破解 Windows密码的工具。其次是两篇有关Ophcrack的技术文章:杜莉翻译的“安全高手的利器认识彩虹哈希表破解工具”(http://tech.ccidnet.com/art/237/20070913/1211093_1.html),昵称为“寻找人生的起点”写的“使用Rainbow tables和Ophcrack的组合工具破解Windows密码”(http://blog.cn-ic.org/?p=62)。通过以上两人的文章我们了解到Ophcrack需要使用彩虹表,以及彩虹表生成,以及其它一些信息。

彩虹表原理

先讲述一些基本概念:

Tables

可以说长期进行密码学研究的人很少有不知道这个的。在很多年前,国外的黑客们就发现单纯地通过导入字典,采用和目标同等算法破解,其速度其实是非常缓慢的,就效率而言根本不能满足实战需要。之后通过大量的尝试和总结,黑客们发现如果能够实现直接建立出一个数据文件,里面事先记录了采用和目标采用同样算法计算后生成的Hash散列数值,在需要破解的时候直接调用这样的文件进行比对,破解效率就可以大幅度地,甚至成百近千近万倍地提高,这样事先构造的Hash散列数据文件在安全界被称之为Table表(文件)。

Rainbow Tables

最出名的Tables是Rainbow Tables,即安全界中常提及的彩虹表,它是以Windows的用户帐户LM/NTLM散列为破解对象的。简单说明一下,在 Windows2000/XP/2003系统下,账户密码并不是明文保存的,而是通过微软所定义的算法,保存为一种无法直接识别的文件,即通常所说的SAM文件,这个文件在系统工作时因为被调用所以不能够被直接破解。但我们可以将其以Hash即散列的方式提取,以方便导入到专业工具破解,提取出来的密码散列类似于下面:


Administrator:500:96e95ed6bad37454aad3b435b51404ee:64e2d1e9b06cb8c8b05e42f0e6605c74:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
user1:1001:732b2c9a2934e481cd0a8808b19097ef:778620d5d5de064154e689fa4790129f:::
user2:1002:a042f67a99758fd727b99b2375d829f9:6127ee12a83da34fc19953e538e4d580:::


若是以传统破解方式而言,无论是本地,还是内网在线破解,效率都不是很高。据实际测试,单机环境下,破解一个14位长包含大小写字母以及数字的无规律密码,一般是需要3~~9小时的,这个时间值会随着密码的复杂度及计算机性能差异提升到几天甚至数月不等。虽然说大部分人都不会使用这样复杂的密码,但对于目前很多密码足够复杂并且长度超过10位的密码比如“Y1a9n7g9z0h7e”,还是会令黑客们头痛不已。

2003年7月瑞士洛桑联邦技术学院Philippe Oechslin公布了一些实验结果,他及其所属的安全及密码学实验室(LASEC)采用了时间内存替换的方法,使得密码破解的效率大大提高。作为一个例子,他们将一个常用操作系统的密码破解速度由1分41秒,提升到13.6秒。这一方法使用了大型查找表对加密的密码和由人输入的文本进行匹配,从而加速了解密所需要的计算。这种被称作“内存-时间平衡”的方法意味着使用大量内存的黑客能够减少破解密码所需要的时间。

于是,一些受到启发的黑客们事先制作出包含几乎所有可能密码的字典,然后再将其全部转换成NTLM Hash文件,这样,在实际破解的时候,就不需要再进行密码与Hash之间的转换,直接就可以通过文件中的Hash散列比对来破解Windows帐户密码,节省了大量的系统资源,使得效率能够大幅度提升。当然,这只是简单的表述,采用的这个方法在国际上就被称为Time-Memory Trade-Off ,即刚才所说的“内存-时间平衡”法,有的地方也会翻译成“时间—内存交替运算法”。其原理可以理解为以内存换取时间。

通过查看他人的blog以及发表的文章我们对其进行分析和整理,最终获取了以下一些信息和资料:

(1)工具下载:http://sourceforge.net/project/showfiles.php?group_id=133599

(2)Ophcrack主页:http://ophcrack.sourceforge.net/

(3)英文维克关于彩虹表的定义和解释:http://en.wikipedia.org/wiki/Rainbow_table

(4)国内对彩虹表的研究:http://www.antsight.com/zsl/rainbowcrack/

(5)目前有关研究Ophcrack与彩虹表的相关资料。

通过以上三个步骤,我再次进行资料的分类,工具软件的下载,再此过程中分别下载了Ophcrack软件以及源代码,以及Ophcrack提供的彩虹表(http://ophcrack.sourceforge.net/tables.php),通过查看我们知道Ophcrack提供了三个免费的彩虹表:

(1)XP free small (380MB)

标识:SSTIC04-10k

破解成功率: 99.9%

字母数字表:

123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

一句话该表有大小写字母加数字生成,大小为388MB,包含所有字母数字混合密码中99.9%的LanManager表。这些都是用大小写字母和数字组成的密码(大约800亿组合)。

由于LanManager哈希表将密码截成每份7个字符的两份,我们就可以用该表破解长度在1到14之间的密码。由于LanManager哈希表也 是不区分大小写的,该表中的800亿的组合就相当于12*10的11次方(或者2的83次方)个密码,因此也被称为“字母数字表10K”。

(2)XP free fast (703MB)

标识:SSTIC04-5k

成功率: 99.9%

字母数字表:

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

字母数字表5k大小为703MB 包含所有字母数字组合的密码中99.9%的LanManager表。但是,由于表变成2倍大,如果你的计算机有1GB以上的RAM空间的话,它的破解速度是前一个的4倍。

(3)XP special (7.5GB)

标识:WS-20k

成功率:96%

XP special扩展表 7.5GB,包含最长14个大小写字母、数字以及下列33个特殊字符(!"#$%&'()*+,-./:;<=& gt;?@[\]^_`{|} ~)组成的密码中96%的LanManager表。该表中大约有7兆的组合,5*10的12次方(或者2的92次方)密码,该表需要花钱购买。

(4)破解Vista的彩虹表

Vista free (461MB) 是免费用来破解Vista的hash密码,而Vista special (8.0GB)需要购买。

小知识:

LM又叫LanManager,它是Windows古老而脆弱的密码加密方式。任何大于7位的密码都被分成以7为单位的几个部分,最后不足7位的密 码以0补足7位,然后通过加密运算最终组合成一个hash。所以实际上通过破解软件分解后,LM密码破解的上限就是7位,这使得以今天的PC运算速度在短 时间内暴力破解LM加密的密码成为可能(上限是两周),如果使用Rainbow tables,那么这个时间数量级可能被下降到小时。

(二)对下载的工具进行试验

1.安装Ophcrack软件

Ophcrack软件的安装过程非常简单,按照提示安装即可,在安装过程需要特别注意,不要选择下载彩虹表,安装设置中会提供三个下载选项,分别下 载WinXP (380MB)、Winxp (703MB)和Vista (461MB)彩虹表,如图2所示,笔者在安装过程中选择它后下载了数个小时,这个表可以在程序安装完成后再下载。否则安装Ophcrack软件要等彩虹 表下载完成后才能使用。

 
图2 安装时建议不下载彩虹表

2.使用Ophcrack软件

从程序菜单中直接运行Ophcrack软件,如图3所示,该软件主要有“Load”、“Delete”、“Save”、“Table”、 “Crack”、“Help”以及“Exit”七大主要模块,“Load”主要负责装载Hash或者sam文件。“Delete”主要用来删除破解条 目,“Save”主要保存破解结果或者破解session,“Table”主要用来设置彩虹表,“Crack”是开始执行破解,“Help”是查看帮助文 件,呵呵,“Exit”俺就不说了。

 
图3 Ophcrack软件主界面

3.下载彩虹表

可以到Ophcrack提供的彩虹表下载地址(http://ophcrack.sourceforge.net/tables.php)去下载,在本案例中分别下载了三个免费的彩虹表。

4.设置彩虹表

在Ophcrack软件主界面中单击“Table”,接着就会出来如图4所示的Table Selection界面,在缺省状态下,所有表都没有安装,通过该界面我们了解到一共有8个彩虹表,其中有三个是免费的。

 
图4 选择彩虹表

然后单击并选中其中的一个条目,例如在本例中选择“Vista free”,然后单击“Install”按钮,系统会自动到Ophcrack软件的安装目录,不过本例是将一个压缩文件解压到tables目录下,如图5所示,选择 “Tables”即可,然后选择你下载的彩虹报表,点击install。我这里选择的是tables_vista_free



(1)在Ophcrack软件中其彩虹表的上级目录名称必须为“tables”,否则彩虹表安装不会成功。注意:

(2)彩虹表安装成功后,其条目会变成绿色,且可以查看一共有多少个表,如图6所示。

这里的破解材料主要是指通过quarks pwdump 软件获取系统Hash密码值。如果没有,就自己想办法获取一个吧。

5.准备破解材料

6.开始破解

(1)加载sam文件

单击“Load”按钮,选择“PWDUMP file”,如图7所示,一共有6个选项,第一个主要用于对单个Hash的破解,第二个是对获取的Pwdump文件进行破解,第
三个是对加密的sam文件进行破解,第四个和第五个主要用来审计或者破解本地和远程Hash密码。

在本例中选择一个已经Pwdump的文件,如果pwdump系统的hash密码没有错误,则会在Ophcrack软件主界面中正确显示,如图8所 示,在主界面中分别显示“User”、“LM Hash”、“NT Hash”、“LM Pwd1 ”、“LM Pwd2”以及“NT pwd”等信息。(2)查看HASH密码值

4)执行破解

单击“Crack”案例开始破解,很快就破解出来了密码为“www119”,其“LM Pwd1”值跟“NT pwd”相同,破解密码的时间仅仅“37s”。

 
图10 破解系统密码成功

(5)查看破解统计信息

在主界面中单击“statistics”,可以查看关于破解hash密码值的普通和详细信息,如图11所示。

 
图11查看所破解密码的有关统计信息

(6)破解参数设置

单击“Preferences”打开破解参数设置窗口,如图12所示,可以设置破解的线程,破解方式,是否隐藏用户名等。

 
图12 设置破解参数

(三)彩虹表破解密码防范策略

通过彩虹表来破解密码使得入侵者可以很方便的获取系统的口令,从而“正常”登录系统,让管理员或者计算机的主人不太容易发现。通过研究,发现可以通过两种方式来加强系统口令的安全。

1.通过设置超过一定位数的密码来加固口令安全

使用彩虹表破解14位以下的密码相对容易,对于普通入侵者来说仅仅有三个免费表,因此破解的强度相对要弱一些,因此可以通过增加密码设置的位数来加 固系统口令安全。笔者建议设置超过32位的密码来加固系统的口令安全。关于口令的设置技巧有很多,在我们研究的专题中曾经提到过,在此为了照顾新朋友,可 以再提一次密码设置的技巧:

通过一句话来设置密码,例如“2008-8月我国举办了奥运会,我去北京鸟巢观看了比赛,感觉很爽!”。可以这样设置 “2008-8ywgjblayh,wqbjlcgklbs,gjhs!”,关于时间全取,标点符号全取,其他汉字取第一个字母,该密码长度为33位,如 果再想长一点,还可以增加。其本质就是选择一句话或者诗词中的某一段来设置,容易记住,且安全强度高。

2. 使用NTLM方式加密

LM这种脆弱的加密方式在Windows2003还在使用,可以通过更改加密方式为NTLM,从而提高系统口令的安全,笔者在很多案例中也曾经发现通过pwdump以及GetHashes软件获取了hash值,但LC5以及Ophcrack软件均不能破解。

可以通过设定注册表参数禁用LM加密,代之以NTLM方式加密方法如下:

(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加密,在Windows 2000以后逐步引入的NTLM 2.0加密。但是LM加密方式默认还是开启的,除非通过上面的方法刻意关闭它。

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值