初探密码破解工具JTR
JTR是John The Ripper的縮寫本身是用來專門破解linux系統用戶hash的,但現在已經不再那么局限了,它同樣也提供了非常多的散列類型,雖然,跟hashcat在某些方面確實還差了一個量級,但它也有自己很獨到的地方,多用你就知道了,廢話不多說,咱們開始吧
如何安裝JTR
windows下提供了編譯好的exe工具,但是實際破解的話還是推薦Linux版的,下面就簡單介紹一下在Linux下的安裝方法。
系統環境:在Ubuntu16.04.2 LTS
軟件版本:John The Ripper 1.8
像類似的hash破解工具,不用多說,單獨找個顯卡或者CPU性能好點的機器是必須的,要不,意義何在呢,編譯安裝的過程就非常簡單了,如下[如果實在嫌手敲的累,自己放腳本里跑跑就好了]
wget http://www.openwall.com/john/j/john-1.8.0.tar.xz tar xvfJ john-1.8.0.tar.xz cd john-1.8.0/src make 選擇對應的系統平臺進行編譯 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:all | 0-8 | All 95 printable ASCII characters |
| Incremental:all15 | 0-5 | All 95 printable ASCII characters |
| Incremental:all6 | 6 | All 95 printable ASCII characters |
| Incremental:all7 | 7 | All 95 printable ASCII characters |
| Incremental:all8 | 8 | All 95 printable ASCII characters |
| Incremental:alpha | 1-8 | A-Z 純大寫字母 |
| Incremental:digits | 1-8 | 0-9 純數字 |
| Incremental:lanman | 0-7 | A-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會自動幫你識別,并提示你):
./john --single --user=klion,sec,1004,webadmin,httpd,1007 user_hash.txt基于純字典的爆破模式[wordlist,顧名思義,你需要事先精心準備好一個高質量字典,字典不用過大,可以多在質量上做些文章]:
john --wordlist=./weakpass.txt --users=elk,root user_hash.txt只破解特定shell類型的用戶hash,如果用戶實在比較多,我們只需要破解那些可以登錄到系統中的用戶就好了,偽用戶可以暫時不用管:
./john --wordlist=./weakpass.txt --shells=/usr/sbin/noglogin user_hash.txt逐個遍歷的爆破模式,這里暫以純數字為例[incremental 實際破解速度可能會比較的慢,畢竟是一位位的猜解,組合比較多]:
./john --incremental:digits --users=webadmin user_hash.txt顯示已經破解出的hash:
./john --user=klion,sec,1004,webadmin,httpd,1007 user_hash.txt --show破解實戰
實際破解中推薦的爆破順序,為了盡量節省爆破時間,可以自行嘗試:
single模式 -> wordlist模式 -> incremental模式 -> 默認模式破解最普通的md5
john --wordlist=weakpass.txt --format=Raw-MD5 hash.txt破解 ntlm
可能是編譯的時候,沒把有些庫加進去,導致john不支持NT2類型的hash,所以后面的掩飾就直接用win版的john代替了(實際測試的hash為2008r2系統用戶的hash):
john --list=formats 查看john所支持的所有散列類型 john --wordlist=weakpass.txt --format=NT2 hash.txt破解mssql 2012系列數據庫用戶hash
john --wordlist=weakpass.txt --format=mssql12 hash.txt破解mysql 系列數據庫用戶hash
john --wordlist=weakpass.txt --format=mysql-sha1 hash.txt破解oracle 11g 數據庫用戶hash
john --wordlist=weakpass.txt --format=oracle11 hash.txt破解 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
john --wordlist=weakpass.txt --format=drupal7 hash.txt破解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.7z john --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還是有著比較大差距的[就免費版來說],估計專業版應該會好很多吧,反正我自己沒用過
總結
以上是生活随笔為你收集整理的初探密码破解工具JTR的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云服务器CentOS永久更改主机名
- 下一篇: 无人机基础知识