利用 John the Ripper 破解使用者登入密碼
一、什麼是 John the Ripper ?
看到這個標題,想必大家都很好奇,John the Ripper
是個什麼東西呢?如果直譯其名字的話就是: John
的撕裂者(工具)。 相比大家都會覺得摸不著頭腦,撕裂者是啥玩意啊?
事實上,John the Ripper
是一款大受歡迎的、免費的開源軟體。也是一個基於字典的快速破解密碼的工具,是一款用於在已知密文的情況下嘗試破解出明文的破解密碼軟體,支援目前大多數的加密演算法,如 DES
、 MD4
、 MD5
等。 John the Ripper
支援字典破解方式和暴力破解方式。它支援多種不同型別的系統架構,包括 Unix
、 Linux
Windows
、 DOS
模式、 BeOS
和 OpenVMS
,主要目的是破解不夠牢固的 Unix/Linux
系統密碼。
如果你想使用專門針對特定作業系統優化、並生成相應原生代碼的商業版本的該產品,那麼你可以使用 John the Ripper Pro
,主頁地址在這裡:http://www.openwall.com/john/pro/,你可以根據你的需要去購買或者下載破解字典表。本文以 Linux
下的 John the Ripper
為例來給大家講解其用法。
目前 John the Ripper
的最新版本是 1.8.0
,我們可以通過輸入 john
命令去檢視當前的版本資訊和幫助資訊。
如果想了解 John the Ripper
的最新動態,請參看官網:https://www.openwall.com/john/
如果你想新增新功能, Github
專案連結在這裡:https://github.com/magnumripper/JohnTheRipper
二、John the Ripper 的安裝和使用
John the Ripper
在 Windows
、 Linux
和 MacOS
都有對應的安裝包,去官網下載即可。
官網連結:https://www.openwall.com/john/
而在這裡我就介紹 Debian/Ubuntu
的簡便安裝方法。由於在 apt
倉庫中已經內建了 John the Ripper
sudo apt-get install john
john
命令的具體引數選項如下表:
選 項 | 描 述 |
---|---|
--single |
single crack 模式,使用配置檔案中的規則進行破解 |
--wordlist=FILE--stdin |
字典模式,從 FILE 或標準輸入中讀取詞彙 |
--rules |
開啟字典模式的詞彙表切分規則 |
--incremental[=MODE] |
使用增量模式 |
--external=MODE |
開啟外部模式或單詞過濾,使用 [List.External:MODE] 節中定義的外部函式 |
--stdout[=LENGTH] |
不進行破解,僅僅把生成的、要測試是否為口令的詞彙輸出到標準輸出上 |
--restore[=NAME] |
恢復被中斷的破解過程,從指定檔案或預設為 $JOHN/john.rec 的檔案中讀取破解過程的狀態資訊 |
--session=NAME |
將新的破解會話命名為 NAME ,該選項用於會話中斷恢復和同時執行多個破解例項的情況 |
--status[=NAME] |
顯示會話狀態 |
--make-charset=FILE |
生成一個字符集檔案,覆蓋 FILE 檔案,用於增量模式 |
--show |
顯示已破解口令 |
--test |
進行基準測試 |
--users=[-]LOGIN|UID[,..] |
選擇指定的一個或多個賬戶進行破解或其他操作,列表前的減號表示反向操作,說明對列出賬戶之外的賬戶進行破解或其他操作 |
--groups=[-]GID[,..] |
對指定使用者組的賬戶進行破解,減號表示反向操作,說明對列出組之外的賬戶進行破解。 |
--shells=[-]SHELL[,..] |
對使用指定 shell 的賬戶進行操作,減號表示反向操作 |
--salts=[-]COUNT |
至少對 COUNT 口令載入加鹽,減號表示反向操作 |
--format=NAME |
指定密文格式名稱,為 DES/BSDI/MD5/BF/AFS/LM 之一 |
--save-memory=LEVEL |
設定記憶體節省模式,當記憶體不多時選用這個選項。 LEVEL 取值在 1~3 之間 |
下面我們以破解 Linux
使用者密碼為例子簡單講解一些 John the Ripper
的用法。
三、John the Ripper 破解 Linux 使用者登入密碼
環境準備
Debian/Ubuntu
John the Ripper
工具/etc/passwd
/etc/shadow
注:
/etc/passwd
和/etc/shadow
兩個檔案包含了使用者的資訊和密碼hash
值
破解過程
1、建立一個測試使用者
我們可以新增一個測試使用者 test
,並把它密碼設定為 password
。
建立新使用者test:
sudo useradd -m test -G sudo -s /bin/zsh
zsh
是我當前預設的 shell
,你可以通過如下命令檢視你當前的 shell
:
echo $SHELL
設定 test
使用者的密碼:
sudo passwd test
出現如下資訊,即說明成功了。
2、利用 unshadow
組合 /etc/passwd
和 /etc/shadow
兩個檔案
unshadow
命令會將 /etc/passwd
的資料和 /etc/shadow
的資料結合起來,建立 1
個含有使用者名稱和密碼詳細資訊的檔案。
我們可以通過以下命令將這兩個檔案結合起來:
cd ~
sudo unshadow /etc/passwd /etc/shadow > test_passwd
3、使用 John the Ripper
破解 Linux
使用者登入密碼
我們這時候還需要一個字典,由於 John
自帶了一個字典,字典位於 /usr/share/john/password.lst
。當然你也可以自行去網上選擇適合你的字典。
我們可以開始對Linux登入使用者名稱和密碼進行破解:
john --wordlist=/usr/share/john/password.lst test_passwd
破解結果如下:
我們可以看到, test_passwd
檔案中存在的三個使用者名稱 root
,test
, python
的密碼,均被破解了。
我們可以檢視破解資訊:
john --show test_passwd
以上是關於 John the Ripper
其中一個簡單地使用,更多高階用法,像暴力破解,增量模式等等,請參看官方文件:https://www.openwall.com/john/doc/MODES.shtml