陸燕
【摘 要】動(dòng)態(tài)檢測(cè)方法就是在不改變?cè)创a甚至是二進(jìn)制代碼的情況下,對(duì)程序的弱點(diǎn)進(jìn)行檢測(cè)的方法,這類檢測(cè)主要通過修改進(jìn)程運(yùn)行環(huán)境來(lái)實(shí)現(xiàn)。動(dòng)態(tài)檢測(cè)方法主要有:非執(zhí)行棧、非執(zhí)行堆與數(shù)據(jù)、內(nèi)存映射、安全共享庫(kù)、沙箱和程序解釋等。
【關(guān)鍵詞】計(jì)算機(jī);安全漏洞;動(dòng)態(tài)檢測(cè)
1.計(jì)算機(jī)安全動(dòng)態(tài)檢測(cè)技術(shù)探討
1.1非執(zhí)行棧技術(shù)
基于棧進(jìn)行軟件攻擊的事件最近幾年經(jīng)常發(fā)生,原因就是很多操作系統(tǒng)的棧是可以寫與執(zhí)行的,而且內(nèi)部變量尤其是數(shù)組變量都保存在棧中,攻擊者向棧中注入惡意代碼,然后想方設(shè)法來(lái)執(zhí)行這段代碼。棧攻擊技術(shù)的文檔也比較全面,這從某種程度上加速了基于棧的攻擊。一個(gè)最直接的防范棧攻擊的方法就是使得棧不能執(zhí)行代碼。這樣即使攻擊者在棧中寫入了惡意代碼,這個(gè)惡意代碼也不會(huì)被執(zhí)行,在一定程度上防住了一些攻擊者。只是這個(gè)方法需要在操作系統(tǒng)層進(jìn)行修改,同時(shí),不可執(zhí)行棧的技術(shù)涉及到的一個(gè)大問題就是性能問題。此外,在既有棧溢出漏洞又有堆溢出漏洞的程序中,易出問題??梢岳脳R绯鍪钩绦蛱D(zhuǎn)至攻擊代碼,該代碼是被放置在堆上。沒有實(shí)際執(zhí)行棧中的代碼,而是執(zhí)行了堆中的代碼。該技術(shù)所付出的代價(jià)就是對(duì)操作系統(tǒng)內(nèi)核引入一個(gè)微小的改變:把棧頁(yè)標(biāo)記為不可執(zhí)行。
1.2非執(zhí)行堆與數(shù)據(jù)技術(shù)
由于堆是程序運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存的區(qū)域,而數(shù)據(jù)段則是程序編譯時(shí)就初始化好了的。很長(zhǎng)時(shí)期以來(lái),由于擔(dān)心非執(zhí)行的堆與數(shù)據(jù)段會(huì)破壞軟件的正常運(yùn)行,所以該方法進(jìn)展緩慢,最近幾年才有些進(jìn)展和文章。如果堆和數(shù)據(jù)段都不能執(zhí)行代碼,攻擊者注入其中的惡意代碼將不能被執(zhí)行。這項(xiàng)技術(shù)和前面的非執(zhí)行棧技術(shù)結(jié)合能起到更全面的作用,使得惡意代碼徹底失去執(zhí)行機(jī)會(huì)。使用該技術(shù)所付出的代價(jià)要比非執(zhí)行棧技術(shù)大一些,因?yàn)樗鼘?duì)內(nèi)核的修改要多一些?,F(xiàn)在已經(jīng)有了大量的實(shí)例可以使用,這個(gè)技術(shù)還是可以接受的。從全面性上來(lái)看,該技術(shù)對(duì)于幾乎所有的利用把惡意代碼注入進(jìn)程內(nèi)存中的攻擊都可以檢測(cè)并阻止。但是,對(duì)于惡意修改函數(shù)指針和函數(shù)參數(shù)的攻擊沒有辦法檢測(cè)和防范。該技術(shù)改變了傳統(tǒng)程序在堆或數(shù)據(jù)段中動(dòng)態(tài)生成代碼的方式,會(huì)造成很多應(yīng)用程序的不兼容性。
1.3內(nèi)存映射技術(shù)
內(nèi)存映射技術(shù)可以檢測(cè)并阻止基于內(nèi)存中地址跳轉(zhuǎn)的攻擊。但它對(duì)于注入新代碼并執(zhí)行新代碼的攻擊不能檢測(cè)和預(yù)防。除此之外,因?yàn)榈投藘?nèi)存是有大小限制的,想把所有的代碼頁(yè)都映射到低端內(nèi)存在有些應(yīng)用中是不可行的。內(nèi)存映射技術(shù)僅僅對(duì)那些依靠固定地址或使用高端地址的應(yīng)用程序有影響。而這樣的應(yīng)用程序并不多。內(nèi)存映射技術(shù)對(duì)性能的消耗也可以忽略,它僅僅是在程序裝載的過程中工作,運(yùn)行起來(lái)之后對(duì)程序沒有任何影響。
1.4安全共享庫(kù)技術(shù)
從理論上講,安全共享庫(kù)技術(shù)可以檢測(cè)并防止所有的基于標(biāo)準(zhǔn)庫(kù)函數(shù)的攻擊。但是它不能保護(hù)本地變量的安全,而且它也不能防止數(shù)據(jù)段和代碼段數(shù)據(jù)的溢出攻擊。安全共享庫(kù)技術(shù)對(duì)于非標(biāo)準(zhǔn)的庫(kù)函數(shù)無(wú)能為力。安全共享庫(kù)技術(shù)不會(huì)造成任何兼容性問題,在標(biāo)準(zhǔn)庫(kù)下運(yùn)行正常的程序在安全共享庫(kù)技術(shù)下面也同樣運(yùn)行良好。安全共享庫(kù)技術(shù)對(duì)于那些和安全沒有關(guān)系的標(biāo)準(zhǔn)庫(kù)中函數(shù)不做任何處理。性能瓶頸主要在這些有安全弱點(diǎn)的函數(shù)上。
1.5沙箱技術(shù)
沙箱技術(shù)檢測(cè)的全面性主要看定義的策略的全面性。一個(gè)嚴(yán)格定義的策略可以更好的保護(hù)程序不受攻擊。但該技術(shù)對(duì)于通過改寫關(guān)鍵的本地變量(例如用戶的身份ID等)而修改程序邏輯流程的攻擊束手無(wú)策。沙箱技術(shù)依賴于安全策略。它不會(huì)帶來(lái)兼容性方面的問題。但是一個(gè)過于嚴(yán)格的策略可能會(huì)限制應(yīng)用程序的合法行為,最終導(dǎo)致程序不能使用。而且對(duì)系統(tǒng)調(diào)用函數(shù)的審查可能會(huì)帶來(lái)競(jìng)爭(zhēng)條件問題的出現(xiàn)。
1.6程序解釋技術(shù)
程序解釋技術(shù)不需要對(duì)操作系統(tǒng)內(nèi)核和應(yīng)用程序代碼作任何改變,應(yīng)用程序只要重新鏈接產(chǎn)生一個(gè)新的起動(dòng)代碼就可以了,然后有這個(gè)起動(dòng)代碼來(lái)調(diào)用動(dòng)態(tài)優(yōu)化的程序解釋框架。有了嚴(yán)謹(jǐn)?shù)陌踩呗?,幾乎所有已知的改變程序控制流程或修改危險(xiǎn)函數(shù)的參數(shù)的攻擊都可以被檢測(cè)到并防范住。
2.計(jì)算機(jī)網(wǎng)絡(luò)安全漏洞檢測(cè)防護(hù)方案
2.1發(fā)送含特征碼的檢測(cè)數(shù)據(jù)包與接收數(shù)據(jù)包
首先需要在漏洞特征庫(kù)中查找漏洞的特征碼,構(gòu)造數(shù)據(jù)包進(jìn)行發(fā)送。在發(fā)送檢測(cè)數(shù)據(jù)包之前,先判斷目標(biāo)主機(jī)是否在線,然后檢測(cè)操作系統(tǒng)版本等基本信息,并掃描它的端口開放以及所提供的服務(wù)情況,以此避免不必要的空掃描和決定檢測(cè)數(shù)據(jù)包發(fā)往的目的端口。在漏洞檢測(cè)時(shí),若目標(biāo)主機(jī)不在線或所提供服務(wù)的相應(yīng)端口沒有開放,就無(wú)須進(jìn)一步發(fā)送數(shù)據(jù)進(jìn)行檢測(cè),可以提高檢測(cè)效率。
在Windows系統(tǒng)中,NDIS(Network Driver Interface Specification)是操作系統(tǒng)網(wǎng)絡(luò)功能驅(qū)動(dòng)的關(guān)鍵部分,位于網(wǎng)絡(luò)驅(qū)動(dòng)協(xié)議和網(wǎng)卡之間,它既為上層的協(xié)議驅(qū)動(dòng)提供服務(wù),又屏蔽了各種網(wǎng)卡的差別。它提供了一個(gè)完備的NDIS庫(kù),可以利用庫(kù)函數(shù)直接對(duì)網(wǎng)卡進(jìn)行各種讀寫操作。但所提供的函數(shù)都是工作在核心模式下,用戶不便直接操作。本方案采用由澳大利亞的Canberra大學(xué)信息科學(xué)與工程系開發(fā)研制的網(wǎng)絡(luò)開發(fā)包Packet32來(lái)設(shè)置網(wǎng)卡的工作模式,調(diào)用庫(kù)中函數(shù)直接在網(wǎng)卡上讀寫數(shù)據(jù),為用戶提供了一個(gè)面向底層的網(wǎng)絡(luò)編程接口。
2.2建立漏洞特征庫(kù)與驗(yàn)證庫(kù)
漏洞特征庫(kù)是計(jì)算機(jī)網(wǎng)絡(luò)漏洞安全檢測(cè)防護(hù)方案中最為重要的部分,包含每個(gè)漏洞的特征碼。在實(shí)際檢測(cè)中,最終操作是對(duì)網(wǎng)絡(luò)數(shù)據(jù)包的操作,所以特征碼應(yīng)該能夠保證檢測(cè)數(shù)據(jù)包的有效性和接收回應(yīng)數(shù)據(jù)包后的判斷的準(zhǔn)確性。由于漏洞的種類千差萬(wàn)別,提取漏洞的特征碼是關(guān)鍵工作,實(shí)現(xiàn)漏洞掃描是一個(gè)分析漏洞、建立知識(shí)庫(kù)、維護(hù)知識(shí)庫(kù)的過程。
2.3漏洞掃描控制與調(diào)度
漏洞掃描控制是系統(tǒng)管理控制臺(tái)與掃描調(diào)度的接口,接受系統(tǒng)管理控制臺(tái)的各種命令,可對(duì)要掃描的網(wǎng)絡(luò)、主機(jī)和服務(wù)端口、敏感信息等等加以配置,按一定的掃描控制策略調(diào)用掃描調(diào)度;可以控制掃描調(diào)度模塊的工作,使整個(gè)檢測(cè)系統(tǒng)暫停、停止、繼續(xù)、結(jié)束等。漏洞掃描調(diào)度根據(jù)掃描控制模塊發(fā)送的掃描控制要求,采用消息機(jī)制協(xié)調(diào)各工作模塊。采用多線程調(diào)度策略,對(duì)本地或遠(yuǎn)程主機(jī)進(jìn)行掃描;調(diào)用漏洞特征庫(kù)接口模塊,在漏洞特征庫(kù)表文件中查詢漏洞對(duì)應(yīng)的檢測(cè)表文件名稱,調(diào)用檢測(cè)驗(yàn)證模塊進(jìn)行檢測(cè)驗(yàn)證等。
3.漏洞防護(hù)建議
在系統(tǒng)作完安全漏洞檢測(cè)、掃描之后,形成針對(duì)整個(gè)系統(tǒng)多種形式的安全報(bào)表,如系統(tǒng)內(nèi)工作站或服務(wù)器在某一時(shí)間段內(nèi)的安全狀況、提供服務(wù)的變化情況以及軟件版本更新的情況等,并在此基礎(chǔ)上提交用戶檢測(cè)報(bào)告,主要包括漏洞風(fēng)險(xiǎn)分析及安全建議。
漏洞的風(fēng)險(xiǎn)分析包括漏洞的流行程度、利用漏洞攻擊的容易程度、攻擊造成系統(tǒng)的損害程度和采用此漏洞進(jìn)行攻擊被抓獲的冒險(xiǎn)程度。損害度、容易度、流行度、冒險(xiǎn)度都由數(shù)字1到9來(lái)表示不同的級(jí)別。其中冒險(xiǎn)程度越大,攻擊者被抓住可能性就越大,風(fēng)險(xiǎn)級(jí)別就相應(yīng)的減小。因此,冒險(xiǎn)度的具體數(shù)值與實(shí)際的冒險(xiǎn)程度恰好相反。
安全建議是根據(jù)漏洞風(fēng)險(xiǎn)分析的結(jié)果提醒用戶需要在哪些方面如何加強(qiáng)系統(tǒng)的安全性。安全建議具體包括需要填補(bǔ)的所有系統(tǒng)漏洞,如何填補(bǔ)這些漏洞(修改系統(tǒng)配置、下載相應(yīng)補(bǔ)丁、刪除不必要的服務(wù)等),在填補(bǔ)所有漏洞不可實(shí)現(xiàn)的情況下,應(yīng)當(dāng)優(yōu)先填補(bǔ)那些對(duì)系統(tǒng)安全威脅較大或填補(bǔ)工作較為容易的漏洞。
【參考文獻(xiàn)】
[1]單谷云,黃成軍,江秀臣.電纜排管機(jī)器人的圖像監(jiān)控傳輸系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息.2008,(29).
[2]蔣誠(chéng).信息安全漏洞等級(jí)定義標(biāo)準(zhǔn)及應(yīng)用[J].信息安全與通信保密,2007,(6).