|
網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來(lái)的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機(jī)整體,實(shí)現(xiàn)資源的全面共享和有機(jī)協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計(jì)算機(jī)、存儲(chǔ)資源、數(shù)據(jù)資源、信息資源、知識(shí)資源、專(zhuān)家資源、大型數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、傳感器等。 當(dāng)前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認(rèn)為是互聯(lián)網(wǎng)發(fā)展的第三階段。 1.2.3 讀寫(xiě)口令文件的一組子程序 為了對(duì)/etc/passwd文件進(jìn)行方便的存取,我編寫(xiě)了一組訪(fǎng)問(wèn)/etc/passwd文件的子程序。可讀取文件的用戶(hù)條目入口項(xiàng)或?qū)懭胄碌挠脩?hù)條目等。這組子程序可用于編寫(xiě)Crack程序。 Getpwuid()函數(shù)即可從/etc/passwd文件中獲取指定的UID的用戶(hù)條目。Getpwnam()函數(shù)則對(duì)于指定的登錄名,在/etc/passwd文件檢索用戶(hù)條目。getpwent(),setpwent(),endpwent()等函數(shù)則可對(duì)口令文件作后續(xù)處理。 Getpwuid()與Getpwnam()返回一指向passwd結(jié)構(gòu)的指針,該結(jié)構(gòu)定義如下: struct passwd { char * pw_name; /* 登錄名 */ char * pw_passwd; /* 加密后的口令 */ uid_t pw_uid; /* UID */ gid_t pw_gid; /* GID */ char * pw_age; /* 代理信息 */ char * pw_comment; /* 注釋 */ char * pw_gecos; char * pw_dir; /* 主目錄 */ char * pw_shell; /* 使用的shell */ char * pw_shell; /* 使用的shell */ 首次調(diào)用getpwent(),可打開(kāi)/etc/passwd文件并返回指向文件中第一個(gè)用戶(hù)條目的指針,并保持調(diào)用之間文件的打開(kāi)狀態(tài),再調(diào)用getpwent()便可順序地返回口令文件中的各用戶(hù)條目。而調(diào)用setpwent() 又可把口令文件的指針重新置為文件的開(kāi)始處,最后使用完口令文件后調(diào)用endpwent() 可關(guān)閉口令文件。 1.2.4 構(gòu)造Crack程序 綜上所述,構(gòu)造一個(gè)Crack工具只需以下步驟: 1、下載或自己生成一個(gè)字典文件。 2、取出字典文件中的每一條目,對(duì)每個(gè)單詞運(yùn)用一系列規(guī)則。規(guī)則可以多種多樣,典型的規(guī)則包括: 3、使用幾個(gè)單詞和數(shù)字的組合。 4、大小寫(xiě)交替使用。 5、把單詞正向、反向拼寫(xiě)后,接在一起。 6、在每個(gè)單詞的開(kāi)頭或結(jié)尾加上一些數(shù)字。當(dāng)然,使用的規(guī)則越多,破譯所需時(shí)間就越長(zhǎng)。但是,規(guī)則越多,破譯成功的可能性也越大。 7、調(diào)用系統(tǒng)的crypt() 函數(shù)對(duì)使用規(guī)則生成的字符串進(jìn)行加密變換。 8、再用上述的一組子程序打開(kāi)口令文件,取出密文口令,與crypt() 函數(shù)的輸出進(jìn)行比較。 循環(huán)重復(fù)2-3步,直至口令破解成功。 1.3口令Crack實(shí)驗(yàn)分析 目前,最著名的口令Crack 工具是John the Ripper 與L0pht Crack。其中,John the Ripper用來(lái)破解Unix 系統(tǒng)口令,L0phtCrack 破解NT系統(tǒng)口令,它們有運(yùn)行于不同平臺(tái)的多個(gè)版本。我獲取了運(yùn)行于Windows 98/NT的最新版本:John the Ripper 1.6和L0phtCrack 2.5。并分別進(jìn)行了口令Crack 的實(shí)驗(yàn),因?yàn)閷?shí)驗(yàn)方案基本相同,所以?xún)H做John the Ripper 口令Crack 實(shí)驗(yàn)的分析。 首先,使用Turbo Linux 4.2 建立了三個(gè)用戶(hù)組,每組4個(gè)用戶(hù)帳號(hào),總共12個(gè)帳號(hào);分別是:A5,A6,A7,A8;B5,B6,B7,B8;C5,C6,C7,C8。其中,A代表該用戶(hù)的口令只包含字母,B代表該用戶(hù)的口令包含字母與數(shù)字,C代表該用戶(hù)的口令包含字母、數(shù)字及特殊字符。5-8代表該用戶(hù)的口令長(zhǎng)度是5-8個(gè)字符。這些帳號(hào)的GID均被設(shè)為500。 實(shí)驗(yàn)用的計(jì)算機(jī)配置為:PentiumIII 500,128M內(nèi)存,操作系統(tǒng)為Windows98第二版。先進(jìn)行系統(tǒng)測(cè)試,運(yùn)行"John -test",結(jié)果顯示如下: Benchmarking: Standard DES [48/64 4K]... DONE Many salts: 18581 c/s Only one salt: 30792 c/s Benchmarking: BSDI DES (x725) [48/64 4K]... DONE Many salts: 1054 c/s Only one salt: 971 c/s Benchmarking: FreeBSD MD5 [32/32]... DONE Raw: 732 c/s Benchmarking: OpenBSD Blowfish (x32) [32/32]... DONE Raw: 41.2 c/s Benchmarking: Kerberos AFS DES [48/64 4K]... DONE Short: 32540 c/s Long: 92064 c/s Benchmarking: NT LM DES [48/64 4K]... DONE Raw: 230855 c/s 可以看出,使用標(biāo)準(zhǔn)DES加密變換的速率為:18581 字符/秒(使用多個(gè)Salt時(shí))與30792 字符/秒(使用單個(gè)Salt時(shí)),這是實(shí)驗(yàn)運(yùn)行時(shí)的加密變換速率。 John the Ripper 的使用方法為: Usage: file://D/HACKER/CRACK/JOHN-16/RUN/john [OPTIONS] [PASSWORD-FILES] 它有多個(gè)使用選項(xiàng),參見(jiàn)表1.4。 表1.4 John the Ripper使用選項(xiàng)含義 選項(xiàng) 意義 -rules 破解規(guī)則 -wordfile:FILE 字典文件 -incremental 增量方式 -restore[:FILE] 恢復(fù)已存儲(chǔ)的進(jìn)度 -session:FILE 存儲(chǔ)當(dāng)前進(jìn)度 -show 顯示當(dāng)前進(jìn)度 -makechars:FILE 字符集 -users:[-]LOGIN|UID[,..] 指定想破解的用戶(hù) -groups:[-]GID[,..] 指定想破解的用戶(hù)組 由于Turbo Linux使用了Shadow文件,得先進(jìn)行Unshadow處理: Unshadow passwd shadow >pass 得到Unshadow的口令文件pass,再輸入: John -groups:500 -show pass 開(kāi)始Crack過(guò)程。進(jìn)行10個(gè)小時(shí)后,得到如表5.5所示的結(jié)果。其中,單位精確到分,沒(méi)有Crack成功的標(biāo)為"NO"。 表1.5 使用John the Ripper的Crack實(shí)驗(yàn)結(jié)果 花費(fèi)時(shí)間 花費(fèi)時(shí)間 花費(fèi)時(shí)間 A5 00:12 B5 02:16 C5 NO A6 02:25 B6 NO C6 NO A7 01:38 B7 05:21 C7 NO A8 04:54 B8 NO C8 NO 可以看出,A組的成功率為:100%,B組的成功率為:50%,C組的成功率為:0%。因此,隨著字符集的擴(kuò)大,破解的難度明顯增大。所以,安全的口令必須包含特殊字符。 還有一點(diǎn)值得注意,即在整體上口令越長(zhǎng),破譯所需的時(shí)間越多,但A7比A6的破譯時(shí)間短,這說(shuō)明John the Ripper并不是先嘗試完n個(gè)字符的口令,再?lài)L試長(zhǎng)為n+1的口令;而是運(yùn)用了復(fù)雜的規(guī)則進(jìn)行匹配。各個(gè)Crack程序的具體實(shí)現(xiàn)有差異,它們運(yùn)用了不同的規(guī)則,使得它們破譯口令的所需時(shí)間不一樣。 網(wǎng)絡(luò)的神奇作用吸引著越來(lái)越多的用戶(hù)加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來(lái)越嚴(yán)峻的考驗(yàn)―從硬件上、軟件上、所用標(biāo)準(zhǔn)上......,各項(xiàng)技術(shù)都需要適時(shí)應(yīng)勢(shì),對(duì)應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進(jìn)步的催化劑。 |
溫馨提示:喜歡本站的話(huà),請(qǐng)收藏一下本站!