網絡嗅探器的設計與實現_第1頁
網絡嗅探器的設計與實現_第2頁
網絡嗅探器的設計與實現_第3頁
網絡嗅探器的設計與實現_第4頁
網絡嗅探器的設計與實現_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

網絡與信息安全》課程設計報告班級學號:姓名:題目:評閱:成績:2011年1月目錄一、開發背景1、網絡安全現狀2、開發意義。二、設計分析1、實現目標。2、開發技術簡介三、詳細設計1、嗅探原理。2、代碼設計。四、測試運行五、總結六、參考文獻摘要網絡嗅探器是作用在網絡上的一種監聽程序,它是系統管理員的一個得力助手,管理員可以用它來分析網絡。例如當網絡繁忙時可利用它來查找是哪一段網絡繁忙,數據報文是屬于哪一種協議,這樣可以計算出哪種業務受歡迎。但是當有黑客使用它時,它又變得很可怕。它可以非法獲取一些保密性信息,如帳號、密碼等,它帶來的負面破壞是非常大的。作為從事網絡安全技術方面的人員來說,要想有效地利用它、防范它就得深入地學習、分析網絡嗅探技術。1、本設計的基本任務是設計一個嗅探軟件,實現對常用網絡數據包抓取、分析。2、軟件所要完成對本機在網絡中的通信數據,比如協議類型,源、目的地址和端口、數據包的大小等加以分析的功能。3、本設計用到的開發工具為MicrosoftVisualStudio2010開發環境為Windows7。4、程序由韓瑞彬同學和我共同完成,本人主要負責主界面的設計和網絡數據包的抓取,韓瑞彬同學負責對數據包的解析設計。關鍵字:嗅探器,安全,黑客,數據報文一、開發背景1、網絡安全現狀隨著各種新的網絡技術的不斷出現、應用和發展,計算機網絡的應用越來越廣泛,其作用也越來越重要。但是由于計算機系統中軟硬件的脆弱性和計算機網絡的脆弱性以及地理分布的位置、自然環境、自然破壞以及人為因素的影響,不僅增加了信息存儲、處理的風險,也給信息傳送帶來了新的問題。計算機網絡安全問題越來越嚴重,網絡破壞所造成的損失越來越大dnternet的安全已經成為亟待解決的問題。多數黑客入侵成功并植入后門后的第一件事就是選擇一個合適當前網絡的嗅探器,以獲得更多的受侵者的信息。嗅探器是一種常用的收集有用數據的方法,可以作為分析網絡數據包的設備。網絡嗅探器就是利用計算機的網絡接口截獲其他計算機的數據報文的一種工具,而且它與一般的鍵盤捕獲程序不同。鍵盤捕獲程序捕獲在終端上輸入的鍵值,而嗅探器捕獲的則是真實的網絡報文.如果把網絡嗅探器放置于網絡節點處,對網絡中的數據幀進行捕獲的一種被動監聽手段,是一種常用的收集有用數據的方法,可以分析各種信息包并描述出網絡的結構和使用的機器,由于它接收任何一個在同一網段上傳輸的數據包,所以也就存在著捕獲密碼、各種信息、秘密文檔等一些沒有加密的信息的可能性。這成為黑客們常用的擴大戰果的方法,用來奪取其他主機的控制權。當然嗅探器的正當用處主要是網絡管理人員分析網絡的流量,以便找出所關心的網絡中潛在的問題。例如,假設網絡的某一段運行得不是很好,報文的發送比較慢,而我們又不知道問題出在什么地方,此時就可以用嗅探器截獲網絡中的數據包,分析問題的所在。2、開發意義本次設計只是對抓取到的本機在網絡中的通信數據,比如說協議類型,源、目的地址和端口、數據包的大小等加以分析,而無法做到像Sniffer或者影音神探那種成熟的嗅探器所擁有的強大功能。作為從事網絡技術方面的人員來說,要想有效地利用它、防范它,就得深入地學習、分析網絡嗅探技術。最為重要的是,對于網絡嗅探器的設計與實現,使我對網絡通信,數據傳輸和網絡信息安全等有了切身的體會與融入,同時也是對網絡安全技術這門課的學以致用,不斷提高自我的一種有效途徑。二、設計分析1、實現目標(1) 實現網絡嗅探器的界面。(2) 實現抓取數據包的功能。(3)實現暫停抓取數據包功能。(4)實現清空列表功能。2、開發技術簡介(1)TCP/IP協議分析TCP/IP是供已連接因特網的計算機進行通信的通信協議。TCP/IP定義了電子設備(比如計算機)如何連入因特網,以及數據如何在它們之間傳輸的標準。TCP/IP是一個四層的分層體系結構。高層為傳輸控制協議,它負責聚集信息或把文件拆分成更小的包。這些包通過網絡傳送到接收端的TCP層,接收端的TCP層把包還原為原始文件。低層是網際協議,它處理每個包的地址部分,使這些包正確的到達目的地。網絡上的網關計算機根據信息的地址來進行路由選擇。即使來自同一文件的分包路由也有可能不同,但最后會在目的地匯合。TCP/IP使用客戶端/服務器模式進行通信。TCP/IP通信是點對點的,意思是通信是網絡中的一臺主機與另一臺主機之間的。TCP/IP與上層應用程序之間可以說是“沒有國籍的”,因為每個客戶請求都被看做是與上一個請求無關的。正是它們之間的“無國籍的”釋放了網絡路徑,才是每個人都可以連續不斷的使用網絡。許多用戶熟悉使用TCP/IP協議的高層應用協議。眾所周知,如今電腦上因特網都要作TCP/IP協議設置,顯然該協議成了當今地球村“人與人”之間的“牽手協議”。通俗而言:TCP負責發現傳輸的問題,一有問題就發出信號,要求重新傳輸,直到所有數據安全正確地傳輸到目的地。而IP是給因特網的每一臺電腦規定一個地址。1974年12月,卡恩、瑟夫的第一份TCP協議詳細說明正式發表。當時美國國防部與三個科學家小組簽定了完成TCP/IP的協議,結果由瑟夫領銜的小組捷足先登,首先制定出了通過詳細定義的TCP/IP協議標準。當時作了一個試驗,將信息包通過點對點的衛星網絡,再通過陸地電纜,再通過衛星網絡,再由地面傳輸,貫串歐洲和美國,經過各種電腦系統,全程9.4萬公里竟然沒有丟失一個數據位,遠距離的可靠數據傳輸證明了TCP/IP協議的成功。1983年1月1日,運行較長時期曾被人們習慣了的NCP被停止使用,TCP/IP協議作為因特網上所有主機間的共同協議,從此以后被作為一種必須遵守的規則被肯定和應用。正是由于TCP/IP協議,才有今天“地球村”因特網的巨大發展。以下簡單介紹TCP/IP中的協議都具備什么樣的功能,都是如何工作的:1、IPIP層接收由更低層(網絡接口層例如以太網設備驅動程序)發來的數據包,并把該數據包發送到更高層---TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數據包傳送到更低層。IP數據包是不可靠的,因為IP并沒有做任何事情來確認數據包是按順序發送的或者沒有被破壞。IP數據包中含有發送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。高層的TCP和UDP服務在接收數據包時,通常假設包中的源地址是有效的。也可以這樣說,IP地址形成了許多服務的認證基礎,這些服務相信數據包是從一個有效的主機發送來的。IP確認包含一個選項,叫做IPsourcerouting,可以用來指定一條源地址和目的地址之間的直接路徑。對于一些TCP和UDP的服務來說,使用了該選項的IP包好像是從路徑上的最后一個系統傳遞過來的,而不是來自于它的真實地點。這個選項是為了測試而存在的,說明了它可以被用來欺騙系統來進行平常是被禁止的連接。那么,許多依靠IP源地址做確認的服務將產生問題并且會被非法入侵。2、 TCP如果IP數據包中有已經封好的TCP數據包,那么IP將把它們向‘上'傳送到TCP層。TCP將包排序并進行錯誤檢查,同時實現虛電路間的連接。TCP數據包中包括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。TCP將它的信息送到更高層的應用程序,例如Telnet的服務程序和客戶程序。應用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設備驅動程序和物理介質,最后到接收方。3、 UDPUDP與TCP位于同一層,但它不管數據包的順序、錯誤或重發。因此,UDP不被應用于那些使用虛電路的面向連接的服務,UDP主要用于那些面向查詢---應答的服務,例如NFS。相對于FTP或Telnet,這些服務需要交換的信息量較小。使用UDP的服務包括NTP(網絡時間協議)和DNS(DNS也使用TCP)。4、 ICMPICMP與IP位于同一層,它被用來傳送IP的控制信息。它主要是用來提供有關通向目的地址的路徑信息。ICMP的‘Redirect'信息通知主機通向其他系統的更準確的路徑,而‘Unreachable'信息則指出路徑有問題。另外,如果路徑不可用,ICMP可以使TCP連接‘體面地'終止。PING是最常用的基于ICMP的服務。數據包簡介包是TCP/IP協議通信中的基本的數據單位之一,一般也叫數據包。必須把內裝產品的包裝盒放到一個郵局指定的專用紙箱里,這樣才能夠郵寄。這里,產品包裝盒相當于數據包,里面放著的產品相當于可用的數據,而專用紙箱就相當于幀,且一個幀中只有一個數據包。 “包”聽起來非常抽象,那么是不是不可見的呢?通過一定技術手段,是可以感知到數據包的存在的。通過數據包捕獲軟件,也可以將數據包捕獲并加以分析。就是用網絡嗅探器捕獲數據包,可以查看捕獲到的數據包的MAC地址、IP地址、協議類型端口號等細節。通過分析這些數據,網管員就可以知道網絡中到底有什么樣的數據包在活動了。數據包的結構非常復雜,不是三言兩語能夠說清的,在這里主要了解一下它的關鍵構成就可以了,這對于理解TCP/IP協議的通信原理是非常重要的。數據包主要由“目的IP地址”、“源IP地址”、“凈載數據”等部分構成。數據包的結構與我們平常寫信非常類似,目的IP地址是說明這個數據包是要發給誰的,相當于收信人地址;源IP地址是說明這個數據包是發自哪里的,相當于發信人地址;而凈載數據相當于信件的內容。正是因為數據包具有這樣的結構,安裝了TCP/IP協議的計算機之間才能相互通信。我們在使用基于TCP/IP協議的網絡時,網絡中其實傳遞的就是數據包。比如說當你上網打開網頁,這個簡單的動作,就是你先發送數據包給網站,它接收到了之后,根據你發送的數據包的IP地址,返回給你網頁的數據包,也就是說,網頁的瀏覽,實際上就是數據包的交換。理解數據包,對于網絡管理的網絡安全具有至關重要的意義。C#語言簡介C#是微軟于2000年提出的一種源于C++、類似于Java的面向對象編程語言,適合于分布式環境中的組件開發。C#是專門為.NET設計的,也是.NET編程的首選語言。C#的產生是因為微軟在.NET上需要一種類似Java的語言,而Java本身卻不能勝任這一需求。C#太像C++了,以至于它很難給人帶來體驗新事物時的那種興奮。不過,絕大部分的C++開發者將會因為C廿保留了C++中大部分其喜歡的、強大的、令人激動的功能而選擇使用它。C#通過避免一般的編程錯誤和自動資源管理,使得C#的穩定性得到了極大的增強。另外,C#語言功能強大且可以實現對象之間的轉換,輕松實現各種對象轉換成字符串。嗅探技術簡介數據在網絡上是以很小的稱為幀(Frame)的單位傳輸的,幀由幾部分組成,不同的部分執行不同的功能。幀通過特定的稱為網絡驅動程序的軟件進行成型,然后通過網卡發送到網線上,通過網線到達它們的目的機器,在目的機器的一端執行相反的過程。接收端機器的以太網卡捕獲到這些幀,并告訴操作系統幀已到達,然后對其進行存儲。就是在這個傳輸和接收的過程中,存在安全方面的問題。每一個在局域網(LAN)上的工作站都有其硬件地址,這些地址惟一地表示了網絡上的機器(這一點與Internet地址系統比較相似)。當用戶發送一個數據包時,這些數據包就會發送到LAN上所有可用的機器。在一般情況下,網絡上所有的機器都可以“聽”到通過的流量,但對不屬于自己的數據包則不予響應(換句話說,工作站A不會捕獲屬于工作站B的數據,而是簡單地忽略這些數據)。嗅探器工作在網絡的底層,在網絡上監聽數據包來獲取敏感信息。從原理上來說,在一個實際的系統中,數據的收發是由網卡來完成的,網卡接收到傳輸來的數據,網卡內的單片程序接收數據幀的目的MAC地址,根據計算機上的網卡驅動程序設置的接收模式判斷該不該接收,認為該接收就接收后產生中斷信號通知CPU,認為不該接收就丟掉不管,所以不該接收的數據網卡就截斷了,計算機根本就不知道。對于網卡來說一般有四種接收模式:a) 廣播方式:該模式下的網卡能夠接收網絡中的廣播信息。b) 組播方式:設置在該模式下的網卡能夠接收組播數據。c) 直接方式:在這種模式下,只有目的網卡才能接收該數據。d) 混雜模式:在這種模式下的網卡能夠接收一切通過它的數據,而不管該數據是否是傳給它的。首先,在以太網中是基于廣播方式傳送數據的,也就是說,所有的物理信號都要經過我的機器。其次,如果某個工作站的網絡接口處于混雜模式,那么它就可以捕獲網絡上所有的數據包和幀。Sniffer程序是一種利用以太網的特性把網絡適配卡(NIC,一般為以太網卡)置為混雜模式狀態的工具,一旦網卡設置為這種模式,它就能接收傳輸在網絡上的每一個信息包,而不管該數據是否傳給它的。三、詳細設計1、嗅探原理要知道在以太網中,所有的通訊都是廣播的,也就是說通常在同一個網段的所有網絡接口都可以訪問在物理媒體上傳輸的所有數據,而每一個網絡接口都有一個唯一的硬件地址,這個硬件地址也就是網卡的MAC地址,大多數系統使用48比特的地址,這個地址用來表示網絡中的每一個設備,一般來說每一塊網卡上的MFC地址都是不同的,每個網卡廠家得到一段地址,然后用這段地址分配給其生產的每個網卡一個地址。在硬件地址和IP地址間使用ARP和RARP協議進行相互轉換。在正常的情況下,一個網絡接口應該只響應這樣的兩種數據幀:1.與自己硬件地址相匹配的數據幀。2.發向所有機器的廣播數據幀。我們來看一個簡單的例子,如圖一所示,機器A、B、C與集線器HUB相連接,集線器HUB通過路由器Router訪問外部網絡。這是一個很簡單也很常見的情況,比如說在公司大樓里,我所在的網絡部辦公室里的幾臺機器通過集線器連接,而網絡部、開發部、市場部也是同樣如此,幾個部門的集線器通過路由器連接。還是回到我們的圖一上來,值得注意的一點是機器A、B、C使用一個普通的HUB連接的,不是用SWITCH,也不是用ROUTER,使用SWITCH和ROUTER的情況要比這復雜得多。我們假設一下機器A上的管理員為了維護機器C,使用了一個FTP命令向機器C進行遠程登陸,那么在這個用HUB連接的網絡里數據走向過程是這樣的。首先機器 A上的管理員輸入的登陸機器C的FTP口令經過應用層FTP協議、傳輸層TCP協議、網絡層IP協議、數據鏈路層上的以太網驅動程序一層一層的包裹,最后送到了物理層,我們的網線上。接下來數據幀送到了HUB上,現在由HUB向每一個接點廣播由機器A發出的數據幀,機器B接收到由HUB廣播發出的數據幀,并檢查在數據幀中的地址是否和自己的地址相匹配,發現不是發向自己的后把這數據幀丟棄,不予理睬。而機器 C也接收到了數據幀,并在比較之后發現是發現自己的,接下來他就對這數據幀進行分析處理。在上面這個簡單的例子中,機器B上的管理員如果很好奇,他很想知道究竟登陸機器C上FTP口令是什么?那么他要做的很簡單,僅僅需要把自己機器上的網卡置于混雜模式,并對接收到的數據幀進行分析,從而找到包含在數據幀中的口令信息。2、代碼設計主界面的設計對程序的成敗起著至關重要的作用,所以在設計代碼的時候要兼顧程序的可擴展性和簡潔性。下面給出主界面部分代碼:staticvoidMain(){try{Application.Run(newPacketMonitorForm());}catch(Exceptione){MessageBox.Show(e.Message,"網絡嗅探器",MessageBoxButtons.OK,MessageBoxIcon.Error);}}privatevoidInitialize(){//取得計算機的所有端口,并以列表的形式顯示出來IPAddress[]hosts=Dns.Resolve(Dns.GetHostName()).AddressList;if(hosts.Length==0)thrownewNotSupportedException("Thiscomputerdoesnothavenon-loopbackinterfacesinstalled!");for(inti=0;i<hosts.Length;i++){HostsMenu.MenuItems.Add(hosts[i].ToString(),newEventHandler(this.OnHostsClick));}m_PacketMonitors=newPacketMonitor[HostsMenu.MenuItems.Count];for(inti=0;i<m_PacketMonitors.Length;i++){m_PacketMonitors[i]=newPacketMonitor(hosts[i]);m_PacketMonitors[i].NewPacket+=newNewPacketEventHandler(this.OnNewPacket);}m_Packets=newArrayList();}privatevoidPacketMonitormForm_Closing(objectsender,CancelEventArgse){OnToolBarClick(this,newToolBarButtonClickEventArgs(StopButton));}publicvoidOnToolBarClick(objectsender,ToolBarButtonClickEventArgse){if(e.Button==StopButton){//停止監聽所有的端口for(inti=0;i<m_PacketMonitors.Length;i++){m_PacketMonitors[i].Stop();HostsMenu.MenuItems[i].Checked=false;}StatusBar.Text二"停止嗅探 "+string.Format("數據包總量:{0} 字節數:{1}bytes",m_Packets.Count,m_PacketsSize);}elseif(e.Button==StartButton){//開始監聽所有的端口for(inti=0;i<m_PacketMonitors.Length;i++){try{m_PacketMonitors[i].Start();}catch(Exceptionex){MessageBox.Show(this,"界面出現一個錯誤"+m_PacketMonitors[i].IP.ToString()+"\r\n\r\n["+ex.Message+"]","MPacketMonitor",MessageBoxButtons.OK,MessageBoxIcon.Error);}HostsMenu.MenuItems[i].Checked=true;}StatusBar.Text="檢測所有端口";}elseif(e.Button==ClearButton){//清除列表PacketList.Items.Clear();m_Packets.Clear();StatusBar.Text="清空列表";}elseif(e.Button==AboutButton){AboutFormaf=newAboutForm();af.ShowDialog(this);}}(詳細代碼見軟件壓縮包。)四、測試運行軟件的運行情況如下列圖:圖4-1亡帰徨設計網第幔探器1.=d回 ?1開蛤慈停止帝空蟲多源端口目的端口協礬型大小 時間主界面示意圖

圖4-2ij煤程設計網絡嗅擬器一源端口I目的端口一源端口1絡W134.1E&;7T52122,:.207.134.115:2434l^.'SOT.134.12&:7T5£1^.207.135.195:13T95:1371ZS.207.134.12&:2':->122.207.135.44:122.207.135.195:1-3T1Z1:56918l£E1絡W134.1E&;7T52122,:.207.134.115:2434l^.'SOT.134.12&:7T5£1^.207.135.195:13T95:1371ZS.207.134.12&:2':->122.207.135.44:122.207.135.195:1-3T1Z1:56918l£E:.2O7.133■:.EOT:1-38122.^07.i童:170:1^7120.207.130;17O:1ST"1:569181^.207.134.115:^43573:^3231玆.EUT.132.170:1-3?1£2,207.133-;39;,13S122.:.207.132.:.20:13S1ZZ.207.1昶:170:'r3T1^.207.1傘1T0;1STB9:137偉止嘎探1為Eg145.73;1...255.255.255.255:...1^3.244.145.76:1...12^.-20T.135.^55:137122/20T.135.^55:13758.61.164.170:3000lE^.EOT.135.255:138122.207.135.255:137239.255.255.250:...122.20T.135.255:13812^207.135.255:13712Z-20T.135.£55:137^39.255.^55.750:...255.255.255.2F5:...255.255.255.255:...135.255:13T12E.20T.135.255

溫馨提示

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

評論

0/150

提交評論