一、什麼是 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