John the Ripper的四種破解模式
「字典檔」破解模式(Wordlist Mode)
這在John所支援的破解 模式中是最簡單的一種,你要做的唯一工作就是告訴John字典檔在哪(字典檔就是文字檔,內容每行一個單字代表試驗的密碼),好讓它可以取出破解。在「字 典檔」破解模式裡可以使用「字詞變化」功能,來讓這些規則自動的套用在每個讀入的單字中,以增加破解的機率。
「簡單」破解模式(Single Crack)
「簡 單」破解模式是專門針對「使用帳號當作密碼」的懶人所設計的;所謂「使用帳號當作密碼」的意思是,如果一個使用者帳號是「john」,它的密碼也取為 「john」。在「簡單」破解模式裡john會拿密碼檔內的「帳號」欄位等相關資訊來破解密碼,並且使用多種「字詞變化」的規則套用到的「帳號」內,以增 加破解的機率。如帳號「john」,它會嘗試用「john」、「john0」、「njoh」、「j0hn」….等規則變化來嘗試密碼的可能性。
「增強」破解模式(Incremental Mode)
這 是John裡面功能最強大的破解模式,它會自動嘗試所有可能的字元組合,然後當作密碼來破解。這個破解模式所需要的時間非常冗長,因為要嘗試組合字元是非 常耗費時間的,所以John才會定義一些「字元頻率表」(character frequency tables)來幫助破解。簡言之這個破解方法就是「暴力法」,把所有可能的密碼組合都測試一次,來得到正確的結果。
「外掛模組」破解模式(External Mode)
這個破解模式是讓使用者可以自己用C語言寫一些「破解模組程式」,然後掛在John裡面來使用。其實所謂的「破解模組程式」就是一些用C語言設計好的副函示,然後它的功能就是產生出一些單字來讓John嘗試破解。而
在執行John程式時,它在載入這些「破解模組程式」時會自動編譯這些C語言副函示然後來使用。(真偉大,光這點就讓筆者佩服五體投地)
John the Ripper命令列參數說明
【命令列指令】
john [-命令列參數] [密碼檔檔名]
【命令列參數】
參數:-single
說明:使用「簡單」(Single Crack)破解模式解密,主要是根據使用者的「帳號」產生變化來猜測解密,其變化規則記錄在JOHN.INI檔案的 [List.Rules:Single] 區域內。(稍後會再介紹)
範例:john -single passwd
參數:-wordfile:[字典檔檔名] -stdin
說明:使用「字典檔」破解模式解密,由字典檔內讀取單字來破解;或是可以加上-stdin參數,代表由鍵盤輸入單字來破解。
範例:john -wordfile:bigdict.dic passwd
參數:-rules
說 明:在「字典檔」破解模式下,開啟字詞規則變化功能,如「字典檔」讀入單字cook,則開啟字詞變化下,程式可能會嘗試cook、c00k、 cooker、cook0…等其它字詞。詳細變化規則記錄在JOHN.INI檔案的 [List.Rules:Wordlist] 區域內。(稍後會再介紹)
範例:john -wordfile:bigdict.dic -rules passw
參數:-incremental[:模式名稱](參數也可以簡寫成 -i[:模式名稱])
說明:使用「增強」破解模式解密,就是組合所有可能的字元當作密碼來破解。在 JOHN.INI檔案內的 [Incremental:*****] 區域裡定義好許多的模式名稱,可以指定使用哪一個模式來破解。(稍後會再介紹)
範例:john -i:all passwd
參數:-external:[模組名稱]
說明:使用「外掛模組」破解模式解密,使用者可以自己撰寫額外的「破解模組程式」。「破解模組程式」是記錄在JOHN.INI檔案內的 [List.External:******] 區域內。
範例:john -external:double passwd
參數:-stdout[:LENGTH]
說明:這個選項跟破解沒有任何關係,只是單純顯示John所產生出來的單字到螢幕上。
範例:john –i:all –stdout(如圖) <img src=http://www.starkun.com/txtjpg/Image62.gif>
參數:-restore[:回復檔案名稱]
說 明:繼續上次中斷的解密工作。John在執行破解密碼工作時,可以按下<CTRL C>鍵中斷工作,而當前的解密進度情形會被存放在一個名為「restore」的檔案內。而使用「-restore」參數,可以從「restore」檔案內 讀取上一次破解時候中斷的位置,然後接下去繼續破解。
範例:john –restore
參數:-session[:記錄檔檔名]
說明:這個選項是讓你設定目前工作記錄檔(session file)的檔名。所謂的工作記錄檔就是可以用「-restore」參數回復工作的檔案。另外,在使用John做多工破解工作時,使用「-session」參數可以為每個工作設定各別的記錄檔,而不會混在一起。
範例:john –wordfile:bigdict.dic –session:work1 passwd
參數:-status[:記錄檔檔名]
說明:顯示工作記錄檔裡面所記錄的工作狀態。
範例:john –status:restore
參數:-makechars:[檔名]
說明:製作「字元頻率表」。這個選項會以目前已破解出的密碼為基礎,來產生「字元頻率表」(註:John會把已破解出的密碼記錄在JOHN.POT檔案內,)。如果所指定檔名的檔案已經存在的話,會被覆寫。此選項產生出來的檔案,可以用在「增強」破解模式上。
範例:john –makechars:ownchars
參數:-show
說明:顯示目前已經破解出的密碼。因為JOHN.POT檔案內並不儲存「帳號」資料,所以使用時你應該同時輸入相對應的密碼檔。
範例:john –show passwd(如圖) <img src=http://www.starkun.com/txtjpg/Image63.gif>
參數:-test
說明:測試目前機器執行John各類型密碼破解時的速度。
範例:john –test(如圖)<img src=http://www.starkun.com/txtjpg/Image64.gif>
參數:-users:[-]LOGIN|UID [,..]
說明:只破解某個「帳號」的密碼,如只針對root或擁有root權利UID=0的使用者。(若在LOGIN|UID名稱前加上“-”符號則是相反,表示不要破解這個「帳號」的密碼)
範例:john –i:all –users:root passwd(如圖)<img src=http://www.starkun.com/txtjpg/Image65.gif>
參數:-groups:[-]UID[,..]
說明:只破解某個「群組」內用戶的密碼。(若在UID名稱前加上“-”符號則是相反,表示不要破解這個「群組」內用戶的密碼)
範例:john –i:all –groups:100
參數:-shells:[-]SHELL [,..]
說 明:和上面兩個參數一樣,這個選項是只針對所有可以使用shell的用戶進行破解密碼工作,對其它用戶不予理會。(若在SHELL名稱前加上“-”符號則 是相反,表示不要破解可以使用這個SHELL的用戶的密碼)。指定SHELL時,你可以省略絕對路徑,如參數「-shells:csh」就會包含 「/bin/csh」或「/usr/bin/csh」等路徑,但如果你指定的是「-shells:/bin/csh」則只會包含「/bin/csh」這個 SHELL名稱。
範例:john –i:all –shells:csh passwd(如圖)<img src=http://www.starkun.com/txtjpg/Image66.gif>
參數:-salts:[-]COUNT
說 明:只破解「salts」大於「COUNT」的帳號的密碼,可以使你得到較佳破解速度(所謂「salts」是指UNIX拿來作為「密碼」編碼基礎的單 位)。舉例來說,你可以先只破解某部分用戶的密碼「-salts:2」來獲得較佳的速度,然後有時間時才破解剩餘用戶的密碼「-salts:-2」。
範例:john –i:all –salts:2 passwd(如圖)<img src=http://www.starkun.com/txtjpg/Image67.gif>
參數:-format:NAME與-savemem:LEVEL
說明:這兩個參數是有關John內部咦鞯脑O定,跟破解本身沒有直接關係,所以省略不介紹