John the Ripper 實例
John the Ripper的用法例子
這些例子是為了給你一些關于John的特征可以用來做什么的建議。
命令行
- 首先,您需要獲得密碼文件的副本。如果您的系統使用影子密碼,您可以使用John的“unshadow”工具來獲取傳統的Unix密碼文件,作為root用戶:
umask 077 unshadow /etc/passwd /etc/shadow > mypasswd
(如有需要,你可能需要更換檔案名稱。)
然后,讓“mypasswd”對您將運行John的非根用戶帳戶可用。不需要以root用戶身份運行其他命令。
如果您的系統足夠古老,它將密碼保存在 world-readable /etc/passwd中,只需復制該文件。
如果您想破解Kerberos AFS密碼,請使用John的“unafs”實用程序獲取一個類似passwd的文件。
類似地,如果要破解Windows密碼,可以使用Jeremy Allison的PWDUMP輸出格式中的任意一種工具來轉儲Windows密碼散列(LM和/或NTLM)。其中一些實用程序可在此獲得:https://www.openwall.com/passwords/pwdump
- 現在,假設您有一個密碼文件“mypasswd”,并希望破解它。最簡單的方法是讓John使用其默認的順序破解模式:
john mypasswd
這將首先嘗試“單一破解”模式,然后使用帶有規則的wordlist,最后使用“增量”模式。有關這些模式的更多信息,請參閱模式。
強烈建議您獲取一個比John的默認password.lst更大的單詞列表,并在運行John之前,編輯配置文件中的”Wordlist =…”行。以下是一些詞匯表:https://www.openwall.com/wordlists/
在上述網址集合中都是可用的,all.lst(可下載為all.gz)和huge.lst(僅在CD上可用)是“Wordlist=…”設置的好選項。
- 如果你的一些密碼被破解了,它們就儲存在$JOHN/ JOHN .pot中。John.pot文件對人類并不是友好的。您應該使用John本身以方便的格式顯示其“pot文件”的內容:
john --show mypasswd
如果帳戶列表變大,屏幕無法顯示,當然,您應該使用shell的輸出重定向。
您可能會注意到,許多帳戶都禁用了shell。你可以讓John跳過報告中的那些。假設禁用的shell調用為“/etc/expired”,該命令為:john --show --shells=-/etc/expired mypasswd
或更短,但也匹配“/any/path/expired”:john --show --shells=-expired mypasswd
或者如果你也想忽略一些其他shell,說“/etc/newuser”:
john——show——shell =-expired,newuser mypasswd
檢查是否有根賬戶(UID 0)被破解:
user =0 mypasswd
或檢查多個文件中的root (UID 0)帳戶:
john——show——users=0 *passwd* *.pwd
僅顯示根(用戶名“根”)帳戶:
john -show -users=root mypasswd
最后,檢查一下特權群體:
john --show --groups=0,1 mypasswd
- 您可能更喜歡手動管理破解模式。從“單一破解”模式開始是明智的:
john --single mypasswd
或者因為gnu樣式的雙破折號是可選的,因為選項名可以縮寫,只要它們保持不模糊:
john -si mypasswd
您不應該在您希望與John的未來版本一起使用的腳本中縮寫選項,因為現在沒有歧義的內容可能會隨著更多選項的添加而變得模糊。
如果你有更多的文件破解,最好是加載他們在同一時間:
john --single passwd1 passwd2
或者
john --single *passwd* *.pwd
這樣,John會比你在每個密碼文件上分別運行它更快,甚至可能破解更多的密碼。
- 為了捕獲不來自于可用用戶個人信息的弱密碼,您應該繼續使用需要更多處理器時間的破解模式。首先,讓我們嘗試一個小小的單詞列表,啟用了單詞混亂規則:
John——wordlist =password.lst --rules mypasswd
或縮寫選項:
John- w =password.lst -ru mypasswd
然后繼續做一個更大的單詞列表,也應用混亂的規則:
john --wordlist=all.lst --rules mypasswd
如果你有很多空閑的磁盤空間來交換性能和你的密碼文件的哈希類型是相對緩慢,你可以使用John的“唯一”實用程序來消除任何重復的候選密碼:
John——wordlist =。stdout | unique mangled.lstJohn——wordlist =mangled.lst mypasswd
如果你知道你的目標哈希類型截斷密碼在一個給定的長度,你可以進一步優化:
john --wordlist=all.lst --rules --stdout=8 | unique mangled8.lstjohn --wordlist=mangled8.lst mypasswd
或者,您可以簡單地使用在Openwall wordlist收集CDs上可用的huge.lst。它為最常見的語言預先應用了單詞混淆規則,并且清除了所有重復的內容。
根據目標哈希類型、不同salt的數量(如果適用)、wordlist的大小、規則和處理器性能,基于wordlist的破解可能需要不到一秒到多天的時間。
您不必讓John在(偽)終端上運行。如果在類unix系統上運行John,您可以簡單地斷開與服務器的連接,關閉xterm等。John會趕上SIGHUP(“掛斷”信號)并繼續跑。或者,你也可以選擇在后臺立即啟動:
john --wordlist=all.lst --rules mypasswd &
顯然,“&”是Unix shell特有的,不能在大多數其他平臺上工作。
你可以通過指定一個會話名來進一步增強這一點:
john --session=allrules --wordlist=all.lst --rules mypasswd &
這確保了在繼續啟動其他會話時,不會意外地干擾在后臺運行的John實例。
要查看正在運行的會話的狀態,使用:
john --status
為默認會話:
john --status=allrules
這對中斷的和正在運行的會話都有效。要從unix-like系統上運行的會話中獲得最新的信息,請向適當的“john”進程發送SIGHUP。
任何中斷的會議可繼續:
john --restore
或者:
john --restore=allrules
最后,為了減少John對其他進程的影響,您應該在配置文件(參見CONFIG)中設置選項“Idle = Y”。默認值可能會根據JtR的版本和構建版本而有所不同。
破解帳戶只攜帶了一個“good”shell(通常,上面描述的shell、用戶和組過濾器也適用于所有破解模式):
john --wordlist=all.lst --rules --shells=sh,csh,tcsh,bash mypasswd
像所有其他破解模式,它是更快破解所有文件,你需要同時破解:
john --wordlist=all.lst --rules passwd1 passwd2
你只能破解一些密碼。這將嘗試破解所有密碼文件中的所有根(UID 0)帳戶:
john --wordlist=all.lst --rules --users=0 *passwd*
或者,你可能希望不要浪費時間破解你自己的密碼,如果你確定他們是不可破解的:
john --wordlist=all.lst --rules --users=-root,solar *passwd*
有時,把你的密碼散列分解成兩個單獨破解的集合是有用的,如:john --wordlist=all.lst --rules --salts=2 *passwd*john --wordlist=all.lst --rules --salts=-2 *passwd*
這將使John先嘗試在兩個或多個密碼散列上使用salt,然后再嘗試其余的。總的破解時間幾乎是相同的,但是您會提前破解一些密碼,這對于滲透測試和對管理的演示非常有用。類似地,你可以用一個小單詞列表來檢查所有的密碼散列,但是只有那些你可以用一個大單詞列表更快地檢查的密碼散列(用“—salts=2”)。對于大量的密碼散列和/或salt高度不均勻分布的情況,使用大于2的閾值(有時甚至高達1000也可以)是合適的。
請注意,默認的wordlist規則在第一行包括“:”(在列表中不使用的單詞)。如果您已經在沒有使用規則的情況下瀏覽了wordlist,然后又決定嘗試使用相同的wordlist規則,那么您最好將這一行注釋掉。
- John中最強大的破解模式被稱為“增量式”(這不是一個恰當的名稱,但由于歷史原因保留了下來)。你可以簡單地運行:
john --incremental mypasswd
或者:
john -i mypasswd
這將使用默認的“增量”模式參數,這些參數是在配置文件的節中定義的,名為 incremental:ASCII 或[incremental:LM_ASCII ](對于Windows LM哈希)。默認情況下,[Incremental:ASCII ]參數被設置為使用完整的可打印ASCII字符集(95個字符),并嘗試從0到13的所有可能的密碼長度(如果當前哈希類型的最大密碼長度較低,則遞增模式的長度限制相應減少)。[Incremental:LM_ASCII ]與此類似,只是它利用了LM哈希不區分大小寫的優點,而且每個哈希的兩部分限制為7個字符。
不要期望“增量”模式會話在合理的時間內終止(除非所有密碼都很弱并被破解),請閱讀模式來對此進行解釋。
在某些情況下,使用其他預先定義的增量模式參數,并且只破解有限的字符集中的較簡單的密碼會更快。下面的命令將只嘗試10個不同的字符,密碼從“0”到“999999999999999999”(按最佳順序):
john -i=digits mypasswd
當然,您也可以將上面演示的大多數附加特性用于wordlist模式和“增量”模式。例如,在大規模滲透測試中,您可能在一組密碼文件中擁有John crack only root (UID 0)帳戶:
john -i -u=0 *.pwd
- 如果你有一個密碼文件,你已經有很多密碼破解或通過其他方式獲得,密碼是不尋常的,然后你可能想要生成一個新的字符集文件,基于字符頻率從該密碼文件:
john --make-charset=custom.chr mypasswd
然后使用“增量”模式的新文件。
如果你有很多密碼文件來自一個特定的國家,組織,等等,它可能是有用的使用他們所有的字符集文件,然后你使用這些文件破解更多的密碼或其他密碼文件從相同的地方:
john --make-charset=custom.chr passwd1 passwd2
現在配置你的自定義“增量”模式。john -i=custom passwd3
你可以使用一些預先定義或自定義的字過濾器時,產生的字符集文件,讓John考慮一些簡單的密碼只有:
john --make-charset=my_alpha.chr --external=filter_alpha mypasswd
如果你的“pot文件”足夠大(或者你根本沒有任何字符集文件),你可能想用它來生成一組新的主字符集文件:
makechr
其中,“makechr”是調用“john—make-charset=…”的腳本,文件名不同,用于配置文件中定義的所有外部模式字過濾器。在本例中,John將使用基于整個$ John / John.pot的新字符集文件覆蓋字符集文件。(如果您沒有指定任何密碼文件,John會使用整個“pot文件”)。
- 最后,您可能希望向所有使用弱密碼的用戶發送電子郵件,告訴他們更改密碼。(但這并不總是一個好主意,因為很多人不檢查他們的電子郵件或忽略這些信息,這些信息可能是cookie的提示。)編輯John提供的“mailer”腳本:它發送的消息和可能的郵件命令(特別是如果密碼文件來自另一臺機器)。然后運行:
mailer mypasswd
配置文件
有關配置文件及其可能位置的一般信息,請參閱配置。
- 讓我們假設您注意到在某個密碼文件中,許多用戶的密碼被設置為附加了“?!”的登錄名。然后創建一個新的“single crack”模式規則(關于語法的信息,請參閱規則),并將其放在開始的附近:
[List.Rules:Single]Az"?!"
提示:如果你想暫時禁用所有默認的規則,您可以簡單地將部分重命名為John不使用和定義一個新的部分的舊名字,但一定要離開“列表。”前綴的名字完好保持正確的配置文件的語法。
同樣也適用于wordlist模式規則。
- 如果您生成了一個定制的charset文件(如上所述),那么您還需要定義一個配置文件節,該節使用“增量”模式參數。最簡單的情況是這樣的(“Custom”可以替換為任何你喜歡的名字):
[Incremental:Custom]File = custom.chr
這樣,John將只使用用于生成字符集文件的密碼中的字符。為了讓John嘗試更多的角色,添加:
Extra = !@#$%
這些額外的字符將被添加,但仍然被認為是最不可能的。如果你想確定,John會在你的額外角色中嘗試95個不同的角色,你可以加上:
CharCount = 95
這將使John打印一個警告,如果它的字符集中只有少于95個字符。
你也可以使用CharCount來限制John嘗試的不同字符的數量,即使charset文件有更多:
CharCount = 20
如果在生成charset文件時沒有使用任何過濾器,那么將CharCount設置得這么低將使John永遠不會嘗試稀有字符和字符組合,即使對于非常短的密碼也不會,而是將時間花在簡單的較長的候選密碼上。然而,默認的長度切換通常足夠聰明,所以你不需要這個技巧。
要讓John嘗試特定長度的密碼,請使用以下代碼行:
MinLen = 6MaxLen = 8
設置“MinLen”,在上面的示例中,是合理的,如果短密碼不允許在機器上設置你的密碼文件(然而,注意根通常可以設置任何用戶和密碼經常有漏洞操作系統的密碼策略執行功能)。
相反,如果您認為有很多短密碼,您可能會希望將“MaxLen”設置得較低。
- 另一個例子:很多網站的用戶使用簡短的重復單詞作為密碼,比如“fredfred”。由于這種潛在密碼的數量相當低,因此編寫一種新的外部破解模式是有意義的,該模式可以嘗試所有這些密碼,直到一定長度。
您可以在John提供的默認配置文件中找到這種破解模式的實際實現,其中有許多注釋。有關所使用的編程語言的信息,請參閱外部模式。
JOHN THE RIPPER安裝中文使用說明教程
推薦文章: