7.7、通过John the Ripper使用字典来破解密码哈希值
在前几个章节中,我们在数据库中发现了密码的哈希值,在渗透测试中,通过解密哈希值来获取密码是再常见不过的,但是哈希是通过不可逆算法生成的,所以是没有可以直接破解的办法的,我们只能通过字典来爆破。
在这个章节中,我们将会使用John the Ripper(俗称JTR或者John),它是最受欢迎的密码破解工具。
环境准备
正如主题所说我们需要一个用来破解密码的字典,这个字典由可能的密码或者某些特殊词组成,Kali Linux在/user/share/wordlists/目录下包含了几个字典。在本小节中我们将使用RockYou这个字典,并且它的默认格式是GZIP。
要解压RockYou字典,需要使用cd命令切换到它所在的目录下,命令:
cd /user/share/wordlists/,然后使用gunzip命令来解压它,命令:gunzip rockyou.txt.gz,如下图所示:
实战演练
1. 首先需要按照特定的格式去设置可能的用户名和密码,创建一个名为hashes_6_7.txt的txt文本文件每行一个用户名和密码,并且用户名和密码以冒号隔开;
2. 当你完成1 的步骤后,就可以开始了,命令:jogn–wordlist=/user/share/wordlists/rockyou.txt –format=raw-md5 hashes_6_7.txt;
3. John工具可定制型极高,你可以自行制定相应的规则,文件后缀,字符,大小写等,命令:john –wordlist=/user/share/wordlists/rockyou.txt –format=raw-md5hashes_6_7.txt --rules
原理剖析
John的工作原理是将字典中的可能的密码进行散列后将它与要破解的散列进行比较,如果一旦匹配,那么就代表字典散列前的值就是密码的值。
第一个—wordlist选项告诉John使用哪个字典,如果忽略它,John会生成自己的字典列表来尝试破解,--format选项告诉John使用何种算法来生成哈希散列,如果该参数未指定,那么John会尝试使用可能的算法来生成散列,然后我们加入的选项是我们要破解的含有哈希的文本文件。
最后,我们加入—rules选项来提高破解密码成功的几率,它能够对单词进行常见的修改以满足人们在日常生活中对密码的混淆定义,就拿password来说,John会在—rules选项对它尝试进行一下的修改: