核心層網(wǎng)絡封包截獲技術應用 畢業(yè)論文_第1頁
核心層網(wǎng)絡封包截獲技術應用 畢業(yè)論文_第2頁
核心層網(wǎng)絡封包截獲技術應用 畢業(yè)論文_第3頁
核心層網(wǎng)絡封包截獲技術應用 畢業(yè)論文_第4頁
核心層網(wǎng)絡封包截獲技術應用 畢業(yè)論文_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、核心層網(wǎng)絡封包截獲技術應用學生姓名XXX院系名稱計算機科學學院專業(yè)名稱XXXXX班 級 學 號XXXXXXXXX指導教師XXX完成時間 核心層網(wǎng)絡封包截獲技術應用 內(nèi)容摘要:隨著網(wǎng)絡安全問題的日益突出,計算機用戶對網(wǎng)絡安全技術及其相關產(chǎn)品也越來越關注。在眾多的網(wǎng)絡安全技術中,核心層封包截獲技術有著非常重要的地位,它是包過濾防火墻的基礎,并且被廣泛的用于封包過濾、協(xié)議轉(zhuǎn)換、截取報文分析以及網(wǎng)絡嗅探等技術中。因此,本文就核心層網(wǎng)絡封包截獲技術進行了探究。首先,本文對目前該技術的國內(nèi)外現(xiàn)狀進行了說明,以明確進行研究的目的。隨后,詳盡地對核心層網(wǎng)絡封包截獲技術的實現(xiàn)原理作了講述,在講述原理時主要介紹了

2、一下幾個方面的內(nèi)容:分層服務提供者(LSP)的相關概念、原理和用途;核心層網(wǎng)絡驅(qū)動和NDIS網(wǎng)絡驅(qū)動程序;核心層網(wǎng)絡封包截獲技術的實現(xiàn)。通過對原理的說明,使讀者了解實現(xiàn)這項技術的具體方法。最后,為了實現(xiàn)這項技術并對前面提出的原理進行驗證設計了相關的軟件,本文對這個軟件作了系統(tǒng)分析和系統(tǒng)設計,最終并實現(xiàn)了該軟件。通過測試,證明了其具有在核心層截獲封包,在應用層分析封包的功能,也驗證了本文所探討的原理的正確性和重要性。關鍵詞:網(wǎng)絡安全 核心層 封包截獲The Technoloty of Packet Interception in Kernel LayersAbstract: Because th

3、e network security problems have gone from bad to worse, computer users begin to notice network security technology and network security products. Among all kinds of security technologies, the technology of packet interception in kernel layer is very important for it is the basis for packet filter f

4、irewall and it is widely used in packet filtering, protocol conversion, interception of message analysis and network sniffering. Therefor, I devote myself to studying on the technology of the packet interception in kernel layer.In this article, firstly, the present situation of this technolony is de

5、scribed to tell reader why I study on it. Secondly, principles of packet interception are told about in detail.In this detailed description part, the concept of the LSP ,the theory of the LSP and the usage of LSP are introduced in more detail. Whats more, I also explain many aspects of the network d

6、rivers in kenel layer and tell reader how to implement the interception.Thus, reader can understand the technology of packet interception in kernel layer accurately. Finally, to implement and check out the technology I have discussed, I compile the software named NetFilter which is analyzed and desi

7、gned systematically in this article. By testing , the software can intercept packets in kenel layer and analyze packet in application layer.Key words:network security kernel layer packet interception目錄1概述11.1研究目的和意義11.2研究背景21.2.1國內(nèi)現(xiàn)狀21.2.2國外現(xiàn)狀21.3主要貢獻31.4文章的結構42預備知識及原理說明42.1分層服務提供者(LSP)42.1.1分層服務提供者

8、(LSP)的概念42.1.2分層服務提供者(LSP)的原理42.1.3分層服務提供者(LSP)的用途用戶級封包截獲52.2核心層網(wǎng)絡驅(qū)動和NDIS網(wǎng)絡驅(qū)動程序52.2.1核心層(Kernel Mode)概述52.2.2核心層網(wǎng)絡驅(qū)動62.2.3 NDIS網(wǎng)絡驅(qū)動程序62.3核心層網(wǎng)絡封包截獲技術72.3.1Windows網(wǎng)絡系統(tǒng)體系結構82.3.2用戶模式下的網(wǎng)絡數(shù)據(jù)過濾92.3.3內(nèi)核模式下的網(wǎng)絡數(shù)據(jù)過濾102.3.4應用層封包截獲與核心層封包截獲113 NetFilter系統(tǒng)分析113.1需求分析113.2功能說明123.2.1網(wǎng)絡訪問監(jiān)視123.2.2應用層過濾規(guī)則123.2.3核心層過

9、濾規(guī)則133.2.4系統(tǒng)設置134 NetFilter系統(tǒng)設計134.1系統(tǒng)總體設計134.1.1系統(tǒng)的工作流程134.1.2系統(tǒng)的功能模塊144.2系統(tǒng)詳細設計144.2.1系統(tǒng)關鍵類154.2.2系統(tǒng)重要數(shù)據(jù)結構154.2.3系統(tǒng)重要模塊詳細設計165. NetFilter系統(tǒng)實現(xiàn)175.1開發(fā)平臺175.1.1 Windows Server 2003 DDK185.1.2 DbgView185.1.3 Micosoft Visual C+ 6.0185.1.4 Micosoft Visual Visio 2003185.2模塊實現(xiàn)185.2.1 SYS模塊185.2.2添加應用層規(guī)則19

10、6 NetFilter系統(tǒng)測試與運行206.1 測試206.1.1單元測試206.1.2 功能測試216.1.3 系統(tǒng)綜合測試216.2 系統(tǒng)運行217 結束語238 致謝23參考文獻2424核心層網(wǎng)絡封包截獲技術應用1概述1.1研究目的和意義 隨著網(wǎng)絡的普及,安全問題正在威脅著每一個網(wǎng)絡用戶。由于黑客攻擊和信息泄露等安全問題并不像病毒直截了當?shù)貙ο到y(tǒng)進行破壞,而是故意隱藏自己的行動,所以往往不能引起人們的重視。但是,一旦網(wǎng)絡安全問題發(fā)生,通常會帶來嚴重的后果。因此,利用網(wǎng)絡安全技術及產(chǎn)品來加強安全意識,并及早防范是非常必要的。 在網(wǎng)絡安全技術中,核心層網(wǎng)絡封包截獲技術有著很重要的作用。1、核

11、心層網(wǎng)絡封包截獲技術是包過濾防火墻的技術基礎。包過濾防火墻是PC機上使用的主流防火墻, 核心層包過濾技術為之提供設置規(guī)則表,按照規(guī)則表檢查數(shù)據(jù)包并對其施行相關動作(如放行,拒絕等)。2、核心層網(wǎng)絡封包截獲技術應用于協(xié)議轉(zhuǎn)換。當網(wǎng)絡類型不同(比如以太網(wǎng)、令牌環(huán)),彼此不認識對方的幀格式,單純依靠數(shù)據(jù)鏈路層協(xié)議無法實現(xiàn)兩個網(wǎng)絡的相互連接。因此這個問題需在網(wǎng)絡層上進行解決:方法是在不同的網(wǎng)絡類型中分別設置兩個網(wǎng)關,網(wǎng)關需要核心層封包過濾技術的支持,獲取封包以后在轉(zhuǎn)化為相應的協(xié)議。3、核心層網(wǎng)絡封包截獲技術用作包過濾器。按照不同的參數(shù)設置,如IP地址段,地址掩碼等。這一項技術的核心同樣需要核心層封包技

12、術的支持。4、核心層網(wǎng)絡封包截獲技術應用于截取報文分析。在網(wǎng)絡層截獲數(shù)據(jù)包,并對其進行源地址、源端口以及內(nèi)容的分析。5、核心層網(wǎng)絡封包截獲技術應用于網(wǎng)絡嗅探技術。嗅探(Sniffer)技術是網(wǎng)絡安全攻防技術中很重要的一種。對黑客來說,通過嗅探技術能以非常隱蔽的方式攫取網(wǎng)絡中的大量敏感信息,與主動掃描相比,嗅探行為更難被察覺,也更容易操作。對安全管理人員來說,借助嗅探技術,可以對網(wǎng)絡活動進行實時監(jiān)控,并進行發(fā)現(xiàn)各種網(wǎng)絡攻擊行為。6、核心層網(wǎng)絡封包截獲技術應用于個人網(wǎng)絡安全工具。根據(jù)管理者設置的安全規(guī)則把守網(wǎng)絡,提供訪問控制,信息過濾等功能,幫助用戶抵擋網(wǎng)絡入侵和攻擊,防止信息泄露??偟膩硭?,核心

13、層網(wǎng)絡封包截獲技術有著相當大的應用前景。它在技術上對很多網(wǎng)絡安全技術提供支持;同時,也是許多商業(yè)網(wǎng)絡安全產(chǎn)品中必要的知識。當我們掌握了這項技術了后,開發(fā)防火墻,嗅探器等安全軟件就會變得容易。所以我們有必要學習和探究這項技術。1.2研究背景1.2.1國內(nèi)現(xiàn)狀在國內(nèi)的產(chǎn)品中使用這項技術的有很多的例子,例如我們耳熟能詳?shù)摹?60安全衛(wèi)士”、以及“瑞星”、“江民”等殺毒軟件中提供的“實時監(jiān)控系統(tǒng)”都無一例外的采用了這項技術。因為他們都需要實時的監(jiān)控網(wǎng)絡的情況,實時的對應用服務進行監(jiān)控。對我來說,印象最深刻的是“360安全衛(wèi)士”的實時保護功能。它提供了琳瑯滿目的各種防火墻,比如“漏洞防火墻”、“系統(tǒng)防火

14、墻”、“木馬防火墻”、“網(wǎng)頁防火墻”、“U盤防火墻”以及“ARP防火墻”等。讓我對奇虎公司的專注精神尤為佩服。若我們撇開以上各個防火墻的具體功能,把注意力放在實現(xiàn)方法上,發(fā)現(xiàn)其中哪一個也離不開“核心層網(wǎng)絡封包截獲技術”的支持。因為這些防火墻中大多數(shù)采用的監(jiān)控方法是:當數(shù)據(jù)包從網(wǎng)絡到達NIC后,繼而截取分析包,最后判斷這個應用是否是危險的;或者根據(jù)服務調(diào)用下層驅(qū)動時,通過在驅(qū)動上添加截獲分析功能了解你的服務是否是合法的。圖 1 360安全衛(wèi)士實時監(jiān)控圖使用過“360安全衛(wèi)士”的用戶,對圖1的提示框應該不會陌生,它提示您現(xiàn)在Google的更新軟件正在工作(裝入服務),詢問您允許它工作還是阻止它工作

15、。這是比較典型的利用這項技術進行網(wǎng)絡安全防范的例子。1.2.2國外現(xiàn)狀國外產(chǎn)品中使用“核心層網(wǎng)絡封包截獲技術”的最好的例子是Network General 公司的Sniffer這款軟件,中文名字是嗅探器。首先了解Sniffer的基本功能:1、網(wǎng)絡安全的保障與維護 (1)對異常的網(wǎng)絡攻擊的實時發(fā)現(xiàn)與告警; (2)對高速網(wǎng)絡的捕獲與偵聽; (3)全面分析與解碼網(wǎng)絡傳輸?shù)膬?nèi)容;2、面向網(wǎng)絡鏈路運行情況的監(jiān)測 (1)各種網(wǎng)絡鏈路的運行情況; (2)各種網(wǎng)絡鏈路的流量及阻塞情況; (3)網(wǎng)上各種協(xié)議的使用情況; (4)網(wǎng)絡協(xié)議自動發(fā)現(xiàn); (5)網(wǎng)絡故障監(jiān)測;3、面向網(wǎng)絡上應用情況的監(jiān)測 (1)任意網(wǎng)段應

16、用流量、流向; (2)任意服務器應用流量、流向; (3)任意工作站應用流量、流向; (4)典型應用程序響應時間; (5)不同網(wǎng)絡協(xié)議所占帶寬比例; (6)不同應用流量、流向的分布情況及拓撲結構;Sniffer是嗅探器中的重要產(chǎn)品,除了這三種基本功能外,它還有很多獨特而專業(yè)的功能,Sniffer是網(wǎng)絡分析產(chǎn)品中的首選工具。除了Sniffer外,國外種類繁雜的包過濾防火墻產(chǎn)品也都相應的有核心層網(wǎng)絡封包截獲技術的支持,所以我們有必要了解和學習這一技術為以后的網(wǎng)絡安全學習打下基礎??傊?,縱觀國內(nèi)外的產(chǎn)品,這項技術不乏有相當成功的事例;可在國內(nèi),我們還沒有這方面知識的完備描述和相關資料。這讓一個初次接觸

17、網(wǎng)絡編程的學生感到很困難,不僅是由于對網(wǎng)絡編程體系知識的不了解,其次資料的匱乏也是一個重要的原因;另外,不容忽視的一點,這項技術涉及到Windows驅(qū)動程序的開發(fā),這使包括我在內(nèi)的很多初學者都很茫然,一度不知道何從下手,因為驅(qū)動程序開發(fā)需要大量經(jīng)驗的積累和調(diào)試,若出意外,小者系統(tǒng)死機,系統(tǒng)崩潰也是常發(fā)生的事情。所以本文盡自己最大的努力學習和研究了這項技術,希望提升自己,也希望有同樣需求的人士可以參考與指正。1.3主要貢獻 本文就核心層網(wǎng)絡封包截獲技術進行了探究。首先,本文對目前該技術的國內(nèi)外現(xiàn)狀進行了說明,以明確進行研究的目的。隨后,詳盡地對核心層網(wǎng)絡封包截獲技術的實現(xiàn)原理作了講述,在講述原理

18、時主要介紹了一下幾個方面的內(nèi)容:分層服務提供者(LSP)的相關概念、原理和用途;核心層網(wǎng)絡驅(qū)動和NDIS網(wǎng)絡驅(qū)動程序;核心層網(wǎng)絡封包截獲技術的實現(xiàn)。通過對原理的說明,使讀者了解實現(xiàn)這項技術的具體方法。最后,為了實現(xiàn)這項技術并對前面提出的原理進行驗證設計了相關的軟件,本文對這個軟件作了系統(tǒng)分析和系統(tǒng)設計,最終并實現(xiàn)了該軟件。通過測試,證明了其具有在核心層截獲封包,在應用層分析封包的功能。1.4文章的結構本文共為八個主要部分:第一部分是概述,這部分主要說明了核心層網(wǎng)絡封包截獲技術研究的必要性和重要性,主要從市場和技術兩個角度說明為什么進行這項研究。第二部分是研究前必要的預備知識和原理說明,在研究這

19、項技術前我們必須有一些預備知識,才能更好的理解和討論這項技術。第三部分是NetFilter系統(tǒng)分析,主要使用層次方框圖等說明本系統(tǒng)包括的主要功能。第四部分是系統(tǒng)設計,說明了系統(tǒng)的工作流程和代碼的主要組成部分。并通過系統(tǒng)關鍵類和主要數(shù)據(jù)結構來說明系統(tǒng)的詳細設計。第五部分是系統(tǒng)實現(xiàn),主要通過程序流程圖對本系統(tǒng)的幾個主要的功能模塊的實現(xiàn)進行詳細的說明。第六部分是系統(tǒng)測試與運行,說明該系統(tǒng)開發(fā)在這些方面所做的工作。第七部分是總結篇,對該系統(tǒng)進行了綜述性的評述,并提出了系統(tǒng)可能存在的不足及解決方案。最后是本文所參考的各種有價值的資料列表。2預備知識及原理說明在研究“核心層網(wǎng)絡封包截獲技術應用”時,有必要

20、了解一些預備知識,用以更好的理解核心層封包截獲的原理和實現(xiàn)過程。這些預備知識包括“分層服務提供者”,“核心層網(wǎng)絡驅(qū)動”和“NDIS網(wǎng)絡驅(qū)動程序”等。2.1分層服務提供者(LSP)2.1.1分層服務提供者(LSP)的概念LSP的全稱是Layered Service Provider ,中文名為“分層服務提供程序”。 簡而言之,LSP就是TCP/IP協(xié)議等的接口。LSP為應用程序提供建立連接,傳輸數(shù)據(jù),流量控制,出錯控制等相關的服務。LSP本身是DLL,使用之前將其安裝在Winsock目錄中。以便創(chuàng)建套接字的應用程序不必知道此LSP的任何細節(jié)就能調(diào)用它。2.1.2分層服務提供者(LSP)的原理用戶

21、在創(chuàng)建套接字時,套接字創(chuàng)建函數(shù)(如socket)會在Winsock目錄中尋找合適的協(xié)議,然后調(diào)用此協(xié)議的提供者導出函數(shù)完成各種用戶需要的功能。如果將自己編寫的LSP安裝在Winsock目錄中,讓用戶調(diào)用編者的服務提供者,再由編者的服務提供者調(diào)用下層提供者。這樣一來,便可以截獲所有的Winsock調(diào)用了。Ws2_32.dll基礎服務提供者LSP1LSP2SPISPISPIAPI圖 2 LSP原理圖LSP導出一些與Winsock API相對應的函數(shù),如WSPStartUp,WSPSentTo等。如圖2所示。Winsock庫加載服務提供者之后,便是依靠調(diào)用這些函數(shù)來實現(xiàn)相關的Winsock API(

22、如WSASocket等)的。2.1.3分層服務提供者(LSP)的用途用戶級封包截獲LSP是實現(xiàn)用戶級數(shù)據(jù)封包截獲的有力工具,它可以用來編寫監(jiān)視系統(tǒng)網(wǎng)絡通訊情況的Sniffer(嗅探器);在生活中,我們看見LSP最常用的用途是“瀏覽器劫持”。 在封包截獲技術上,根據(jù)所有與網(wǎng)絡交換的信息都必須通過LSP這個原理,從而使它可以監(jiān)視使用者的信息。當然,除了LSP這種方法可以實現(xiàn)用戶級封包截獲技術外,還有Windows 2000/XP封包過濾接口也支持這項功能,然而由于Windows 2000/XP封包過濾接口的限制太多,本文便采用了LSP的方法實現(xiàn)用戶級封包截獲。2.2核心層網(wǎng)絡驅(qū)動和NDIS網(wǎng)絡驅(qū)動

23、程序2.2.1核心層(Kernel Mode)概述有許多功能在用戶模式(User Mode)下是實現(xiàn)不了的,如原始MAC數(shù)據(jù)的發(fā)送和診斷,這個時候我們必須開發(fā)核心層的驅(qū)動,也稱為內(nèi)核模式下的驅(qū)動來解決問題。Ring0層Ring3層用戶模式內(nèi)核模式圖 3 CPU特權層和操作系統(tǒng)用戶模式、內(nèi)核模式關系圖CPU特權層和操作系統(tǒng)用戶模式、內(nèi)核模式的關系如圖3所示,Ring0的特權最高,也就是說可以執(zhí)行任意的代碼,而Ring3特權最低,只能執(zhí)行有限的代碼。Windows將內(nèi)核模式運行在CPU的Ring0層,而將用戶模式運行在CPU的Ring3層,所以核心層的組件可以進行所有權限的操作。當然由于本文探討的

24、“核心封包截獲技術”是對核心級的操作,就必須要使用到核心層網(wǎng)絡驅(qū)動;相應的開發(fā)核心驅(qū)動來配合實現(xiàn)目的功能。2.2.2核心層網(wǎng)絡驅(qū)動Windows的產(chǎn)品使用了由ISO開發(fā)的基于7層網(wǎng)絡模型的體系結構。ISO開放式系統(tǒng)互連(OSI)參考模型將網(wǎng)絡描述為:“一系列的協(xié)議層,每層都有一組特定的功能,他們向上層提供特定服務的同時,隱藏了這些服務實現(xiàn)的細節(jié)。一個明確的相鄰層之間的接口定義了下層向上層提供的服務,以及如何訪問這些服務”。在核心層,網(wǎng)絡驅(qū)動程序?qū)崿F(xiàn)了OSI參考模型中的4層:物理層,鏈路層,網(wǎng)絡層和傳輸層。這樣它可以完成相應層功能。2.2.3 NDIS網(wǎng)絡驅(qū)動程序NDIS是Network Dri

25、ver Interface Specification(網(wǎng)絡驅(qū)動接口標準)的縮寫,它為網(wǎng)絡驅(qū)動抽象了網(wǎng)絡硬件,指定了分層網(wǎng)絡驅(qū)動間的標準接口,因此,它為上層驅(qū)動(如網(wǎng)絡傳輸)抽象了管理硬件的下層驅(qū)動。NDIS也維護了網(wǎng)絡驅(qū)動的狀態(tài)信息和參數(shù),這包括一些函數(shù)和指針等。NDIS支持3中類型的驅(qū)動,它們是微端口(Miniport)驅(qū)動,中間層(Intermediate)驅(qū)動和協(xié)議(Protocol)驅(qū)動。如圖4所示:圖 4 NDIS支持的三種驅(qū)動圖 1、微端口(Miniport)驅(qū)動:是指常說的網(wǎng)卡驅(qū)動,它負責管理網(wǎng)卡,包括通過網(wǎng)卡發(fā)送和接收數(shù)據(jù),它也為上層驅(qū)動提供接口。微端口驅(qū)動一般由硬件提供商提

26、供。2、中間層(Intermediate)驅(qū)動:中間層協(xié)議驅(qū)動(Intermediate)介于NDIS的協(xié)議層驅(qū)動(Protocol)和微端口驅(qū)動(Miniport)之間。是基于鏈路層和網(wǎng)絡層之間的驅(qū)動。他導出一系列的虛擬適配器,對用戶來說,跟真實的物理網(wǎng)卡一樣,對于上層的協(xié)議驅(qū)動來說,當它向這個虛擬適配器發(fā)送封包或者請求時,中間層驅(qū)動將這些封包和請求傳播到下層微端口驅(qū)動。當下層微端口驅(qū)動向上指示接受封包或者狀態(tài)時,中間層驅(qū)動向上將這些封包、狀態(tài)傳播到綁定在虛擬適配器上的協(xié)議驅(qū)動。這樣利用它來實現(xiàn)對核心層的封包截獲,并且他能實現(xiàn)對所有封包的截獲。3、協(xié)議(Protocol)驅(qū)動:即網(wǎng)絡協(xié)議,它

27、位于NDIS體系的最高層,經(jīng)常用作實現(xiàn)傳輸協(xié)議堆棧的傳輸驅(qū)動中的最底層驅(qū)動??傊瑢DIS有了必要的認識后,我們可以發(fā)現(xiàn)利用NDIS的中間層驅(qū)動來實現(xiàn)核心級上的封包過濾是很好的辦法,它能夠截獲所有的網(wǎng)絡數(shù)據(jù)包(如果是以太網(wǎng)那就是以太幀)。2.3核心層網(wǎng)絡封包截獲技術核心層網(wǎng)絡封包截獲技術主要應用于過濾,轉(zhuǎn)換協(xié)議,截取報文分析等。在討論這項技術前,有必要詳盡的了解Windows網(wǎng)絡系統(tǒng)體系結構;而后再研究用戶模式下的網(wǎng)絡數(shù)據(jù)過濾和內(nèi)核模式下的網(wǎng)絡數(shù)據(jù)過濾。2.3.1Windows網(wǎng)絡系統(tǒng)體系結構1.圖5是用戶模式下的網(wǎng)絡系統(tǒng)體系結構Windows Socket1.1APIWindows Soc

28、ket2.0APIWindows Socket1.1API圖 5 用戶模式下的網(wǎng)絡系統(tǒng)體系結構圖通過觀察上圖不難發(fā)現(xiàn),用戶模式下的網(wǎng)絡系統(tǒng)由一些列的DLL相互支持完成,上層應用程序調(diào)用下層的服務DLL,繼而再繼續(xù)調(diào)用更下層的服務DLL。最終形成一個完整的網(wǎng)絡體系結構。2.內(nèi)核模式下的網(wǎng)絡系統(tǒng)體系結構圖內(nèi)核模式下的網(wǎng)絡系統(tǒng)是由一系列的服務驅(qū)動構成,比如由NDIS(網(wǎng)絡驅(qū)動接口標準)構成的網(wǎng)絡系統(tǒng)。Miniport驅(qū)動導出虛擬網(wǎng)卡連接到實際的網(wǎng)卡,Intermediate驅(qū)動在下層調(diào)用Miniport驅(qū)動的服務,并為上層協(xié)議驅(qū)動導出服務。NDIS為TCP/IP提供了驅(qū)動服務,是網(wǎng)絡系統(tǒng)體系結構中非

29、常重要的部分。弄懂了內(nèi)核模式下的網(wǎng)絡系統(tǒng)體系結構,我們發(fā)現(xiàn)在系統(tǒng)中為TCP/IP協(xié)議提供驅(qū)動的服務,簡稱為TCP/IP Driver,這個驅(qū)動服務在整個網(wǎng)絡系統(tǒng)體系結構中有著非常重要的作用,通過他不僅僅可以實現(xiàn)Packet Filter技術,同樣的IP路由也由它提供著支持,另外的一個重要應用就是Firewall HOOK。具體結構如圖6所示:圖 6 內(nèi)核模式下的網(wǎng)絡系統(tǒng)體系結構圖2.3.2用戶模式下的網(wǎng)絡數(shù)據(jù)過濾首先認識一下網(wǎng)絡通信程序,最常見的網(wǎng)絡通信程序是QQ。如圖7所示:A輸入信息,發(fā)送QQ將數(shù)據(jù)傳送給服務程序(核心層的驅(qū)動程序)QQ接受驅(qū)動程序送來的數(shù)據(jù)B顯示應用層核心層驅(qū)動程序按照協(xié)

30、議要求將數(shù)據(jù)打包發(fā)送到網(wǎng)卡網(wǎng)卡通過網(wǎng)絡連線將數(shù)據(jù)包發(fā)出驅(qū)動程序按照協(xié)議要求將數(shù)據(jù)翻譯成QQ識別的數(shù)據(jù)網(wǎng)卡接受QQA發(fā)出的數(shù)據(jù)包圖 7 通信程序QQ的網(wǎng)絡傳輸數(shù)據(jù)原理圖從此例子可以看出,所有的網(wǎng)絡通信程序在通信前都需要調(diào)用下層的驅(qū)動或者服務,如果將自己編寫的LSP放在Winsock目錄下,讓用戶不知不覺的調(diào)用LSP導出的一些列服務(函數(shù)),再由LSP調(diào)用下層的服務,于是我們便可以在LSP上跟蹤用戶的網(wǎng)絡服務請求,從而實現(xiàn)用戶模式下的網(wǎng)絡數(shù)據(jù)過濾。在這里使用的關鍵技術就是前面談到的分層服務提供者LSP。2.3.3內(nèi)核模式下的網(wǎng)絡數(shù)據(jù)過濾首先引入以圖8示例:驅(qū)動程序下層NIC-下層NIC-下層NIC

31、用戶模式內(nèi)核模式DLL(winsock)DLL(winsock)訪問網(wǎng)絡的應用程序1訪問網(wǎng)絡的應用程序2圖 8 一般網(wǎng)絡通信程序傳輸數(shù)據(jù)原理圖通過上圖以及前面對于核心層網(wǎng)絡驅(qū)動的介紹,我們可以看出,需要在內(nèi)核模式下實現(xiàn)封包截獲就需要編寫內(nèi)核模式下的驅(qū)動服務。這樣,需要進行任何網(wǎng)絡活動的應用程序都需要加載這項服務,在這個驅(qū)動程序上就可實現(xiàn)核心層的封包截獲任務。前面討論了NDIS,本篇使用NDIS的中間層驅(qū)動服務,根據(jù)它導出的一些列虛擬網(wǎng)卡我們可以較容易的實現(xiàn)對經(jīng)過真實NIC(網(wǎng)卡)的所有網(wǎng)絡數(shù)據(jù)進行截獲。2.3.4應用層封包截獲與核心層封包截獲7應用層6表示層5會話層4傳輸層3網(wǎng)絡層2數(shù)據(jù)鏈路層

32、1物理層7應用程序6Winsock API5 SPI4 TDI3 NDIS2網(wǎng)絡驅(qū)動1 網(wǎng)卡應用層核心層網(wǎng)絡協(xié)議模型Windows結構圖 9 核心層與應用層網(wǎng)絡封包截獲實現(xiàn)原理圖如圖9所示,最終為了實現(xiàn)應用層和核心層的雙重封包截獲,我們可以采用這樣的方法。在應用層實現(xiàn)封包截獲,本文使用了SPI中的LSP技術,在核心層實現(xiàn)封包截獲本文使用了NDIS中的中間層驅(qū)動。這樣便可以構造一個比較合理的封包截獲系統(tǒng)。3 NetFilter系統(tǒng)分析3.1需求分析在本文中,利用核心層網(wǎng)絡封包截獲技術設計了NetFilter軟件。NetFilter網(wǎng)絡訪問監(jiān)視應用層過濾規(guī)則核心層過濾規(guī)則系統(tǒng)設置添加應用層規(guī)則編輯

33、應用層規(guī)則刪除應用層規(guī)則添加核心層規(guī)則編輯核心層規(guī)則刪除核心層規(guī)則核心層規(guī)則設置公共設置應用層規(guī)則設置圖 10 NetFilter層次結構圖如圖10所以,NetFilter具有在核心層截獲封包,在應用層歸結到具體應用分析封包的功能;并對所有進出系統(tǒng)的數(shù)據(jù)包進行檢查,以阻止那些不符合既定規(guī)則的數(shù)據(jù)包的傳輸。NetFilter能夠基于數(shù)據(jù)包使用的協(xié)議(如TCP),數(shù)據(jù)包的源地址,數(shù)據(jù)包的目的地址,端口號,數(shù)據(jù)包的傳輸方向等對封包進行過濾。3.2功能說明3.2.1網(wǎng)絡訪問監(jiān)視NetFilter對向網(wǎng)絡上傳或從網(wǎng)絡下載的數(shù)據(jù)流進行有選擇的控制。這種控制動作發(fā)生在從Internet向Intranet傳輸

34、數(shù)據(jù)時,或從Intranet向Internet傳輸數(shù)據(jù)時。網(wǎng)絡訪問監(jiān)視頁面記錄所有的網(wǎng)絡動作,將其顯示在該頁面中,以供用戶查看和分析。3.2.2應用層過濾規(guī)則設置應用層過濾規(guī)則。主要參數(shù)包括:應用程序名,進出方向,對其實施的動作(如放行),服務類型,服務端口等。設置了這些規(guī)則后,符合規(guī)則的數(shù)據(jù)包才會被系統(tǒng)接收。3.2.3核心層過濾規(guī)則設置核心層過濾規(guī)則。主要參數(shù)包括:協(xié)議類型,對其實施的動作(如放行),源端和目的端的IP地址值,IP掩碼,端口號碼等。設置了核心層規(guī)則后,符合規(guī)定的數(shù)據(jù)包才會被下層的驅(qū)動服務接收。3.2.4系統(tǒng)設置下層服務驅(qū)動的安裝與卸載,用戶層和核心層工作模式的默認設置。4 N

35、etFilter系統(tǒng)設計4.1系統(tǒng)總體設計4.1.1系統(tǒng)的工作流程如圖11所示,當需要進行網(wǎng)絡訪問的應用程序提交了自己的服務請求,這個請求(如winsock)首先被LSP(分層服務提供者)截獲,LSP根據(jù)應用層的工作模式,控管規(guī)則,對程序進行控管。而后LSP繼續(xù)調(diào)用下層的服務最終接受核心層網(wǎng)絡驅(qū)動程序的服務(NDIS的中間層驅(qū)動),在這里根據(jù)核心層的工作模式,控管規(guī)則,對封包進行控管。這樣最終實現(xiàn)了用戶層和核心層的雙重過濾功能。用戶界面(NetFilter)NetFilter.exe需要網(wǎng)絡服務的應用程序 LSP根據(jù)工作模式,控管規(guī)則,參數(shù)設置,對用程序聯(lián)網(wǎng)動作控管系統(tǒng)Winsock 2 SP

36、I工作模式,控管規(guī)則核心層過濾網(wǎng)絡驅(qū)動服務(NDIS的中間層驅(qū)動)圖 11 NetFilter工作流程圖LSP提供應用層的過濾規(guī)則,NDIS提供核心層的過濾規(guī)則。4.1.2系統(tǒng)的功能模塊如圖12所示,NetFilter整個程序代碼主要分為三部分:主程序,應用程序過濾模塊,核心層過濾模塊。NetFilter訪問網(wǎng)絡的應用程序3DLL(winsock)DLL(LSP)SYS模塊(驅(qū)動程序)下層NIC-下層NIC-下層NIC用戶模式內(nèi)核模式DLL(winsock)DLL(winsock)訪問網(wǎng)絡的應用程序1訪問網(wǎng)絡的應用程序2IOCTL發(fā)送消息設置共享數(shù)據(jù)圖 12 NetFilter功能模塊圖主程序

37、(EXE)主要就是用戶所看到的程序界面,是用戶和NetFilter進行對話的對象。它負責管理過濾規(guī)則,安裝與卸載應用層過濾模塊(DLL模塊),與應用層過濾模塊和核心層過濾模塊(SYS模塊)進行通信等。應用層過濾模塊是一個分層服務提供者,它主要用來截獲應用程序的Winsock調(diào)用,根據(jù)用戶設置的應用程序權限規(guī)則限制各個應用程序?qū)W(wǎng)絡訪問,實時向主模塊報告用戶層網(wǎng)絡活動狀態(tài)。核心層過濾模塊是一個NDIS中間層驅(qū)動程序,它的作用是根據(jù)核心層過濾規(guī)則管理輸入輸出封包,記錄網(wǎng)絡活動狀態(tài)。4.2系統(tǒng)詳細設計在設計NetFilter時,程序代碼主要分為三部分:主程序,應用程序過濾模塊,核心層過濾模塊。為了使

38、設計方便和合理,在程序中創(chuàng)建了許多結構體和宏定義。同時在主程序中設計了許多類。4.2.1系統(tǒng)關鍵類圖 13 NetFilter系統(tǒng)關鍵類名圖1、 CPIControl類:管理LSP共享內(nèi)存。為了方便與LSP模塊進行通信,主模塊封裝了CPIControl類來訪問LSP模塊中的共享數(shù)據(jù),這個類主要是是通過調(diào)用LSP的導出函數(shù)來實現(xiàn)的。2、 CPRuleFile類:管理規(guī)則文件。它負責將規(guī)則從文件讀出,保存到CPRuleFile對象中,或者將CPRuleFile對象中的數(shù)據(jù)保存到文件中。3、 CnetFilterUApp類:主應用程序類。4.2.2系統(tǒng)重要數(shù)據(jù)結構如圖14所示,是NetFilter中

39、所涉及到的重要的結構體及其中的數(shù)據(jù)成員。1、RULE_ITEM結構體:用戶層訪問規(guī)則是針對應用程序而言的,比如允許那些應用程序訪問網(wǎng)絡,禁止哪些應用程序訪問網(wǎng)絡、允許應用程序使用哪些網(wǎng)絡服務器等。所以定義了RULE_ITEM結構體描述單個用戶層規(guī)則。2、SESSION結構體:用戶層訪問規(guī)則記錄在共享內(nèi)存中,每當應用程序訪問網(wǎng)絡時,LSP模塊就將應用程序會話屬性與訪問規(guī)則進行比較。因此需要定義SESSION結構來描述發(fā)生在各個套接字上的網(wǎng)絡事件的屬性,如使用的協(xié)議,IP地址,應用程序等。應用程序每創(chuàng)建一個套接字,LSP模塊就創(chuàng)建一個SESSION結構,跟蹤用戶在此套接字上的活動,并將這些網(wǎng)絡事件

40、發(fā)送給主模塊。SESSION在傳輸網(wǎng)絡數(shù)據(jù)之前,LSP模塊在應用層過濾規(guī)則中查找相關應用程序表項,如果找不到,就詢問主模塊,要求添加規(guī)則。3、RULE_FILE_HEADER結構體和RULE_FILE結構體:每個應用程序都需要將用戶配置信息和必要的數(shù)據(jù)保存到磁盤上。NetFilter要保存的主要是用戶設置的用戶層訪問規(guī)則和核心層訪問規(guī)則。圖 14 NetFilter系統(tǒng)重要數(shù)據(jù)結構名圖4.2.3系統(tǒng)重要模塊詳細設計1、LSP模塊設計:它一個分層服務提供者,本身是一個DLL,它截獲WS2_32.DLL對WSPSocket、WSPCloseSocket、WSPBind、WSPAccept、WSPc

41、Connect、WSPSendTo、WSPRecvFrom的調(diào)用,如圖15所以結構。LSP導出了PLSPIoControl函數(shù)。該函數(shù)主要是完成與主模塊的通信。為了實現(xiàn)LSP,為其建立了動態(tài)鏈接庫,在該庫里面聲明了類CAcl類。圖 15 NetFilter中LSP模塊中CAcl圖2、共享數(shù)據(jù)與I/O控制:主模塊主要是通過共享內(nèi)存來與DLL模塊進行交互的。LSP共享數(shù)據(jù)分為兩類:一類是加載進程加載DLL時候初始化了的,這些數(shù)據(jù)定義在LSP的“initdata”段;一類是未經(jīng)初始化的數(shù)據(jù),它們定義在LSP的“uninitdata”段。在“initdata”段中,聲明了主窗口句柄,和應用層工作模式。

42、在“uninitdata”段中,聲明了應用層規(guī)則向量(記錄所有應用程序的規(guī)則),以及用于與主程序通信用的SESSION類型的g_SessionBuffer和g_QuerySession向量。為了讓主模塊訪問DLL的共享數(shù)據(jù),LSP向外導出了PLSPIoControl函數(shù),這個函數(shù)用來設置共享內(nèi)存中的數(shù)據(jù)。g_SessionBuffer數(shù)組作用是在DLL和主模塊間傳遞會話信息。當有新的會話創(chuàng)建,會話屬性改變或者會話銷毀時,DLL模塊要將這個會話通過Windows消息的形式發(fā)送給主模塊。在做這件事時,它首先在g_SessionBuffer數(shù)組中找到一個沒有被使用的成員,然后將發(fā)生事件的會話復制到找

43、到的成員中,最后發(fā)送給主模塊的是這個成員的索引。主模塊接收到索引之后,調(diào)用PLSPIoControl函數(shù)取得整個SESSION結構。g_QuerySession數(shù)組的作用于g_SessionBuffer相似,它在DLL和主模塊間傳遞發(fā)出詢問的應用程序信息。一個應用程序訪問網(wǎng)絡時,如果LSP發(fā)現(xiàn)過濾規(guī)則中沒有該應用程序規(guī)則項,就詢問主模塊,使用g_QuerySession數(shù)組中的一個成員來傳遞應用程序消息。3、核心層SYS模塊設計:SYS模塊是一個NDIS中間層驅(qū)動程序。在SYS模塊中實現(xiàn)了重要的功能。包括了基本的DeviceIoControl接口為Win32應用程序與SYS模塊通信提供基本的機

44、制;枚舉綁定功能允許Win32應用程序查詢SYS驅(qū)動綁定的適配器;ADAPT結構添加引用計數(shù)向驅(qū)動中ADAPT結構添加引用計數(shù);適配器句柄打開/關閉功能提供一種機制,讓用戶程序可以創(chuàng)建被關聯(lián)到指定適配器的用戶模式句柄。這個句柄可以用來在特定適配器上做NDIS請求,做讀和寫I/O以及其他操作;句柄事件通知這里要處理這種情況,就是驅(qū)動程序可能會使已經(jīng)成功打開的Win32句柄無效;在一個打開的適配器句柄上獲取和設置OID數(shù)據(jù)添加一種機制,使得用戶可以獲取和設置特定適配器的OID數(shù)據(jù)。5. NetFilter系統(tǒng)實現(xiàn)由于在本系統(tǒng)設計時,設計涉及Windows驅(qū)動程序的開發(fā),這也是本篇開發(fā)的重點與難點。

45、由于驅(qū)動程序的開發(fā)涉及操作系統(tǒng)底層的很多知識,而且很多概念非常的抽象,不容易理解。所以采用需要采用較好的開發(fā)環(huán)境協(xié)助我們的設計開發(fā)式非常重要的。5.1開發(fā)平臺選擇合適的開發(fā)工具與語言可以有效的提高開發(fā)效率。5.1.1 Windows Server 2003 DDK在設計SYS模塊時,涉及Windows驅(qū)動程序的開發(fā),往往開發(fā)驅(qū)動程序需要對Windows內(nèi)核要有深入的了解和大量的內(nèi)核調(diào)試技巧,稍有不慎,就會造成系統(tǒng)的崩潰。所以一個好的平臺開發(fā)工具是必備的。再開發(fā)驅(qū)動之前,首先安裝微軟公司提供的Windows驅(qū)動程序開發(fā)包DDK(Driver Development Kit)。微軟提供了Windo

46、ws 2000 DDK,Windows XP DDK 和Windows Server 2003。為了使用DDK的最新功能建議安裝Windows Server 2003 DDK。5.1.2 DbgView同時,在編寫驅(qū)動程序時,比較頭痛的一個問題就是調(diào)試。因為驅(qū)動程序運行在內(nèi)核模式下,很難像一般Win32程序一樣進行調(diào)試。一般說來驅(qū)動程序的調(diào)試有兩個途徑。其一是在關鍵的地方打印出調(diào)試信息,也就是俗稱的打log。其二就是調(diào)用內(nèi)核調(diào)試工具,諸如Softice或者WinDbg等工具進行內(nèi)核調(diào)試。本篇推薦DbgView。因為這是一個免費軟件,DbgView可以同時監(jiān)聽內(nèi)核和Win32上層應用程序發(fā)送的調(diào)

47、試信息。如果接收的調(diào)試的信息太多時,用戶還可以根據(jù)自己需要過濾無用的調(diào)試信息。5.1.3 Micosoft Visual C+ 6.0LSP模塊本身是DLL;主程序模塊是Win32程序。他們是在Micosoft Visual C+ 6.0下開發(fā)的,所以還需要Micosoft Visual C+ 6.0開發(fā)工具的支持。5.1.4 Micosoft Visual Visio 2003它輔助設計本文的相關圖。5.2模塊實現(xiàn)5.2.1 SYS模塊以服務形式被安裝后,SYS模塊接受系統(tǒng)的服務請求,為系統(tǒng)服務。工作流程如圖16所示。NetFilter加載服務OpenSCManager返回值CreateSe

48、rvice非NULL返回值非NULLStartService結束GetLastError返回值StartServiceERROR_IO_PENDING其他NULL圖 16 NetFilter中SYS模塊程序流程圖5.2.2添加應用層規(guī)則設置應用層過濾規(guī)則。用戶選擇需要添加的應用程序,按照主要參數(shù):協(xié)議類型,對其實施的動作(如放行),源端和目的端的IP地址值,IP掩碼,端口號碼等設置了應用層規(guī)則后,告訴主模塊,然后將規(guī)則顯示在頁面中。其具體過程見圖17。開始選擇程序設置進出方向設置過濾動作高級設置設置服務類型設置服務端口成功不成功是備注將規(guī)則寫入規(guī)則文件顯示在頁面中結束否圖 17 NetFilt

49、er中添加應用層規(guī)則程序流程圖6 NetFilter系統(tǒng)測試與運行6.1 測試 對NetFilter采用模塊化測試,按照功能模塊分別進行測試。該系統(tǒng)的主要進行了以下幾個方面的測試:單元測試、功能測試、性能測試等。6.1.1單元測試為了確保在開發(fā)中實現(xiàn)了所有的需求,同時也為了使項目代碼滿足各種編碼規(guī)范,在正式測試之前對代碼進行了人工排查,對系統(tǒng)進行了靜態(tài)單元測試代碼審查。程序中有齊全的各種注釋:各種方法都有功能描述,方法中的功能模塊具有功能的相關描述;參數(shù)和返回值也有相關的文字描述;除局部變量外都進行了變量的含義注釋。方法,變量等都使用了統(tǒng)一的命名規(guī)范。本系統(tǒng)的開發(fā)完全遵照C#的編碼規(guī)范,如代碼按行進行書寫,一行只有一個語句等等,變量使用camelCase(駝峰) 命名規(guī)范進行命名。命名空間也使用了規(guī)范的命名規(guī)則和組織規(guī)則。如上這些規(guī)范都可以提高代碼的可讀性和系統(tǒng)的可維護性。通過代碼審查可以發(fā)現(xiàn)一些顯而易見的邏輯錯誤和功能缺失,這些先期的處理可以為后面的測試節(jié)省時間和測試代價。6.1.2 功能測試功能測試主要是對需求中的各功能要求進行測試性運行,保證系統(tǒng)的正確運行。在測試中,首先進行了用戶界面和適

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論