John the Ripper:支持多平臺的密碼破解器
John the Ripper是一個流行的口令破解工具,它支持Windows和Linux平臺,是一個開源軟件。如果我們想使用專門針對特定操作系統(tǒng)優(yōu)化、并生成相應(yīng)本地代碼的商業(yè)版本的該產(chǎn)品,那么讀者可以使用John the Ripper Pro,主頁地址為http://www.openwall.com/john/pro/。讀者可以根據(jù)需要購買或下載破解字典表。本文以Linux下的John the Ripper為例,說明使用該程序破解Linux下/etc/shadow口令文件的方法。
下載鏈接:http://down.51cto.com/data/146315
>>去網(wǎng)絡(luò)安全工具百寶箱看看其它安全工具
首先我們了解一下John the Ripper都有什么選項,如表1所示,其中方括號中的內(nèi)容為可選項。
選 項
|
描 述
|
--single
|
single crack模式,使用配置文件中的規(guī)則進(jìn)行破解
|
--wordlist=FILE
--stdin
|
字典模式,從FILE或標(biāo)準(zhǔn)輸入中讀取詞匯
|
--rules
|
打開字典模式的詞匯表切分規(guī)則
|
--incremental[=MODE]
|
使用增量模式
|
--external=MODE
|
打開外部模式或單詞過濾,使用[List.External:MODE]節(jié)中定義的外部函數(shù)
|
--stdout[=LENGTH]
|
不進(jìn)行破解,僅僅把生成的、要測試是否為口令的詞匯輸出到標(biāo)準(zhǔn)輸出上
|
--restore[=NAME]
|
恢復(fù)被中斷的破解過程,從指定文件或默認(rèn)為$JOHN/john.rec的文件中讀取破解過程的狀態(tài)信息
|
--session=NAME
|
將新的破解會話命名為NAME,該選項用于會話中斷恢復(fù)和同時運(yùn)行多個破解實例的情況
|
--status[=NAME]
|
顯示會話狀態(tài)
|
--make-charset=FILE
|
生成一個字符集文件,覆蓋FILE文件,用于增量模式
|
--show
|
顯示已破解口令
|
--test
|
進(jìn)行基準(zhǔn)測試
|
--users=[-]LOGIN|UID[,..]
|
選擇指定的一個或多個賬戶進(jìn)行破解或其他操作,列表前的減號表示反向操作,說明對列出賬戶之外的賬戶進(jìn)行破解或其他操作
|
--groups=[-]GID[,..]
|
對指定用戶組的賬戶進(jìn)行破解,減號表示反向操作,說明對列出組之外的賬戶進(jìn)行破解。
|
--shells=[-]SHELL[,..]
|
對使用指定shell的賬戶進(jìn)行操作,減號表示反向操作
|
--salts=[-]COUNT
|
至少對COUNT口令加載加鹽,減號表示反向操作
|
--format=NAME
|
指定密文格式名稱,為DES/BSDI/MD5/BF/AFS/LM之一
|
--save-memory=LEVEL
|
設(shè)置內(nèi)存節(jié)省模式,當(dāng)內(nèi)存不多時選用這個選項。LEVEL取值在1~3之間
|
除了口令破解程序之外,在這個軟件包中,還包含了其他幾個實用工具,它們對于實現(xiàn)口令破解都有一定的幫助,這些工具都放置在run目錄下,下面分別予以簡要介紹。
unshadow PASSWORD-FILE SHADOW-FILE
unshadow命令將passwd文件和shadow文件組合在一起,其結(jié)果用于John破解程序。通常應(yīng)該使用重定向方法將這個程序的結(jié)果保存在文件中,之后將文件傳遞給John破解程序。
unafs DATABASE-FILE CELL-NAME
unafs從二進(jìn)制AFS數(shù)據(jù)庫中提取口令散列值,并生成John可用的輸出,通常應(yīng)該把這個輸出重定向到文件中。
unique OUTPUT-FILE
刪除字典表中的重復(fù)詞匯,但不改變字典表中各詞條項的順序。
現(xiàn)在,我們使用unshadow命令得到一個破解程序好用的口令文件。下面的命令完成這個任務(wù):
- unshadow /etc/passwd /etc/shadow > passwd.1
它將/etc/passwd和/etc/shadow文件組合起來,結(jié)果保存到新的文件passwd.1中。
現(xiàn)在,運(yùn)行John the Ripper。默認(rèn)情況下,John使用passwd.lst作為攻擊用的字典文件,我們可以編輯這個文件或創(chuàng)建自己的口令文件。示例8-1給出了使用默認(rèn)字典文件破解口令的命令及其輸出。
示例1:使用默認(rèn)配置運(yùn)行John the Ripper。
- linux:/usr/bin/john-1.
- 6/run # ./john passwd.1Loaded 6 passwords with 6 different salts (Standard DES [24/32 4K])
- newuser (user2)
- foobar (user4)
- 123456 (user3)
- Mickey (user1)
- guesses: 4 time: 0:00:00:02 (3) c/s: 135389 trying: sampida - chillier
示例1說明,破解了該主機(jī)上4個用戶的口令。作為滲透測試人員,我們應(yīng)該創(chuàng)建一個能夠破解的口令表,如表2所示。
表2 已破解口令
用 戶
|
口 令
|
User1
|
Mickey
|
User2
|
Newuser
|
續(xù)表
用 戶
|
口 令
|
User3
|
123456
|
User4
|
Foobar
|
通過在命令行中使用show選項,可以觀察破解的口令,如示例2所示。
示例2:使用John the Ripper顯示破解后的口令。
- linux:/usr/bin/john-1.6/run # ./john -show passwd.1
- user1:Mickey:502:100::/home/user1:/bin/bash
- user2:newuser:503:100::/home/user2:/bin/bash
- user3:123456:504:100::/home/user3:/bin/bash
- user4:foobar:505:100::/home/user4:/bin/bash
- 4 passwords cracked, 2 left
如果我們想查看原始加密口令和破解后的口令,那么隨時可以打開文件john.pot來觀看,如示例3所示。
示例3:顯示原始加密口令和破解后的口令。
- linux:/usr/bin/john-1.6/run # cat ./john.pot
- VYvDtYmDSCOPc:newuser
- G54NKwmDHXwRM:foobar
- t5zO9hJzkv7ZA:123456
- Ae.SZDrP7fCPk:Mickey