• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于ARM的嵌入式蠕蟲檢測系統(tǒng)設(shè)計與實現(xiàn)*

      2013-07-20 09:40:54娟,劉娜,魏
      微處理機 2013年3期
      關(guān)鍵詞:蠕蟲開發(fā)板內(nèi)核

      鮑 娟,劉 娜,魏 剛

      (1.湖北醫(yī)藥學(xué)院計算機教研室,十堰 442000;2.湖北醫(yī)藥學(xué)院附屬人民醫(yī)院,十堰 442000)

      1 引言

      隨著互聯(lián)網(wǎng)應(yīng)用的普及和深入,計算機病毒、木馬程序、網(wǎng)絡(luò)蠕蟲等惡意程序,對計算機系統(tǒng)和網(wǎng)絡(luò)的安全威脅日益增加。與傳統(tǒng)病毒不同,蠕蟲病毒以計算機為載體,以網(wǎng)絡(luò)為攻擊對象。在掃描漏洞主機的過程中,蠕蟲病毒會產(chǎn)生巨大的網(wǎng)絡(luò)流量,導(dǎo)致整個網(wǎng)絡(luò)癱瘓,造成經(jīng)濟(jì)損失。

      Linux 操作系統(tǒng)作為目前流行的開源操作系統(tǒng),為許多硬軟件產(chǎn)品的開發(fā)提供了良好的平臺。開發(fā)者可對內(nèi)核進(jìn)行裁減和修改,定制最適合的操作系統(tǒng)平臺。文中結(jié)合嵌入式設(shè)備成本低、體積小的特點,提出了一種適合移植到嵌入式系統(tǒng)上的蠕蟲病毒檢測方法。

      2 蠕蟲檢測技術(shù)分析

      蠕蟲檢測可以分為誤用檢測和異常檢測[1]。目前較常用的蠕蟲檢測方法是誤用檢測,通過蠕蟲代碼特征來檢測蠕蟲的存在。該方法只能在蠕蟲爆發(fā)后,通過對相應(yīng)蠕蟲進(jìn)行分析得到檢測特征,但是無法檢測未知蠕蟲,無法實現(xiàn)對蠕蟲的有效防范。

      另一蠕蟲檢測方法是異常檢測,通過檢測主機的異常行為或者流量的異常模式來確定蠕蟲的存在。

      文獻(xiàn)[2]提出通過判斷失敗連接數(shù)是否達(dá)到閾值來檢測遠(yuǎn)程蠕蟲。通常該閾值的選擇是比較困難的:過低則提高誤報率,過高則提高漏報率。

      目前,主流的開源檢測系統(tǒng)包括Snort 和Bro[3]。

      Snort是輕量級的入侵檢測系統(tǒng),通過用戶態(tài)的Libpcap,從內(nèi)核中獲取數(shù)據(jù)包。但數(shù)據(jù)包流量較大時,大量的數(shù)據(jù)包就會被丟棄,從而導(dǎo)致Snort 系統(tǒng)的效率大大降低。

      Bro 也是通過Libpcap 庫來獲取網(wǎng)絡(luò)數(shù)據(jù)包,Libpcap 包捕獲機制的原理是在數(shù)據(jù)鏈路層增加一個旁路處理,通過系統(tǒng)調(diào)用把數(shù)據(jù)包從內(nèi)核空間傳入到用戶空間再進(jìn)行分析處理[4],這增加了內(nèi)存拷貝次數(shù),影響系統(tǒng)捕包的性能。因此如何減少內(nèi)存拷貝次數(shù)及系統(tǒng)調(diào)用、能快速的檢測是關(guān)鍵所在。

      為了減少內(nèi)存拷貝及系統(tǒng)調(diào)用時間,降低用戶態(tài)存儲空間的需求。文中設(shè)計實現(xiàn)了一個基于Linux 內(nèi)核、Netfilter 框架的內(nèi)核流量采集和分析模塊,并且同時能夠進(jìn)行內(nèi)網(wǎng)的蠕蟲檢測,通過動態(tài)加載功能模塊的方式,運行在Linux 內(nèi)核空間,所有的包截獲分析、蠕蟲檢測等任務(wù)都是在內(nèi)核空間完成,因此比起其他的運行在用戶空間的網(wǎng)絡(luò)監(jiān)控應(yīng)用程序,該模塊大大降低了從內(nèi)核空間到用戶空間的內(nèi)存拷貝操作,因此極大地提高了位于內(nèi)網(wǎng)的檢測系統(tǒng)的整體性能。

      3 系統(tǒng)設(shè)計

      3.1 基于Netfilter 框架的流量采集模塊

      在混雜模式下,利用Netfilter 框架,當(dāng)數(shù)據(jù)包被傳遞到Hook 中時便開始進(jìn)行采集。Hook 函數(shù)接收到的數(shù)據(jù)有:skbuff 結(jié)構(gòu)、網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)結(jié)構(gòu)指針。skbuff 中包括了鏈路層、網(wǎng)絡(luò)層及傳輸層包頭,通過分析這些包頭信息可以得到該數(shù)據(jù)包的源地址、目的地址和協(xié)議類型,Netfilter 通過Hook 函數(shù)的返回值決定該包的去向。文中選擇PRE_ROUTING和POST_ROUTING參考點注冊回調(diào)函數(shù),并設(shè)置其優(yōu)先級最高,并以NF_ACCEPT為返回值告訴Netfilter,即到目前為止該數(shù)據(jù)包一直被接收。

      3.2 基于主機級別的蠕蟲檢測模塊

      蠕蟲主機流量主要由FCC(第一次連接)流量組成。而這些連接請求大多數(shù)是不能成功的,或者沒有應(yīng)答,或者被拒絕(RST 包)。根據(jù)實驗分析,網(wǎng)絡(luò)蠕蟲連接請求失敗的概率在80%左右。根據(jù)蠕蟲檢測算法,設(shè)計了蠕蟲檢測模塊。該模塊的基本流程圖如圖1 所示。

      當(dāng)某臺主機判斷為失敗連接時,先計算該主機發(fā)起的FCC 數(shù)是否到達(dá)給定閾值NCE,若達(dá)到了閾值,再判斷這臺主機的FCC 失敗連接比率是否達(dá)到給定閾值。若真,則該主機被判斷為蠕蟲;否則,考察該主機的FCC是否具有正常主機的重尾分布特性。若真,則該主機被認(rèn)為是正常主機,反之,該主機被認(rèn)為是蠕蟲。

      圖1 蠕蟲檢測流程圖

      4 系統(tǒng)實現(xiàn)

      將設(shè)計和實現(xiàn)的蠕蟲檢測系統(tǒng)移植到ARM 開發(fā)板上,在搭建的內(nèi)網(wǎng)環(huán)境中運行,用來進(jìn)行本地局域網(wǎng)的蠕蟲檢測。嵌入式實現(xiàn)的原因如下:

      (1)前面提到的系統(tǒng)是在PC 機上SUSE 10.3(Linux2.6 內(nèi)核)運行實現(xiàn)的,內(nèi)核比較龐大,但是通過內(nèi)核的裁剪和重編譯,可以在ARM 開發(fā)板上運行,以解決資源問題。

      (2)移植到開發(fā)板上以后,開發(fā)板的網(wǎng)口可以直接連到交換機上,監(jiān)測局域網(wǎng)的流量異常情況,攜帶方便,占用空間更小。

      4.1 系統(tǒng)硬件平臺

      本系統(tǒng)的開發(fā)板是EP9315(Cirrus Logic 公司出品)處理器,基于ARM920T 內(nèi)核,內(nèi)帶MMU,16KB的指令 cache,16KB的數(shù)據(jù) cache 和 Maverick Crunch。主頻200MHz,系統(tǒng)總線100MHz,可提供工業(yè)級;兩片F(xiàn)lash 共32MBNorFlash,64MB SDRAM。

      4.2 嵌入式linux 系統(tǒng)的軟件平臺構(gòu)建

      嵌入式Linux 系統(tǒng)的構(gòu)建主要分為五個步驟[5]:①交叉編譯環(huán)境的建立;②引導(dǎo)程序Bootloader的開發(fā);③Linux 內(nèi)核的開發(fā);④根文件系統(tǒng)的定制;⑤文件燒寫。

      下面主要介紹Linux 內(nèi)核編譯、制作根文件系統(tǒng)和文件燒寫。

      4.2.1 嵌入式Linux 內(nèi)核編譯

      內(nèi)核配置完后進(jìn)行Linux 內(nèi)核編譯。

      (1)執(zhí)行如下指令,刪除過時的文件#make clean

      (2)執(zhí)行如下指令,生成可執(zhí)行內(nèi)核映像文件#make zImage

      執(zhí)行完后,會在arch/arm/boot/下生成一個內(nèi)核映像文件vmlinux。

      嵌入式內(nèi)核編譯的不同之處在于之后還要將vmlinux 轉(zhuǎn)換成可以下載到嵌入式系統(tǒng)板上運行的內(nèi)核映像vmlinux.gz.img。

      4.2.2 根文件系統(tǒng)

      對于一個實際的嵌入式應(yīng)用系統(tǒng)來說,僅包含Linux 內(nèi)核是不夠的,還必須有文件系統(tǒng)的支持。在嵌入式Linux 內(nèi)核啟動后,需要加載根文件系統(tǒng),以支持系統(tǒng)與用戶交互。下面描述如何制作根文件系統(tǒng)[6]。

      對于嵌入式Linux 來說,最簡單最常用的根文件系統(tǒng)是RAMDISK。RAMDISK是指使用系統(tǒng)的一部分內(nèi)存空間來模擬一個用戶熟悉的磁盤分區(qū)。

      (1)從開發(fā)系統(tǒng)提供商獲得一個RAMDISK,復(fù)制壓縮文件ramdisk.gz 到工作目錄/home/work。

      解壓該文件,#gzip-d ramdisk.gz

      (2)將文件RAMDIAK 掛載到一個臨時目錄,如ram_disk,執(zhí)行如下命令:

      之后用戶可以查看文件ramdisk 包含的所有子文件系統(tǒng)內(nèi)容。

      (3)根據(jù)需求對文件進(jìn)行增減,操作完畢后卸載目錄ram_disk 與文件RAMDISK的連接。并對新的RAMDISK 文件進(jìn)行壓縮。執(zhí)行如下命令:

      此時,有了嵌入式Linux 內(nèi)核和根文件系統(tǒng),一個完整的嵌入式Linux 系統(tǒng)就編譯完成了。下面將生成的內(nèi)核映像文件vmlinux.gz.img 和ramdisk.gz.img 下載到系統(tǒng)的FLASH 中,就形成了一個完整的嵌入式系統(tǒng)。

      4.2.3 文件燒寫

      一般情況,目標(biāo)機上的Bootloader 通過串口與主機之間進(jìn)行文件傳輸,但是,串口傳輸?shù)乃俣仁怯邢薜?,因此通過以太網(wǎng)連接并借助TFTP 協(xié)議來下載文件是個更好的選擇。

      通過以下命令將u-boot.bin,vmlinux.gz.img,ramdisk.gz.img 燒寫到開發(fā)板上。

      三個文件燒寫到目標(biāo)板上后,就可以運行用戶自己的程序(交叉編譯環(huán)境編譯),例如在嵌入式Linux 內(nèi)核態(tài),動態(tài)加載檢測局域網(wǎng)內(nèi)的蠕蟲主機模塊。

      內(nèi)核模塊的動態(tài)裝載性使得內(nèi)核映像的尺寸保持在最小,并且具有最大的靈活性,而且不需重新編譯內(nèi)核及重新引導(dǎo)。

      4.3 內(nèi)核與用戶態(tài)的通信

      在Linux 2.4 版以后的內(nèi)核中,幾乎全部的中斷過程與用戶態(tài)進(jìn)程的通信都是使用Netlink 套接字實現(xiàn)的。Netlink 套接字的最大特點是對中斷過程的支持,它在內(nèi)核空間接收用戶空間數(shù)據(jù)時,不再需要用戶啟動一個內(nèi)核線程,而是通過另一個軟中斷調(diào)用用戶事先指定的接收函數(shù)。使用軟中斷而不是內(nèi)核線程來接收數(shù)據(jù),這樣就可以保證數(shù)據(jù)接收的實時性。

      下面將闡述Linux 內(nèi)核中Netlink 消息機制的實現(xiàn),并且通過Netlink 消息通信機制,實現(xiàn)用戶態(tài)與動態(tài)加載的內(nèi)核模塊之間的消息交互。

      4.3.1 Netlink 通信機制

      Netlink 用于在內(nèi)核空間和用戶空間之間傳遞信息,它提供了一種內(nèi)核與用戶的雙向異步通信機制。它包括為用戶進(jìn)程設(shè)計的標(biāo)準(zhǔn)套接口和基于內(nèi)核模塊設(shè)計的內(nèi)核API。內(nèi)核與用戶空間之間傳遞的消息保存在Socket 緩存隊列中,發(fā)送消息只是把消息保存在接收者的Socket 接收隊列,而不需要等待接收者收到消息,是一種全雙工無阻塞通信方式。具體方法是在用戶態(tài)下使用標(biāo)準(zhǔn)的Socket API,在內(nèi)核空間使用特殊API 來實現(xiàn)。

      那么內(nèi)核是如何識別用戶進(jìn)程的呢?

      以內(nèi)核模塊和用戶進(jìn)程之間單播通信為例。

      內(nèi)核模塊向用戶進(jìn)程單播時,對目的用戶進(jìn)程的識別是以進(jìn)程pid 作為依據(jù)的。因此在各自創(chuàng)建了套接字后,用戶進(jìn)程需要首先將自身的pid 發(fā)送給內(nèi)核模塊,內(nèi)核模塊(回調(diào)函數(shù))保存此pid,供以后向用戶進(jìn)程發(fā)送數(shù)據(jù)時使用。

      下面將從內(nèi)核態(tài)和用戶態(tài)兩方面具體描述如何相互實現(xiàn)消息傳遞。

      4.3.2 內(nèi)核態(tài)工作

      如圖2 所示,運行在內(nèi)核態(tài)的蠕蟲檢測模塊實時監(jiān)測內(nèi)網(wǎng)的流量情況,若發(fā)現(xiàn)蠕蟲病毒,將檢測到的蠕蟲機信息,傳遞到用戶態(tài),進(jìn)行結(jié)果顯示。

      圖2 內(nèi)核與用戶態(tài)的Netlink 通信

      4.3.3 用戶態(tài)工作

      用戶態(tài)使用標(biāo)準(zhǔn)的socket API:socket(),bind(),sendmsg(),recvmsg()和close()就能很容易地使用Netlink socket,與內(nèi)核進(jìn)行通信。

      用戶態(tài)主要實現(xiàn)兩方面的功能:①發(fā)送數(shù)據(jù)到內(nèi)核,即自身的進(jìn)程pid 傳給內(nèi)核;②接收內(nèi)核發(fā)送的數(shù)據(jù)并在用戶態(tài)顯示接收結(jié)果。

      5 系統(tǒng)測試

      5.1 搭建內(nèi)網(wǎng)環(huán)境

      (1)路由器上配置兩個網(wǎng)段,分別是192.168.1.0 內(nèi)網(wǎng)段和192.168.2.0 外網(wǎng),測試網(wǎng)段192.168.1.0 到192.168.2.0 網(wǎng)段進(jìn)行Web 頁的訪問(見圖3)。

      (2)內(nèi)網(wǎng)段(192.168.1.0)分布:查看測試結(jié)果的PC 機(IP:192.168.1.101)、ARM 開發(fā)板、蠕蟲主機(IP:192.168.1.102)和其它主機(IP:192.168.1.103)分別連接內(nèi)網(wǎng)的交換機。

      位于內(nèi)網(wǎng)段的ARM 板,在192.168.1.0 網(wǎng)段內(nèi)的交換機上端口進(jìn)行了端口鏡像。

      (3)蠕蟲主機上運行avserve2.exe,使得該主機感染振蕩波蠕蟲。

      (4)外網(wǎng)段(192.168.2.1)分布:兩臺Web 服務(wù)器連接交換機,IP是:192.168.2.102、192.168.2.103。

      圖3 測試連接圖

      5.2 運行與測試結(jié)果

      利用tftp,下載*.ko 文件和與之對應(yīng)的用戶態(tài)程序到ARM 板上。

      在開發(fā)板的shell 下,先執(zhí)行insmod *.ko 文件,啟動該檢測系統(tǒng);再運行用戶態(tài)程序,例如./user,創(chuàng)建Netlink 套接字與內(nèi)核模塊交互信息。加載模塊、運行用戶態(tài)程序如圖4 所示。

      內(nèi)核態(tài)模塊檢測到內(nèi)網(wǎng)的蠕蟲機后,內(nèi)核態(tài)傳遞蠕蟲主機的源IP 地址到用戶態(tài),并使用打印函數(shù)輸出信息到控制臺,進(jìn)行終端顯示。內(nèi)核檢測結(jié)果和用戶態(tài)接收到的結(jié)果如圖5 所示。

      圖4 加載檢測模塊和用戶態(tài)程序

      圖5 內(nèi)核和用戶態(tài)顯示結(jié)果

      6 結(jié)束語

      創(chuàng)新點:蠕蟲檢測系統(tǒng)移植到ARM 開發(fā)板上,在搭建的內(nèi)網(wǎng)環(huán)境中運行,進(jìn)行蠕蟲檢測,并顯示了測試結(jié)果。實驗證明,系統(tǒng)進(jìn)行相關(guān)的裁減和編譯后,燒寫到開發(fā)板上,捕捉內(nèi)網(wǎng)的數(shù)據(jù)包,實現(xiàn)蠕蟲流量檢測。最后在嵌入式開發(fā)板上實現(xiàn)了內(nèi)核態(tài)的蠕蟲檢測系統(tǒng)與用戶態(tài)的消息交互。

      [1]蔣建春,馬恒太,任黨恩,等.網(wǎng)絡(luò)安全入侵檢測:研究綜述[J].軟件學(xué)報,2000,11(11):1460-1466.

      [2]Seth Robertson,Eric V.Siegel,Matt Miller,Salvatore J.Stolfo.Surveillance detection in high bandwidth environments[C].Proc.of DARPA DISCEX III Conference,2003:130-139.

      [3]Bro intrusion detection system[EB/OL].http://bro-ids.org/.

      [4]楊建華,謝高崗,李忠誠.基于Linux 內(nèi)核的流量分析方法[J].計算機工程,2006,32(8):67-69.

      [5]王亞軍,劉金剛.Linux 運用于嵌入式系統(tǒng)的技術(shù)分析[J].計算機應(yīng)用研究,2005,20(5):102-104.

      [6]李駒光,鄭耿,江澤明.嵌入式Linux 系統(tǒng)開發(fā)詳解—基于EP93XX 系列ARM(第一版)[M].北京:清華大學(xué)出版社,2006.

      猜你喜歡
      蠕蟲開發(fā)板內(nèi)核
      萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
      強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      蠕蟲狀MoS2/C的制備及其在鋰離子電池負(fù)極材料中的應(yīng)用
      秋季謹(jǐn)防家禽蠕蟲病
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
      Linux內(nèi)核mmap保護(hù)機制研究
      Microchip最新推出兩款PIC32 Curiosity開發(fā)板
      淺析單片機開發(fā)板的設(shè)計與制作
      電子制作(2017年22期)2017-02-02 07:10:14
      青海海晏縣牛羊寄生蠕蟲種調(diào)查與防治
      基于隔離和免疫的蠕蟲傳播模型及穩(wěn)定性分析
      广东省| 兴安县| 鄢陵县| 大冶市| 乌鲁木齐市| 漳平市| 永城市| 汽车| 尖扎县| 广灵县| 武宁县| 肥西县| 十堰市| 开江县| 和龙市| 扬州市| 林州市| 平塘县| 顺昌县| 喜德县| 罗甸县| 扶余县| 绥化市| 垣曲县| 牟定县| 临武县| 贵港市| 凤山市| 镶黄旗| 黔江区| 花莲市| 图们市| 龙泉市| 图木舒克市| 闽清县| 达孜县| 大港区| 兴山县| 安庆市| 休宁县| 自治县|