|
網(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í)資源、專家資源、大型數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、傳感器等。 當(dāng)前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認(rèn)為是互聯(lián)網(wǎng)發(fā)展的第三階段。 由于Unix是Internet最流行的服務(wù)器操作系統(tǒng),因此它的安全性倍受關(guān)注。這種安全主要靠口令實(shí)現(xiàn)。Unix的口令僅僅存儲(chǔ)在一個(gè)加密后的文本文件中,文件一般儲(chǔ)存在/etc目錄下,名稱為passwd。歷史上,Unix口令加密算法曾經(jīng)歷過(guò)幾次修正,現(xiàn)在普遍采用DES算法。用DES算法對(duì)口令文件進(jìn)行25次加密。而對(duì)每次DES加密產(chǎn)生的結(jié)果,都要用2的56次方次查找與匹配才能進(jìn)行一次遍歷,所以理論上要破解這樣的口令,其工作量是很大的。 本文先介紹Unix 口令文件的格式以及口令加密的原理;接著講述如何構(gòu)造一個(gè)口令Crack程序;最后以John the Ripper做口令攻擊的測(cè)試,分析實(shí)驗(yàn)結(jié)果,并給出口令安全的建議。 1.1 Unix 口令文件的格式及安全機(jī)制 /etc/passwd文件是Unix安全的關(guān)鍵文件之一,在不同的Unix系統(tǒng)中,它的存儲(chǔ)路徑略有不同,參見(jiàn)表5.1。該文件用于用戶登錄時(shí)校驗(yàn)用戶的口令,僅對(duì)root權(quán)限可寫(xiě)。 表1.1 不同Unix系統(tǒng)中口令文件的存儲(chǔ)路徑 Unix系統(tǒng) 路徑 UNICOS /etc/udb Ultrix4 /etc/auth SystemV Release 4.2 /etc/security SystemV Release 4.0 /etc/shadow SunOS 5.0 /etc/shadow SCOUnix /tcb/auth/files/ OSF/1 /etc/passwd Linux1.1 /etc/shadow HP-UX /.secure/etc/passwd BSD4.3 /etc/master.passwd AIX3 /etc/security/passwd IRIX5 /etc/shadow 口令文件中每行代表一個(gè)用戶條目,格式為: LOGNAME : PASSWORD : UID : GID : USERINFO : HOME : SHELL 每行的頭兩項(xiàng)是登錄名和加密后的口令,后面的兩個(gè)數(shù)是UID和GID,接著的一項(xiàng)是系統(tǒng)管理員想寫(xiě)入的有關(guān)該用戶的任何信息,最后兩項(xiàng)是兩個(gè)路徑名:一個(gè)是分配給用戶的Home目錄,第二個(gè)是用戶登錄后將執(zhí)行的shell(若為空格則缺省為/bin/sh)。例如,在口令文件中,它的Root用戶的條目為: root : xyDfccTrt180x,M.y8 : 0 : 0 : admin : / : /bin/sh 則,它的含義如表1.2所示。 表1.2 /etc/passwd文件中各個(gè)域的含義 域 含義 Root用戶名 XyDfccTrt180x,M.y8 加密的口令 0 用戶ID(UID) 0 用戶的組ID(GID) Admin 用戶的全名 / 用戶的主目錄 /bin/sh 用戶的Shell 在目前的多數(shù)Unix系統(tǒng)中,口令文件都做了Shadow變換,即把/etc/passwd文件中的口令域分離出來(lái),單獨(dú)存在/etc/shadow文件中,并加強(qiáng)對(duì)shadow的保護(hù),以增強(qiáng)口令安全。因而,在破解時(shí),需要做UnShadow變換,將/etc/passwd與/etc/shadow文件合二為一。 1.1.1 口令加密的機(jī)理 Unix系統(tǒng)使用一個(gè)單向函數(shù)crypt(),來(lái)加密用戶的口令。單向函數(shù)crypt()從數(shù)學(xué)原理上保證了從加密的密文得到加密前的明文是不可能的或是非常困難的。當(dāng)用戶登錄時(shí),系統(tǒng)并不是去解密已加密的口令,而是將輸入的口令明文字符串傳給加密函數(shù),將加密函數(shù)的輸出與/etc/passwd文件中該用戶條目的PASSWORD域進(jìn)行比較,若匹配成功,則允許用戶登錄系統(tǒng)。 Crypt()的加密算法基于資料加密標(biāo)準(zhǔn)DES,它將用戶輸入的口令作為密鑰,加密一個(gè)64bit的0/1串,加密的結(jié)果又使用用戶的口令再次加密;重復(fù)該過(guò)程,一共進(jìn)行25次。最后的輸出為一個(gè)11byte的字符串,存放在/etc/passwd的PASSWORD域。 Morris和Thompson修改了crypt()函數(shù)的實(shí)現(xiàn),F(xiàn)在Unix系統(tǒng)中使用的加密函數(shù)原型如下: Char *crypt(char *salt, char *passwd) Salt是一個(gè)12位長(zhǎng)的數(shù)字,取值范圍為0到4095。它略改變了DES的輸出,4096個(gè)不同的salt值使同一個(gè)口令產(chǎn)生不同的輸出。當(dāng)改變口令時(shí),系統(tǒng)選擇當(dāng)天的一個(gè)時(shí)間,得到一個(gè)salt數(shù)值。該salt被存放在加密口令的最前面。因此,passwd文件存放的密文口令是13位。一些Unix系統(tǒng),例如:HP-UX,Ultrix和BSD4.4,使用了16位或更長(zhǎng)的salt值,這種算法稱為bigcrypt()或crypt16()。 網(wǎng)絡(luò)的神奇作用吸引著越來(lái)越多的用戶加入其中,正因如此,網(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)步的催化劑。 |
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!