鄧 英,王曉亮
(1.中國交通通信信息中心中交信有限責(zé)任公司,北京 100011;2.中國民航信息網(wǎng)絡(luò)股份有限公司,北京 100009)
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,互聯(lián)網(wǎng)已經(jīng)成為人們生活中必不可少的一部分,對經(jīng)濟(jì)和社會的發(fā)展起到了巨大的推動(dòng)和促進(jìn)作用。然而隨著網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大和網(wǎng)絡(luò)應(yīng)用的多樣化,對網(wǎng)絡(luò)安全提出了重要的挑戰(zhàn),近年來有關(guān)網(wǎng)絡(luò)安全的漏洞數(shù)量一直處于增長的趨勢,黑客往往利用這些漏洞作為攻擊的爆破點(diǎn)對網(wǎng)站發(fā)起攻擊,攻擊成功后可能會惡意篡改網(wǎng)站信息,給互聯(lián)網(wǎng)廠商的安全運(yùn)營造成了巨大的安全威脅。在網(wǎng)絡(luò)出現(xiàn)異常或遭受惡意入侵時(shí),能夠及時(shí)發(fā)出報(bào)警,并采取相應(yīng)措施保證網(wǎng)絡(luò)主要業(yè)務(wù)的正常運(yùn)行,已成為重要的研究課題[1-4]。
目前,對入侵檢測的方法主要分為事前檢測、事中檢測和事后檢測。事前檢測的原理為通過配置規(guī)則動(dòng)態(tài)監(jiān)控Web 應(yīng)用的Request 和Response 流,發(fā)現(xiàn)特殊關(guān)鍵字和模式就認(rèn)為出現(xiàn)入侵。這種分析方法對業(yè)內(nèi)已經(jīng)公開的漏洞防護(hù)較為有效,可以針對漏洞特點(diǎn)進(jìn)行有效配置,起到有效防護(hù)的作用;但這種檢測方法對于O-day 漏洞等檢測效果較差。事中檢測是在Web 應(yīng)用運(yùn)行過程中,收集大量的用戶行為信息并進(jìn)行實(shí)時(shí)分析的入侵檢測。這種分析方法,一方面增加了應(yīng)用邏輯的處理復(fù)雜度,影響應(yīng)用正常業(yè)務(wù)邏輯的處理效率;另一方面,由于攻擊者不停切換身份,變換session 繞開監(jiān)控,也會讓檢測效果大打折扣。事后檢測是通過分析入侵過程對系統(tǒng)產(chǎn)生的痕跡準(zhǔn)實(shí)時(shí)的發(fā)現(xiàn)入侵,并及時(shí)采取措施,避免或者降低對系統(tǒng)產(chǎn)生的影響。這種分析方法屬于離線分析的方法,不會對正在運(yùn)行的Web 應(yīng)用產(chǎn)生效率問題,也不需要Web 應(yīng)用做大量的個(gè)性化開發(fā)。
本文根據(jù)Web 應(yīng)用的特點(diǎn)提出一種檢測方法,采用并行程序?qū)崟r(shí)收集Web 系統(tǒng)的變化痕跡,并通過智能分析系統(tǒng)分析這些痕跡,最終判定是否為入侵。
標(biāo)準(zhǔn)網(wǎng)站架構(gòu)為B/S(Browser/Server)架構(gòu),網(wǎng)站服務(wù)器又分為提供靜態(tài)內(nèi)容的Web 服務(wù)器和提供動(dòng)態(tài)內(nèi)容的App 服務(wù)器。靜態(tài)內(nèi)容指的是圖片、Script 腳本、CSS 以及HTML 等程序文件;動(dòng)態(tài)內(nèi)容為JSP、ASP、Java Class 等程序文件。無論靜態(tài)內(nèi)容,還是動(dòng)態(tài)內(nèi)容,都是以獨(dú)立文件的方式存在。黑客入侵系統(tǒng)后,無論篡改靜態(tài)內(nèi)容,還是篡改動(dòng)態(tài)內(nèi)容,都會對這些文件的存在狀態(tài)(最后修改時(shí)間、文件大小、文件名稱等)產(chǎn)生變化,這也是本文所論述的檢測方法的理論依據(jù)。
基于這個(gè)檢測依據(jù),設(shè)計(jì)的檢測模型如圖1所示。
圖1 檢測模型和算法圖
(1)對檢測系統(tǒng)進(jìn)行初始化,首先在檢測系統(tǒng)里維護(hù)一個(gè)線程池{線程1,線程2,線程3,…,線程N(yùn){}},初始化靜態(tài)文件和動(dòng)態(tài)文件的檢測規(guī)則{Rule1,Rule2,Rule3…RuleK},其中線程池里線程的數(shù)量N 與服務(wù)器數(shù)量M 相關(guān)。
(2)檢測系統(tǒng)根據(jù)服務(wù)器的數(shù)量N 和服務(wù)器類型生成本次掃描任務(wù)的集合{Task1,Task2,Task3…Taskv}。
(3)檢測系統(tǒng)采用并行計(jì)算的方式,將掃描任務(wù){(diào)Task1,Task2,Task3…Taskv}由線程池{線程1,線程2,線程3,…,線程N(yùn){}}開始并行執(zhí)行。
(4)獲得掃描任務(wù)的線程開始執(zhí)行任務(wù),對服務(wù)器進(jìn)行掃描,掃描Web 服務(wù)器和應(yīng)用服務(wù)器上最新的被修改過的文件列表,并根據(jù)檢測規(guī)則對掃描到的文件列表進(jìn)行檢測。如果檢測到文件發(fā)生非正常變化,則認(rèn)定該服務(wù)器遭到入侵修改。
(5)檢測系統(tǒng)收集所有檢測任務(wù)的執(zhí)行結(jié)果,生成檢測報(bào)告。
由于靜態(tài)內(nèi)容不存在編譯問題,所以網(wǎng)站靜態(tài)內(nèi)容一旦發(fā)布,相關(guān)文件在網(wǎng)站運(yùn)行過程中也不會發(fā)生改變。黑客入侵后,如要篡改這部分內(nèi)容,必然要對靜態(tài)內(nèi)容的文件進(jìn)行增加、刪除和修改操作。因此檢測靜態(tài)內(nèi)容文件的修改可以作為檢測入侵的重要手段。而無論增加或者修改網(wǎng)站靜態(tài)內(nèi)容,都會修改相關(guān)內(nèi)容文件的最后修改時(shí)間。如下是標(biāo)準(zhǔn)的Linux 系統(tǒng)文件,對文件內(nèi)容的增加和修改,操作系統(tǒng)都會對Modify 時(shí)間進(jìn)行更新,本文就利用Linux 操作系統(tǒng)的這一特點(diǎn),利用Linux 系統(tǒng)中的find 命令檢測變化文件列表,如下檢測test 目錄下最近30分鐘內(nèi)修改過的文件和文件夾列表。如果直接對文件進(jìn)行增加和修改,那么該命令可以快速檢測到新增或者被修改的文件。
靜態(tài)內(nèi)容檢測流程如下:
(1)通過find 指令檢測最近一段時(shí)間內(nèi)被修改的文件列表。
(2)如果文件列表為空,說明沒有發(fā)生入侵。如果列表中含有文件或者文件夾,說明靜態(tài)文件或者文件夾被修改;如果不是維護(hù)人員正常的正常操作,極有可能發(fā)生入侵。
動(dòng)態(tài)內(nèi)容一般都會部署在應(yīng)用服務(wù)器上,以J2EE 的JBOSS應(yīng)用服務(wù)器為例(WebSphere 和tomcat 等也有類機(jī)制),應(yīng)用服務(wù)器上有deploy,work 和tmp 三個(gè)目錄,deploy 目錄主要用于存放war 包文件;tmp 目錄主要用于存放Web 應(yīng)用中的class 文件和相關(guān)配置文件;work 目錄用來存放運(yùn)行過程中產(chǎn)生的jsp 文件和jsp 相關(guān)的編譯文件。J2EE 應(yīng)用服務(wù)器在運(yùn)行過程中用到的jsp 文件,都會先被編譯成java 文件,然后再編譯成可執(zhí)行的class 文件。JSP 編譯過程中產(chǎn)生的java 文件和class 文件會被放到work 目錄下。work 和tmp 中出現(xiàn)的文件是deploy 中war 包中文件的子集,這也是對動(dòng)態(tài)內(nèi)容進(jìn)行智能檢測的理論依據(jù)。
圖2 檢測算法流程圖
圖3 動(dòng)態(tài)檢測模型與算法圖
網(wǎng)頁的動(dòng)態(tài)內(nèi)容是在黑客入侵過程中風(fēng)險(xiǎn)最高的部分,黑客找到Web 應(yīng)用的安全漏洞后,一般會選擇上傳動(dòng)態(tài)腳本到動(dòng)態(tài)內(nèi)容目錄,如tmp 目錄,然后通過外網(wǎng)就可以遠(yuǎn)程就可以控制應(yīng)用服務(wù)器了。
由于動(dòng)態(tài)內(nèi)容和靜態(tài)內(nèi)容工作機(jī)制的不同,在運(yùn)行過程中,JBOSS 應(yīng)用服務(wù)器也會動(dòng)態(tài)修改tmp 和work 目錄內(nèi)的文件,因此無法簡單通過文件的最后修改時(shí)間來判斷是否發(fā)生黑客入侵。
動(dòng)態(tài)內(nèi)容檢測流程如下:
(1)檢測最近一段時(shí)間內(nèi)被修改的文件列表。
(2)如果文件列表為空,說明沒有發(fā)生入侵。
如果列表中含有程序配置文件,由于配置文件在運(yùn)行過程中不應(yīng)該發(fā)生變化,故極有可能發(fā)生入侵。如果列表中含有臨時(shí)目錄中的文件,則根據(jù)應(yīng)用服務(wù)器的特點(diǎn),根據(jù)檢測規(guī)則進(jìn)一步進(jìn)行判別,判斷新增文件是否合法。如果新增文件或者被修改的文件不合法,則認(rèn)定發(fā)生入侵。
靜態(tài)文件變動(dòng)檢測:對116臺服務(wù)器在內(nèi)網(wǎng)環(huán)境下進(jìn)行靜態(tài)掃描,掃描在最近30分鐘被修改過的文件和文件夾,掃描結(jié)果如圖4所示。實(shí)驗(yàn)結(jié)果發(fā)現(xiàn)掃描時(shí)間為1080毫秒,未發(fā)生文件修改和入侵。
圖4 掃描結(jié)果
手工登錄到某臺服務(wù)器,對服務(wù)器上的靜態(tài)文件進(jìn)行修改,檢測程序快速的掃描到該文件和該文件的變化,并開始報(bào)警,檢測時(shí)間為1秒左右,掃描結(jié)果如圖5所示。
圖5 靜態(tài)文件變動(dòng)掃描結(jié)果
動(dòng)態(tài)文件變動(dòng)掃描時(shí),手工登錄到某臺應(yīng)用服務(wù)器,對服務(wù)器上的動(dòng)態(tài)文件內(nèi)容進(jìn)行修改,檢測程序非??焖俚膾呙璧皆撐募拇笮“l(fā)生了變化,并開始報(bào)警,檢測時(shí)間也在1秒左右。具體信息如圖6所示:
圖6 動(dòng)態(tài)文件變動(dòng)掃描結(jié)果
從實(shí)驗(yàn)結(jié)果來看,基于文件系統(tǒng)監(jiān)控的檢測方法的檢測結(jié)果具有如下特點(diǎn):掃描效率高。100臺服務(wù)器在1秒左右能夠完成掃描,掃描效率很高。掃描結(jié)果準(zhǔn)確。發(fā)生文件被變動(dòng)時(shí),可以在第一時(shí)間發(fā)現(xiàn)并預(yù)警。部署簡單?;谖募到y(tǒng)的漏洞檢測,不需要Web 應(yīng)用進(jìn)行個(gè)性化代碼開發(fā),部署簡單,掃描規(guī)則調(diào)整也比較方便,能夠很快地在企業(yè)內(nèi)部進(jìn)行推廣,跟企業(yè)內(nèi)部的監(jiān)控和運(yùn)維體系進(jìn)行整合。