全部博文(1015)
分类:
2009-11-18 13:45:30
Linux和其他UNIX变种在口令加密过程中使用了加盐,目的是为了让口令难以被破解。不要受认为破解Linux和其他UNIX变种平台的口令速度很慢这一点的迷惑,我们依然可以对/etc/shadow文件进行快速的字典攻击。
Nutcracker或许是速度最快的UNIX/Linux口令破解器,这个工具由Ryan Rhea开发。我们可以从位置下载这个口令破解工具。
由于Nutcracker是一个字典破解程序,因此要求使用字典文件。Nutcracker本身携带了一个包含2400个词汇的示例字典,但我们应该创建自己的字典。运行Nutcracker很简单,语法格式为:
nutcrack passwdfile worddic
其中,passwdfile是要破解的口令文件的名称,通常是/etc/shadow,worddic是破解使用的字典的名称,Nutcracker本身携带的字典的文件名为words。示例8-8给出了该工具应用的一个示例。
示例8-8:运行Nutcracker。
linux:/usr/bin/nutcrack.1.0 # ./nutcrack /etc/shadow words
Nutcracker version 1.0
Copyright 2000 by Ryan T. Rhea
got dict file: words
got passwd file: /etc/shadow
cracking...
user name status password
---------------- --------------- ----------------
at unable to crack X
bin disabled -
daemon disabled -
ftp disabled -
games disabled -
lp disabled -
mail disabled -
man disabled -
news disabled -
nobody disabled -
ntp unable to crack X
postfix unable to crack X
root unable to crack X
sshd unable to crack X
uucp disabled -
wwwrun disabled -
andrew unable to crack X
admin unable to crack X
user1 CRACKED Mickey
user2 CRACKED newuser
user3 CRACKED 123456
user4 CRACKED foobar
从上面的输出中我们看到,有一些口令没有被破解出来。这就是说,它们的口令没有出现在字典文件中。而user1、user2、user3、user4的口令被破解了出来,原因在于他们的口令出现在字典文件中。如果我们想把破解结果保存在文件中,那么将它们重定向到指定的文件即可。下面是一个将破解结果重定向到results.txt文件的示例:
linux:/usr/bin/nutcrack.1.0 # ./nutcrack /etc/shadow words > results.txt
本章前面介绍的内容都是阐述UNIX和Windows系统中口令破解的工具。网络上的其他主机也有口令,特别是,Cisco路由器包含了恶意黑客能够破解并获取访问权的口令。为了评估恶意攻击成功的可能性,渗透测试人员也必须对这类设备的口令进行破解。
在介绍如何破解Cisco设备口令之前,我们需要了解Cisco口令的工作方式。Cisco路由器具有两种运行模式:
— 用户执行模式(User exec mode)——用户执行模式就像旅店的大厅,我们可以进去看一看,但做不了什么事情。在用户执行模式下,我们可以查看界面的状态、路由表及执行其他信息收集任务,但不能进行配置。
— 特权执行模式(Privileged exec mode)——特权执行模式就像拥有了旅馆中能够打开所有房间大门的万能钥匙一样,可以做自己想做的一切事情。在获取特权执行模式之后,就可以完整访问路由器的配置。在从用户执行模式转移到特权执行模式时可以设置口令,这样,看好这个口令对保护路由器的安全至关重要。
进入特权执行模式时有两种方式提供口令:
— 明文口令支持
— 秘密口令支持
假设我们选定路由器的口令为vB*hq0,这里包含了字母、数字和特殊字符。使用下面的命令输入明文口令支持:
Router(config)#enable password vB*hq0
在浏览配置时,将会显示这个口令。配置通常以离线方式存储,能够浏览配置的任何人都能够看到这个口令。为了提供对这个口令的一定程度的保护,我们可以使用秘密口令支持方式。使用下述命令输入秘密口令支持:
Router(config)#enable secret vB*hq0
当显示配置时,这个口令使用5类口令加密方法进行加密:
enable secret 5 1401304104157A
现在,在离线配置文件中看到这个口令的人就不会轻易解密这个口令了,当然,如果他了解了如Boson GetPass这样的工具的用途、并能够使用这个工具时则另当别论。Boson GetPass工具可以在地址处下载。GetPass能够将路由器加密命令加密后生成的口令密文还原为原始口令,如图8-13所示。
图8-13 Boson GetPass工具
从这个示例中也可以看到将所有脱机配置文件保存到安全场所的重要性。否则,利用Boson GetPass这样的工具能够很容易地破解出路由器的口令,从而登录到路由器上。
RainbowCrack是一个使用内存时间交换技术(Time-Memory Trade-Off Technique)加速口令破解过程的口令破解器,这个工具可以在地址 rainbowcrack/下载。RainbowCrack使用了彩虹表,也就是一张预先计算好的明文和散列值的对照表。通过预先花费时间创建这样的彩虹表,能够在以后破解口令时节约大量的时间。RainbowCrack包含了下述实用程序:
— rtgen.exe——彩虹表生成器,生成口令、散列值对照表。
— rtsort.exe——排序彩虹表,为rcrack.exe提供输入。
— rcrack.exe——使用排好序的彩虹表进行口令破解。
首先使用彩虹表生成器(rtgen.exe)生成自己的彩虹表。其命令行格式为:
rtgen hash_algorithm \
plain_charset plain_len_min plain_len_max \
rainbow_table_index \
rainbow_chain_length rainbow_chain_count \
file_title_suffix
rtgen hash_algorithm \
plain_charset plain_len_min plain_len_max \
rainbow_table_index \
-bench
命令行各参数的意义和取值如表8-4所示。
表8-4 彩虹表生成器使用的参数
参 数 |
取 值 |
意 义 |
Hash_algorithm |
lm, md5, sha1 |
散列算法,其中lm表示LANMAN,为Windows口令的散列方法 |
plain_charset |
alpha, alphanumeric, alphanumeric- symbol14, all, numeric, loweralpha, lower-alphanumeric1 |
明文所用字符集,使用byte表示将256个字符全作为字符集 |
plain_len_min |
数字 |
明文的最小长度 |
plain_len_max |
数字 |
明文的最大长度 |
rainbow_table_index |
数字 |
彩虹表的索引 |
rainbow_chain_length |
数字 |
彩虹链长度 |
rainbow_chain_count |
数字 |
要生成彩虹链的个数 |
file_title_suffix |
字符串 |
添加到文件标题后面的字符串,用于书写彩虹表的注释 |
-bench |
-bench |
测试选项,用于性能测试 |
下面是使用彩虹表生成器的几个命令行示例:
rtgen lm alpha 1 7 0 100 16 test
rtgen md5 byte 4 4 0 100 16 test
rtgen sha1 numeric 1 10 0 100 16 test
rtgen lm alpha 1 7 0 -bench
除非我们已经对密码分析和内存时间交换技术训练有素,否则就应该使用建议值创建自己的彩虹表。示例8-9演示了如何创建一个128MB的彩虹表。
示例8-9:创建一个128MB的彩虹表。
C:\rainbowcrack-1.2-win>rtgen lm alpha 1 7 0 21 00 8000000 all
hash routine: lm
hash length: 8
plain charset: ABCDEFGHIJKLMNOPQRSTUVWXYZ
plain charset in hex: 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a
plain length range: 1 - 7
plain charset name: alpha
plain space total: 8353082582
rainbow table index: 0
reduce offset: 0
generating...
100000 of 8000000 rainbow chains generated (8 m 5 s)
done.
创建彩虹表可能要花费数小时、甚至数天的时间。在生成了彩虹表之后,我们会在当前目录下找到一个名称为lm_alpha#1-7_0_2100x8000000_all.rt的文件,其中all是我们在命令中输入的文件后缀。
接下来的工作是使用彩虹表排序程序(rtsort.exe)进行排序,目的是加快彩虹表的查找速度。这个命令的语法很简单,格式为:
rtsort rainbow_table_pathname
其中rainbow_table_pathname是要排序彩虹表的文件名。例如,排序前面创建的彩虹表,可以使用下面的命令:
C:\rainbowcrack-1.2-win>rtsort lm_alpha#1-7_0_2100x8000000_all.rt
这个命令需要执行几分钟的时间。
最后,使用彩虹表破解程序(rcrack.exe)破解散列值。对于Windows口令破解来说,需要从SAM数据库中提取出散列值,我们可以使用Pwdump程序来完成这个任务,该程序可以从 cfm处下载。使用下面的命令将Windows口令散列值转储到文件hashes.txt中:
C:\rainbowcrack-1.2-win>pwdump2.exe > hashes.txt
得到了口令的散列值之后,就可以使用口令破解程序rcrack.exe和已经排好序的彩虹表进行口令破解了:
C:\rainbowcrack-1.2-win>rcrack alpha#1-7_0_2100x8000000_all.rt -f hashes.txt
虽然创建彩虹表是要花费大量的时间,但是,一旦创建了彩虹表之后,口令的破解速度就会大大提高。通常需要数小时才能够破解的口令可能在使用预定义的彩虹表之后仅仅花费数秒钟的时间就破解出来。