馬媛麗
(山西省工貿(mào)學(xué)校,山西 太原 030024)
基于沙盒機制的入侵檢測
馬媛麗
(山西省工貿(mào)學(xué)校,山西 太原 030024)
文章提出了基于沙盒機制的入侵檢測,能夠限制不可信代碼在可信區(qū)域里執(zhí)行,從而達到主動系統(tǒng)防護的目的,并且分析了三種沙盒機制,分別介紹了其優(yōu)缺點,并重點介紹了基于細分類保護區(qū)域模型的沙盒機制如何確保應(yīng)用進程的安全運行。
入侵檢測;沙盒;偵聽系統(tǒng)調(diào)用;安全策略;監(jiān)控進程;細分類
隨著互聯(lián)網(wǎng)的蓬勃發(fā)展和Linux操作系統(tǒng)的普及,針對Linux操作系統(tǒng)的病毒和攻擊程序也不斷出現(xiàn)。他們利用多種形式進行攻擊,或者利用特權(quán)程序的軟件錯誤來獲得超級用戶特權(quán),或者利用系統(tǒng)漏洞來訪問保密數(shù)據(jù),或者利用合法用戶下載并運行特洛伊木馬程序來產(chǎn)生破壞。用戶面臨的問題就是如何確保他們的計算機系統(tǒng)不受遠程惡意攻擊的破壞。這就需要有效的方法來對各種非法程序做出主動的響應(yīng)和防御。
對于檢測計算機系統(tǒng)是否遭受惡意攻擊以及限制不可信進程的研究已經(jīng)有好幾年的歷史了。其中一種主動檢測攻擊的方法是入侵檢測 (Intrusion Detection)。入侵檢測是指通過對行為、安全日志或?qū)徲嫈?shù)據(jù)或其他網(wǎng)絡(luò)上可以獲得的信息進行操作,檢測到對系統(tǒng)的闖入或闖入的企圖。入侵檢測技術(shù)是為保證計算機系統(tǒng)的安全而設(shè)計與配置的一種能夠及時發(fā)現(xiàn)并報告系統(tǒng)中未授權(quán)或異?,F(xiàn)象的技術(shù),是一種用于檢測計算機網(wǎng)絡(luò)中違反安全策略行為的技術(shù)。它通過對計算機網(wǎng)絡(luò)或計算機系統(tǒng)中的若干關(guān)鍵點收集與安全策略有關(guān)的行為和信息,并進行分析,從中發(fā)現(xiàn)網(wǎng)絡(luò)或系統(tǒng)中是否有被攻擊的跡象。
在Linux操作系統(tǒng)中,系統(tǒng)調(diào)用是用戶程序和操作系統(tǒng)的一個接口,也是進程使用內(nèi)核管理功能的唯一接口。出于保護目的,把Linux操作系統(tǒng)區(qū)分成用戶空間和內(nèi)核空間。操作系統(tǒng)內(nèi)核運行在內(nèi)核空間,而用戶進程運行在用戶空間。由于保護級別不同,用戶進程不能直接訪問內(nèi)核的數(shù)據(jù),也不能直接調(diào)用內(nèi)核的函數(shù)。操作系統(tǒng)內(nèi)核是為用戶服務(wù)的,用戶所有操作最終都通過內(nèi)核函數(shù)來實現(xiàn)。
當(dāng)攻擊者通過網(wǎng)絡(luò)遠程攻擊系統(tǒng),最終在目標(biāo)系統(tǒng)上執(zhí)行系統(tǒng)調(diào)用對系統(tǒng)產(chǎn)生破壞,并產(chǎn)生了偵聽系統(tǒng)調(diào)用的方法。這是沙盒系統(tǒng)常采用的一種方法。進程在運行期間要調(diào)用不同的系統(tǒng)函數(shù),而它們可以調(diào)用的系統(tǒng)函數(shù)及其參數(shù)是有限制的。如果能檢測到所有的系統(tǒng)調(diào)用,就可以判斷出攻擊并且執(zhí)行相應(yīng)的操作:中斷系統(tǒng)調(diào)用或改變它的操作數(shù)或直接終止該進程。
1.沙盒模型概述
沙盒是指在可信環(huán)境里執(zhí)行不可信代碼,限制該代碼訪問文件和目錄的權(quán)限。如果一個惡意進程試圖違反安全策略并進行非授權(quán)訪問,沙盒系統(tǒng)就會作出判斷并進行過濾。在網(wǎng)絡(luò)環(huán)境下,沙盒可以安全地過濾網(wǎng)絡(luò)應(yīng)用程序。網(wǎng)絡(luò)應(yīng)用程序就是指從網(wǎng)絡(luò)上獲取的進程數(shù)據(jù)(比如郵件、網(wǎng)頁和電子文檔)。這些應(yīng)用程序都存在一些漏洞,可能遭受惡意攻擊。
沙盒機制比利用審計數(shù)據(jù)進行入侵檢測更有效。首先,系統(tǒng)審計日志并不能提供入侵檢測所需的所有信息。其次,審計日志上記錄了有用信息,但是所需的開銷和磁盤空間大。偵聽系統(tǒng)調(diào)用方法即使在離線狀態(tài),也能通過訪問所需的信息來判斷入侵,降低了訪問無效信息的開銷。
許多研究都致力于使用發(fā)展偵聽系統(tǒng)調(diào)用方法的沙盒模型。該方法通過監(jiān)控進程來監(jiān)控應(yīng)用進程調(diào)用的系統(tǒng)函數(shù)。監(jiān)控進程是一段程序代碼,負(fù)責(zé)過濾掉對安全策略產(chǎn)生影響的系統(tǒng)調(diào)用。偵聽系統(tǒng)調(diào)用方法允許監(jiān)控進程控制應(yīng)用進程的資源訪問。
2.沙盒模型分類
按照監(jiān)控進程位置不同而把沙盒分為三種類型:內(nèi)核級、用戶級、指令級。
第一種類型是在內(nèi)核模式下執(zhí)行監(jiān)控進程。該方法直接把監(jiān)控進程編入內(nèi)核。TRON是在Linux系統(tǒng)中保護進程文件的機制,與已存在的Linux文件保護機制合作執(zhí)行,對所有進程進行訪問控制。它允許用戶指定訪問文件和目錄的權(quán)限,通過偵聽系統(tǒng)調(diào)用方法,監(jiān)視并阻止木馬程序及其他非授權(quán)文件的訪問。該方法直接把特定類型的沙盒機制編入操作系統(tǒng)內(nèi)核,用戶被迫使用這種沙盒機制,缺乏靈活性。
為了克服上述方法的局限性,一些系統(tǒng)采用可裝載內(nèi)核模塊來執(zhí)行。LSM(Linux Security Module)為Linux內(nèi)核提供一個訪問控制框架,仲裁應(yīng)用進程對內(nèi)核的訪問。該沙盒系統(tǒng)允許不同的訪問控制模式作為可裝載內(nèi)核模塊來執(zhí)行,當(dāng)使用不同的安全模式時僅需要裝載不同的內(nèi)核模塊,這就滿足了用戶需求的多樣性,增強了訪問控制的靈活性。但是,監(jiān)控進程必須充分可信,否則將其直接編入內(nèi)核可能會破壞整個系統(tǒng)。
第二種類型是在用戶模式下執(zhí)行監(jiān)控進程。該方法把監(jiān)控進程與應(yīng)用進程存放在不同進程內(nèi),監(jiān)控進程就不會被應(yīng)用進程修改。監(jiān)控進程利用操作系統(tǒng)支持那些具有系統(tǒng)調(diào)用跟蹤特性的調(diào)試器(如ptrace()和/proc文件系統(tǒng)),來偵聽?wèi)?yīng)用進程的系統(tǒng)調(diào)用。監(jiān)控進程在用戶級執(zhí)行,依據(jù)應(yīng)用進程選擇合適的沙盒系統(tǒng),具有很大的靈活性。但是一旦偵聽系統(tǒng)調(diào)用,就有進程間通信,進而產(chǎn)生巨大的運行時間代價,降低了應(yīng)用程序的性能。
第三種方法是把監(jiān)控進程編入應(yīng)用程序中。JAVA的基本安全結(jié)構(gòu)是圍繞用戶如何能動態(tài)地調(diào)入和運行Applet展開的。Applet的各種操作是受Java沙盒機制限制的。這種沙盒模式實現(xiàn)了一種特定的安全策略,提供了一個受限環(huán)境,運行不可信代碼。這種基于語言的沙盒機制限制了程序員對編程語言的選擇。
綜上所述,偵聽系統(tǒng)調(diào)用方法直接通過沙盒機制檢測,不需要修改應(yīng)用程序,對于用戶來說很方便,實現(xiàn)了透明性。內(nèi)核級方法是在內(nèi)核模式下偵聽系統(tǒng)調(diào)用,系統(tǒng)開銷小,但是缺乏靈活性,而且會影響內(nèi)核。用戶級方法是在用戶模式下偵聽系統(tǒng)調(diào)用,用戶可以自由選擇沙盒機制,但是開銷大,不易執(zhí)行。指令級方法是把沙盒插入到應(yīng)用程序中,該方法不能應(yīng)用到非二進制程序中。
3.細分類保護區(qū)域的沙盒框架
還有一種是細分類保護區(qū)域的沙盒框架,它結(jié)合了用戶級方法和內(nèi)核級方法的優(yōu)點。該框架只有一些基本機制在內(nèi)核空間執(zhí)行,而監(jiān)控進程在用戶空間執(zhí)行。它不但保留了靈活性,也降低了監(jiān)控進程對系統(tǒng)的影響。該方法是把監(jiān)控進程放在應(yīng)用進程中,降低了偵聽系統(tǒng)調(diào)用的代價。同時細分類區(qū)域提供進程內(nèi)部保護,這樣應(yīng)用程序?qū)ΡO(jiān)控進程就不會造成影響。在細分類保護區(qū)域中,進程包含多個細分類保護區(qū)域。每個進程選擇某一個細分類保護區(qū)域來存放監(jiān)控進程,該區(qū)域可以訪問進程的所有內(nèi)存頁面,稱作策略區(qū)域。其他的細分類區(qū)域存放移動代碼,都只能訪問進程的某些內(nèi)存頁面。也就是說,不同的細分類保護區(qū)域有不同的訪問權(quán)限。策略區(qū)域可以訪問分配給應(yīng)用進程的區(qū)域,但是應(yīng)用進程的區(qū)域不能去訪問策略區(qū)域,這樣監(jiān)控進程可以直接訪問應(yīng)用程序的系統(tǒng)調(diào)用及其參數(shù),而且不受應(yīng)用程序的影響。創(chuàng)建與裝載細分類保護區(qū)域由程序裝載器來完成,監(jiān)控進程在操作系統(tǒng)內(nèi)核中注冊系統(tǒng)調(diào)用處理程序,偵聽?wèi)?yīng)用程序調(diào)用的系統(tǒng)函數(shù)。當(dāng)應(yīng)用進程產(chǎn)生系統(tǒng)調(diào)用時,操作系統(tǒng)內(nèi)核就喚醒系統(tǒng)調(diào)用處理程序,同時把系統(tǒng)調(diào)用序號及參數(shù)傳遞過去,由系統(tǒng)調(diào)用處理程序來檢測。如果這些系統(tǒng)調(diào)用及參數(shù)符合安全策略,就允許其執(zhí)行,否則返回錯誤代碼。該框架允許執(zhí)行多種安全策略,用戶可以根據(jù)需要選擇合適的沙盒系統(tǒng),具有靈活性。它把監(jiān)控進程放到應(yīng)用進程中,就不屬于進程間通信,也就沒有偵聽系統(tǒng)調(diào)用的開銷,具有高效性。同時,它提供了細分類保護區(qū)域,設(shè)立進程內(nèi)保護,是一種內(nèi)核級保護機制,這樣應(yīng)用進程就不會破壞監(jiān)控進程。
[1]冀振燕,程虎.J AVA的安全結(jié)構(gòu)[J].微型機與應(yīng)用,1999,(1).
T
A
1673-0046(2010)12-0172-02