John有別于Hdra之類的工具。Hydra進(jìn)行盲目的蠻力攻擊,其方法是在FTP服務(wù)器或Telnet服務(wù)器上的服務(wù)后臺(tái)程序上嘗試用戶名/密碼組合。不過(guò),John首先需要散列。所以,對(duì)黑客來(lái)說(shuō)更大的挑戰(zhàn)是,先搞到需要破解的散列。如今,使用網(wǎng)上隨處可得的免費(fèi)彩虹表(rainbow table),比較容易破解散列。只要進(jìn)入到其中一個(gè)網(wǎng)站,提交散列;要是散列由一個(gè)常見單詞組成,那么該網(wǎng)站幾乎立馬就會(huì)顯示該單詞。彩虹表基本上將常見單詞及對(duì)應(yīng)散列存儲(chǔ)在一個(gè)龐大的數(shù)據(jù)庫(kù)中。數(shù)據(jù)庫(kù)越大,涵蓋的單詞就越多。
但是如果你想在自己的系統(tǒng)上本地破解密碼,那么John是值得一試的好工具之一。John躋身于Kali Linux的十大安全工具。在Ubuntu上,它可以通過(guò)新立得軟件包管理器(synaptic package manager)來(lái)安裝。
我在本文中將向各位介紹如何使用unshadow命令連同John,在Linux系統(tǒng)上破解用戶的密碼。在Linux上,用戶名/密鑰方面的詳細(xì)信息存儲(chǔ)在下面這兩個(gè)文件中。
/etc/passwd
/etc/shadow
實(shí)際的密碼散列則存儲(chǔ)在/etc/shadow中;只要對(duì)該機(jī)器擁有根訪問(wèn)權(quán),就可以訪問(wèn)該文件。所以,試著從你自己的Linux系統(tǒng)來(lái)訪問(wèn)該文件?;蛘呦葎?chuàng)建一個(gè)使用簡(jiǎn)單密碼的新用戶。我會(huì)在自己的Linux系統(tǒng)上創(chuàng)建一個(gè)名為happy的新用戶,其密碼為chess。
root@kali:~# adduser happy
Adding user `happy' ...
Adding new group `happy' (1001) ...
Adding new user `happy' (1000) with group `happy' ...
Creating home directory `/home/happy' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for happy
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
root@kali:~#
為了方便演示,最好使用一個(gè)簡(jiǎn)單的密碼,那樣你沒(méi)必要等待太長(zhǎng)的時(shí)間。由于我們的新用戶已創(chuàng)建完畢,現(xiàn)在可以破解其密碼了。
unshadow命令基本上會(huì)結(jié)合/etc/passwd的數(shù)據(jù)和/etc/shadow的數(shù)據(jù),創(chuàng)建1個(gè)含有用戶名和密碼詳細(xì)信息的文件。用法相當(dāng)簡(jiǎn)單。
root@kali:~# unshadow
Usage: unshadow PASSWORD-FILE SHADOW-FILE
root@kali:~# unshadow /etc/passwd /etc/shadow > ~/file_to_crack
我們將unshadow命令的輸出結(jié)果重定向至名為file_to_crack的新文件。
步驟
下面我們來(lái)看一下具體步驟,破解成功后密碼在jhon.pot中,只是密碼:
1 進(jìn)入/root/john-1.7.8/run目錄,用jhon自帶的工具unshadow讀取/etc/shadow
./unshadow /etc/passwd > /root/john-1.7.8/run/passwd.txt
eg: 如果是root用戶可以直接cat /etc/shadow > /root/john-1.7.8/run/passwd.txt
2 第一步用Single Crack 模式破解
Single Crack
專門針對(duì)使用賬號(hào)做密碼的人,他會(huì)嘗試用戶名的變體,在john.conf中的[List.Rules:Single]中定義規(guī)則
./john --single passwd.txt
如果破解成功則可以查看jhon.pot,或者使用:
./jhon --show passwd.txt 查看密碼和用戶
3 第二步用Wordlist Mode模式破解
Wordlist Mode是一種比較簡(jiǎn)單的模式,只要確定字典檔在哪里即可,在jhon.conf配置文件中有默認(rèn)的字典檔‘Wordlist = $JOHN/password.lst’ 即run目錄下的password.lst文件,Wordlist Mode規(guī)則在jhon.conf中的[List.Rules:Wordlist]模塊定義,在[List.Rules:Wordlist]下面還有一個(gè)[List.Rules:NT]模塊是定義有關(guān)rules的變體規(guī)則。
./jhon --wordlist=password.lst passwd.txt
或者
./jhon --wordlist=password.lst --rules passwd.txt
4 第四步用Incremental Mode破解
Incremental 是功能最強(qiáng)的模式,他會(huì)窮舉所有的組合,然后作為密碼來(lái)破解,非常耗時(shí),在配置文件中有[Incremental:All],[Incremental:Alpha],[Incremental:Digits],[Incremental:Alnum],[Incremental:LanMan]等模塊。每個(gè)模塊名在run下都有對(duì)應(yīng)的date文件。
./jhon --incremental=All passwd.txt
5 第五步用External Mode破解
External 讓使用者可以自己編寫C語(yǔ)言的破解模式,在jhon.conf中已經(jīng)自帶了一些破解模式程式。
參數(shù)解釋
--stdout 輸出結(jié)果到屏幕
--restore 從上次解密中斷的地方繼續(xù)執(zhí)行,ctrl+c 中斷執(zhí)行,當(dāng)前的狀態(tài)會(huì)被存放在一個(gè)名為restore的文檔內(nèi),使用--restore可以從restore內(nèi)讀取上次中斷的位置,然后繼續(xù)破解下去
--session 設(shè)定當(dāng)前記錄檔的名稱
--make-charset 字元頻率表,他會(huì)以破解出來(lái)的密碼為基礎(chǔ)來(lái)產(chǎn)生字元頻率表,可用于Incremental模式
--show 顯示已經(jīng)破解密碼,因?yàn)閖ohn.POT并不存儲(chǔ)賬號(hào)信息,使用show的時(shí)候應(yīng)該輸入相關(guān)的passwd文件
--test 測(cè)試機(jī)器執(zhí)行各種類型密碼的破解速度
--users 只破解某個(gè)賬號(hào)的密碼,可以是用戶名或者UID號(hào)碼,前面加‘-’表示不破解相關(guān)用戶密碼
--groups 只破解某個(gè)組內(nèi)的用戶密碼,前面加上‘-’表示不破解某個(gè)組內(nèi)用戶的密碼
--shells 之破解使用某種類型shell的用戶,前面加上‘-’表示不破解
--salts 只破解salts大于count的密碼,salts是unix用來(lái)作為密碼編碼的基礎(chǔ)單位
--format 預(yù)定義密碼破解的類型 DES/BSDI/MD5/BF/AFS/LM/