利用 John the Ripper 破解用戶登錄密碼

一、什麼是 John the Ripper ?

看到這個標題,想必大家都很好奇,John the Ripper 是個什麼東西呢?如果直譯其名字的話就是: John 的撕裂者(工具)。 相比大家都會覺得摸不着頭腦,撕裂者是啥玩意啊?

事實上,John the Ripper 是一款大受歡迎的、免費的開源軟件。也是一個基於字典的快速破解密碼的工具,是一款用於在已知密文的情況下嘗試破解出明文的破解密碼軟件,支持目前大多數的加密算法,如 DESMD4MD5 等。 John the Ripper 支持字典破解方式和暴力破解方式。它支持多種不同類型的系統架構,包括 UnixLinuxWindowsDOS 模式、 BeOSOpenVMS ,主要目的是破解不夠牢固的 Unix/Linux 系統密碼。

如果你想使用專門針對特定操作系統優化、並生成相應本地代碼的商業版本的該產品,那麼你可以使用 John the Ripper Pro ,主頁地址在這裏:http://www.openwall.com/john/pro/,你可以根據你的需要去購買或者下載破解字典表。本文以 Linux 下的 John the Ripper 爲例來給大家講解其用法。

目前 John the Ripper 的最新版本是 1.8.0 ,我們可以通過輸入 john 命令去查看當前的版本信息和幫助信息。

john-version

如果想了解 John the Ripper 的最新動態,請參看官網:https://www.openwall.com/john/

如果你想添加新功能, Github 項目鏈接在這裏:https://github.com/magnumripper/JohnTheRipper

二、John the Ripper 的安裝和使用

John the RipperWindowsLinuxMacOS 都有對應的安裝包,去官網下載即可。

官網鏈接: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

default-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 文件中存在的三個用戶名 roottestpython 的密碼,均被破解了。

我們可以查看破解信息:

john --show test_passwd

以上是關於 John the Ripper 其中一個簡單地使用,更多高級用法,像暴力破解,增量模式等等,請參看官方文檔:https://www.openwall.com/john/doc/MODES.shtml

四、演示視頻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章