畢業(yè)設(shè)計(jì)(論文)-Linux系統(tǒng)下Sniffer的實(shí)現(xiàn).doc_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)-Linux系統(tǒng)下Sniffer的實(shí)現(xiàn).doc_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)-Linux系統(tǒng)下Sniffer的實(shí)現(xiàn).doc_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)-Linux系統(tǒng)下Sniffer的實(shí)現(xiàn).doc_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)-Linux系統(tǒng)下Sniffer的實(shí)現(xiàn).doc_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

南京郵電大學(xué)通達(dá)學(xué)院畢 業(yè) 設(shè) 計(jì)(論 文)題 目: linux系統(tǒng)下sniffer的實(shí)現(xiàn) 專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生姓名:班級(jí)學(xué)號(hào):04003040指導(dǎo)教師:指導(dǎo)單位:中磊(蘇州)研發(fā)中心 計(jì)算機(jī)學(xué)院軟件工程系 日期: 2008年03月17日 至 2008年 06月20日摘 要sniffer是一種強(qiáng)大的網(wǎng)絡(luò)分析工具,它集成了很多可以有力解決網(wǎng)絡(luò)問(wèn)題的功能。sniffer可以實(shí)時(shí)地列出流經(jīng)多個(gè)網(wǎng)卡(包括modem,isdn,adsl)的數(shù)據(jù)包,它還支持基于某些應(yīng)用的數(shù)據(jù)包捕捉。通過(guò)它,你可以獲得你所感興趣的某個(gè)應(yīng)用的所有網(wǎng)絡(luò)流量。今天,sniffer成為了網(wǎng)絡(luò)監(jiān)控器和網(wǎng)絡(luò)分析器的專用名詞,它通常還代表收集數(shù)據(jù)和信息的方法。iss把它這樣定義:sniffer是一種利用自身網(wǎng)絡(luò)接口來(lái)對(duì)目的地是其它計(jì)算機(jī)的數(shù)據(jù)包進(jìn)行捕捉的一種工具。本文介紹并研究了sniffer相關(guān)技術(shù),重點(diǎn)是在linux系統(tǒng)下如何實(shí)現(xiàn)sniffer并獲得相關(guān)數(shù)據(jù)包,并且詳細(xì)介紹了linux環(huán)境下sniffer的實(shí)現(xiàn)過(guò)程。通過(guò)閱讀本論文,您會(huì)對(duì)sniffer有大致的了解,還可以得知如何在linux系統(tǒng)環(huán)境下實(shí)現(xiàn)一個(gè)sniffer的詳細(xì)過(guò)程。同時(shí),本文還簡(jiǎn)略介紹tcp/ip協(xié)議棧和sniffer實(shí)現(xiàn)過(guò)程的關(guān)系,詳盡分析了tcp/ip中各個(gè)層次。關(guān)鍵詞:嗅探器;數(shù)據(jù)包;協(xié)議棧;以太網(wǎng)abstractsniffer is a powerful network analysis tool. it consists of a well-integrated set of functions that can resolve network problems. network sniffer can list all of the network packets in real-time from multi network card (include modem, isdn, adsl) and can also support capturing packets based on the applications (socket, tdi etc). you can observe all traffic of the application that you are interested in.today, sniffer becomes a special name of network monitor and analyzer; it also usually stands for a means of collecting data and information. iss defines sniffer as: sniffer is a tool which utilizes network interfaces of computer to capture data packets which destination is other computers.this paper describes the sniffer and related technology, focusing on how to achieve sniffer obtain the relevant data packets in linux environment, and details of the realization of sniffer process in linux environment. by reading this paper, you will have more or less understanding of sniffer, you can also learn how to achieve a sniffer in detail with the existed linux environment. at the same time, the paper also briefly introduced the relationship between tcp / ip protocol stack and sniffer realization, and the detailed analysis of the tcp / ip in all levels.keywords:sniffer; package; stack; ethernet 目 錄第一章 sniffer簡(jiǎn)介11.1 什么是sniffer ?11.2 sniffer的應(yīng)用11.3 常用sniffer系統(tǒng)簡(jiǎn)介31.4 sniffer技術(shù)發(fā)展?fàn)顩r51.5 為什么要實(shí)現(xiàn)此系統(tǒng)?5第二章 sniffer 和 tcp/ip 之間的關(guān)系62.1 sniffer和tcp/ip關(guān)系62.2 tcp/ip 的層次結(jié)構(gòu)6第三章 本系統(tǒng)的詳細(xì)介紹83.1 系統(tǒng)的各個(gè)模塊83.2 各個(gè)模塊的關(guān)系93.3 文件的組織結(jié)構(gòu)103.4 本系統(tǒng)中的幾個(gè)細(xì)節(jié)123.4.1 包數(shù)據(jù)的存取123.4.2 系統(tǒng)中的buffer153.4.3 系統(tǒng)的顯示問(wèn)題16第四章 sniffer其它相關(guān)194.1 怎樣獲取一個(gè)數(shù)據(jù)包?194.4.1 libpcap方法194.4.2 socket方法204.2 怎樣解析一個(gè)報(bào)文?214.3 怎樣把網(wǎng)卡置為“混雜模式”?234.4 sniffer攻擊的防范244.5 sniffer引入網(wǎng)絡(luò)管理中的可行性254.6 sniffer技術(shù)在網(wǎng)絡(luò)管理中開(kāi)發(fā)的可行性與必要性254.7 sniffer對(duì)多協(xié)議的捕捉和分析的不足27結(jié)束語(yǔ)28致謝29參考文獻(xiàn)30南京郵電大學(xué)通達(dá)學(xué)院2008屆本科生畢業(yè)設(shè)計(jì)(論文)第一章 sniffer簡(jiǎn)介1.1 什么是sniffer ?sniffer又叫“嗅探器”, 是一種威脅性極大的被動(dòng)攻擊工具。使用這種工具,可以監(jiān)視網(wǎng)絡(luò)的狀態(tài)、數(shù)據(jù)流動(dòng)情況以及網(wǎng)絡(luò)上傳輸?shù)男畔?。?dāng)信息以明文的形式在網(wǎng)絡(luò)上傳輸時(shí),便可以使用網(wǎng)絡(luò)監(jiān)聽(tīng)的方式來(lái)進(jìn)行攻擊。黑客們常常利用它來(lái)截獲用戶私人信息,網(wǎng)絡(luò)管理員也常常用它來(lái)監(jiān)視網(wǎng)絡(luò)狀態(tài),分析網(wǎng)絡(luò)流量,排除網(wǎng)絡(luò)故障等。sniffer分為軟件和硬件兩種,軟件的sniffer有 netxray、packetboy、net monitor等,其優(yōu)點(diǎn)是物美價(jià)廉,易于學(xué)習(xí)使用,同時(shí)也易于交流;缺點(diǎn)是無(wú)法抓取網(wǎng)絡(luò)上所有的傳輸,某些情況下也就無(wú)法真正了解網(wǎng)絡(luò)的故障和運(yùn)行情況。硬件的sniffer通常稱為協(xié)議分析儀,一般都是商業(yè)性的,價(jià)格也比較貴。iss ( int ernets ecuritys ystem)為sniffer這樣定義:sniffer是利用計(jì)算機(jī)的網(wǎng)絡(luò)接口截獲目的地為其他計(jì)算機(jī)的數(shù)據(jù)報(bào)文的一種工具。我們一般認(rèn)為sniffer是指在運(yùn)行以太網(wǎng)協(xié)議、tcp/ ip協(xié)議、ipx協(xié)議或者其他協(xié)議的網(wǎng)絡(luò)上,可以攫取網(wǎng)絡(luò)信息流的軟件或硬件。sniffer早期主要是分析網(wǎng)絡(luò)的流量,以便找出所關(guān)心的網(wǎng)絡(luò)中潛在的問(wèn)題。sniffer的存在對(duì)網(wǎng)絡(luò)系統(tǒng)管理員是至關(guān)重要的,網(wǎng)絡(luò)系統(tǒng)管理員通過(guò)sniffer可以診斷出大量的不可見(jiàn)模糊問(wèn)題(如網(wǎng)絡(luò)瓶頸、錯(cuò)誤配置等),監(jiān)視網(wǎng)絡(luò)活動(dòng),完善網(wǎng)絡(luò)安全策略,進(jìn)行行之有效的網(wǎng)絡(luò)管理。眾所都知,在以太網(wǎng)中,所有的通訊都是廣播的,也就是說(shuō)通常在同一個(gè)網(wǎng)段的所有網(wǎng)絡(luò)接口都可以訪問(wèn)在物理媒體上傳輸?shù)乃袛?shù)據(jù),在正常的情況下,一個(gè)網(wǎng)絡(luò)接口應(yīng)該只響應(yīng)單播和廣播兩種數(shù)據(jù)幀。對(duì)于網(wǎng)卡,一般都具備“正常模式”和“混雜模式”兩種模式。網(wǎng)卡在“混雜模式”下可以接收非本地址的數(shù)據(jù)幀。所以,簡(jiǎn)單說(shuō)來(lái),sniffer就是在網(wǎng)卡處于“混雜模式”下,捕捉流經(jīng)本網(wǎng)卡的所有數(shù)據(jù)包,并根據(jù)接收到的數(shù)據(jù)包,來(lái)進(jìn)行一些應(yīng)用,例如流量控制等。1.2 sniffer的應(yīng)用在內(nèi)部網(wǎng)上,黑客要想迅速獲得大量的賬號(hào)(包括用戶名和密碼),最為有效的手段是使用 sniffer 程序。這種方法要求運(yùn)行sniffer 程序的主機(jī)和被監(jiān)聽(tīng)的主機(jī)必須在同一個(gè)以太網(wǎng)段上,并且要求要以root用戶登陸,運(yùn)行成功,就能夠監(jiān)聽(tīng)到本以太網(wǎng)段上的數(shù)據(jù)流。黑客會(huì)使用各種方法,獲得系統(tǒng)的控制權(quán)并留下再次侵入的后門,以保證sniffer能夠執(zhí)行。大多數(shù) ethernet sniffer程序在后臺(tái)運(yùn)行,將結(jié)果輸出到硬盤存儲(chǔ)上的某個(gè)記錄文件中。internet是由眾多的局域網(wǎng)所組成,這些局域網(wǎng)一般是以太網(wǎng)、令牌網(wǎng)的結(jié)構(gòu)。數(shù)據(jù)在這些網(wǎng)絡(luò)上是以很小的稱為幀(frame)的單位傳輸?shù)?,幀通過(guò)特定的網(wǎng)絡(luò)驅(qū)動(dòng)程序進(jìn)行成型,然后通過(guò)網(wǎng)卡發(fā)送到網(wǎng)線上。由于以太網(wǎng)等很多網(wǎng)絡(luò)(常見(jiàn)共享hub連接的內(nèi)部網(wǎng))是基于總線方式,物理上是廣播的,同一物理網(wǎng)段的所有主機(jī)的網(wǎng)卡都能接收到這些以太網(wǎng)幀。當(dāng)網(wǎng)絡(luò)接口處于正常狀態(tài)時(shí),網(wǎng)卡收到傳輸來(lái)的數(shù)據(jù)幀,網(wǎng)卡內(nèi)的芯片程序先接收數(shù)據(jù)頭的目的mac地址,根據(jù)計(jì)算機(jī)上的網(wǎng)卡驅(qū)動(dòng)程序設(shè)置的接收模式判斷該不該接收,如果認(rèn)為是目的地址為本機(jī)地址的數(shù)據(jù)幀或是廣播幀,則接收并在接收后產(chǎn)生中斷信號(hào)通知cpu,否則就丟棄不管,cpu得到中斷信號(hào)產(chǎn)生中斷,操作系統(tǒng)就根據(jù)網(wǎng)卡驅(qū)動(dòng)程序中設(shè)置的網(wǎng)卡中斷程序地址調(diào)用驅(qū)動(dòng)程序接收數(shù)據(jù),驅(qū)動(dòng)程序接收數(shù)據(jù)后放入信號(hào)堆棧讓操作系統(tǒng)處理。通過(guò)修改網(wǎng)卡存在一種特殊的工作模式,在這種工作模式下,網(wǎng)卡不對(duì)目的地址進(jìn)行判斷,而直接將它收到的所有報(bào)文都傳遞給操作系統(tǒng)進(jìn)行處理。這種特殊的工作模式,稱之為混雜模式(promiscuous mode).sniffer就是通過(guò)將網(wǎng)卡設(shè)置為混雜模式,它對(duì)遇到的每一個(gè)幀都產(chǎn)生一個(gè)硬件中斷以便提醒操作系統(tǒng)處理流經(jīng)該物理媒體上的每一個(gè)報(bào)文包。sniffer工作在網(wǎng)絡(luò)環(huán)境中的底層,它會(huì)攔截所有的正在網(wǎng)絡(luò)上傳送的數(shù)據(jù),并且通過(guò)相應(yīng)的軟件處理,可以實(shí)時(shí)分析這些數(shù)據(jù)的內(nèi)容,進(jìn)而分析所處的網(wǎng)絡(luò)狀態(tài)和整體布局。另外,sniffer一個(gè)更重要的作用就是進(jìn)行網(wǎng)絡(luò)監(jiān)控。sniffer通過(guò)捕捉流經(jīng)本主機(jī)的所有數(shù)據(jù)包,然后對(duì)這些捕捉的數(shù)據(jù)包進(jìn)行上層分析,進(jìn)而得出關(guān)于網(wǎng)絡(luò)流量等信息,為網(wǎng)絡(luò)管理員做出某些決策提供證據(jù)。一般用戶管理員會(huì)在服務(wù)器上運(yùn)行一個(gè)sniffer,通過(guò)捕捉數(shù)據(jù)包,然后進(jìn)行詳盡分析,就可以得到一些信息,例如,哪些主機(jī)在和服務(wù)器網(wǎng)絡(luò)通信,這些主機(jī)分別在服務(wù)器上做了哪些操作。得到這些信息后,系統(tǒng)管理員就可以做一些決策,使得本服務(wù)器更加安全。一般來(lái)說(shuō),snifer可以截獲的不僅僅是用戶的id和口令,它還可以截獲敏感的經(jīng)濟(jì)數(shù)據(jù)(如信用卡號(hào))、秘密的信息(email)和專有信息?;谌肭终呖衫玫馁Y源,一個(gè)sniffer可能截獲網(wǎng)絡(luò)上所有的信息。從sniffer上可以得到所有的信息,只要你有足夠的存儲(chǔ)空間。近年來(lái)sniffer技術(shù)出現(xiàn)了新的重要特征。傳統(tǒng)的sniffer技術(shù)是被動(dòng)地監(jiān)聽(tīng)網(wǎng)絡(luò)通信、用戶名和口令。新的snifer技術(shù)出現(xiàn)了主動(dòng)地控制通信數(shù)據(jù)的特點(diǎn)把sniffer技術(shù)擴(kuò)展到了一個(gè)新的領(lǐng)域。sniffer既可以作為網(wǎng)絡(luò)故障的診斷工具,也可以作為黑客嗅探和監(jiān)聽(tīng)的工具。sniffer技術(shù)除了目前在傳統(tǒng)的網(wǎng)絡(luò)偵測(cè)管理外,也開(kāi)始被應(yīng)用在資訊保全的領(lǐng)域。可以這樣說(shuō),snifer技術(shù)是一把雙刃劍,如何更好地利用它,了解它的一些特性,這將為我們帶來(lái)便利。目前sniffer工具的應(yīng)用一般分為以下幾個(gè)方面:1. 分布式sniffer系統(tǒng)(sniffer distributed): 分布式的sniffer系統(tǒng)適用于管理大型企業(yè)網(wǎng)絡(luò)或遠(yuǎn)距離的由多個(gè)網(wǎng)絡(luò)段組成的網(wǎng)絡(luò)。它由一個(gè)或數(shù)個(gè)中心控制臺(tái)以及多個(gè)sniffer服務(wù)器組成,每個(gè)sniffer服務(wù)器可以放在一個(gè)網(wǎng)絡(luò)段中,自動(dòng)監(jiān)視網(wǎng)絡(luò)情況。每個(gè)sniffer服務(wù)器都具有一個(gè)ip地址,可以和中心控制臺(tái)通信,服務(wù)器根據(jù)中心控制臺(tái)的命令實(shí)時(shí)監(jiān)視分析網(wǎng)絡(luò),并將分析結(jié)果返回給中心控制臺(tái)分布式系統(tǒng),通過(guò)中央控制平臺(tái)和分布全網(wǎng)的網(wǎng)絡(luò)分析(distributed sniffer system, dss)全天候地監(jiān)控整個(gè)網(wǎng)絡(luò)的運(yùn)行情況。2. 遠(yuǎn)程監(jiān)測(cè)的分布式sniffer系統(tǒng)(dss/rmon): 通過(guò)結(jié)合中央控制平臺(tái)與分布全網(wǎng)的網(wǎng)絡(luò)分析器,同步收集rmon2統(tǒng)計(jì)數(shù)據(jù),全天候地監(jiān)控整個(gè)網(wǎng)絡(luò)運(yùn)行情況,主要包括分布式遠(yuǎn)程監(jiān)控分析器(dss/rmon analysis software)和分布式遠(yuǎn)程監(jiān)控服務(wù)器(dss/rmon server), dss/rmon探測(cè)器對(duì)osi模型的七層結(jié)構(gòu)均進(jìn)行分析,直接監(jiān)控網(wǎng)絡(luò)狀態(tài),并把收集到的數(shù)據(jù)通過(guò)網(wǎng)絡(luò)送達(dá)服務(wù)器,管理員則可在遠(yuǎn)端通過(guò)網(wǎng)絡(luò)連接到服務(wù)器實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)的遠(yuǎn)程控制。3. web技術(shù): web技術(shù)與網(wǎng)絡(luò)管理技術(shù)相結(jié)合,是網(wǎng)絡(luò)管理發(fā)展的新趨勢(shì),基于web的網(wǎng)絡(luò)管理系統(tǒng)允許管理員在網(wǎng)絡(luò)的任何位置,通過(guò)web瀏覽器訪問(wèn)具有網(wǎng)絡(luò)管理功能的服務(wù)器,進(jìn)行網(wǎng)絡(luò)管理;web瀏覽器對(duì)計(jì)算機(jī)的硬件要求很低管理員依靠簡(jiǎn)單、廉價(jià)的計(jì)算平臺(tái)就能訪問(wèn)具有管理功能的代理服務(wù)器。同樣也可以將web技術(shù)和sniffer技術(shù)相結(jié)合,為用戶提供一個(gè)用于管理互聯(lián)網(wǎng)流量的完整的端到端視圖。4. 在交換環(huán)境下sniffer的使用: 共享連接的局域網(wǎng)是基于總線方式,物理上是廣播的,同一物理網(wǎng)段的所有主機(jī)的網(wǎng)卡都能接收到這些以太網(wǎng)幀。交換機(jī)(switch)采用交換方式來(lái)傳輸數(shù)據(jù),這樣一臺(tái)機(jī)器就無(wú)法得到與他無(wú)關(guān)的網(wǎng)絡(luò)數(shù)據(jù)了。為了允許網(wǎng)絡(luò)管理人員在switch環(huán)境下仍讓可以得到其他任何一臺(tái)機(jī)器的網(wǎng)絡(luò)數(shù)據(jù),采用了端口鏡像技術(shù)(port mirroring)。交換機(jī)就會(huì)把所有的網(wǎng)絡(luò)數(shù)據(jù)都向該端口復(fù)制一份。這樣在該端口上的機(jī)器就和以前一樣,能夠得到任何數(shù)據(jù)了?,F(xiàn)在大多數(shù)switch產(chǎn)品都支持此項(xiàng)技術(shù)。5. 結(jié)合人工智能技術(shù): 利用sniffer“專家分析”技術(shù)(expert analysis),專家系統(tǒng)能夠自動(dòng)檢測(cè)諸如拒絕連接、吞吐量降低等多種網(wǎng)絡(luò)故障征兆,并且及時(shí)地阻止其發(fā)展成為致命的網(wǎng)絡(luò)性能問(wèn)題,并且能夠根據(jù)當(dāng)有們狗網(wǎng)絡(luò)運(yùn)行狀況提出優(yōu)化方案,以提高網(wǎng)絡(luò)的運(yùn)行效率,給出智能管理方案。同時(shí)具有學(xué)習(xí)與主動(dòng)發(fā)覺(jué)網(wǎng)絡(luò)問(wèn)題的能力。當(dāng)一個(gè)網(wǎng)絡(luò)異常被發(fā)現(xiàn)時(shí),立刻正確地指出其原因以便幫助去解決它。6. sniffer無(wú)線解決方案(sniffer wireless網(wǎng)絡(luò)分析器): sniffer無(wú)線解決方案高效率設(shè)計(jì)構(gòu)建起一個(gè)精密而安全的無(wú)線lan基礎(chǔ)架構(gòu)。1.3 常用sniffer系統(tǒng)簡(jiǎn)介sniffer 可分軟、硬兩種,軟件sniffer有它的優(yōu)點(diǎn),價(jià)格成本相對(duì)較低,易于學(xué)習(xí)使用,同時(shí)也易于交流,缺點(diǎn)是無(wú)法抓取網(wǎng)絡(luò)上所有的傳輸,比如碎片、fragment, short event等等,某些情況下也就無(wú)法真正了解網(wǎng)絡(luò)的故障和運(yùn)行情。硬件的sniffer通常稱為協(xié)議分析儀,一般都比較貴的,商用化的工具產(chǎn)品如美國(guó)網(wǎng)絡(luò)聯(lián)盟公司的sniffer網(wǎng)絡(luò)協(xié)議分析儀。以下是當(dāng)前比較流行的sniffer軟件。 表1.1 比較流行的sniffer軟件軟件名稱使用平臺(tái)簡(jiǎn)單評(píng)價(jià)glbblerdos, windows可以在一個(gè)單獨(dú)的工作站上運(yùn)行,僅分析本地的包,也可以在網(wǎng)絡(luò)上運(yùn)行ethloaddos用于ethernet和令牌環(huán)網(wǎng)netmanunix只能運(yùn)行在unix平臺(tái)sniffitunix, linux默認(rèn)狀態(tài)下只接受最先的400個(gè)字節(jié)的信息包tcpdump4.314bsd, free bsd, linux, sunos一個(gè)專業(yè)的網(wǎng)絡(luò)管理工具,可移植性強(qiáng)net monitorwindowsmicrosoft 商用snifferexpert snifferunixnetwork general公司商用sniffertotal network visibility snifferwindowsnai-sniffer 著名的整體網(wǎng)絡(luò)解決方案之一esniff.csunos被設(shè)計(jì)僅截獲數(shù)據(jù)包的開(kāi)頭部分 因?yàn)閟niffer工具比較多,所以還存在很多其他的sniffer工具,在此,我們僅詳細(xì)介紹ethereal和tcpdump兩種常用的sniffer工具。ethereal是一個(gè)開(kāi)放源碼的網(wǎng)絡(luò)分析系統(tǒng),也是是目前最好的開(kāi)放源碼的網(wǎng)絡(luò)協(xié)議分析器,支持linux和windows平臺(tái)。ethereal起初由gerald combs開(kāi)發(fā),隨后由一個(gè)松散的etheral團(tuán)隊(duì)組織進(jìn)行維護(hù)開(kāi)發(fā)。它目前所提供的強(qiáng)大的協(xié)議分析功能完全可以媲美商業(yè)的網(wǎng)絡(luò)分析系統(tǒng),自從1998年發(fā)布最早的0.2版本至今,大量的志愿者為ethereal添加新的協(xié)議解析器,如今ethereal已經(jīng)支持五百多種協(xié)議解析。很難想象如此多的人開(kāi)發(fā)的代碼可以很好的融入系統(tǒng)中;并且在系統(tǒng)中加入一個(gè)新的協(xié)議解析器很簡(jiǎn)單,一個(gè)不了解系統(tǒng)的結(jié)構(gòu)的新手也可以根據(jù)留出的接口進(jìn)行自己的協(xié)議開(kāi)發(fā)。這都?xì)w功于ehereal良好的設(shè)計(jì)結(jié)構(gòu)。事實(shí)上由于網(wǎng)絡(luò)上各種協(xié)議種類繁多,各種新的協(xié)議層出不窮。一個(gè)好的協(xié)議分析器必需有很好的可擴(kuò)展性和結(jié)構(gòu)。這樣才能適應(yīng)網(wǎng)絡(luò)發(fā)展的需要不斷加入新的協(xié)議解析器。tcpdump是linux平臺(tái)下一個(gè)很重要的sniffer工具,作為互聯(lián)網(wǎng)上經(jīng)典的的系統(tǒng)管理員必備工具,tcpdump以其強(qiáng)大的功能,靈活的截取策略,成為每個(gè)高級(jí)的系統(tǒng)管理員分析網(wǎng)絡(luò),排查問(wèn)題等所必備的工具之一。tcpdump提供了源代碼,公開(kāi)了接口,因此具備很強(qiáng)的可擴(kuò)展性,對(duì)于網(wǎng)絡(luò)維護(hù)和入侵者都是非常有用的工具。tcpdump存在于基本的 freebsd系統(tǒng)中,由于它需要將網(wǎng)絡(luò)界面設(shè)置為混雜模式,普通用戶不能正常執(zhí)行,但具備root權(quán)限的用戶可以直接執(zhí)行它來(lái)獲取網(wǎng)絡(luò)上的信息。因此系統(tǒng)中存在網(wǎng)絡(luò)分析工具主要不是對(duì)本機(jī)安全的威脅,而是對(duì)網(wǎng)絡(luò)上的其他計(jì)算機(jī)的安全存在威脅。普通情況下,直接啟動(dòng)tcpdump將監(jiān)視第一個(gè)網(wǎng)絡(luò)界面上所有流過(guò)的數(shù)據(jù)包。1.4 sniffer技術(shù)發(fā)展?fàn)顩r當(dāng)前將sniffer技術(shù)應(yīng)用在網(wǎng)絡(luò)管理中還不是十分的普遍,即使己經(jīng)在網(wǎng)絡(luò)管理中使用了sniffer技術(shù),其也是處于一種輔助的、次要的位置,在表1.1中的產(chǎn)品,大部分都是孤立的sniffer技術(shù)的產(chǎn)品,少有真正實(shí)現(xiàn)sniffer技術(shù)和網(wǎng)絡(luò)管理的集成,形成一個(gè)完善的功能強(qiáng)大的sniffer網(wǎng)絡(luò)管理系統(tǒng)。在snif fer技術(shù)的發(fā)展和應(yīng)用中, sniffer技術(shù)公司(sniffer technologies)起到了巨大的推動(dòng)作用,sniffer技術(shù)公司的品牌和方法己經(jīng)成為監(jiān)控局域網(wǎng)和廣域網(wǎng)性能的事實(shí)工業(yè)標(biāo)準(zhǔn),提出和實(shí)現(xiàn)了許多sniffer技術(shù)的熱點(diǎn)研究方向和行之有效的網(wǎng)絡(luò)管理解決方案,在創(chuàng)新技術(shù)與解決方案領(lǐng)域領(lǐng)先于市場(chǎng)和同類公司。sniffer技術(shù)公司是全球第五大軟件公司美國(guó)網(wǎng)絡(luò)聯(lián)盟(network associates,inc.簡(jiǎn)稱nai)下屬的一家分公司,專門提供各種網(wǎng)絡(luò)和應(yīng)用程序管理解決方案,占領(lǐng)著世界80%的市場(chǎng)份額。在sniffer技術(shù)的基礎(chǔ)之上,sniffer技術(shù)公司結(jié)合分布式、人工智能、遠(yuǎn)程監(jiān)視、無(wú)線lan等技術(shù)推出了一系列的sniffer網(wǎng)絡(luò)管理產(chǎn)品。該公司的”sniffer網(wǎng)絡(luò)全視野”(sniffer total network visiblity簡(jiǎn)稱tvn)是一套端對(duì)端的優(yōu)化網(wǎng)絡(luò)性能和確保網(wǎng)絡(luò)運(yùn)行的智能管理解決方案,包括sniffer basic、sniffer pro lan, sniffer prowan. sniffer pro highspeed組成的便攜式分析套件和分布式分析套件。除了sniffer技術(shù)公司的sniffer產(chǎn)品外,還有一些公司的產(chǎn)品,它們的功能和應(yīng)用范圍一般非常有限或用于一些專用的設(shè)備,推廣不如sniffer技術(shù)公司。1.5 為什么要實(shí)現(xiàn)此系統(tǒng)?在linux平臺(tái)下,tcpdump作為一種很常用的sniffer工具,功能很強(qiáng)大,但是有一個(gè)比較大的缺點(diǎn),就是界面不夠友好,不太方面用戶操作,尤其是對(duì)計(jì)算機(jī)知識(shí)不太熟悉的普通用戶。基于以上原因,我以此作為研究課題,目標(biāo)就是能夠做出一個(gè)界面類似ethereal的sniffer工具,以方便用戶操作。5南京郵電大學(xué)通達(dá)學(xué)院2008屆本科生畢業(yè)設(shè)計(jì)(論文)第二章 sniffer 和 tcp/ip 之間的關(guān)系2.1 sniffer和tcp/ip關(guān)系 sniffer和tcp/ip關(guān)系非常緊密,sniffer的實(shí)現(xiàn)是嚴(yán)格按照tcp/ip的層次關(guān)系實(shí)現(xiàn)的。一般來(lái)說(shuō),sniffer可以解析的各種協(xié)議在tcp/ip協(xié)議棧中都有定義和實(shí)現(xiàn),現(xiàn)在最常用的ethereal工具支持可達(dá)500種協(xié)議。sniffer一般從上到下包括抓包模塊,解析模塊,應(yīng)用模塊這三個(gè)模塊,之間的關(guān)系如圖2.1所示。抓包模塊tcp/ip協(xié)議棧解析模塊應(yīng)用模塊 圖2.1 sniffer和tcp/ip協(xié)議棧關(guān)系2.2 tcp/ip 的層次結(jié)構(gòu)tcp/ip協(xié)議(transmission control protocol/internet protocol)叫做傳輸控制/網(wǎng)際協(xié)議,又叫網(wǎng)絡(luò)通訊協(xié)議,這個(gè)協(xié)議是internet國(guó)際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ)。tcp/ip是網(wǎng)絡(luò)中使用的基本的通信協(xié)議。雖然從名字上看tcp/ip包括兩個(gè)協(xié)議,傳輸控制協(xié)議(tcp)和網(wǎng)際協(xié)議(ip),但tcp/ip實(shí)際上是一組協(xié)議,它包括上百個(gè)各種功能的協(xié)議,如:遠(yuǎn)程登錄、文件傳輸和電子郵件等,而tcp協(xié)議和ip協(xié)議是保證數(shù)據(jù)完整傳輸?shù)膬蓚€(gè)基本的重要協(xié)議。通常說(shuō)tcp/ip是internet協(xié)議族,而不單單是tcp和ip.internet實(shí)現(xiàn)互聯(lián)的關(guān)鍵是tcp/ip協(xié)議。在internet內(nèi)部,計(jì)算機(jī)之間互相發(fā)送信息包進(jìn)行通信,tcp/ip協(xié)議對(duì)這種信息包的傳輸方式作了具體的規(guī)定?;趖cp/ip協(xié)議的服務(wù)很多,人們比較熟悉的有www服務(wù),ftp服務(wù),電子郵件服務(wù),不太熟悉的有tftp服務(wù),nfs服務(wù),finger服務(wù)等等。這些服務(wù)都存在不同程度上的安全缺陷,當(dāng)用戶用防火墻保護(hù)站點(diǎn)時(shí),就需要考慮該提供哪些服務(wù),要禁止哪些服務(wù)。tcp/ip協(xié)議簇主要包括四層,從上到下依次是應(yīng)用層、運(yùn)輸層、網(wǎng)絡(luò)層、鏈路層,它們之間層次關(guān)系如圖2.2所示 圖2.2 tcp/ip各層次關(guān)系7南京郵電大學(xué)通達(dá)學(xué)院2008屆本科生畢業(yè)設(shè)計(jì)(論文)第三章 本系統(tǒng)的詳細(xì)介紹3.1 系統(tǒng)的各個(gè)模塊1. capturer模塊 功能描述:捕捉流過(guò)網(wǎng)卡的每個(gè)package,然后把此包寫(xiě)入文件package.dat,同時(shí),把此包的size寫(xiě)入文件table.dat 相關(guān)模塊: display模塊 通過(guò)”共享內(nèi)存“兩者通信,實(shí)現(xiàn)在display模塊可以通過(guò)命令控制capturer的狀態(tài)(暫停,停止,運(yùn)行) 相關(guān)文件: package.dat,table.dat2: buffer模塊模塊描述: 為了減少讀寫(xiě)硬盤的次數(shù),實(shí)現(xiàn)此緩沖區(qū),此緩沖區(qū)大小 = 100 * 2048 (bytes),最多緩存100個(gè)package。相關(guān)模塊: display, display模塊直接從buffer中調(diào)取數(shù)據(jù),而不是直接讀取硬盤來(lái)調(diào)取數(shù)據(jù)相關(guān)文件: package.dat, table.dat相關(guān)結(jié)構(gòu): char tabtab_size : tab是一個(gè)table,里面存放著各個(gè)package在文件package.dat的絕對(duì)偏移量3: display模塊 模塊描述:此模塊是程序中最重要的一個(gè)模塊,通過(guò)此模塊,用戶可以以detail和simple模式查看包,另外,通過(guò)此模塊還可以通過(guò)命令控制capturer的狀態(tài)(暫停,運(yùn)行,停止) 相關(guān)模塊: capture: 在display模塊內(nèi)控制capturer的狀態(tài) buffer : display的數(shù)據(jù)都來(lái)自buffer模塊 decode: 每個(gè)包經(jīng)過(guò)“解包模塊”后再顯示出來(lái)4: decode 模塊說(shuō)明:即對(duì)每個(gè)package進(jìn)行翻譯,以直觀的形式顯示出來(lái),這個(gè)模塊里面又根據(jù)網(wǎng)絡(luò)的層次對(duì)每一層的數(shù)據(jù)進(jìn)行解析 相關(guān)模塊: display :把解析的數(shù)據(jù)以直觀的形式顯示出來(lái)3.2 各個(gè)模塊的關(guān)系圖2.3用圖形的方式展現(xiàn)了系統(tǒng)各個(gè)模塊之間的關(guān)系,通過(guò)它,您可以看到以下內(nèi)容:1. 各個(gè)模塊之間的關(guān)系2. 數(shù)據(jù)的簡(jiǎn)單流向 圖2.3 各模塊的關(guān)系及數(shù)據(jù)流向capture模塊實(shí)現(xiàn)對(duì)廣播數(shù)據(jù)的接收。根據(jù)以太網(wǎng)的工作原理,一個(gè)設(shè)備要向某一目標(biāo)發(fā)送數(shù)據(jù)時(shí),是以廣播方式傳輸?shù)?。每個(gè)連到以太網(wǎng)總線上的設(shè)備在任何時(shí)間里都在接受數(shù)據(jù),而機(jī)器網(wǎng)卡每次接收到數(shù)據(jù)包后,默認(rèn)只接收屬于該計(jì)算機(jī)的數(shù)據(jù),如果不屬于本機(jī),就丟棄該包。在接收模塊中,將網(wǎng)絡(luò)層設(shè)置成promiscuous模式,promiscuous模式是指網(wǎng)絡(luò)上的所有設(shè)備都對(duì)總線上傳送的數(shù)據(jù)進(jìn)行偵聽(tīng),并不僅僅是它們自己的數(shù)據(jù)。decode模塊以capture模塊接收到的數(shù)據(jù)作為輸入進(jìn)行拆包。接收模塊所接受的包是未經(jīng)過(guò)加工的原始數(shù)據(jù)包,因此,在此模塊中要對(duì)數(shù)據(jù)進(jìn)行拆包,得到用戶傳輸?shù)脑紨?shù)據(jù)。display模塊從拆包模塊中得到輸入。顯示各個(gè)package的簡(jiǎn)要信息或詳盡信息,從而實(shí)現(xiàn)snifer的網(wǎng)絡(luò)監(jiān)控和嗅探功能。3.3 文件的組織結(jié)構(gòu)本系統(tǒng)具有可擴(kuò)展性,編程采納了軟件工程思想,提供了可擴(kuò)展性,具體文件介紹如下:capture.c : 本文件和抓包模塊相關(guān),負(fù)責(zé)抓取流經(jīng)網(wǎng)卡的數(shù)據(jù)包,并存入硬盤中的包數(shù)據(jù)文件display.c : 本文件和顯示模塊、緩沖模塊相關(guān),由于特殊設(shè)計(jì)的原因,本模塊完成以下“緩沖”和“顯示”功能,另外,本模塊編碼也是系統(tǒng)中最難的部分,用到了相關(guān)的數(shù)據(jù)結(jié)構(gòu)和算法。net_card_ctrl.c:本文件和網(wǎng)卡控制模塊相關(guān),作用就是控制網(wǎng)卡的模式,通過(guò)設(shè)置,可以使得網(wǎng)卡工作在“正常模式”和“混雜模式”decode_each_pack.c : 本文件主要和解碼模塊相關(guān),可以對(duì)報(bào)文進(jìn)行層次性解析,這也是本系統(tǒng)可擴(kuò)展性的體現(xiàn)。eth.c : 本文件的作用是負(fù)責(zé)對(duì)ethernet層次的報(bào)文進(jìn)行解碼,顯示一些信息,然后再把報(bào)文傳遞給它的下一層進(jìn)行解析eth_header.h: 定義了ethernet報(bào)文頭的格式及其相應(yīng)的操作函數(shù),為報(bào)文操作提供統(tǒng)一接口ip.c : 本文件的作用是負(fù)責(zé)對(duì)ip報(bào)文層次的報(bào)文進(jìn)行解碼,顯示一些信息,然后再把報(bào)文傳遞給它的下一層進(jìn)行解析ip_header.h: 定義了ip報(bào)文頭的格式及其相應(yīng)的操作函數(shù),為報(bào)文操作提供統(tǒng)一接口tcp.c:本文件的作用是負(fù)責(zé)對(duì)tcp報(bào)文層次的報(bào)文進(jìn)行解碼,顯示一些信息,然后再把報(bào)文傳遞給它的下一層進(jìn)行解析tcp_header.h: 定義了tcp報(bào)文頭的格式及其相應(yīng)的操作函數(shù),為報(bào)文操作提供統(tǒng)一接口udp.c:本文件的作用是負(fù)責(zé)對(duì)udp報(bào)文層次的報(bào)文進(jìn)行解碼,顯示一些信息,然后再把報(bào)文傳遞給它的下一層進(jìn)行解析udp_header.h: 定義了udp報(bào)文頭的格式及其相應(yīng)的操作函數(shù),為報(bào)文操作提供統(tǒng)一接口icmp.c:本文件的作用是負(fù)責(zé)對(duì)icmp報(bào)文層次的報(bào)文進(jìn)行解碼,顯示一些信息,然后再把報(bào)文傳遞給它的下一層進(jìn)行解析icmp_header.h: 定義了icmp報(bào)文頭的格式及其相應(yīng)的操作函數(shù),為報(bào)文操作提供統(tǒng)一接口dhcp.c:本文件的作用是負(fù)責(zé)對(duì)dhcp報(bào)文層次的報(bào)文進(jìn)行解碼,顯示一些信息,然后再把報(bào)文傳遞給它的下一層進(jìn)行解析dhcp_header.h: 定義了dhcp報(bào)文頭的格式及其相應(yīng)的操作函數(shù),為報(bào)文操作提供統(tǒng)一接口dns.c:本文件的作用是負(fù)責(zé)對(duì)dhcp報(bào)文層次的報(bào)文進(jìn)行解碼,顯示一些信息,然后再把報(bào)文傳遞給它的下一層進(jìn)行解析dns_header.h: 定義了dns報(bào)文頭的格式及其相應(yīng)的操作函數(shù),為報(bào)文操作提供統(tǒng)一接口arp.c:本文件的作用是負(fù)責(zé)對(duì)arp報(bào)文層次的報(bào)文進(jìn)行解碼,顯示一些信息,然后再把報(bào)文傳遞給它的下一層進(jìn)行解析arp_header.h: 定義了arp報(bào)文頭的格式及其相應(yīng)的操作函數(shù),為報(bào)文操作提供統(tǒng)一接口通過(guò)圖2.4,您可以清晰看出程序文件的組織結(jié)構(gòu): 圖2.4 文件組織結(jié)構(gòu)通過(guò)文件的組織層次結(jié)構(gòu),就可以看出來(lái),各個(gè)協(xié)議都有自己的.c源文件和.h頭文件,源文件主要實(shí)現(xiàn)解碼功能,在它的相應(yīng)的頭文件中定義了本報(bào)文的格式和相應(yīng)的處理函數(shù)。通過(guò)文件的組織層次結(jié)構(gòu),還可以推斷出來(lái),隨意的加入或者減少某個(gè)協(xié)議的解析是很簡(jiǎn)單的。例如,如果想加入對(duì)某個(gè)新協(xié)議的處理,那么只需要加入和這個(gè)相關(guān)的程序源程序和頭文件。3.4 本系統(tǒng)中的幾個(gè)細(xì)節(jié)在本系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)過(guò)程中,數(shù)據(jù)結(jié)構(gòu)和相關(guān)算法起到了很重要的作用,在這里,我們把這些細(xì)節(jié)詳細(xì)列出,并給出對(duì)應(yīng)的代碼展示。3.4.1 包數(shù)據(jù)的存取被捕捉到的流經(jīng)網(wǎng)卡的數(shù)據(jù)是以package為單位的,當(dāng)一個(gè)新的package來(lái)到時(shí),linux根據(jù)內(nèi)部機(jī)制會(huì)發(fā)生中斷,然后存入用戶設(shè)定的緩沖區(qū)內(nèi),所以,我們要做的僅僅是這個(gè)緩沖區(qū)中取得所要的數(shù)據(jù)。和package相關(guān)的兩個(gè)文件是:package.dat 和 table.dat。package.dat以二進(jìn)制的形式存取捕捉到的包數(shù)據(jù),table.dat存取各個(gè)包對(duì)應(yīng)的大小信息,通過(guò)這兩個(gè)文件,便可以任意取到任何的包數(shù)據(jù)。package.dat存儲(chǔ)包的二進(jìn)制原始數(shù)據(jù),所謂原始數(shù)據(jù)就是沒(méi)有經(jīng)過(guò)任何處理的字節(jié)流數(shù)據(jù),之所以不進(jìn)行任何處理的原因是增加數(shù)據(jù)的可用性,數(shù)據(jù)的原始性包括兩個(gè)方面:l 存儲(chǔ)所有流經(jīng)網(wǎng)卡的包,在此之前不進(jìn)行任何過(guò)濾l 對(duì)每個(gè)包的數(shù)據(jù)不進(jìn)行任何處理table.dat存儲(chǔ)包的大小信息,存儲(chǔ)方式也是采用二進(jìn)制存儲(chǔ)方式,每個(gè)包的大小可以用一個(gè)int類型數(shù)據(jù)表示,一個(gè)int數(shù)據(jù)就是四個(gè)字節(jié),就是說(shuō),用4個(gè)字節(jié)來(lái)存儲(chǔ)每個(gè)package的大小信息。這里舉一個(gè)詳細(xì)的例子來(lái)說(shuō)明:假設(shè)截至到某時(shí)刻a,系統(tǒng)一共捕捉到了4個(gè)package,這4個(gè)package的大小信息分別為40 bytes, 50 bytes, 60 bytes, 70 bytes,則package.dat和table.dat的信息分別如圖2.5 和 圖2.6所示。這里我們做一個(gè)規(guī)定:package的從0開(kāi)始編號(hào)的,這一點(diǎn)和c語(yǔ)言中的數(shù)組一樣。package.dat的信息如圖2.5所示:pack3:70 bytes pack2:60 bytespack1:50 bytespack0:40 bytes 圖2.5 package.dat此刻的數(shù)據(jù)根據(jù)此圖,便可以得知,package.dat里面一共存儲(chǔ)了220bytes的數(shù)據(jù),包括pack0 = 40 bytes, pack1 = 50 bytes, pack2 = 60 bytes, pack3 = 70 bytestable.dat的信息如圖2.6所示:4bytes, value=704bytes, value=604bytes, value=504bytes, value=40圖2.6 table.dat此刻的數(shù)據(jù)根據(jù)此圖,便可以得知,table.dat里面一共存儲(chǔ)了16bytes的數(shù)據(jù),包括pack0的大小 40, pack0的大小 50, pack0的大小 60, pack0的大小 70.根據(jù)上面兩個(gè)結(jié)構(gòu)(或文件),再加上內(nèi)存中的一個(gè)數(shù)組tabmax,就可以算出任意編號(hào)的package存儲(chǔ)數(shù)據(jù)的絕對(duì)起始位移,算法如下:例如:已知,table.dat中已經(jīng)存放了4個(gè)package的size信息如下:sizeof (pack_0) = 40 ;sizeof (pack_1) = 50 ;sizeof (pack_2) = 60 ;sizeof (pack_3) = 70 ;則table的動(dòng)作如下:動(dòng)作一:對(duì)應(yīng)加載各個(gè)package的size令 tab0 = 0 (便于以后算絕對(duì)偏移量) tab1 = 40 ; tab2 = 50 ; tab3 = 60 ;tab4 = 70動(dòng)作二:算出各個(gè)package在package.dat里的絕對(duì)偏移量和size大小已知tab0=0,tab1=40,tab2=50, tab3=60,tab4=70執(zhí)行: for (i=0; in; i+) tabi+1 = tabi+1 + tabi ;則tab0=0, tab1=40, tab2=90, tab3=150, tab4=220offset(pack0)=0, size(pack0) = tab1 tab0 = 40offset(pack1)=40, size(pack1) = tab2 tab1 = 50 offset(pack2)=90, size(pack2) = tab3 tab2 = 60offset(pack3)=150, sizeof(pack3)=tab4 tab3 = 70 offset(packn)=tabn, sizeof(packn) = tabn+1 tabn 這樣,經(jīng)過(guò)計(jì)算之后,便可以得知任意一個(gè)package的絕對(duì)起始位移,這樣做的好處就是,可以快速取到任意一個(gè)package的數(shù)據(jù),提高系統(tǒng)效率。與包的存取相關(guān)的核心代碼如下(已經(jīng)省略部分代碼):bool readtable() / 讀取table.dat

溫馨提示

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

評(píng)論

0/150

提交評(píng)論