網絡技術是從1990年代中期發展起來的新技術,它把互聯網上分散的資源融為有機整體,實現資源的全面共享和有機協作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數據資源、信息資源、知識資源、專家資源、大型數據庫、網絡、傳感器等。 當前的互聯網只限于信息共享,網絡則被認為是互聯網發展的第三階段。 1.2.3 讀寫口令文件的一組子程序 為了對/etc/passwd文件進行方便的存取,我編寫了一組訪問/etc/passwd文件的子程序。可讀取文件的用戶條目入口項或寫入新的用戶條目等。這組子程序可用于編寫Crack程序。 Getpwuid()函數即可從/etc/passwd文件中獲取指定的UID的用戶條目。Getpwnam()函數則對于指定的登錄名,在/etc/passwd文件檢索用戶條目。getpwent(),setpwent(),endpwent()等函數則可對口令文件作后續處理。 Getpwuid()與Getpwnam()返回一指向passwd結構的指針,該結構定義如下: 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 */ 首次調用getpwent(),可打開/etc/passwd文件并返回指向文件中第一個用戶條目的指針,并保持調用之間文件的打開狀態,再調用getpwent()便可順序地返回口令文件中的各用戶條目。而調用setpwent() 又可把口令文件的指針重新置為文件的開始處,最后使用完口令文件后調用endpwent() 可關閉口令文件。 1.2.4 構造Crack程序 綜上所述,構造一個Crack工具只需以下步驟: 1、下載或自己生成一個字典文件。 2、取出字典文件中的每一條目,對每個單詞運用一系列規則。規則可以多種多樣,典型的規則包括: 3、使用幾個單詞和數字的組合。 4、大小寫交替使用。 5、把單詞正向、反向拼寫后,接在一起。 6、在每個單詞的開頭或結尾加上一些數字。當然,使用的規則越多,破譯所需時間就越長。但是,規則越多,破譯成功的可能性也越大。 7、調用系統的crypt() 函數對使用規則生成的字符串進行加密變換。 8、再用上述的一組子程序打開口令文件,取出密文口令,與crypt() 函數的輸出進行比較。 循環重復2-3步,直至口令破解成功。 1.3口令Crack實驗分析 目前,最著名的口令Crack 工具是John the Ripper 與L0pht Crack。其中,John the Ripper用來破解Unix 系統口令,L0phtCrack 破解NT系統口令,它們有運行于不同平臺的多個版本。我獲取了運行于Windows 98/NT的最新版本:John the Ripper 1.6和L0phtCrack 2.5。并分別進行了口令Crack 的實驗,因為實驗方案基本相同,所以僅做John the Ripper 口令Crack 實驗的分析。 首先,使用Turbo Linux 4.2 建立了三個用戶組,每組4個用戶帳號,總共12個帳號;分別是:A5,A6,A7,A8;B5,B6,B7,B8;C5,C6,C7,C8。其中,A代表該用戶的口令只包含字母,B代表該用戶的口令包含字母與數字,C代表該用戶的口令包含字母、數字及特殊字符。5-8代表該用戶的口令長度是5-8個字符。這些帳號的GID均被設為500。 實驗用的計算機配置為:PentiumIII 500,128M內存,操作系統為Windows98第二版。先進行系統測試,運行"John -test",結果顯示如下: 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 可以看出,使用標準DES加密變換的速率為:18581 字符/秒(使用多個Salt時)與30792 字符/秒(使用單個Salt時),這是實驗運行時的加密變換速率。 John the Ripper 的使用方法為: Usage: file://D/HACKER/CRACK/JOHN-16/RUN/john [OPTIONS] [PASSWORD-FILES] 它有多個使用選項,參見表1.4。 表1.4 John the Ripper使用選項含義 選項 意義 -rules 破解規則 -wordfile:FILE 字典文件 -incremental 增量方式 -restore[:FILE] 恢復已存儲的進度 -session:FILE 存儲當前進度 -show 顯示當前進度 -makechars:FILE 字符集 -users:[-]LOGIN|UID[,..] 指定想破解的用戶 -groups:[-]GID[,..] 指定想破解的用戶組 由于Turbo Linux使用了Shadow文件,得先進行Unshadow處理: Unshadow passwd shadow >pass 得到Unshadow的口令文件pass,再輸入: John -groups:500 -show pass 開始Crack過程。進行10個小時后,得到如表5.5所示的結果。其中,單位精確到分,沒有Crack成功的標為"NO"。 表1.5 使用John the Ripper的Crack實驗結果 花費時間 花費時間 花費時間 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%。因此,隨著字符集的擴大,破解的難度明顯增大。所以,安全的口令必須包含特殊字符。 還有一點值得注意,即在整體上口令越長,破譯所需的時間越多,但A7比A6的破譯時間短,這說明John the Ripper并不是先嘗試完n個字符的口令,再嘗試長為n+1的口令;而是運用了復雜的規則進行匹配。各個Crack程序的具體實現有差異,它們運用了不同的規則,使得它們破譯口令的所需時間不一樣。 網絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發展,這正是網絡迅速走向進步的催化劑。 |
溫馨提示:喜歡本站的話,請收藏一下本站!