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