john類似於hashcat
一樣,也是一款密碼破解方式,john跟專注於系統密碼的破解,並且和hashcat
一樣在kali
中自帶
hash請見hash的簡單使用
識別Hash類型
john
會自動識別需要破解的hash
,但是很多時候會識別錯誤,這不用擔心,我們使用專門識別hash類型
的工具hash-identifier,幸運的是他在kali
中自帶,也可以使用網站來識別hash
的類型哈希類型標識符
在對hash
值的類型進行識別后,我們需要在john
找到是否支持破解該類型的hash
john --list=formats
可以列出所有可以支持破解的hash
類型,我們可以配合grep
進行篩選john --list=formats | grep md5
找到john
可以破解該類型hash
的名稱,我們可以直接使用john
進行密碼的破解,下面是john
在使用的時候語法格式
john --format=[format] --wordlist=[path to wordlist] [path to file]
重要的參數
--wordlist=字典
,--format=加密類型
破解windows hash
我們知道windows hash
的加密為NTLM
,需要我們--format
指定,在john
中,分別有NT
和LM
兩種加密,這里我並不知道使用哪一個
john --help
可以查看幫助
在末尾可以看到--list=formats
和--list=subformats
可以查看所支持的破解類型
不指定破解類型和字典直接破解
john會自動進行使用默認的字典,並識別我們的hash類型進行自動選擇
這里我們的hash
存儲在a
文件中
john a
破解出來的密碼為空,Administrator
和Guest
的密碼確實為空,但是Jackson
的密碼並不是空的,所以這里john
自動識別類型錯誤了
當我們破解成功后,john會將破解成功的hash緩存在我們家目錄的.john/john.pot
文件中,需要我們手動進行刪除,否則下次爆破會出現
意思就是讓我們--show
查看破解成功的密碼,或者--format=LM
指定破解類型
需要手動刪除rm -rf ~/.john/john.pot
指定類型進行破解
john --format=NT a
,這里的坑就是john
推薦我們使用LM
類型,但是並不是
並沒有指定字典,使用默認字典/usr/share/john/password.lst
進行破解,摁下Enter
查看正在破解1ms8wb..1m1L3R
由於破解時間較長,Ctrl + C
停止
同樣刪除john.pot
文件
使用字典進行暴力破解
john --wordlist=2.txt --format=NT a
成功將Jackson密碼破解
破解Linux hash密碼
Linux的密碼存儲在/etc/shadow
中,只需要查看並復制即可破解
這里hash文件為b
root:$6$90/diajJs2fHcIGa$hB5wj4tMF8Qdd6o5VNRTY4v4vEpV8x0NP4O1N/tpJ8ns7JmJ8RyvSih7.W8TQdfwweUFh16dJejFpKw07i2uR1::0:99999:7:::
jackson:$6$Zje1WaoS$eH24JFr5n67149yBcDWWsfxME5cYlOXMmJxnf2uinbvYm8vWc0BmjvAoXIFY/0ZUJItRpPhHkCGDiqjXT10EV0:19066:0:99999:7:::
Linux的加密算法為sha512crypt
破解john -wordlist=2.txt b
unshadow
John 可能非常挑剔它需要數據的格式才能使用它,因此 - 為了破解 /etc/shadow 密碼,您必須將它與 /etc/passwd 文件結合起來,以便 John了解所提供的數據。為此,我們使用了 John 工具套件中內置的一個名為 unshadow 的工具。unshadow 的基本語法如下:
unshadow [path to passwd] [path to shadow]
unshadow- 調用取消陰影工具
[path to passwd]
- 包含您從目標機器獲取的 /etc/passwd 文件副本的文件
[path to shadow]
- 包含您從目標機器獲取的 /etc/shadow 文件副本的文件
用法示例:
unshadow local_passwd local_shadow > unshadowed.txt
文件注意事項
使用 unshadow 時,您可以使用整個 /etc/passwd 和 /etc/shadow 文件 - 如果您有它們,或者您可以使用每個文件的相關行,例如:
文件 1 - local_passwd
包含根用戶的 /etc/passwd 行:
root:x:0:0::/root:/bin/bash
文件 2 - local_shadow
包含根用戶的 /etc/shadow 行:
root:$6$2nwjN454g.dv4HN/$m9Z/r2xVfweYVkrr.v5Ft8Ws3/YYksfNwq96UL1FX0OJjY1L6l.DS3KEVsZ9rOVLB/ldTeEL/OIhJZ4GMFMGA0:18576::::::
然后使用john --format=sha512crypt --wordlist=/usr/share/wordlists/rokeyou.txt unshadow.txt
單一破解模式
到目前為止,我們一直在使用 John 的單詞列表模式來處理簡單的暴力破解,而不是那么簡單的哈希。但是 John 還有另一種模式,叫做 Single Crack 模式。在這種模式下,John 僅使用用戶名中提供的信息,通過略微更改用戶名中包含的字母和數字,以啟發式方式嘗試並計算出可能的密碼
詞處理
展示什么是 Single Crack 模式以及什么是單詞 mangling 的最好方法是實際通過一個示例:
如果我們使用用戶名:Markus
一些可能的密碼可能是:
- Markus1, Markus2, Markus3 (etc.)
- MArkus, MARkus, MARKus (etc.)
- Markus!, Markus$, Markus* (etc.)
使用單一破解模式
要使用單一破解模式,我們使用與目前為止大致相同的語法,例如,如果我們想破解名為“Mike”的用戶的密碼,使用單一模式,我們將使用:
john --single --format=[format] [path to file]
--single
這個標志讓 john 知道你想使用單一哈希破解模式
用法示例:
john --single --format=raw-sha256 hashes.txt
關於單破解模式下文件格式的說明:
如果您在單一破解模式下破解哈希,則需要更改您為 john 提供的文件格式,以便它了解從哪些數據創建單詞列表。您可以通過在哈希之前添加哈希所屬的用戶名來執行此操作,因此根據上面的示例 ,我們將更改文件 hashes.txt
From:
1efee03cdcb96d90ad48ccc7b8666033
To
mike:1efee03cdcb96d90ad48ccc7b8666033
試着破解Joker
的hash值7bf6d9bb82bed1302f331fc6b816aada
你的答案是什么呢?
破解受密碼保護的 Zip 文件
是的!你沒看錯。我們可以使用 John 來破解受密碼保護的 Zip 文件的密碼。同樣,我們將使用 john 工具套件的單獨部分將 zip 文件轉換為 John 可以理解的格式,但出於所有意圖和目的,我們將使用您的語法你現在已經很熟悉了。
Zip2John
與我們之前使用的 unshadow 工具類似,我們將使用 zip2john 工具將 zip 文件轉換為 John 能夠理解並有望破解的哈希格式。基本用法是這樣的:
zip2john [options] [zip file] > [output file]
[options]
- 允許您將特定的校驗和選項傳遞給 zip2john,這通常不是必需的
[zip file]
- 您希望獲取其哈希值的 zip 文件的路徑
>
- 這是輸出導向器,我們用它來將這個文件的輸出發送到...
[output file]
- 這是將存儲輸出的文件
用法示例
zip2john zipfile.zip > zip_hash.txt
然后,我們可以在名為“zip_hash.txt”的示例用例中獲取我們從 zip2john 輸出的文件,並且就像我們對 unshadow 所做的那樣,將它直接提供給 John,因為我們已經專門為它輸入了內容。
john --wordlist=/usr/share/wordlists/rockyou.txt zip_hash.txt
練習https://junglezt.lanzouf.com/iZLDf0rbr27a
,下載得到secure.zip
,嘗試解開這個zip壓縮包吧
破解受密碼保護的 RAR 存檔
我們可以使用與上一個任務中使用的過程類似的過程來獲取 rar 檔案的密碼。如果您不熟悉,rar 檔案是由 Winrar 檔案管理器創建的壓縮文件。就像 zip 文件一樣,它們可以壓縮各種文件夾和文件。
Rar2John
哈哈,似曾相識的感覺,與我們剛剛使用的 zip2john 工具幾乎相同,我們將使用 rar2john 工具將 rar 文件轉換為 John 能夠理解的哈希格式。基本語法如下:
rar2john [rar file] > [output file]
rar2john
- 調用 rar2john 工具
[rar file]
- 您希望獲取其哈希值的 rar 文件的路徑
>
- 這是輸出導向器,我們用它來將這個文件的輸出發送到...
[output file]
- 這是將存儲輸出的文件
用法示例
rar2john rarfile.rar > rar_hash.txt
再一次,我們可以在我們的示例用例中獲取我們從 rar2john 輸出的文件,稱為“rar_hash.txt”,就像我們對 zip2john 所做的那樣,我們可以將它直接提供給 John..
john --wordlist=/usr/share/wordlists/rockyou.txt rar_hash.txt
練習:https://junglezt.lanzouf.com/iP8oZ0rbszzc
,下載得到secure.rar
文件,嘗試破解這個文件吧
破解SSH密鑰密碼
好的,好的,我聽到了,不再有文件存檔了!美好的!讓我們探索 John 在 CTF 挑戰中半頻繁出現的另一種用法。使用John破解id_rsa文件的SSH私鑰密碼。除非另有配置,否則您將使用密碼驗證您的 SSH 登錄。但是,您可以配置基於密鑰的身份驗證,它允許您使用您的私鑰 id_rsa 作為身份驗證密鑰通過 SSH 登錄到遠程計算機。然而,這樣做通常需要密碼——在這里我們將使用 John 來破解此密碼,以允許使用密鑰通過 SSH 進行身份驗證。
ssh2john
誰能猜到,另一個轉換工具?好吧,這就是與 John 合作的意義所在。顧名思義,ssh2john 將您用於登錄SSH會話的 id_rsa 私鑰轉換為 john 可以使用的哈希格式。撇開玩笑不談,這是 John 多才多藝的另一個很好的例子。語法是關於你所期望的。請注意,如果您沒有安裝 ssh2john,則可以使用位於 /opt/john/ssh2john.py 中的 ssh2john.py。如果您這樣做,請將ssh2john命令替換為python3 /opt/ssh2john.py
,Kali 上的或,python /usr/share/john/ssh2john.py
.
ssh2john [id_rsa private key file] > [output file]
ssh2john
- 調用 ssh2john 工具
[id_rsa private key file]
- 您希望獲取其哈希值的 id_rsa文件的路徑
>
- 這是輸出導向器,我們用它來將這個文件的輸出發送到...
[output file]
- 這是將存儲輸出的文件
用法示例
ssh2john id_rsa > id_rsa_hash.txt
最后一次,我們提供從 ssh2john 輸出的文件,在我們的示例用例中稱為“id_rsa_hash.txt”,就像我們對 rar2john 所做的那樣,我們可以與 John 無縫地使用它:
john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa_hash.txt