課程設計--基于c#的網絡嗅探器的設計和實現_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  網 絡 與 信 息 安 全</p><p><b>  課 程 設 計</b></p><p>  網絡嗅探器的設計和實現</p><p>  學院:計算機科學與技術</p><p>  班級:網絡工程08-1班</p><p>  姓名: </p>

2、;<p><b>  學號:</b></p><p><b>  指導老師: </b></p><p><b>  目錄</b></p><p>  一、什么是嗅探器--------------------------------------------1</p><

3、p>  二、嗅探器的作用---------------------------------------------1</p><p>  三、網絡嗅探器的原理-----------------------------------------1</p><p>  四、反嗅探技術----------------------------------------------7</p&

4、gt;<p>  五、網絡嗅探器的設計-----------------------------------------8</p><p>  六、結語---------------------------------------------------14</p><p>  參考書目---------------------------------------------

5、-----14</p><p>  網絡嗅探器的實際與實現</p><p><b>  一、什么是嗅探器</b></p><p>  嗅探器,可以理解為一個安裝在計算機上的竊聽設備它可以用來竊聽計算機在網絡上所產生的眾多的信息。簡單一點解釋:一部電話的竊聽裝置, 可以用來竊聽雙方通話的內容,而計算機網絡嗅探器則可以竊聽計算機程序在網絡上發(fā)送和接

6、收到的數據。   可是,計算機直接所傳送的數據,事實上是大量的二進制數據。因此, 一個網絡竊聽程序必須也使用特定的網絡協(xié)議來分解嗅探到的數據, 嗅探器也就必須能夠識別出那個協(xié)議對應于這個數據片斷,只有這樣才能夠進行正確的解碼。 計算機的嗅探器比起電話竊聽器,有他獨特的優(yōu)勢: 很多的計算機網絡采用的是“共享媒體"。也就是說,你不必中斷他的通訊,并且配置特別的線路,再安裝嗅探器,你幾乎可以在任何連接著的網絡上直接竊聽到

7、你同一掩碼范圍內的計算機網絡數據。我們稱這種竊聽方式為“基于混雜模式的嗅探”(promiscuous mode) 。 盡管如此,這種“共享” 的技術發(fā)展的很快,慢慢轉向“交換” 技術,這種技術會長期內會繼續(xù)使用下去, 它可以實現有目的選擇的收發(fā)數據。</p><p>  二、嗅探器的作用 嗅探器是網絡的抓包工具,可以對網絡中大量數據抓取,從而方便使用者對網絡中用戶的一些信息進行分析,所以,通常被黑客運用于

8、網絡攻擊。我們如果也能掌握網絡嗅探器的原理和設計,可以將它運用與網絡故障檢測、網絡狀況的監(jiān)視,還可以加強企業(yè)信息安全防護。</p><p><b>  三、網絡嗅探器原理</b></p><p>  嗅探器是如何工作的?如何竊聽網絡上的信息? 網絡的一個特點就是數據總是在流動中,從一處到另外一處,而互聯(lián)網是由錯綜復雜的各種網絡交匯而成的,也就是說:當你的數據從

9、網絡的一臺電腦到另一臺電腦的時候,通常會經過大量不同的網絡設備,(我們用tracert命令就可以看到這種路徑是如何進行的)。如果傳輸過程中,有人看到了傳輸中的數據,那么問題就出現了——這就好比給人發(fā)了一封郵件,在半路上被人拆開偷看一樣,這樣說或許還不是很可怕,那要是傳送的數據是企業(yè)的機密文件那,或是用戶的信用卡帳號和密碼呢……?</p><p>  嗅探偵聽主要有兩種途徑,一種是將偵聽工具軟件放到網絡連接的設備或

10、者放到可以控制網絡連接設備的電腦上,(比如網關服務器,路由器)——當然要實現這樣的效果可能也需要通過其他黑客技術來實現:比如通過木馬方式將嗅探器發(fā)給某個網絡管理員,使其不自覺的為攻擊者進行了安裝。另外一種是針對不安全的局域網(采用交換hub實現),放到個人電腦上就可以實現對整個局域網的偵聽,這里的原理是這樣的:共享hub獲得一個子網內需要接收的數據時,并不是直接發(fā)送到指定主機,而是通過廣播方式發(fā)送到每個電腦,對于處于接受者地位的電腦就會

11、處理該數據,而其他非接受者的電腦就會過濾這些數據,這些操作與電腦操作者無關,是系統(tǒng)自動完成的,但是電腦操作者如果有意的話,他是可以將那些原本不屬于他的數據打開!——這就是安全隱患! 以太網的數據傳輸是基于“共享”原理的:所有的同一本地網范圍內的計算機共同接收到相同的數據包。這意味著計算機直接的通訊都是透明可見的。正是因為這樣的原因,以太網卡都構造了硬件的“過濾器”這個過濾器將忽略掉一切和自己無關的網絡信息。事實上是忽略掉了與自身

12、MAC地址不符合的信息。 嗅探程序正是利用了這</p><p>  什么是以太網的MAC地址(MAC:Media Access Control)?由于大量的計算機在以太網內“共享“數據流,所以必須有一個統(tǒng)一的辦法用來區(qū)分傳遞給不同計算機的數據流的。這種問題不會發(fā)生在撥號用戶身上,因為計算機會假定一切數據都由你發(fā)動給modem然后通過電話線傳送出去??墒牵斈惆l(fā)送數據到以太網上的時候,你必須弄清楚,哪臺計

13、算機是你發(fā)送數據的對象。的確,現在有大量的雙向通訊程序出現了,看上去,他們好像只會在兩臺機器內交換信息,可是你要明白,以太網的信息是共享的,其他用戶,其實一樣接收到了你發(fā)送的數據,只不過是被過濾器給忽略掉了。 </p><p>  MAC地址是由一組6個16進制數組成的,它存在于每一塊以太網卡中。后面的章節(jié)將告訴你如何查看自己計算機的MAC地址。 如果對網絡結構不太熟悉,建議參考一下OSI 7-Laye

14、r Model,這將有助于你理解后面的東西以太網所使用的協(xié)議主要是TCP/IP,并且TCP/IP也用于其他的網絡模型(比如撥號用戶,他們并不是處于一個以太網環(huán)境中)。舉例一下,很多的小團體計算機用戶都為實現文件和打印共享,安裝了“NetBEUI” 因為它不是基于TCP/IP協(xié)議的,所以來自于網絡的黑客一樣無法得知他們的設備情況。 基于Raw協(xié)議,傳輸和接收都在以太網里起著支配作用。你不能直接發(fā)送一個Raw數據給以太網,你必

15、須先做一些事情,讓以太網能夠理解你的意思。這有點類似于郵寄信件的方法,你不可能直接把一封信投遞出去,你必須先裝信封,寫地址,貼郵票,網絡上的傳輸也是這樣的。 下面給出一個簡單的圖示,有助于你理解數據傳送的原理: </p><p>  _________ </p><p>  /.........\ </p><p>  /..Internet.\ <

16、/p><p>  +-----+ +----+.............+-----+ </p><p>  UserA ----- 路由 ............. UserB  </p><p>  +-----+ ^ +----+.............+-----+ </p><p>  \.........../ </p>

17、<p>  \---------/ </p><p><b>  +------+ </b></p><p><b>  嗅探器  </b></p><p><b>  +------+ </b></p><p>  UserA IP 地址: 10.0.0.23

18、</p><p>  UserB IP 地址: 192.168.100.54 </p><p>  現在知道UserA要于UserB進行計算機通訊,UserA需要為10.0.0.23到192.168.100.54的通訊建立一個IP包 。這個IP包在網絡上傳輸,它必須能夠穿透路由器。因此,UserA必須首先提交這個包給路由器。由每個路由器考查目地IP地址然后決定傳送路徑。 </p>

19、;<p>  UserA 所知道的只是本地與路由的連接,和UserB的IP地址。UserA并不清楚網絡的結構情況和路由走向。UserA必須告訴路由預備發(fā)送的數據包的情況,以太網數據傳輸結構大概是這樣的: </p><p>  +--+--+--+--+--+--+ </p><p><b>  目標 MAC   </b></p><p

20、>  +--+--+--+--+--+--+ </p><p><b>  源 MAC   </b></p><p>  +--+--+--+--+--+--+ </p><p><b>  08 00  </b></p><p>  +--+--+-----------+       <

21、;/p><p><b>  . . </b></p><p><b>  . IP 包 . </b></p><p>  . .       </p><p>  +--+--+--+--+-----+ </p><p><b>  CRC校驗   </b>

22、</p><p>  +--+--+--+--+ </p><p>  理解一下這個結構,UserA的計算機建立了一個包假設它由100個字節(jié)的長度(我們假設一下,20 個字節(jié)是IP信息,20個字節(jié)是TCP信息,還有60個字節(jié)為傳送的數據)?,F在把這個包發(fā)給以太網,放14個字節(jié)在目地MAC地址之前,源MAC地址,還要置一個0x0800的標記,他指示出了TCP/IP棧后的數據結構。同時,也附加

23、了4個字節(jié)用于做CRC校驗(CRC校驗用來檢查傳輸數據的正確性)。 </p><p>  現在發(fā)送數據到網絡。所有在網內的計算機通過適配器都能夠發(fā)現這個數據片,其中也包括路由適配器,嗅探器和其他一些機器。通常,適配器都具有一塊芯片用來做結構比較的,檢查結構中的目地MAC地址和自己的MAC地址,如果不相同,則適配器會丟棄這個結構。這個操作會由硬件來完成,所以,對于計算機內的程序來說,整個過程時毫無察覺的。

24、 當路由器的以太網適配器發(fā)現這個結構后,它會讀取網絡信息,并且去掉前14個字節(jié),跟蹤4個字節(jié)。查找0x8000標記,然后對這個結構進行處理(它將根據網絡狀況推測出下一個最快路由節(jié)點,從而最快傳送數據到預定的目標地址)。 設想,只有路由機器能夠檢查這個結構,并且所有其他的機器都忽略這個 結構,則嗅探器無論如何也無法檢測到這個結構的。 MAC地址的格式是什么?以太網卡的MAC地址是一組48比特的數字,這48比特分為兩個部

25、分組成,前面的24比特用于表示以太網卡的寄主,后面的24比特是一組序列號,是由寄主進行支派的。這樣可以擔保沒有任何兩塊網卡的MAC地址是相同的(當然可以通過特殊的方法實現)。如果出現相同的地址,將發(fā)生問題,所有這一點是非常重要的。這2</p><p><b>  四、反嗅探技術 </b></p><p>  如何才能檢測網內是否存在有嗅探程序? 理論上,嗅探

26、程序是不可能被檢測出來的,因為嗅探程序是一種被動的接收程序,屬于被動觸發(fā)的,它只會收集數據包,而不發(fā)送出任何數據,盡管如此,嗅探程序有時候還是能夠被檢測出來的。 一個嗅探程序,不會發(fā)送任何數據,但是當它安裝在一臺正常的局域網內的計算機上的時候會產生一些數據流。舉個例子,它能發(fā)出一個請求,始DNS根據IP地址進行反相序列查找。 </p><p>  下面一種簡單的檢測方法: </p><

27、p><b>  ping 方法 </b></p><p>  很多的嗅探器程序,如果你發(fā)送一個請求給哪臺有嗅探程序的機器,它將作出應答 </p><p><b>  說明: </b></p><p>  1. 懷疑IP地址為10.0.0.1的機器裝有嗅探程序,它的MAC地址確定為00-40-05-A4-79-32.

28、  2. 確保機器是在這個局域網中間?! ?. 現在修改MAC地址為00-40-05-A4-79-33. 4. 現在用ping命令ping這個IP地址。 5. 沒有任何人能夠看到發(fā)送的數據包,因為每臺計算機的MAC地址無法與這個數據包中的目地MAC不符,所以,這個包應該會被丟棄。 6. 如果看到了應答,說明這個MAC包沒有被丟棄,也就是說,很有可能有嗅探器存在。 </p><p>

29、;  現在,這種方法已經得到了廣泛的推崇和宣揚,新一代的黑客們也學會了在他們的代碼中加入虛擬的MAC地址過濾器很多的計算機操作系統(tǒng)(比如Windows)都支持MAC過濾器(很多過慮器只檢查MAC的第一個字節(jié),這樣一來,MAC地址FF-00-00-00-00-00和FF-FF-FF-FF-FF- FF就沒有區(qū)別了。(廣播地址消息會被所有的計算機所接收)。這種技術通常會用在交換模型的以太網中。當交換機發(fā)現一個未知的MAC地址的時候,它會執(zhí)行

30、類似“flood”的操作,把這個包發(fā)送給每個節(jié)點。 </p><p>  五、網絡嗅探器的設計</p><p>  基于C#,Windowns Form編程實現一個簡單嗅探器的設計和實現。</p><p><b>  需求分析:</b></p><p>  有于水平有限,不可能實現像Sniffer或者影音神探那樣復雜的設

31、置和分析,所以我們只對抓取到的本機在網絡中的通信數據(如協(xié)議類型,源、目的地址和端口、數據包的大小等)加以分析,實現一個簡單的網絡嗅探器。一個窗體顯示主頁面,另一個頁面顯示詳細的包信息。 詳細信息頁面,我們顯示一下信息: 開始時間:嗅探器抓取數據包的時間; 源端口:源目的IP地址+端口號; 目的端口:目的IP地址+端口號; 協(xié)議類型:只分析一下類型,GPG,ICMP,IDP,IGMP,IP,ND,

32、PUP,TCP,UDP,其他的不再分析; 版本信息:協(xié)議的版本; 生存時間:; 報頭大?。簣笪膱笫撞看笮?; 報文總長:整個數據報的大小; 優(yōu)先級別:提供七個級別,分別是Routine = 0,Priority = 1,Immediate = 2,Flash = 3,FlashOverride = 4,CRITICECP = 5,InternetworkControl = 6,NetworkCont

33、rol = 7; 延遲:NormalDelay </p><p><b>  項目實施</b></p><p>  (1)vs2005中新建項目Windows應用程序PackerMonitor。 (2)添加三個窗體文件和兩個類文件,分別命名AboutForm.cs、PacketForm.cs、PacketMonitorForm.cs和Packet.c

34、s、PacketMonitor.cs。PacketForm.cs實現主頁面,PacketMonitorForm.cs實現詳細信息頁面。 (3)編碼,詳細的代碼如源程序。</p><p>  當使用C#系統(tǒng)類提供的接口取到數據包的bite流時,對流的初始化處理如下:public Packet(byte[] raw, DateTime time) { if (raw == null)</p

35、><p>  throw new ArgumentNullException();</p><p>  if (raw.Length < 20)</p><p>  throw new ArgumentException(); </p><p>  m_Raw = raw;</p><p>  m_Time = ti

36、me;</p><p>  m_Version = (raw[0] & 0xF0) >> 4;</p><p>  m_HeaderLength = (raw[0] & 0x0F) * 4;</p><p>  if ((raw[0] & 0x0F) < 5)</p><p>  throw new

37、ArgumentException(); // 無效的報頭</p><p>  m_Precedence = (Precedence)((raw[1] & 0xE0) >> 5);</p><p>  m_Delay = (Delay)((raw[1] & 0x10) >> 4);</p><p>  m_Throughput

38、 = (Throughput)((raw[1] & 0x8) >> 3);</p><p>  m_Reliability = (Reliability)((raw[1] & 0x4) >> 2);</p><p>  m_TotalLength = raw[2] * 256 + raw[3];</p><p>  if (m

39、_TotalLength != raw.Length)</p><p>  throw new ArgumentException(); // 無效的數據包大小</p><p>  m_Identification = raw[4] * 256 + raw[5];</p><p>  m_TimeToLive = raw[8];</p><p&g

40、t;  if (Enum.IsDefined(typeof(Protocol), (int)raw[9]))</p><p>  m_Protocol = (Protocol)raw[9];</p><p><b>  else</b></p><p>  m_Protocol = Protocol.Other;</p><

41、p>  m_Checksum = new byte[2];</p><p>  m_Checksum[0] = raw[11];</p><p>  m_Checksum[1] = raw[10];</p><p>  m_SourceAddress = new IPAddress(BitConverter.ToUInt32(raw, 12));</p&

42、gt;<p>  m_DestinationAddress = new IPAddress(BitConverter.ToUInt32(raw, 16));</p><p>  if (m_Protocol == Protocol.Tcp || m_Protocol == Protocol.Udp) {</p><p>  m_SourcePort = raw[m_Heade

43、rLength] * 256 + raw[m_HeaderLength + 1];</p><p>  m_DestinationPort = raw[m_HeaderLength + 2] * 256 + raw[m_HeaderLength + 3];</p><p><b>  } </b></p><p><b>  else

44、 {</b></p><p>  m_SourcePort = -1;</p><p>  m_DestinationPort = -1;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  3、測

45、試</b></p><p>  嗅探器運行后的界面如下:</p><p>  點擊綠色按鈕,開始抓取以太網中與本機通信的IP數據包;點擊紅色按鈕,停止監(jiān)聽。抓取到的信息如下圖:</p><p>  從圖中可以看出,抓到的有UDP數據報,ICMP數據報,TCP數據報。鼠標雙擊列表行,分別得到詳細的報文信息。</p><p>  TC

46、P報文信息如下:</p><p>  UDP報文信息如下:</p><p>  ICMP報文信息如下:</p><p><b>  六、總結:</b></p><p>  以前對網絡信息安全只是有一點了解,通過劉老師的信息安全概論課程的學習,對網絡信息安全的加密體系以及入侵檢測和防護墻的一些設置有了更深刻的認識。特別是通

47、過此次課程設計,自己動手實現網絡嗅探器的設計,加強了對網絡通信,數據傳輸和網絡信息安全有的學習,同時也使我對計算機信息安全產生了興趣。</p><p>  參考文獻:段云所 《信息安全概論》 2003謝希仁 《計算機網絡電子》 工業(yè)出版社 2005梅曉東 《Visual C#網絡編程技術與實踐》 清華大學出版社 2006吳成 《C#網絡與通信程序設計案例精講》 清華大學出版社 2006&

溫馨提示

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

評論

0/150

提交評論