使用John the ripper工具來嘗試破解Linux密碼


這篇文章主要介紹了使用John the ripper工具來嘗試破解Linux密碼的方法,這款工具可能主要被用來破解系統用戶的密碼以獲得文件操作權限,需要的朋友可以參考下

John有別於Hdra之類的工具。Hydra進行盲目的蠻力攻擊,其方法是在FTP服務器或Telnet服務器上的服務后台程序上嘗試用戶名/密碼組合。不過,John首先需要散列。所以,對黑客來說更大的挑戰是,先搞到需要破解的散列。如今,使用網上隨處可得的免費彩虹表(rainbow table),比較容易破解散列。只要進入到其中一個網站,提交散列;要是散列由一個常見單詞組成,那么該網站幾乎立馬就會顯示該單詞。彩虹表基本上將常見單詞及對應散列存儲在一個龐大的數據庫中。數據庫越大,涵蓋的單詞就越多。

但是如果你想在自己的系統上本地破解密碼,那么John是值得一試的好工具之一。John躋身於Kali Linux的十大安全工具。在Ubuntu上,它可以通過新立得軟件包管理器(synaptic package manager)來安裝。

我在本文中將向各位介紹如何使用unshadow命令連同John,在Linux系統上破解用戶的密碼。在Linux上,用戶名/密鑰方面的詳細信息存儲在下面這兩個文件中。


/etc/passwd
/etc/shadow

實際的密碼散列則存儲在/etc/shadow中;只要對該機器擁有根訪問權,就可以訪問該文件。所以,試着從你自己的Linux系統來訪問該文件。或者先創建一個使用簡單密碼的新用戶。我會在自己的Linux系統上創建一個名為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:~#

為了方便演示,最好使用一個簡單的密碼,那樣你沒必要等待太長的時間。由於我們的新用戶已創建完畢,現在可以破解其密碼了。

unshadow命令基本上會結合/etc/passwd的數據和/etc/shadow的數據,創建1個含有用戶名和密碼詳細信息的文件。用法相當簡單。


root@kali:~# unshadow
Usage: unshadow PASSWORD-FILE SHADOW-FILE
root@kali:~# unshadow /etc/passwd /etc/shadow > ~/file_to_crack

我們將unshadow命令的輸出結果重定向至名為file_to_crack的新文件。

步驟

下面我們來看一下具體步驟,破解成功后密碼在jhon.pot中,只是密碼:
1 進入/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

    專門針對使用賬號做密碼的人,他會嘗試用戶名的變體,在john.conf中的[List.Rules:Single]中定義規則 


./john --single passwd.txt 

  如果破解成功則可以查看jhon.pot,或者使用: 


./jhon --show passwd.txt 查看密碼和用戶

   
3 第二步用Wordlist Mode模式破解 
  Wordlist Mode是一種比較簡單的模式,只要確定字典檔在哪里即可,在jhon.conf配置文件中有默認的字典檔‘Wordlist = $JOHN/password.lst’ 即run目錄下的password.lst文件,Wordlist Mode規則在jhon.conf中的[List.Rules:Wordlist]模塊定義,在[List.Rules:Wordlist]下面還有一個[List.Rules:NT]模塊是定義有關rules的變體規則。 


./jhon --wordlist=password.lst passwd.txt 

  或者 


./jhon --wordlist=password.lst --rules passwd.txt 

   
4 第四步用Incremental Mode破解 
  Incremental 是功能最強的模式,他會窮舉所有的組合,然后作為密碼來破解,非常耗時,在配置文件中有[Incremental:All],[Incremental:Alpha],[Incremental:Digits],[Incremental:Alnum],[Incremental:LanMan]等模塊。每個模塊名在run下都有對應的date文件。 


./jhon --incremental=All passwd.txt 

   
5 第五步用External Mode破解 
  External 讓使用者可以自己編寫C語言的破解模式,在jhon.conf中已經自帶了一些破解模式程式。 
   
   
參數解釋 
--stdout             輸出結果到屏幕 
--restore            從上次解密中斷的地方繼續執行,ctrl+c 中斷執行,當前的狀態會被存放在一個名為restore的文檔內,使用--restore可以從restore內讀取上次中斷的位置,然后繼續破解下去 
--session            設定當前記錄檔的名稱 
--make-charset        字元頻率表,他會以破解出來的密碼為基礎來產生字元頻率表,可用於Incremental模式 
--show               顯示已經破解密碼,因為john.POT並不存儲賬號信息,使用show的時候應該輸入相關的passwd文件 
--test               測試機器執行各種類型密碼的破解速度 
--users               只破解某個賬號的密碼,可以是用戶名或者UID號碼,前面加‘-’表示不破解相關用戶密碼 
--groups              只破解某個組內的用戶密碼,前面加上‘-’表示不破解某個組內用戶的密碼 
--shells               之破解使用某種類型shell的用戶,前面加上‘-’表示不破解 
--salts                只破解salts大於count的密碼,salts是unix用來作為密碼編碼的基礎單位 
--format                預定義密碼破解的類型 DES/BSDI/MD5/BF/AFS/LM/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM