嗅探器專題

2021-09-05 05:21:08 字數 4079 閱讀 7259

嗅探器專題<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

(一)sniffer概念

1.sniffer定義

iss為sniffer這樣定義:sniffer是利用計算機的網路介面截獲目的地為其他計算機的資料報文的一種工具。

2.sniffer的用途

(1)sniffer(嗅探器)是一種常用的收集有用資料方法,這些資料可以是使用者的帳號和密碼,可以是一些商用機密資料等等。

(2)snifffer可以作為能夠捕獲網路報文的裝置。

嗅探器與一般的鍵盤捕獲程式不同。鍵盤捕獲程式捕獲在終端上輸入的鍵值,而嗅探器則捕獲真實的網路報文。

(二)預備知識

1.hub工作原理

由於乙太網等很多網路(常見共享hub連線的內部網)是基於匯流排方式,物理上是廣播的,就是當乙個機器發給另乙個機器的資料,共享hub先收到然後把它接收到的資料再發給其他的每乙個口,所以在共享hub中同一網段的所有機器的網絡卡都能接收到資料。

交換式hub的內部單片程式能記住每個口的mac位址,資料傳送時只能發給指定mac位址的計算機,其他計算機不能接受到該資料報。廣播資料報時,該網段內的計算機都能接受到。

2.網絡卡工作原理

網絡卡收到傳輸來的資料,網絡卡內的單片程式先接收資料頭的目的mac位址,根據計算機上的網絡卡驅動程式設定的接收模式判斷該不該接收,認為該接收就在接收後產生中斷訊號通知cpu,認為不該接收就丟棄不管,所以不該接收的資料網絡卡就截斷了,計算機根本就不知道。cpu得到中斷訊號產生中斷,作業系統就根據網絡卡驅動程式中設定的網絡卡中斷程式位址呼叫驅動程式接收資料,驅動程式接收資料後放入訊號堆疊讓作業系統處理。

3.區域網如何工作

資料在網路上是以很小的稱為幀(frame)的單位傳輸的幀由好幾部分組成,不同的部分執行不同的功能。(例如,乙太網的前12個位元組存放的是源和目的的位址,這些位告訴網路:資料的**和去處。乙太網幀的其他部分存放實際的使用者資料、tcp/ip的報文頭或ipx報文頭等等)。幀通過特定的網路驅動程式進行成型,然後通過網絡卡傳送到網線上。通過網線到達它們的目的機器,在目的機器的一端執行相反的過程。接收端機器的乙太網卡捕獲到這些幀,並告訴作業系統幀的到達,然後對其進行儲存。就是在這個傳輸和接收的過程中,嗅探器會造成安全方面的問題。

通常在區域網(lan)中同乙個網段的所有網路介面都有訪問在物理**上傳輸的所有資料的能力,而每個網路介面都還應該有乙個硬體位址,該硬體位址不同於網路中存在的其他網路介面的硬體位址,同時,每個網路至少還要乙個廣播位址。(代表所有的介面位址),在正常情況下,乙個合法的網路介面應該只響應這樣的兩種資料幀:

1、幀的目標區域具有和本地網路介面相匹配的硬體位址。

2、幀的目標區域具有

「廣播位址」。

在接受到上面兩種情況的資料報時,網**過cpu產生乙個硬體中斷,該中斷能引起作業系統注意,然後將幀中所包含的資料傳送給系統進一步處理。

當採用共享hub,使用者傳送乙個報文時,這些報文就會傳送到lan上所有可用的機器。在一般情況下,網路上所有的機器都可以「聽

」到通過的流量,但對不屬於自己的報文則不予響應(換句話說,工作站a不會捕獲屬於工作站b的資料,而是簡單的忽略這些資料)。

如果區域網中某台機器的網路介面處於雜收(promiscuous)模式(即網絡卡可以接收其收到的所有資料報,下面會詳細地講),那麼它就可以捕獲網路上所有的報文和幀,如果一台機器被配置成這樣的方式,它(包括其軟體)就是乙個嗅探器。

sniffer

sniffer原理

首先,要知道sniffer要捕獲的東西必須是要物理訊號能收到的報文資訊。顯然只要通知網絡卡接收其收到的所有包(一般叫作雜收promiscuous模式:指網路上的所有裝置都對匯流排上傳送的資料進行偵聽,並不僅僅是它們自己的資料。),在共享hub下就能接收到這個網段的所有包,但是交換hub下就只能是自己的包加上廣播包。

要想在交換hub下接收別人的包,那就要讓其發往你的機器所在口。交換hub記住乙個口的mac是通過接收來自這個口的資料後並記住其源mac,就像乙個機器的ip與mac對應的arp列表,交換hub維護乙個物理口(就是hub上的網線插口,這之後提到的所有hub口都是指網線插口)與mac的表,所以可以欺騙交換hub的。可以發乙個包設定源mac是你想接收的機器的mac,那麼交換hub就把你機器的網線插的物理口與那個mac對應起來了,以後發給那個mac的包就發往你的網線插口了,也就是你的網絡卡可以sniffer到了。注意這物理口與mac的表與機器的arp表一樣是動態重新整理的,那機器發包後交換hub就又記住他的口了,所以實際上是兩個在爭,這只能應用在只要收聽少量包就可以的場合。

內部網基於ip的通訊可以用arp欺騙別人機器讓其傳送給你的機器,如果要想不影響原來兩方的通訊,可以欺騙兩方,讓其都發給你的機器再由你的機器**,相當於做中間人,這用arp加上程式設計很容易實現。並且現在很多裝置支援遠端管理,有很多交換hub可以設定乙個口監聽別的口,不過這就要管理許可權了。

利用這一點,可以將一台計算機的網路連線設定為接受所有乙太網匯流排上的資料,從而實現sniffer。sniffer就是一種能將本地網絡卡狀態設成『雜收

』狀態的軟體,當網絡卡處於這種「雜收

」方式時,該網絡卡具備

「廣播位址

」,它對遇到的每乙個幀都產生乙個硬體中斷以便提醒作業系統處理流經該物理**上的每乙個報文包。(絕大多數的網絡卡具備置成雜收方式的能力)

ethernet的通訊

(1)在同乙個網段的所有網路介面都有訪問在物理**上傳輸的所有資料的能力

(2)每個網路介面都有乙個唯一的硬體位址(mac)

(3)每個網路至少還要乙個廣播位址

在正常情況下,乙個合法的網路介面應該只響應這樣的兩種資料幀:

(1)幀的目標區域具有和本地網路介面相匹配的硬體位址。

(2)幀的目標區域具有

「廣播位址」。

在接受到上面兩種情況的資料報時,nc通過cpu產生乙個硬體中斷,該中斷能引起作業系統注意,然後將幀中所包含的資料傳送給系統進一步處理。

而sniffer就是一種能將本地nc狀態設成(promiscuous)狀態的軟體,當nc處於這種「混雜

」方式時,該nc具備

「廣播位址

」,它對所有遭遇到的每乙個幀都產生乙個硬體中斷以便提醒作業系統處理流經該物理**上的每乙個報文包。(絕大多數的nc具備置成promiscuous方式的能力)

可見,sniffer工作在網路環境中的底層,它會攔截所有的正在網路上傳送的資料,並且通過相應的軟體處理,可以實時分析這些資料的內容,進而分析所處的網路狀態和整體布局。值得注意的是:sniffer是極其安靜的,它是一種消極的安全***。

通常sniffer所要關心的內容可以分成這樣幾類:

1、口令

(1)明文

(2)加密後的密文

2、金融帳號

許多使用者很放心在網上使用自己的信用卡或現金帳號,然而sniffer可以很輕鬆截獲在網上傳送的使用者姓名、口令、信用卡號碼、截止日期、帳號和pin.

3、**機密或敏感的資訊資料

通過攔截資料報,***者可以很方便記錄別人之間敏感的資訊傳送,或者乾脆攔截整個的email會話過程。

4、窺探低階的協議資訊。

如何發現和防止sniffer

發現sniffer

通過一些網路軟體,可以看到資訊包傳送情況(不是sniffer),向ping這樣的命令會告訴你掉了百分幾的包。如果網路中有人在listen,那麼資訊包傳送將無法每次都順暢的流到目的地。

(2)網路頻寬出現反常。

通過檢視網路頻寬的分布情況,對頻寬占用大的計算機進行檢查。有正在sniffer的計算機會非常慢。如果將sniffer的結果儲存為檔案,其檔案會非常大。

(3)檢視程序

ps -aux或: ps

–augx

pulist

怎樣防止被sniffer

(1)採用ssh加密方式傳輸

ssh(secure shell)

是乙個在應用程式中提供安全通訊的協議,它是建立在客戶機/伺服器模型上的。ssh伺服器的分配的埠是22,連線是通過使用一種來自rsa的演算法建立的。在授權完成後,接下來的通訊資料是用idea技術來加密的。這通常是較強的,適合與任何非秘密和非經典的通訊。ssh後來發展成為f-ssh,提供了高層次的,軍方級別的對通訊過程的加密。ssh和f-ssh都有商業或自由軟體版本存在。

(2)使用安全拓撲結構。三角形防火牆結構。

註明:本文部分內容摘自網際網路。

網路嗅探器

網路嗅探器 把網絡卡設定成混雜模式,並可實現對網路上傳輸的資料報的捕獲與分析。原理 通常的套接字程式只能響應與自己mac位址相匹配的 或者是 廣播形式發出的資料幀,對於其他形式的資料幀網路介面採取的動作是直接丟棄 為了使網絡卡接收所有經過他的封包,要將其設定成混雜模式,通過原始套接字來實現。設定混雜...

網路嗅探器 JunkieTheSniffer

junkiethesniffer 是一款實時的資料報嗅探器和分析器,其模組化的設計來完成多種不同的任務。junkiethesniffer 非常適用於幫助網路管理員和分析員。junkie的功能結合於tcpdump和wireshark,不同於tcpdump的是能夠任何深度協議的解析,不同於wiresha...

Python sniffer 網路嗅探器

import socket import threading import time activedegree dict flag 1 defmain global activedegree global glag 獲取本機ip位址 host socket.gethostbyname socket....