在 Internet 环境中,过于简单的口令是服务器面临的最大风险,对于任何一个承担着安全责任的管理员,及时找出这些弱口令账号是非常必要的。
John the Ripper 是一款开源的密码破解工具,能够在已知密文的情况下快速分析出明文的密码字串,支持 DES 、MD5 等多种加密算法,允许使用密码字典进行暴力破解。
John the Ripper 的官方网站是 http://www.openwall.com/john/ 可以通过该网站获取稳定版资源包。
也可使用本人提供的软件包: https://pan.baidu.com/s/1HS0xvofZ4vY50DzFBMEwMQ
提取码: uyz8
下载并安装 John the Ripper:
[root@localhost media]# tar zxf john-1.8.0.tar.gz -C /usr/src/
[root@localhost media]# cd /usr/src/john-1.8.0/
[root@localhost john-1.8.0]# ls -ld *
drwxr-xr-x 2 root root 208 Aug 28 17:04 doc // 手册文档
lrwxrwxrwx 1 root root 10 May 30 2013 README -> doc/README // 说明文件(可以理解为说明书)
drwxr-xr-x 2 root root 143 Aug 28 17:04 run // 运行程序
drwxr-xr-x 2 root root 4096 Aug 28 17:04 src // 源码文件
[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
注意: John the Ripper 不需要特别的安装操作,编译完成后的 run 子目录中包括可执行程序 John 及相关的配置文件、字典文件等,可以复制到任何位置使用
开始检测弱口令账号:
在安装有 John the Ripper 的服务器中,可以对 /etc/shadow 文件进行检测(本人不建议直接扫描源文件),对于其他 Linux 服务器,可以对 shadow 文件进行复制,并传递给 John 程序来进行检测。
[root@localhost /]# useradd zhangsan # 创建一个用户来进行验证
[root@localhost /]# passwd zhangsan
Changing password for user zhangsan.
New password: 123456
[root@localhost /]# cp /etc/shadow /tmp/shadow.txt // 准备待破解的密码文件
[root@localhost /]# cd /usr/src/john-1.8.0/run/
[root@localhost run]# ./john /tmp/shadow.txt // 执行暴力破解
Loaded 2 password hashes with 2 different salts (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
123456 (zhangsan) // 左边为密码,右边为用户
123456 (root)
[root@localhost run]# ./john --show /tmp/shadow.txt # 查看以破解出的账户列表
root:123456::0:99999:7:::
zhangsan:123456:18136:0:99999:7:::
使用密码字典文件暴力破解:
暴力破解密码,字典文件很关键。只要你的字典文件够完整,密码破解只是时间上的问题。John the Ripper 默认提供的文件为 password.lst ,其列出了 3000 多个常见弱口令。如果有必要,也可以在字典文件中自行添加更多的密码组合,也可以使用其他更完整的字典文件。
[root@localhost run]# :> john.pot // 清空刚才已破解出的账户列表,以便重新分析
[root@localhost run]# ./john --wordlist=./password.lst /tmp/shadow.txt # 通过--wordlist 选项来指定字典文件的位置
Loaded 2 password hashes with 2 different salts (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
123456 (zhangsan)
123456 (root)
网络端口扫描:
NMAP 是一款强大的端口扫描类安全工具,支持 ping 扫描、多端口检测、OS 识别等多种技术。官方站点为 http://nmap.org/ ,可以通过此站点下载最新源码包。
安装 NMAP 软件包:
[root@localhost /]# yum -y install nmap
扫描语法及类型:
nmap [扫描类型] [选项] <扫描目标> # 常用的选项有 -p 制定扫描的端口,-你禁用反向 DNS 解析(以加快扫描速度)
比较常用的集中扫描类型如下:
案例:
[root@localhost /]# nmap 127.0.0.1 #扫描本机的tcp端口
Starting Nmap 6.40 ( http://nmap.org ) at 2019-06-13 05:21 CST
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled.
Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000050s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
111/tcp open rpcbind
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds
[root@localhost /]# nmap -sU 127.0.0.1 #扫描本机的UDP端口
Starting Nmap 6.40 ( http://nmap.org ) at 2019-06-13 05:22 CST
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled.
Try using --system-dns or specify valid servers with --dns-servers
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000018s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
5353/udp open|filtered zeroconf
Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds
在上面的扫描结果中,STATE列若为open则表示端口为开放状态,为filtered表示可能被防火墙过滤,为closed表示端口为关闭状态。
实际上,NMAP 提供的扫描类型、选项还很多,适用于不同的扫描需求。下面只是一小部分
[root@localhost /]# nmap -p 21 192.168.1.0/24 #检查192.168.1.0网段中哪些主机提供FTP服务。
[root@localhost /]# nmap -n -sP 192.168.1.0/24 #检查1.0网段中有哪些存活主机(能ping通)。
[root@localhost /]# nmap -p 139,445 192.168.1.1-100 #检查1.1-1.100的IP地址中是否开启文件共享服务