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