1. 程式人生 > >利用 John the Ripper 破解使用者登入密碼

利用 John the Ripper 破解使用者登入密碼

一、什麼是 John the Ripper ?

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

事實上,John the Ripper 是一款大受歡迎的、免費的開源軟體。也是一個基於字典的快速破解密碼的工具,是一款用於在已知密文的情況下嘗試破解出明文的破解密碼軟體,支援目前大多數的加密演算法,如 DESMD4MD5 等。 John the Ripper 支援字典破解方式和暴力破解方式。它支援多種不同型別的系統架構,包括 UnixLinux

WindowsDOS 模式、 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

四、演示視訊