- 網絡攻防實戰研究:漏洞利用與提權
- 祝烈煌
- 1733字
- 2019-11-18 15:09:22
1.3 使用John the Ripper破解Linux密碼
John the Ripper(以下簡稱“John”)是Kali Linux的十大安全工具之一,是一款基于字典的密碼破解工具,官方網站為http://www.openwall.com/john/,目前適用于Windows的版本為john179j5w,適用于Linux的版本為John 1.8.0。John的內容全是密碼的單詞表,它使用單詞表中的每一個密碼,試圖破解特定的密碼散列。換句話說,John使用暴力破解,其破解效率與字典和密碼設置強度有關。從總體上看,John是一款不錯的Linux密碼暴力破解工具,在Windows和Linux下都有圖形界面。Windows圖形界面可以訪問http://openwall.info/wiki/john/johnny下載。
1.3.1 準備工作
1.下載并解壓
訪問John的官方網站,下載Windows環境下的john179j5w版本(http://www.openwall.com/john/g/john179j5w.zip),將文件直接解壓到run目錄下。
2.字典文件
需要提前準備密碼字典文件,一個密碼占一行。如果是有針對性的破解,可以收集網站的所有密碼,進行社工組合。
3.整理需要破解的密碼文件
Linux密碼涉及兩個文件,分別是/etc/passwd和/etc/shadow。先將passwd和shadow文件下載,或者讀取其內容并保存為相應的文件,然后將用戶名后面的字符串復制到一個txt文件中(例如命名為shadow.txt),如圖1-39所示。

圖1-39 整理需要破解的Linux密碼
1.3.2 John的4種破解模式
下面介紹John的4種破解模式。
1.字典文件破解模式(Wordlist Mode)
這是John所支持的破解模式中最簡單的一種,我們要做的唯一工作就是告訴John字典文件在哪里(字典文件是文本文件,每行一個單字,代表嘗試的密碼),以便John取出破解。在字典文件破解模式里,可以使用“字詞變化”功能讓每個讀入的單字自動套用這些規則,以提高破解機率。
2.簡單破解模式(Single Crack)
簡單破解模式是針對將賬號作為密碼使用的“懶人”所設計的。如果一個使用者的賬號是“john”,密碼也為“john”,那么在簡單破解模式里John會拿密碼文件內“賬號”列的相關信息來破解密碼,并且將多種字詞變化規則套用到“賬號”內,以提高破解的機率。例如,對賬號“john”,會嘗試用“john”、“john0”、“njoh”、“j0hn”等來破解。
3.增強破解模式(Incremental Mode)
這是John功能最強大的破解模式,它會自動嘗試所有可能的字符組合,然后將其當作密碼來破解。這個破解模式所需要的時間非常長,因為嘗試組合字符要耗費非常多的時間,所以John定義了一些字符頻率表(Character Frequency Tables)來幫助破解。簡言之,這種破解方法就是暴力破解法,把所有可能的密碼組合都測試一次,以得到正確的結果。
4.外掛破解模式(External Mode)
這種破解模式讓使用者可以自己用C語言編寫一些破解模式程序,然后將其掛在John里面使用。其實所謂“破解模式程序”就是一些用C語言設計的函數,其功能就是產生一些單字來讓John嘗試破解。運行John,當載入破解模式程序時會自動編譯這些C語言函數并使用它們。
在默認情況下,John使用passwd.lst作為攻擊用的字典文件。我們可以編輯這個文件或創建自己的口令文件,命令如下。
john -single passwd //單一模式 john -wordfile:bigdict.dic passwd //字典破解模式 john -wordfile:bigdict.dic -rules passwd //字典加規則進行破解 john -i:all passwd //增強模式破解 john -external:double passwd //外掛模式破解
1.3.3 使用John破解Linux密碼
將密碼字典文件及其需要破解的Shadow放在John目錄的run文件夾中,然后根據情況進行破解。password.dic為密碼字典,shadow.txt是需要破解的Linux密碼文件。
1.簡單密碼破解
“John-single shadow.txt”和“john shadow.txt”命令是最直接、最簡單的破解方式。如圖1-40所示,簡單密碼的破解效果不一定很好,主要是根據用戶名來做一些變化。例如,“antian”是用戶名,使用簡單模式,可能會設計密碼“antian123”、“antian456”等來破解“傻瓜型”的密碼。

圖1-40 使用簡單模式進行破解
2.使用密碼字典進行破解
這是John破解模式中最簡單的一種,需要指定字典位置,如果沒有指定路徑,則默認是在當前目錄下。在字典破解模式里,可以使用字詞變化功能在每個讀入的單字中自動套用這些規則,以提高破解機率,命令如下。
john -wordlist=password.dic shadow.txt
或者
john -w:pass.txt shadows.txt
或者
john.exe -wordlist=D:\john\dic\password.dic D:\john\shadow\shadow.txt
密碼字典可以訪問https://wiki.skullsecurity.org/Passwords下載。一般來講,如果有特定信息組合的字典,破解效果會比較好,也就是說,要收集一切可能是被破解用戶密碼的信息(目前有社工字典生成器可供選擇)。本例隨機使用一些組合字典,如圖1-41所示,對shadow.txt文件中的密碼進行破解,破解成功的會顯示密碼和用戶名。如果需要查看詳細信息,可以打開John目錄下的john.pot文件,如圖1-42所示,會顯示密碼值和破解的密碼明文。

圖1-41 顯示破解成功的用戶名和密碼

圖1-42 查看john.pot文件
3.使用規則模式+字典進行破解
john -w: password.dic -rules shadow.txt
rules在john.ini文件中定義。
1.3.4 查看破解結果
使用“john-show shadow.txt”命令可以查看破解結果。
破解Linux密碼,首先需要使用unshadow命令,得到一個破解程序識別的口令文件,然后將/etc/passwd和/etc/shadow文件組合起來,執行“unshadow/etc/passwd/etc/shadow>passwd”命令,再使用John進行破解。