JTR是John The Ripper的縮寫本身是用來專門破解linux系統用戶hash的,但現在已經不再那麼局限了,它同樣也提供了非常多的散列類型,雖然,跟hashcat在某些方面確實還差了一個量級,但它也有自己很獨到的地方,多用你就知道了,廢話不多說,咱們開始吧
如何安裝JTRwindows下提供了編譯好的exe工具,但是實際破解的話還是推薦Linux版的,下面就簡單介紹一下在Linux下的安裝方法。
系統環境:在Ubuntu16.04.2 LTS
軟體版本:John The Ripper 1.8
像類似的hash破解工具,不用多說,單獨找個顯卡或者CPU性能好點的機器是必須的,要不,意義何在呢,編譯安裝的過程就非常簡單了,如下[如果實在嫌手敲的累,自己放腳本裡跑跑就好了]
wget http:tar xvfJ john-1.8.0.tar.xzcd john-1.8.0/srcmake 選擇對應的系統平臺進行編譯make clean linux-x86-64
echo $?cd ../run/./john --test 測試當前系統的破解速度echo $?安裝完以後,看到如下的情況,基本就算安裝成功了
一些小建議
1 下面是john 默認破解規則的配置文件(可自行設置每種模式下的具體破解規則,一般沒有極特殊的需求,我們是很少改配置的,有興趣可以仔細閱讀該文件):
cat john.conf2 john在運行期間會在當前目錄產生一個john.pot文件,用來緩存破解時的數據,主要是用來記錄破解進度什麼的,如果你每次想從頭開始破解,直接把這個文件手工刪除,然後重新跑即可
rm -fr john.pot常用參數解釋--single 簡單破解模式,也是默認的執行模式,就是根據用戶和家目錄名進行一些簡單的變形猜解
--incremental 逐個遍歷模式[其實跟hashcat的increment模式是一樣的],直到嘗試完所有可能的組合
--wordlist 純字典模式,後面跟上字典的路徑即可
--external 擴展[自定義]破解規則模式,今天先不講,有閒工夫會專門說
--restore 從上次的破解進度接著執行破解過程,它會把破解的過程存到john.pot文件中,下次破解會先讀取該文件,如果不想讓它從這兒讀取,而是從頭跑,直接把它刪掉就好了
--show 顯示已經破解出來的hash及所對應的明文密碼
--users 只破解指定用戶的hash,可以是用戶名或者對應的uid
--groups 只破解指定用戶組的hash,可以是組名或者對應的gid
--shells 只破解指定shell的hash,可以用逗號分隔多個shell程序
--format 指定要破解的hash所對應的加密類型,可以不用手工指定,john會自動識別
--stdout 從標準重定中接收指定字符關於不同破解模式的官方介紹,如下,沒事兒還是建議多看看官方文檔,對你肯定會有很大的幫助:http://www.openwall.com/john/doc/MODES.shtml
Incremental模式詳解關於Incremental模式的一些默認破解規則,最大跑8位,為了節省時間,建議挨個字符集嘗試,特別不建議一上來就給個特別大的範圍,比如,all,機器性能不是太好的話,可能要跑很久:
破解模式的具體方法破解的密碼長度所包含的字符Incremental:all0-8All 95 printable ASCII charactersIncremental:all150-5All 95 printable ASCII charactersIncremental:all66All 95 printable ASCII charactersIncremental:all77All 95 printable ASCII charactersIncremental:all88All 95 printable ASCII charactersIncremental:alpha1-8A-Z 純大寫字母Incremental:digits1-80-9 純數字Incremental:lanman0-7A-Z, 0-9, and some special characters 大寫字母,數字加一些特殊字符測試舉例暫以破解linux系統用戶密碼hash為例,我們需要先合併下linux系統中的用戶/組和密碼及hash的配置文件(實際中,你可以想辦法直接把目標的帳戶hash文件先down下來,然後再在本地合併,另外,在john中有個比較好的地方,如果實在不知道某條hash的具體散列類型,直接在john後跟上要破解的hash即可,它會自動去識別出類型,然後先嘗試簡單模式,如果簡單模式破不出來,會自動再用incremental):
./unshadow /etc/passwd /etc/shadow > user_hash.txtcat user_hash.txt
./unshadow /etc/group /etc/gshadow >> group_hash.txtcat group_hash.txt實際測試用戶klion:x:1002:1002::/home/klion:
sec:x:1003:1003::/home/sec:
master:x:1004:1004::/home/master:
webadmin:x:1005:1005::/home/webadmin:
httpd:x:1006:1006::/home/httpd:
elk:x:1007:1007::/home/elk:/usr/sbin/noglogin破解過程破解linux系統用戶的密碼hash[新一點的發行版默認基本都是基於'sha512crypt'加密的],實際破解中,最好指定用戶名,shell類型,以節省時間,接下來的演示中,為了能儘快演示給大家看到實際的破解效果,會儘量選擇字典模式,實際破解中,按照下面的爆破順序來就好了: 首先,使用默認的爆模式,它會先嘗試single模式,然後再嘗試incremental模式,直到把所有的規則都跑完,很顯然,如果用戶比較多,這樣耗時必然就會很長,可以看到,由於我的密碼設的都比較簡單,所以瞬間就出來了,實際中可沒那麼輕鬆:
./john --user=klion,sec,1004,webadmin,httpd,1007 user_hash.txt
粗暴簡單的爆破模式 [single],只爆破指定用戶的hash(如果不手工指定hash類型,john會自動幫你識別,並提示你):
. -- --,,,,, .
基於純字典的爆破模式[wordlist,顧名思義,你需要事先精心準備好一個高質量字典,字典不用過大,可以多在質量上做些文章]:
--.. --, .
只破解特定shell類型的用戶hash,如果用戶實在比較多,我們只需要破解那些可以登錄到系統中的用戶就好了,偽用戶可以暫時不用管:
. --.. -- .
逐個遍歷的爆破模式,這裡暫以純數字為例[incremental 實際破解速度可能會比較的慢,畢竟是一位位的猜解,組合比較多]:
. -- -- .
顯示已經破解出的hash:
. --,,,,, . --破解實戰
實際破解中推薦的爆破順序,為了儘量節省爆破時間,可以自行嘗試:
single模式 -> wordlist模式 -> incremental模式 -> 默認模式破解最普通的md5--. --- .破解 ntlm
可能是編譯的時候,沒把有些庫加進去,導致john不支持NT2類型的hash,所以後面的掩飾就直接用win版的john代替了(實際測試的hash為2008r2系統用戶的hash):
-- --. -- .破解mssql 2012系列資料庫用戶hash
--. -- .破解mysql 系列資料庫用戶hash
--. --- .破解oracle 11g 資料庫用戶hash
--. -- .破解 postgresql 資料庫用戶hash
如果特意指定散列類型貌似不太好使,讓它自動識別就好了,不知道今天什麼情況,之前在centos7中用一直都沒問題的呀
john --wordlist=weakpass.txt hash.txt破解office 系列加密後的hash(2016)"c:\Program Files\python27\python.exe" office2john.py sec.docx >> office_hash.txt
type office_hash.txt
john --wordlist=weakpass.txt --format=office office_hash.txt破解drupal7 用戶密碼hash
--. -- .破解rar系列密碼hash(rar和rar5的hash提取破解方法幾乎是一模一樣的)
rar2john.exe sec.rar > rar_hash.txt
type rar_hash.txt
john --wordlist=weakpass.txt --format=rar rar_hash.txt
rar2john.exe sec.rar > rar5_hash.txt
type rar5_hash.txt
john --wordlist=weakpass.txt --format=rar5 rar5_hash.txt破解zip密碼hash
zip2john.exe sec.zip > zip_hash.txt
type zip_hash.txt
john --wordlist=weakpass.txt --format=PKZIP zip_hash.txt破解7z密碼hash
可能提取腳本的問題,暫時沒空管它,不過還有7z2hashcat.pl的腳本(運行時候可能需要你自己裝一些perl模塊)可以直接轉成hashcat識別的格式,大家可以試試
"c:\Program Files\python27\python.exe" 7z2john.py sec.7zjohn --wordlist=weakpass.txt --format=7z 7hash.txt破解pdf密碼hash可能又是腳本的問題,哪天閒下來了統一搞下吧,看樣子,腳本估計沒幾個能用的
"c:\Program Files\python27\python.exe" security-geek-2016-A.pdf > pdf_hash.txt
type pdf_hash.txt
john.exe pdf_hash.txt這裡跟pgsql一樣,不用特意指定類型,暫時還不知道是什麼毛病
破解wpa/wpa2hash直接從標準輸出中讀取密碼然後挨個嘗試
john --stdout --incremental:all | aircrack-ng -b 目標ap的mac -w - wpa2*.cap參考連接https://countuponsecurity.files.wordpress.com/2016/09/jtr-cheat-sheet.pdf
http://msu-nftc.org/courses/intro/material/9 Password Cracking/Tools/John the Ripper.pdf
總結作為john的入門使用,到這裡基本就差不多了,確實非常簡單,裡面所支持的散列類型這裡就不一一演示了,破解方式幾乎都是一樣的,關鍵是知道各種爆破模式的工作細節和各類hash的提取方法,這才是今天要關注的重點,關於自定義規則後續有空會再單獨說明,它比hashcat唯一好一點的是,如果你不指定目標的hash類型它會自動匹配,但實際破解中跟hashcat還是有著比較大差距的[就免費版來說],估計專業版應該會好很多吧,反正我自己沒用過