在现互联网环境下,工作中避免不了会考虑服务器的安全问题,那么对于简单的口令来说,则是服务器所面临的最大风险。即便大家都会有这方面的安全意识,设置一个符合长度且复杂性的口令会更加安全,但总是会有一些用户因贪图方便而采用简单且易记的口令。
那么对于任何一个承担着安全责任的管理员来说,通过某种手段来更高效的找出那些弱口令用户是非常重要的,就是今天我所推荐的弱口令检测工具——John the Ripper。
John the Ripper 是一款免费开源的密码破解工具,能够在已知密文的情况下快速破解出明文的破解密码字符,支持目前大多数的加密算法,如DES、MD4、MD5等多种加密算法。而且允许使用密码字典以及包含各种密码组合的列表文件来进行暴力破解。
支持多种不同类型的系统架构,包括 Unix、Linux、Windows 等多种版本;其主要目的是破解不够牢固的 Unix / Linux 系统用户的密码强度;
系统版本:Centos 6.5
软件版本:john-1.8.0.tar.gz
官网地址:https://www.openwall.com/john/
下载后的软件包文件,上传到服务端上进行解压,解压后的文件有三个目录。分别包括:1)doc:手册文档 2)run:运行程序 3)src:源码文件
除此之外,还有一个说明文件:README 的链接,其中在 doc 目录下包括:README、INSTALL、EXAMPLES 等多个文档,并且提供了比较全面的使用指导相关文档说明。
[root@localhost ~]# tar zxf john-1.8.0.tar.gz
[root@localhost ~]# cd john-1.8.0
[root@localhost john-1.8.0]# ls -ld *
drwxr-xr-x. 2 root root 4096 6月 7 13:36 doc
lrwxrwxrwx. 1 root root 10 6月 7 13:36 README -> doc/README
drwxr-xr-x. 2 root root 4096 6月 7 13:36 run
drwxr-xr-x. 2 root root 4096 6月 7 13:36 src
[root@localhost john-1.8.0]# ls doc/
CHANGES CONFIG CONTACT COPYING CREDITS EXAMPLES EXTERNAL FAQ INSTALL LICENSE MODES OPTIONS README RULES
切换到 src/ 目录下执行 “make clean linux-x86-64” 命令,即可进行执行编译过程,不需要特别的安装操作,若只执行 make 命令,将列出可用的编译操作、支持的系统类型。编译完成后,run 子目录下会生成 john 的可执行程序以及相关的配置文件等;
[root@localhost john-1.8.0]# cd src/
[root@localhost src]# make clean linux-x86-64
......//省略编译信息
[root@localhost src]# ls ../run/john //确认已生成可执行程序 john
../run/john
使用命令:useradd 用户名来创建用户并设置相应的密码来进行验证;
[root@localhost ~]# useradd jacktian
[root@localhost ~]# passwd jacktian
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# passwd zhangsan
[root@localhost ~]# useradd lisi
[root@localhost ~]# passwd lisi
在已安装的 John the Ripper 服务器中,可直接对 /etc/shadow 文件进行检测。对于其他服务器来说,可对 shadow 文件进行复制,并传递给 john 程序进行检测。只需执行 run 目录下的 john 程序,将待检测的 shadow 文件作为命令行参数即可检测弱口令。
执行中,会将检测出来的弱口令密码进行输出在终端上。如下
第一列:密码字符串
第二列:括号内为相应的用户名
john 将针对常见的弱口令设置特点,尝试破解已识别的所有密文字串,如在检测弱口令的过程中,时间过长,则可以按 Ctrl+C 快捷键来进行终止后续检测;
[root@localhost run]# cp /etc/shadow /root/shadow.txt //准备待破解的密码文件
[root@localhost run]# ./john /root/shadow.txt //执行暴力破解
Loaded 4 password hashes with 4 different salts (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
lisi555 (lisi)
zhangsan123 (zhangsan)
123456 (jacktian)
...... //检测完毕后,按快捷键:Ctrl+C 来终止后续过程
破解后的信息将自动保存到 john.pot 文件中;
可使用命令:./john --show /root/shadow.txt 进行查看;
[root@localhost run]# ./john --show /root/shadow.txt //查看已破解出的账户列表
jacktian:123456:16959:0:99999:7:::
zhangsan:zhangsan123:16959:0:99999:7:::
lisi:lisi555:16959:0:99999:7:::
3 password hashes cracked, 1 left
John the Ripper 默认提供的字典文件为:password.list,列出了 3000 多个常见的弱口令,用户可以在字典文件中添加更多的密码组合或直接使用更完整的其他字典文件。
执行 john 程序时,可结合 “–wordlist=” 选项指定字典文件的位置,便于对指定的密码文件进行暴力检测。
[root@localhost run]# :> john.pot
[root@localhost run]# ./john --wordlist=./password.lst /root/shadow.txt
Loaded 4 password hashes with 4 different salts (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
123456 (jacktian)
1g 0:00:00:45 100% 0.02185g/s 77.50p/s 234.6c/s 234.6C/s !@#$%..sss
Use the "--show" option to display all of the cracked passwords reliably
Session completed
通过以上结果可以看出,字典文件中的密码组合还是较少的,仅破解出一个账号的口令。