3.5 破解密码
密码是用户在系统上认证身份最常用的方法。在对目标系统进行漏洞利用时,通常也能找出能够访问其他系统的密码。在第4章 中,我们会用一节专门介绍如何用Kali中自带的大量工具破解密码。下一节首先用Kali中一个很流行的工具破解密码。
John the Ripper
John the Ripper 是今天最广为使用的密码破解器。它有几个引擎,用以破解不同类型的密码,包括加密过的密码和哈希化的密码。John the Ripper能够自动检测多数哈希和加密过的密码,这大大方便了渗透测试人员。攻击者喜欢这个工具是因为它的可定制性非常强,可以配置成多种不同的方法来加速密码破解。
John the Ripper可以按如下方式运行:
使用这个工具的最佳实践是经常更新默认字典。我们发现默认的单词列表很有限(只有3115个单词),在很多情况中还破解不了普通密码。你可以借助Google来搜索字典。要验证新的单词列表的大小,打开终端,将单词列表文件加载到当前目录后,调用单词计数命令wc (word count )。我们要用的具体命令为wc -l filename 。
通常在从互联网上下载和合并多份单词列表时,列表中可能会出现重复的单词。我们建议删除重复的单词,并将所有的大写字母替换成小写字母,因为John会自动切换大小写格式控制。这里举个替换单词中大写字母的例子:
tr A-Z a-z AllLowerCaseFile
下面是去重用的命令:
sort -u AllLowerCaseFile > NoDuplicatesOrUpperCase
你可以对新生成的合并文件调用wc 命令来检查单词数:
wc -1 NoDuplicatesOrUpperCase
要在Kali中打开John the Ripper,浏览Password Attacks > Offline Attacks ,然后选取John 。它会打开一个命令行终端。
Johnny是John the Ripper的一个GUI程序。Johnny会在第4章 中介绍。
你可以对John the Ripper的速度进行基准测试,输入john -test 就能知道它运行速度有多快了。
要使用定制过的单词文件,比如前个例子中生成的NoDuplicatesOrUpperCase ,你需要编辑默认的单词列表。它位于默认的John the Ripper目录下的john.conf文件中。在该文件中,你会发现单词列表指向了默认的password.lst 。
将文件列表改成新的单词列表文件的名字。参考前面的例子,你可以将它改成Wordlist = NoDuplicatesOrUpperCase.lst。新的单词列表文件必须放到john.conf文件中指定的目录里。默认的目录是位于$JOHN变量指定的目录中。
要将John the Ripper和密码文件配合使用,首先需要将目标文件复制到指定的John目录。调用复制命令cp 来将该文件移动到John目录。举个例子,要复制shadow文件(Linux系统中常见的一个密码文件),可以输入cp /etc/shadow . 。
当该文件跟John the Ripper放到一起后,调用命令john ,后跟该文件名。因此如果要将John the Ripper和shadow文件一起运行,输入john shadow 。
你可以按下回车键来检查John the Ripper的进度,它会显示当前正在试探的密码,以及每秒钟的破解数,单位为c/s。
可以用组合键Ctrl+C来暂停John the Ripper的进度。如果你是调用john FILE 来重新运行John,它会从你上次暂停的位置继续。
在John the Ripper运行结束时,查看结果可以输入john -show FILE 。那么查看shadow文件的情况,则输入john -show shadow 即可。
有关John the Ripper的详细资料,可以参考http://www.openwall.com 。