鄧 英,王曉亮
(1.中國交通通信信息中心中交信有限責任公司,北京 100011;2.中國民航信息網絡股份有限公司,北京 100009)
隨著互聯網技術的不斷發展,互聯網已經成為人們生活中必不可少的一部分,對經濟和社會的發展起到了巨大的推動和促進作用。然而隨著網絡規模的不斷擴大和網絡應用的多樣化,對網絡安全提出了重要的挑戰,近年來有關網絡安全的漏洞數量一直處于增長的趨勢,黑客往往利用這些漏洞作為攻擊的爆破點對網站發起攻擊,攻擊成功后可能會惡意篡改網站信息,給互聯網廠商的安全運營造成了巨大的安全威脅。在網絡出現異常或遭受惡意入侵時,能夠及時發出報警,并采取相應措施保證網絡主要業務的正常運行,已成為重要的研究課題[1-4]。
目前,對入侵檢測的方法主要分為事前檢測、事中檢測和事后檢測。事前檢測的原理為通過配置規則動態監控Web 應用的Request 和Response 流,發現特殊關鍵字和模式就認為出現入侵。這種分析方法對業內已經公開的漏洞防護較為有效,可以針對漏洞特點進行有效配置,起到有效防護的作用;但這種檢測方法對于O-day 漏洞等檢測效果較差。事中檢測是在Web 應用運行過程中,收集大量的用戶行為信息并進行實時分析的入侵檢測。這種分析方法,一方面增加了應用邏輯的處理復雜度,影響應用正常業務邏輯的處理效率;另一方面,由于攻擊者不停切換身份,變換session 繞開監控,也會讓檢測效果大打折扣。事后檢測是通過分析入侵過程對系統產生的痕跡準實時的發現入侵,并及時采取措施,避免或者降低對系統產生的影響。這種分析方法屬于離線分析的方法,不會對正在運行的Web 應用產生效率問題,也不需要Web 應用做大量的個性化開發。
本文根據Web 應用的特點提出一種檢測方法,采用并行程序實時收集Web 系統的變化痕跡,并通過智能分析系統分析這些痕跡,最終判定是否為入侵。
標準網站架構為B/S(Browser/Server)架構,網站服務器又分為提供靜態內容的Web 服務器和提供動態內容的App 服務器。靜態內容指的是圖片、Script 腳本、CSS 以及HTML 等程序文件;動態內容為JSP、ASP、Java Class 等程序文件。無論靜態內容,還是動態內容,都是以獨立文件的方式存在。黑客入侵系統后,無論篡改靜態內容,還是篡改動態內容,都會對這些文件的存在狀態(最后修改時間、文件大小、文件名稱等)產生變化,這也是本文所論述的檢測方法的理論依據。
基于這個檢測依據,設計的檢測模型如圖1所示。

圖1 檢測模型和算法圖
(1)對檢測系統進行初始化,首先在檢測系統里維護一個線程池{線程1,線程2,線程3,…,線程N{}},初始化靜態文件和動態文件的檢測規則{Rule1,Rule2,Rule3…RuleK},其中線程池里線程的數量N 與服務器數量M 相關。
(2)檢測系統根據服務器的數量N 和服務器類型生成本次掃描任務的集合{Task1,Task2,Task3…Taskv}。
(3)檢測系統采用并行計算的方式,將掃描任務{Task1,Task2,Task3…Taskv}由線程池{線程1,線程2,線程3,…,線程N{}}開始并行執行。
(4)獲得掃描任務的線程開始執行任務,對服務器進行掃描,掃描Web 服務器和應用服務器上最新的被修改過的文件列表,并根據檢測規則對掃描到的文件列表進行檢測。如果檢測到文件發生非正常變化,則認定該服務器遭到入侵修改。
(5)檢測系統收集所有檢測任務的執行結果,生成檢測報告。
由于靜態內容不存在編譯問題,所以網站靜態內容一旦發布,相關文件在網站運行過程中也不會發生改變。黑客入侵后,如要篡改這部分內容,必然要對靜態內容的文件進行增加、刪除和修改操作。因此檢測靜態內容文件的修改可以作為檢測入侵的重要手段。而無論增加或者修改網站靜態內容,都會修改相關內容文件的最后修改時間。如下是標準的Linux 系統文件,對文件內容的增加和修改,操作系統都會對Modify 時間進行更新,本文就利用Linux 操作系統的這一特點,利用Linux 系統中的find 命令檢測變化文件列表,如下檢測test 目錄下最近30分鐘內修改過的文件和文件夾列表。如果直接對文件進行增加和修改,那么該命令可以快速檢測到新增或者被修改的文件。
靜態內容檢測流程如下:
(1)通過find 指令檢測最近一段時間內被修改的文件列表。
(2)如果文件列表為空,說明沒有發生入侵。如果列表中含有文件或者文件夾,說明靜態文件或者文件夾被修改;如果不是維護人員正常的正常操作,極有可能發生入侵。
動態內容一般都會部署在應用服務器上,以J2EE 的JBOSS應用服務器為例(WebSphere 和tomcat 等也有類機制),應用服務器上有deploy,work 和tmp 三個目錄,deploy 目錄主要用于存放war 包文件;tmp 目錄主要用于存放Web 應用中的class 文件和相關配置文件;work 目錄用來存放運行過程中產生的jsp 文件和jsp 相關的編譯文件。J2EE 應用服務器在運行過程中用到的jsp 文件,都會先被編譯成java 文件,然后再編譯成可執行的class 文件。JSP 編譯過程中產生的java 文件和class 文件會被放到work 目錄下。work 和tmp 中出現的文件是deploy 中war 包中文件的子集,這也是對動態內容進行智能檢測的理論依據。

圖2 檢測算法流程圖

圖3 動態檢測模型與算法圖
網頁的動態內容是在黑客入侵過程中風險最高的部分,黑客找到Web 應用的安全漏洞后,一般會選擇上傳動態腳本到動態內容目錄,如tmp 目錄,然后通過外網就可以遠程就可以控制應用服務器了。
由于動態內容和靜態內容工作機制的不同,在運行過程中,JBOSS 應用服務器也會動態修改tmp 和work 目錄內的文件,因此無法簡單通過文件的最后修改時間來判斷是否發生黑客入侵。
動態內容檢測流程如下:
(1)檢測最近一段時間內被修改的文件列表。
(2)如果文件列表為空,說明沒有發生入侵。
如果列表中含有程序配置文件,由于配置文件在運行過程中不應該發生變化,故極有可能發生入侵。如果列表中含有臨時目錄中的文件,則根據應用服務器的特點,根據檢測規則進一步進行判別,判斷新增文件是否合法。如果新增文件或者被修改的文件不合法,則認定發生入侵。
靜態文件變動檢測:對116臺服務器在內網環境下進行靜態掃描,掃描在最近30分鐘被修改過的文件和文件夾,掃描結果如圖4所示。實驗結果發現掃描時間為1080毫秒,未發生文件修改和入侵。

圖4 掃描結果
手工登錄到某臺服務器,對服務器上的靜態文件進行修改,檢測程序快速的掃描到該文件和該文件的變化,并開始報警,檢測時間為1秒左右,掃描結果如圖5所示。

圖5 靜態文件變動掃描結果
動態文件變動掃描時,手工登錄到某臺應用服務器,對服務器上的動態文件內容進行修改,檢測程序非常快速的掃描到該文件的大小發生了變化,并開始報警,檢測時間也在1秒左右。具體信息如圖6所示:

圖6 動態文件變動掃描結果
從實驗結果來看,基于文件系統監控的檢測方法的檢測結果具有如下特點:掃描效率高。100臺服務器在1秒左右能夠完成掃描,掃描效率很高。掃描結果準確。發生文件被變動時,可以在第一時間發現并預警。部署簡單。基于文件系統的漏洞檢測,不需要Web 應用進行個性化代碼開發,部署簡單,掃描規則調整也比較方便,能夠很快地在企業內部進行推廣,跟企業內部的監控和運維體系進行整合。