王旭輝 王 濤 康曉鳳
(徐州工程學(xué)院信電工程學(xué)院 徐州 221000)
隨著互聯(lián)網(wǎng)的發(fā)展,不管是在企業(yè)中還是家庭里,計(jì)算機(jī)都是辦公娛樂必不可少的工具,每時(shí)每刻都有人在上網(wǎng)、辦公,同樣每時(shí)每刻也都存在著黑客入侵等危險(xiǎn),為了更好的保護(hù)用戶的計(jì)算機(jī)安全,我們編寫了這套個(gè)人計(jì)算機(jī)的入侵檢測(cè)系統(tǒng),本系統(tǒng)智能、綠色、耗費(fèi)資源小,能夠在Windows 7x86/x64、Vista x86/x64,Windows XP sp1/sp2/sp3等不同平臺(tái)完美運(yùn)行,本系統(tǒng)利用原始套接字對(duì)流經(jīng)網(wǎng)卡的數(shù)據(jù)包進(jìn)行捕獲分析,并沒有借助第三方開發(fā)包。具有易操作的界面,描述的攻擊行為簡(jiǎn)單直觀,用戶能夠自己定義規(guī)則,并且能夠查看本機(jī)應(yīng)用程序的網(wǎng)絡(luò)連接,使之能夠清晰的意識(shí)到危險(xiǎn)的網(wǎng)絡(luò)連接,防止木馬、后門的侵?jǐn)_[1~3]。
為了使系統(tǒng)能夠小巧,穩(wěn)定的運(yùn)行,我們選擇了VC++作為開發(fā)環(huán)境,它有強(qiáng)大的開發(fā)庫,為底層的Windows程序提供了便捷的方法,本系統(tǒng)包含數(shù)據(jù)包檢測(cè)、流量監(jiān)控圖、規(guī)則管理、網(wǎng)絡(luò)連接、幫助,六大模塊組成,為了使普通用戶方便、容易的使用本系統(tǒng),本系統(tǒng)每個(gè)模塊都采用了圖形化界面設(shè)計(jì),并且不需安裝,即拷即用,方便的在筆記本電腦上使用[4]。
本系統(tǒng)核心模塊是對(duì)數(shù)據(jù)包的捕獲分析,檢測(cè)廣度為TCP、UDP、ICMP包,檢測(cè)深度為TCP和UDP的payload部分。根據(jù)數(shù)據(jù)包的數(shù)據(jù)部分和規(guī)則進(jìn)行匹配來確定是否是危險(xiǎn)數(shù)據(jù)包,就像殺毒軟件用病毒和病毒庫進(jìn)行匹配一樣[5]。本系統(tǒng)總體框架如圖1所示。
圖1 系統(tǒng)總體框架圖
在數(shù)據(jù)包檢測(cè)模塊,我們用RichEdit控件設(shè)計(jì)了一個(gè)實(shí)時(shí)數(shù)據(jù)包顯示的界面,用ListControl控件設(shè)計(jì)了一個(gè)顯示警告信息的界面,并將警告信息自動(dòng)記錄在日志文件中,用戶可以自己控制是否開啟數(shù)據(jù)包監(jiān)控。
在本模塊包含數(shù)據(jù)包捕獲、數(shù)據(jù)包檢測(cè)和日志記錄三個(gè)子模塊,數(shù)據(jù)包檢測(cè)模塊將數(shù)據(jù)包解封之后與規(guī)則庫中的規(guī)則進(jìn)行對(duì)比匹配如果匹配吻合,那么就認(rèn)為這個(gè)數(shù)據(jù)包為一個(gè)攻擊數(shù)據(jù)包,然后交給日志記錄模塊進(jìn)行處理,日志記錄模塊記錄該數(shù)據(jù)包的來源以及該包存在的攻擊行為的類型加以記錄并及時(shí)顯示在警告信息的界面上提醒用戶,日志以日期形式命名保存在log目錄下[6]。數(shù)據(jù)報(bào)檢測(cè)過程如圖2所示,數(shù)據(jù)包檢測(cè)模塊運(yùn)行界面如圖3所示[3~5]。
圖2 數(shù)據(jù)包檢測(cè)過程圖
圖3 數(shù)據(jù)包檢測(cè)模塊運(yùn)行界面
在數(shù)據(jù)包捕獲模塊我們利用原始套接字將網(wǎng)卡設(shè)置為混雜模式,從而捕獲流經(jīng)網(wǎng)卡的所有數(shù)據(jù)包,然后將數(shù)據(jù)包交給數(shù)據(jù)包檢測(cè)模塊進(jìn)行檢測(cè)。
本模塊在監(jiān)控網(wǎng)絡(luò)數(shù)據(jù)包功能中,使用多線程、多通道技術(shù),首先先獲得本地所有網(wǎng)卡所有IP地址,根據(jù)IP數(shù)目創(chuàng)建多個(gè)線程,線程處理函數(shù)主要進(jìn)行數(shù)據(jù)包捕獲以及數(shù)據(jù)包分析、對(duì)比。并將捕獲到的數(shù)據(jù)包信息顯示在實(shí)時(shí)數(shù)據(jù)包界面中。所要顯示的數(shù)據(jù)包信息格式為:日期、協(xié)議、源IP地址:源端口、目的IP地址:目的端口、數(shù)據(jù)包大小。數(shù)據(jù)包監(jiān)控整體流程圖如圖4所示,數(shù)據(jù)包捕獲流程如圖5所示[5~7]。
圖4 數(shù)據(jù)包監(jiān)控模塊整體流程圖
圖5 數(shù)據(jù)包捕獲檢測(cè)線程流程圖
本模塊接受從數(shù)據(jù)包捕獲模塊傳遞來的數(shù)據(jù)包,將數(shù)據(jù)包進(jìn)行解包操作,然后根據(jù)數(shù)據(jù)包信息進(jìn)行數(shù)據(jù)包分類,分為TCP包、UDP包和ICMP包三類,然后與規(guī)則庫中的規(guī)則進(jìn)行對(duì)比,如果與規(guī)則匹配,則認(rèn)為這個(gè)數(shù)據(jù)包為危險(xiǎn)數(shù)據(jù)包,進(jìn)行報(bào)警并日志記錄。
在報(bào)警信息界面,使其顯示出數(shù)據(jù)包流經(jīng)網(wǎng)卡時(shí)間、源地址、目的地址以及包信息描述。用戶可以復(fù)制這條警告信息,并能右擊查詢IP歸屬地,查詢IP歸屬地功能使用QQWry.dat編程技術(shù)實(shí)現(xiàn)。數(shù)據(jù)包分析與規(guī)則匹配流程如圖6所示[6~8]。
圖6 數(shù)據(jù)包分析與規(guī)則匹配流程圖
本模塊分為添加規(guī)則和刪除規(guī)則兩個(gè)子模塊,在本模塊,我們創(chuàng)建了一個(gè)模態(tài)對(duì)話框,在此對(duì)話框中放置了一ListControl控件用來顯示已經(jīng)添加到規(guī)則庫中的規(guī)則,用戶可以在此界面上選擇添加規(guī)則和選定一條規(guī)則來刪除。為了方便的讀寫規(guī)則,我們采用了xml文件來存儲(chǔ)所有的規(guī)則,并采用了第三方的CMarkup類來對(duì)xml文件進(jìn)行讀寫操作,規(guī)則保存在程序根目錄下rules.xml文件中。用CMarkup類的Open()、Save()方法打開和保存xml文件,用IntoElem()、FindElem()、GetData()、OutOfElem()可實(shí)現(xiàn)遍歷xml文件讀取規(guī)則。用RemoveElem()方法可以刪除一條規(guī)則[7]。
一條規(guī)則主要由proto(協(xié)議)、srcip(源地址)、dstip(目的地址)、srcport(源端口)、dstport(目的端口)、payload(特征)、direction(單雙向)、msg(消息)等組成。讀取規(guī)則文件流程如圖7所示[8~9]。
圖7 CMarkup類遍歷文件讀取規(guī)則流程圖
本模塊枚舉出計(jì)算機(jī)中存在網(wǎng)絡(luò)連接的進(jìn)程,將該進(jìn)程的PID、進(jìn)程名、協(xié)議、本地IP地址、本地端口、遠(yuǎn)程IP地址、遠(yuǎn)程端口、遠(yuǎn)程IP歸屬地、連接狀態(tài)以及進(jìn)程程序所在的路徑顯示出來,由于不同的操作系統(tǒng)iphlpapi.dll版本不同,本模塊針對(duì)不同的操作系統(tǒng)從iphlpapi.dll中的不同的擴(kuò)展函數(shù)來枚舉這些進(jìn)程,在Windows xp、2003操作系統(tǒng)中使用 AllocateAndGetTcpExTableFromStack()和 AllocateAndGetUdpExTableFromStack()函數(shù),在 windows 7、server 2008、vista等中使用InternalGetTcpTable2()和InternalGetUdpTableWithOwnerPid()函數(shù)大大提高了與各種系統(tǒng)的兼容性。運(yùn)行界面如圖8所示[10,14]:
圖8 網(wǎng)絡(luò)連接查看模塊運(yùn)行界面
本系統(tǒng)的設(shè)計(jì)思想來源于Snort入侵檢測(cè)系統(tǒng),設(shè)計(jì)過程中涉及到 Windows GDI、Socket、多線程、文件操作、定時(shí)器等編程技術(shù),是一個(gè)集多種編程技術(shù)為一體的系統(tǒng),在設(shè)計(jì)編寫過程中,極大地鍛煉了我們的編程能力以及編程思想,使我們對(duì)IDS這門技術(shù)有了更深的了解,本系統(tǒng)的設(shè)計(jì)編寫經(jīng)驗(yàn)對(duì)我們今后從事網(wǎng)絡(luò)安全相關(guān)的工作起到了很大的幫助作用。
[1]卡斯維爾.Snort2.0入侵檢測(cè)[M].北京:國(guó)防工業(yè)出版社,2004(01):22.
[2]陳偉.Snort輕量級(jí)入侵檢測(cè)系統(tǒng)全攻略[M].北京:北京郵電大學(xué)出版社,2009:31.
[3]韓東海.入侵檢測(cè)系統(tǒng)及實(shí)例剖析[M].北京:清華大學(xué)出版社,2002:54.
[4]孫鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2006:155.
[5]唐正軍.網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2002:87.
[6]梁洋洋.Visual C++黑客編程揭秘與防范[M].北京:人民郵電出版社,2009:237.
[7]羅軍舟.TCP/IP協(xié)議及網(wǎng)絡(luò)編程技術(shù)[M].北京:清華大學(xué)出版社,2004:86.
[8]安東尼·瓊斯.Windows網(wǎng)絡(luò)編程技術(shù)[M].北京:機(jī)械工業(yè)出版社,2000:64.
[9]百度文庫.CMarkup類的使用方法[EB/OL].http://wenku.baidu.com/view/a9c27eed0975f46527d3e15d.html,2011.
[10]陳堅(jiān),陳偉.Visual C++網(wǎng)絡(luò)高級(jí)編程[M].北京:人民郵電出版社,2001:149.
[11]杜海娟.網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)中動(dòng)態(tài)克隆選擇算法的優(yōu)化[J].計(jì)算機(jī)與數(shù)字工程,2010(7).
[12]沈艷,方湘艷,韓威,等.基于四層過濾的網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)模型[J].計(jì)算機(jī)與數(shù)字工程,2011(6).
[13]孫大朋.改進(jìn)的模糊聚類算法在入侵檢測(cè)中的研究[J].計(jì)算機(jī)與數(shù)字工程,2010(3).
[14]哈特.Windows系統(tǒng)編程[M].北京:機(jī)械工業(yè)出版社,2006:117.