Unix主機(jī)漏洞掃描器的設(shè)計(jì)與實(shí)現(xiàn)(1)
漏洞掃描器的總體目標(biāo)是構(gòu)造一個(gè)運(yùn)行于Unix操作系統(tǒng)平臺(tái)的基于瀏覽器/服務(wù)器(B/S)結(jié)構(gòu)的,可以掃描Unix操作系統(tǒng)安全漏洞的主機(jī)漏洞掃描器。整個(gè)掃描器的結(jié)構(gòu)如圖1所示。
圖1 Unix主機(jī)漏洞掃描器的結(jié)構(gòu)
由于主機(jī)掃描模塊需要模擬一些系統(tǒng)管理員的行為,所以必須在被掃描的目標(biāo)主機(jī)上運(yùn)行,而且需要超級(jí)用戶的權(quán)限。主機(jī)掃描模塊駐留于目標(biāo)主機(jī),它接受系統(tǒng)管理員通過控制平臺(tái)服務(wù)器傳來的啟動(dòng)命令及配置參數(shù),根據(jù)用戶的要求完成掃描功能,之后,將掃描結(jié)果通過控制平臺(tái)服務(wù)器反饋給系統(tǒng)管理員,以便系統(tǒng)管理員做出響應(yīng)。控制平臺(tái)服務(wù)器是一個(gè)Web服務(wù)器,它可以與駐留于多個(gè)目標(biāo)主機(jī)的主機(jī)掃描模塊進(jìn)行交互。
主機(jī)掃描模塊的工作原理
整個(gè)主機(jī)漏洞掃描器的核心部件是主機(jī)掃描模塊,主機(jī)掃描模塊完成掃描的全部功能,其工作原理如圖2所示。
其中,主機(jī)掃描引擎對(duì)目標(biāo)主機(jī)進(jìn)行掃描,獲取掃描信息,然后由匹配機(jī)將掃描信息與主機(jī)系統(tǒng)配置規(guī)則庫(kù)中的標(biāo)準(zhǔn)配置規(guī)則進(jìn)行匹配比較,從而發(fā)現(xiàn)違反安全策略的配置行為,并進(jìn)行相應(yīng)的漏洞報(bào)警。在漏洞掃描器的實(shí)現(xiàn)中,主機(jī)掃描引擎、主機(jī)系統(tǒng)配置規(guī)則庫(kù)和匹配機(jī)構(gòu)成主機(jī)掃描模塊,而漏洞報(bào)警被傳送至控制平臺(tái)服務(wù)器。
圖2 主機(jī)掃描模塊的工作原理
主機(jī)掃描模塊與控制平臺(tái)之間的通信
由于控制平臺(tái)和目標(biāo)主機(jī)不在同一臺(tái)機(jī)器上,所以必須考慮主機(jī)掃描模塊以何種方式同控制平臺(tái)進(jìn)行通信。在進(jìn)行原型設(shè)計(jì)時(shí),曾采用遠(yuǎn)程登錄的方式:從控制平臺(tái)輸入管理員的賬號(hào)和密碼后登錄到目標(biāo)主機(jī),再在目標(biāo)主機(jī)上啟動(dòng)主機(jī)掃描模塊。這樣的方式在原型設(shè)計(jì)階段是很適合的,因?yàn)橛肞erl語言和一些現(xiàn)成的包來實(shí)現(xiàn)Telnet是比較方便的,而且在字符界面下,目標(biāo)主機(jī)的掃描結(jié)果可以通過Telnet協(xié)議返回到虛擬終端上,無需做專門的處理。
但是在***成型階段,這樣的結(jié)構(gòu)就具有一些缺點(diǎn)了:首先從實(shí)現(xiàn)上來講,用C語言來實(shí)現(xiàn)Telnet的協(xié)商過程是一個(gè)很復(fù)雜的工作,而且掃描結(jié)果要在***的圖形界面顯示出來,又需要一個(gè)相對(duì)復(fù)雜的處理;最重要的是,作為一個(gè)網(wǎng)絡(luò)安全的軟件,本身的安全是很重要的,而Telnet方式是以明碼方式在網(wǎng)絡(luò)上傳遞超級(jí)用戶的賬號(hào)和密碼的,這一點(diǎn)將使軟件本身具有一個(gè)很大的安全隱患。所以***我們采用了瀏覽器/服務(wù)器結(jié)構(gòu)。
整個(gè)主機(jī)掃描模塊的采用的是瀏覽器/服務(wù)器結(jié)構(gòu)。瀏覽器通過一個(gè)JavaScript請(qǐng)求模塊把用戶輸入的目標(biāo)主機(jī)的地址提取出來,加上一個(gè)特定的端口號(hào),再作為一個(gè)完整的請(qǐng)求發(fā)送出去。瀏覽器對(duì)這個(gè)端口發(fā)出的請(qǐng)求是按照Http協(xié)議的格式發(fā)送的,如果在服務(wù)器端程序里再做一個(gè)類似于協(xié)議分析器的工具來分析到達(dá)的Http請(qǐng)求將會(huì)使實(shí)現(xiàn)變得非常復(fù)雜。其實(shí)利用套接字的原理就能方便地解決這個(gè)問題。
套接字是服務(wù)器端特定端口和客戶端特定端口建立連接后的一個(gè)通道,此通道具有唯一性,因?yàn)樗怯梢粋€(gè)唯一的四元組來確定的:服務(wù)器端的IP地址和端口號(hào)、客戶端的IP地址和端口號(hào)。當(dāng)瀏覽器和服務(wù)器相應(yīng)端口的連接建立以后,服務(wù)器端向該套接字發(fā)送的所有信息都將送到客戶端的瀏覽器。
根據(jù)Web瀏覽器軟件的特點(diǎn)和Http協(xié)議的特點(diǎn),從服務(wù)器端來的信息如果只是ASCII信息,瀏覽器將缺省地把它歸為text/plain類,當(dāng)作文本直接顯示,如果發(fā)送的信息再加上一些HTML的標(biāo)記,瀏覽器則會(huì)把它看作text/html類顯示,這樣我們不僅能方便地把服務(wù)器端的輸出結(jié)果顯示到客戶端的瀏覽器上,還能利用HTML的特點(diǎn)對(duì)顯示加以控制。
所以我們只需在服務(wù)器端創(chuàng)建一個(gè)套接字,并綁定到特定的端口,然后程序在該特定端口監(jiān)聽。當(dāng)有信息到達(dá)時(shí),根據(jù)套接字的唯一性,程序不作其他考慮,認(rèn)定它是從客戶端來的掃描請(qǐng)求,馬上啟動(dòng)主機(jī)掃描模塊,而不用作復(fù)雜的Http協(xié)議請(qǐng)求分析;并實(shí)時(shí)地把掃描結(jié)果向該套接字輸出,這樣就能直接返回給瀏覽器并呈現(xiàn)給用戶。
【編輯推薦】