當前位置:首頁 » 網路連接 » 計算機網路實驗sniff的應用
擴展閱讀
電腦qq音樂的網路設置 2025-06-25 04:40:13
瑞訊網關網路設置 2025-06-25 04:39:29
樂視路由設置網路速度 2025-06-25 04:20:43

計算機網路實驗sniff的應用

發布時間: 2022-06-07 13:20:48

1. Sniffer是什麼怎麼

Sniffer,中文可以翻譯為嗅探器,是一種基於被動偵聽原理的網路分析方式。使用這種技術方式,可以監視網路的狀態、數據流動情況以及網路上傳輸的信息。當信息以明文的形式在網路上傳輸時,便可以使用網路監聽的方式來進行攻擊。將網路介面設置在監聽模式,便可以將網上傳輸的源源不斷的信息截獲。Sniffer技術常常被黑客們用來截獲用戶的口令,據說某個骨幹網路的路由器網段曾經被黑客攻入,並嗅探到大量的用戶口令。但實際上Sniffer技術被廣泛地應用於網路故障診斷、協議分析、應用性能分析和網路安全保障等各個領域。
本文將詳細介紹Sniffer的原理和應用。
一、Sniffer 原理
1.網路技術與設備簡介
在講述Sniffer的概念之前,首先需要講述區域網設備的一些基本概念。
數據在網路上是以很小的稱為幀(Frame)的單位傳輸的,幀由幾部分組成,不同的部分執行不同的功能。幀通過特定的稱為網路驅動程序的軟體進行成型,然後通過網卡發送到網線上,通過網線到達它們的目的機器,在目的機器的一端執行相反的過程。接收端機器的乙太網卡捕獲到這些幀,並告訴操作系統幀已到達,然後對其進行存儲。就是在這個傳輸和接收的過程中,嗅探器會帶來安全方面的問題。
每一個在區域網(LAN)上的工作站都有其硬體地址,這些地址惟一地表示了網路上的機器(這一點與Internet地址系統比較相似)。當用戶發送一個數據包時,這些數據包就會發送到LAN上所有可用的機器。
如果使用Hub/即基於共享網路的情況下,網路上所有的機器都可以「聽」到通過的流量,但對不屬於自己的數據包則不予響應(換句話說,工作站A不會捕獲屬於工作站B的數據,而是簡單地忽略這些數據)。如果某個工作站的網路介面處於混雜模式(關於混雜模式的概念會在後面解釋),那麼它就可以捕獲網路上所有的數據包和幀。
但是現代網路常常採用交換機作為網路連接設備樞紐,在通常情況下,交換機不會讓網路中每一台主機偵聽到其他主機的通訊,因此Sniffer技術在這時必須結合網路埠鏡像技術進行配合。而衍生的安全技術則通過ARP欺騙來變相達到交換網路中的偵聽。
2.網路監聽原理
Sniffer程序是一種利用乙太網的特性把網路適配卡(NIC,一般為乙太網卡)置為雜亂(promiscuous)模式狀態的工具,一旦網卡設置為這種模式,它就能接收傳輸在網路上的每一個信息包。
普通的情況下,網卡只接收和自己的地址有關的信息包,即傳輸到本地主機的信息包。要使Sniffer能接收並處理這種方式的信息,系統需要支持BPF,Linux下需要支持SOCKET一PACKET。但一般情況下,網路硬體和TCP/IP堆棧不支持接收或者發送與本地計算機無關的數據包,所以,為了繞過標準的TCP/IP堆棧,網卡就必須設置為我們剛開始講的混雜模式。一般情況下,要激活這種方式,內核必須支持這種偽設備Bpfilter,而且需要root許可權來運行這種程序,所以sniffer需要root身份安裝,如果只是以本地用戶的身份進入了系統,那麼不可能喚探到root的密碼,因為不能運行Sniffer。
也有基於無線網路、廣域網路(DDN, FR)甚至光網路(POS、Fiber Channel)的監聽技術,這時候略微不同於乙太網絡上的捕獲概念,其中通常會引入TAP (測試介入點)這類的硬體設備來進行數據採集。
3. Sniffer的分類
Sniffer分為軟體和硬體兩種,軟體的Sniffer有 Sniffer Pro、Network Monitor、PacketBone等,其優點是易於安裝部署,易於學習使用,同時也易於交流;缺點是無法抓取網路上所有的傳輸,某些情況下也就無法真正了解網路的故障和運行情況。硬體的Sniffer通常稱為協議分析儀,一般都是商業性的,價格也比較昂貴,但會具備支持各類擴展的鏈路捕獲能力以及高性能的數據實時捕獲分析的功能。
基於乙太網絡嗅探的Sniffer只能抓取一個物理網段內的包,就是說,你和監聽的目標中間不能有路由或其他屏蔽廣播包的設備,這一點很重要。所以,對一般撥號上網的用戶來說,是不可能利用Sniffer來竊聽到其他人的通信內容的。
4.網路監聽的目的
當一個黑客成功地攻陷了一台主機,並拿到了root許可權,而且還想利用這台主機去攻擊同一(物理)網段上的其他主機時,他就會在這台主機上安裝Sniffer軟體,對乙太網設備上傳送的數據包進行偵聽,從而發現感興趣的包。如果發現符合條件的包,就把它存到一個LOg文件中去。通常設置的這些條件是包含字「username」或「password」的包,這樣的包裡面通常有黑客感興趣的密碼之類的東西。一旦黑客截獲得了某台主機的密碼,他就會立刻進入這台主機。
如果Sniffer運行在路由器上或有路由功能的主機上,就能對大量的數據進行監控,因為所有進出網路的數據包都要經過路由器。
Sniffer屬於第M層次的攻擊。就是說,只有在攻擊者已經進入了目標系統的情況下,才能使用Sniffer這種攻擊手段,以便得到更多的信息。
Sniffer除了能得到口令或用戶名外,還能得到更多的其他信息,比如一個重要的信息、在網上傳送的金融信息等等。Sniffer幾乎能得到任何在乙太網上傳送的數據包。
二、Sniffer產品介紹
網路的安全性和高可用性是建立在有效的網路管理基礎之上的,網路管理包括配置管理、故障管理、性能管理、安全管理和計費管理五大部分。對於企業計算機網路來說,網路故障管理主要側重於實時的監控,而網路性能管理更看中歷史分析。
Sniffer網路分析儀是一個網路故障、性能和安全管理的有力工具,它能夠自動地幫助網路專業人員維護網路,查找故障,極大地簡化了發現和解決網路問題的過程,廣泛適用於Ethernet、Fast Ethernet、Token Ring、Switched LANs、FDDI、X.25、DDN、Frame Relay、ISDN、ATM和Gigabits等網路。
1.1 Sniffer產品的基本功能包括:
• 網路安全的保障與維護
1. 對異常的網路攻擊的實時發現與告警;
2. 對高速網路的捕獲與偵聽;
3. 全面分析與解碼網路傳輸的內容;
• 面向網路鏈路運行情況的監測
1. 各種網路鏈路的運行情況;
2. 各種網路鏈路的流量及阻塞情況;
3. 網上各種協議的使用情況;
4. 網路協議自動發現;
5. 網路故障監測;
• 面向網路上應用情況的監測
1. 任意網段應用流量、流向;
2. 任意伺服器應用流量、流向;
3. 任意工作站應用流量、流向;
4. 典型應用程序響應時間;
5. 不同網路協議所佔帶寬比例;
6. 不同應用流量、流向的分布情況及拓撲結構;
• 強大的協議解碼能力,用於對網路流量的深入解析
1. 對各種現有網路協議進行解碼;
2. 對各種應用層協議進行解碼;
3. Sniffer協議開發包(PDK)可以讓用戶簡單方便地增加用戶自定義的協議;
• 網路管理、故障報警及恢復
運用強大的專家分析系統幫助維護人員在最短時間內排除網路故障;
1.2 實時監控統計和告警功能
根據用戶習慣,Sniffer可提供實時數據或圖表方式顯示統計結果,統計內容包括:
 網路統計:如當前和平均網路利用率、總的和當前的幀數及位元組數、總站數和激活的站數、協議類型、當前和總的平均幀長等。
 協議統計:如協議的網路利用率、協議的數、協議的位元組數以及每種協議中各種不同類型的幀的統計等。
 差錯統計:如錯誤的CRC校驗數、發生的碰撞數、錯誤幀數等。
 站統計:如接收和發送的幀數、開始時間、停止時間、消耗時間、站狀態等。最多可統計1024個站。
 幀長統計:如某一幀長的幀所佔百分比,某一幀長的幀數等。
當某些指標超過規定的閾值時,Sniffer可以自動顯示或採用有聲形式的告警。
Sniffer可根據網路管理者的要求,自動將統計結果生成多種統計報告格式,並可存檔或列印輸出。
1.3 Sniffer實時專家分析系統
高度復雜的網路協議分析工具能夠監視並捕獲所有網路上的信息數據包,並同時建立一個特有網路環境下的目標知識庫。智能的專家技術掃描這些信息以檢測網路異常現象,並自動對每種異常現象進行歸類。所有異常現象被歸為兩類:一類是symptom(故障徵兆提示,非關鍵事件例如單一文件的再傳送),另一類是diagnosis(已發現故障的診斷,重復出現的事件或要求立刻採取行動的致命錯誤)。經過問題分離、分析且歸類後,Sniffer將實時地,自動發出一份警告、對問題進行解釋並提出相應的建議解決方案。
Sniffer與其他網路協議分析儀最大的差別在於它的人工智慧專家系統(Expert System)。簡單地說,Sniffer能自動實時監視網路,捕捉數據,識別網路配置,自動發現網路故障並進行告警,它能指出:
 網路故障發生的位置,以及出現在OSI第幾層。
 網路故障的性質,產生故障的可能的原因以及為解決故障建議採取的行動。
 Sniffer 還提供了專家配製功能,用戶可以自已設定專家系統判斷故障發生的觸發條件。
 有了專家系統,您無需知道那些數據包構成網路問題,也不必熟悉網路協議,更不用去了解這些數據包的內容,便能輕松解決問題。
1.4 OSI全協議七層解碼
Sniffer的軟體非常豐富,可以對在各種網路上運行的400多種協議進行解碼,如TCP/IP、Novell Netware、DECnet、SunNFS、X-Windows、HTTP、TNS SLQ*Net v2(Oracle)、Banyan v5.0和v6.0、TDS/SQL(Sybase)、X.25、Frame Realy、PPP、Rip/Rip v2、EIGRP、APPN、SMTP等。還廣泛支持專用的網路互聯橋/路由器的幀格式。
Sniffer可以在全部七層OSI協議上進行解碼,目前沒有任何一個系統可以做到對協議有如此透徹的分析;它採用分層方式,從最低層開始,一直到第七層,甚至對ORACAL資料庫、SYBASE資料庫都可以進行協議分析;每一層用不同的顏色加以區別。
Sniffer對每一層都提供了Summary(解碼主要規程要素)、Detail(解碼全部規程要素)、Hex(十六進制碼)等幾種解碼窗口。在同一時間,最多可以打開六個觀察窗口。
Sniffer還可以進行強制解碼功能(Protocl Forcing),如果網路上運行的是非標准協議,可以使用一個現有標准協議樣板去嘗試解釋捕獲的數據。
Sniffer提供了在線實時解碼分析和在線捕捉,將捕捉的數據存檔後進行解碼分析二種功能。
二、Sniffer的商業應用
Sniffer被 Network General公司注冊為商標,這家公司以出品Sniffer Pro系列產品而知名。目前最新版本為Sniffer Portable 4.9,這類產品通過網路嗅探這一技術方式,對數據協議進行捕獲和解析,能夠大大幫助故障診斷和網路應用性能的分析鑒別。
Network General 已經被NetScout公司收購。
三、Sniffer的擴展應用
1、專用領域的Sniffer
Sniffer被廣泛應用到各種專業領域,例如FIX (金融信息交換協議)、MultiCast(組播協議)、3G (第三代移動通訊技術)的分析系統。其可以解析這些專用協議數據,獲得完整的解碼分析。
2、長期存儲的Sniffer應用
由於現代網路數據量驚人,帶寬越來越大。採用傳統方式的Sniffer產品很難適應這類環境,因此誕生了伴隨有大量硬碟存儲空間的長期記錄設備。例如nGenius Infinistream等。
3、易於使用的Sniffer輔助系統
由於協議解碼這類的應用曲高和寡,很少有人能夠很好的理解各類協議。但捕獲下來的數據卻非常有價值。因此在現代意義上非常流行如何把協議數據採用最好的方式進行展示,包括產生了可以把Sniffer數據轉換成Excel的BoneLight類型的應用和把Sniffer分析數據進行圖形化的開源系統PacketMap等。這類應用使用戶能夠更簡明地理解Sniffer數據。
4、無線網路的Sniffer
傳統Sniffer是針對有線網路中的區域網而言,所有的捕獲原理也是基於CSMA/CD的技術實現。隨著WLAN的廣泛使用,Sniffer進一步擴展到802.11A/B/G/N的無線網路分析能力。無線網路相比傳統網路無論從捕獲的原理和接入的方式都發生了較大改變。這也是Sniffer技術發展趨勢中非常重要的部分.

2. 嗅探器的作用是什麼

SNIFFER(嗅探器)-簡介Sniffer(嗅探器)是一種常用的收集有用數據方法,這些數據可以是用戶的帳號和密碼,可以是一些商用機密數據等等。Snifffer可以作為能夠捕獲網路報文的設備,ISS為Sniffer這樣定義:Sniffer是利用計算機的網路介面截獲目的地為其他計算機的數據報文的一種工具。Sniffer的正當用處主要是分析網路的流量,以便找出所關心的網路中潛在的問題。例如,假設網路的某一段運行得不是很好,報文的發送比較慢,而我們又不知道問題出在什麼地方,此時就可以用嗅探器來作出精確的問題判斷。 在合理的網路中,sniffer的存在對系統管理員是致關重要的,系統管理員通過sniffer可以診斷出大量的不可見模糊問題,這些問題涉及兩台乃至多台計算機之間的異常通訊有些甚至牽涉到各種的協議,藉助於sniffer%2C系統管理員可以方便的確定出多少的通訊量屬於哪個網路協議、佔主要通訊協議的主機是哪一台、大多數通訊目的地是哪台主機、報文發送佔用多少時間、或著相互主機的報文傳送間隔時間等等,這些信息為管理員判斷網路問題、管理網路區域提供了非常寶貴的信息。 嗅探器與一般的鍵盤捕獲程序不同。鍵盤捕獲程序捕獲在終端上輸入的鍵值,而嗅探器則捕獲真實的網路報文。

3. 剛裝了sniffer,但是為什麼一點監視那個小三角按鈕,電腦就藍屏並自動重啟呢

Sniffer軟體是NAI公司推出的功能強大的協議分析軟體,具有捕獲網路流量進行詳細分析、實時監控網路活動、利用專家分析系統診斷問題、收集網路利用率和錯誤等功能。Sniffer Pro 4.6可以運行在各種Windows平台上,只要安裝在網路中的任何一台機器上,都可以監控到整個網路。以下以Sniffer 4.7.5漢化版本為例,介紹一下Snffer在區域網維護中的具體應用。一、Sniffer軟體的安裝在網上下載Sniffer軟體後,直接運行安裝程序,系統會提示輸入個人信息和軟體注冊碼,安裝結束後,重新啟動,之後再安裝Sniffer漢化補丁。運行Sniffer程序後,系統會自動搜索機器中的網路適配器,點擊確定進入Sniffer主界面。二、Sniffer軟體的使用打開Sniffer軟體後,會出現主界面(如圖1),顯示一些機器列表和Sniffer軟體目前的運行情況,上面是軟體的菜單,下面有一些快捷工具菜單,左側還有一排快捷菜單按鈕。由於使用的是漢化版軟體,因此部分詞語漢化不是太准確。1、獲取網路中的機器列表Sniffer軟體運行後,首先要搜索網路中的機器。在"工具」菜單中找到"地址簿」選項並運行,在"地址簿」中的左側工具菜單中,可以找到一個"放大鏡」的圖標,這是"自動搜索」的按鈕。運行"自動搜索」功能後,在IP地址段中輸入網路的開始IP地址和結束地址,然後系統會自動搜索。搜索完成後,會出現一個如圖1的機器列表。2、保存機器列表Sniffer搜索網路中所有的機器列表後,可以在"資料庫」菜單中選擇"保存地址簿」選項,將當前的機器列表保存,以備日後使用。由於Sniffer的地址簿保存了網路中客戶機的IP地址、網卡的MAC地址等信息,如果網路中的客戶機更換了網卡,則必須重新搜索機器列表並重新保存地址簿。如果網路中沒有新機器增加,就無需更新此地址簿。三、Sniffer菜單及功能簡介Sniffer進入時,需要設置當前機器的網卡信息。進入Sniffer軟體後,會出現如圖2的界面,可以看到Sniffer軟體的中文菜單,下面是一些常用的工具按鈕。在日常的網路維護中,使用這些工具按鈕就可以解決問題了。1、主機列表按鈕:保存機器列表後,點擊此鈕,Sniffer會顯示網路中所有機器的信息(如圖1),其中,Hw地址一欄是網路中的客戶機信息。網路中的客戶機一般都有惟一的名字,因此在Hw地址欄中,可以看到客戶機的名字。對於安裝Sniffer的機器,在Hw地址欄中用"本地」來標識;對於網路中的交換機、路由器等網路設備,Sniffer只能顯示這些網路設備的MAC地址。入埠數據包和出埠數據包,指的是該客戶機發送和接收的數據包數量,後面還有客戶機發送和接收的位元組大小。可以據此查看網路中的數據流量大小。2、矩陣按鈕:矩陣功能通過圓形圖例說明客戶機的數據走向,可以看出與客戶機有數據交換的機器。使用此功能時,先選擇客戶機,然後點擊此鈕就可以了。3、請求響應時間按鈕:請求響應時間功能,可以查看客戶機訪問網站的詳細情況。當客戶機訪問某站點時,可以通過此功能查看從客戶機發出請求到伺服器響應的時間等信息。4、警報日誌按鈕:當Sniffer監控到網路的不正常情況時,會自動記錄到警報日誌中。所以打開Sniffer軟體後,首先要查看一下警報日誌,看網路運行是否正常。四、Sniffer在網路維護中的應用——解決網路傳輸質量問題Sniffer在網吧網路中的應用,主要是利用其流量分析和查看功能,解決網吧中出現的網路傳輸質量問題。1、廣播風暴:廣播風暴是網吧網路最常見的一個網路故障。網路廣播風暴的產生,一般是由於客戶機被病毒攻擊、網路設備損壞等故障引起的。可以使用Sniffer中的主機列表功能,查看網路中哪些機器的流量最大,結合矩陣就可以看出哪台機器數據流量異常。從而,可以在最短的時間內,判斷網路的具體故障點。2、網路攻擊:隨著網路的不斷發展,黑客技術吸引了不少網路愛好者。於是,一些初級黑客們,開始拿網吧來做實驗,DDoS攻擊成為一些黑客炫耀自己技術的一種手段,由於網吧本身的數據流量比較大,加上外部DDoS攻擊,網吧的網路可能會出現短時間的中斷現象。對於類似的攻擊,使用Sniffer軟體,可以有效判斷網路是受廣播風暴影響,還是來自外部的攻擊。3、檢測網路硬體故障:在網路中工作的硬體設備,只要有所損壞,數據流量就會異常,使用Sniffer可以輕松判斷出物理損壞的網路硬體設備.如果你使用的是千兆網卡(現在很多主板都是千兆網卡)那麼一定要用Sniffer Pro V4.7.5 SP5沒有打SP5的Sniffer不能識別千兆網卡,在啟動後host table里沒有本地主機網上給得很多Sniffer的注冊碼用不成的給大家一個能用的注冊碼。在壓縮包里的Sn文件里。

4. sniffer為什麼截獲另外兩個機器的通信內容其原理是什麼

Sniffer 原理
在講述Sniffer的概念之前,首先需要講述區域網設備的一些基本概念。
數據在網路上是以很小的稱為幀(Frame)的單位傳輸的,幀由幾部分組成,不同的部分執行不同的功能。幀通過特定的稱為網路驅動程序的軟體進行成型,然後通過網卡發送到網線上,通過網線到達它們的目的機器,在目的機器的一端執行相反的過程。接收端機器的乙太網卡捕獲到這些幀,並告訴操作系統幀已到達,然後對其進行存儲。就是在這個傳輸和接收的過程中,嗅探器會帶來安全方面的問題。

每一個在區域網(LAN)上的工作站都有其硬體地址,這些地址惟一地表示了網路上的機器(這一點與Internet地址系統比較相似)。當用戶發送一個數據包時,這些數據包就會發送到LAN上所有可用的機器。

在一般情況下,網路上所有的機器都可以「聽」到通過的流量,但對不屬於自己的數據包則不予響應(換句話說,工作站A不會捕獲屬於工作站B的數據,而是簡單地忽略這些數據)。如果某個工作站的網路介面處於混雜模式,那麼它就可以捕獲網路上所有的數據包和幀。

網路監聽原理
Sniffor程序是一種利用乙太網的特性把網路適配卡(NIC,一般為乙太網卡)置為雜亂(promiscuous)模式狀態的工具,一旦網卡設置為這種模式,它就能接收傳輸在網路上的每一個信息包。

普通的情況下,網卡只接收和自己的地址有關的信息包,即傳輸到本地主機的信息包。要使Sniffer能接收並處理這種方式的信息,系統需要支持BPF,Linux下需要支持SOCKET一PACKET。但一般情況下,網路硬體和TCP/IP堆棧不支持接收或者發送與本地計算機無關的數據包,所以,為了繞過標準的TCP/IP堆棧,網卡就必須設置為我們剛開始講的混雜模式。一般情況下,要激活這種方式,內核必須支持這種偽設備Bpfilter,而且需要root許可權來運行這種程序,所以sniffer需要root身份安裝,如果只是以本地用戶的身份進人了系統,那麼不可能喚探到root的密碼,因為不能運行Sniffer。

基於Sniffer這樣的模式,可以分析各種信息包並描述出網路的結構和使用的機器,由於它接收任何一個在同一網段上傳輸的數據包,所以也就存在著捕獲密碼、各種信息、秘密文檔等一些沒有加密的信息的可能性。這成為黑客們常用的擴大戰果的方法,用來奪取其他主機的控制權

Snifffer的分類
Sniffer分為軟體和硬體兩種,軟體的Sniffer有 NetXray、Packetboy、Net monitor等,其優點是物美價廉,易於學習使用,同時也易於交流;缺點是無法抓取網路上所有的傳輸,某些情況下也就無法真正了解網路的故障和運行情況。硬體的Sniffer通常稱為協議分析儀,一般都是商業性的,價格也比較貴。

實際上本文中所講的Sniffer指的是軟體。它把包抓取下來,然後打開並查看其中的內容,可以得到密碼等。Sniffer只能抓取一個物理網段內的包,就是說,你和監聽的目標中間不能有路由或其他屏蔽廣播包的設備,這一點很重要。所以,對一般撥號上網的用戶來說,是不可能利用Sniffer來竊聽到其他人的通信內容的。

以上是我找的,我是參考這個答題的。。。華理的哈

5. xp里的sniffer怎麼用啊

簡述Sniffer

本文是一簡單的關於SHIFFER的描述,對於不太知道SNIFFER的人來說可能適用,
高手就免進了,要深一層次的就看如袁哥,BACKEND寫的文章吧。

I 什麼是SNIFFER呢?

一般我們在講的SNIFFER程序是把NIC(網路適配卡,一般如乙太網卡)置為一種
叫promiscuous雜亂模式的狀態,一旦網卡設置為這種模式,它就能是SNIFFER程序
能接受傳輸在網路上的每一個信息包。普通的情況下,網卡只接受和自己的地址
有關的信息包,即傳輸到本地主機的信息包。要使SNIFFER能接受處理這種方式
的信息,就需要系統支持bpf,LINUX下如SOCKET-PACKET,但一般情況下網路硬體
和TCP/IP堆棧是不支持接受或者發送與本地計算機無關的數據包,所以為了繞過
標準的TCP/IP堆棧,網卡就必須設置為我們剛開始將的雜亂模式,一般情況下,
要激活這種方式,必須內核支持這種偽設備bpfilter,而且需要ROOT用戶來運行
這種SNIFFER程序,所以大家知道SNIFFER需要ROOT身份安裝,而你即使以本地用戶
進入了系統,你也嗅探不到ROOT的密碼,因為不能運行SNIFFER。

基於SNIFFER這樣的模式,可以分析各種信息包可以很清楚的描述出網路的結構
和使用的機器,由於它接受任何一個在同一網段上傳輸的數據包,所以也就存在著
SNIFFER可以用來捕獲密碼,EMAIL信息,秘密文檔等一些其他沒有加密的信息。所以
這成為黑客們常用的擴大戰果的方法,奪取其他主機的控制權。

下面描述了一些傳輸介質被監聽的可能性:

Ethernet 監聽的可能性比較高,因為Ethernet網是一個廣播型的網路,困擾著
INTERNET的大多數包監聽時間都是一些運行在一台計算機中的包監聽
程序的結果。這台計算機和其他計算機,一個網關或者路由器形成一個
乙太網。

FDDI Token- 監聽的可能性也比較高,盡管令牌網內的並不是一個廣播型網路,
ring 實際上,帶有令牌的那些包在傳輸過程中,平均要經過網路上一
半的計算機。但高的傳輸率將使監聽變得困難。

電話線 監聽的可能性中等,電話線可以被一些與電話公司協作的人或者一些
有機會在物理上訪問到線路的人搭線竊聽,在微波線路上的信息也
會被截獲。在實際中,高速的MODEM比低速的MODEM搭線困難的多,
因為高速MODEM引入了許多頻率。

IP通過有 監聽的可能性比較高,使用有線電視信道發送IP數據包依靠RF調制
線電視信道 解調器,RF數據機使用一個TV通道用於上行,一個用於下行。
在這些線路上傳輸的信息沒有加密,因此,可以被一些可以物理上
訪問到TV電纜的人截獲。

微波和 監聽的可能性比較高,無線電本來上一個廣播型的傳輸媒介,任何一
無線電 一個無線電接受機的人可以截獲那些傳輸的信息。

現在多數的SNIFFER只監視連接時的信息包,原因是SNIFFER如果接受全部
的信息包,一個是LOG記錄極其大,而且會佔用大量的CPU時間,所以在一個擔負
繁忙任務的計算機中進行監聽,由於佔用的CPU和帶寬就可以懷疑有SNIFFER在工作,
當你覺得有異常現象的時候就先需要一些簡單的方法檢測。

雖然可以使用PS或者netstat的命令去查看是否有可以進程和連接信息的轉態,
但入侵者改變了ps或者netstat程序也就不能發現這些程序了,其實修改ps命令只
須短短數條SHELL命令,即可將監聽軟體的名字過濾掉。

下面的兩個方法原理簡單,但操作起來比較困難:

1,對於懷疑運行監聽程序的機器,用正確的IP地址和錯誤的物理地址去PING,運行
監聽程序的機器回有響應,這是因為正常的機器不接受錯誤的物理地址,處於監
聽狀態的機器能接受,如果他的IP STACK不再次反向檢查的話,就會響應,這種
方法依賴系統的IP STACK,對有些系統可能行不通。

2,往網上發大量不存在的物理地址的包,由於監聽程序將處理這些包,將導致性能
下降,通過比較前後該機器性能(icmp echo delay等方法)加以判斷,這種方法
難度較大點。

一些流行的SNIFFER

SNIFFIT:這是一個比較的SNIFFER,它由Brecht Clearhout所寫,這是你應該最先
用的程序,這個SNIFFER默認狀態下只接受最先的400個位元組的信息包,這對於一次
登陸會話進程剛剛好。:p

SNORT:這個SNIFFER有很多選項供你使用並可移植性強,可以記錄一些連接信息,
用來跟蹤一些網路活動。

TCP DUMP:這個SNIFFER很有名,FREEBSD還搭帶在系統上,是一個被很多UNIX高手
認為是一個專業的網路管理工具,記得以前Tsutomu Shimomura (應該叫下村
侵吧)就是使用他自己修改過的TCPDUMP版本來記錄了KEVIN MITNICK攻擊他系統的
記錄,後來就配合FBI抓住了KEVIN MITNICK,後來他寫了一文:使用這些LOG
記錄描述了那次的攻擊,How Mitnick hacked Tsutomu Shimomura with an IP sequence attack
(http://www.attrition.org/security/newbie/security/sniffer/shimomur.txt)

ADMsniff:這是非常有名的ADM黑客集團寫的一個SNIFFER程序。

linsniffer:這是一個專門設計雜一LINUX平台上的SNIFFER。

Esniffer:這個也是一個比較有名的SNIFFER程序。

Sunsniff:這個是用在SUNOS系統上的SNIFFER,此程序應該在十年前推出的吧。

Solsniffer:這是個Solaris sniffer,主要是修改了SunSniff專門用來可以
方便的在Solair平台上編譯。

這些程序attrition收集起來了,大家可以到下面的URL下載:
http://www.attrition.org/security/newbie/security/sniffer/

一些流行的檢測SNIFFER的程序:

http://www.attrition.org/security/newbie/security/sniffer/promisc.c--
是一個很小的C程序,當編譯好後,會查找本地機器上任何處於雜亂模式的NIC網路
適配卡。

http://www.attrition.org/security/newbie/security/sniffer/neped.c--
是一個用來遠程檢查任何嗅探活動的程序,可惜它只在LINUX下編譯,當然你
也可以簡單的使用'ifconfig -a'來檢查你的UNIX機器是否有PROMISC標志。

http://www.l0pht.com/antisniff/這是L0pht寫的很好的反SNIFFER程序,L0PHT
還打算公開LINUX版本上的源碼版本。

另外,如果機器上使用兩塊網卡,把一塊設置為雜亂模式,並把IP地址設置
為0.0.0.0,另一塊卡處於正常的模式並是正確的地址,這樣將很難發現SNIFFER的
存在。

一些資源:

大家可以到http://www.securityfocus.com/找到很多關於SNIFFER的程序,
PHRACK 54(FILE 10)的文章awesome article 很好的解釋了很多方法和技巧來對付SNIFFER,
http://www.attrition.org/security/newbie/security/sniffer/shimomur.txt
是Shimomura寫的文章(How Mitnick hacked Tsutomu Shimomura with an IP sequence attack)
。也可以到http://www.l0pht.com/站點下載Antisniffer,
這確實是一個不錯的工具。

6. 嗅探的SNIFF原理

要知道在乙太網中,所有的通訊都是廣播的,也就是說通常在同一個網段的所有網路介面都可以訪問在物理媒體上傳輸的所有數據,而每一個網路介面都有一個唯一的硬體地址,這個硬體地址也就是網卡的MAC地址,大多數系統使用48比特的地址,這個地址用來表示網路中的每一個設備,一般來說每一塊網卡上的MAC地址都是不同的,每個網卡廠家得到一段地址,然後用這段地址分配給其生產的每個網卡一個地址。在硬體地址和IP地址間使用ARP和RARP協議進行相互轉換。
在正常的情況下,一個網路介面應該只響應這樣的兩種數據幀:
1.與自己硬體地址相匹配的數據幀。
2.發向所有機器的廣播數據幀。
在一個實際的系統中,數據的收發是由網卡來完成的,網卡接收到傳輸來的數據,網卡內的單片程序接收數據幀的目的MAC地址,根據計算機上的網卡驅動程序設置的接收模式判斷該不該接收,認為該接收就接收後產生中斷信號通知CPU,認為不該接收就丟掉不管,所以不該接收的數據網卡就截斷了,計算機根本就不知道。CPU得到中斷信號產生中斷,操作系統就根據網卡的驅動程序設置的網卡中斷程序地址調用驅動程序接收數據,驅動程序接收數據後放入信號堆棧讓操作系統處理。而對於網卡來說一般有四種接收模式:
廣播方式:該模式下的網卡能夠接收網路中的廣播信息。組播方式:設置在該模式下的網卡能夠接收組播數據。
直接方式:在這種模式下,只有目的網卡才能接收該數據。混雜模式:在這種模式下的網卡能夠接收一切通過它的數據,而不管該數據是否是傳給它的。
好了,現在我們總結一下,首先,我們知道了在乙太網中是基於廣播方式傳送數據的,也就是說,所有的物理信號都要經過我的機器,再次,網卡可以置於一種模式叫混雜模式(promiscuous),在這種模式下工作的網卡能夠接收到一切通過它的數據,而不管實際上數據的目的地址是不是他。這實際上就是我們SNIFF工作的基本原理:讓網卡接收一切他所能接收的數據。
我們來看一個簡單的例子,如圖一所示,機器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口令是什麼?那麼他要做的很簡單,僅僅需要把自己機器上的網卡置於混雜模式,並對接收到的數據幀進行分析,從而找到包含在數據幀中的口令信息。
sniff做法
在上一節里,我們已經知道了SNIFF的基本原理是怎麼一回事,這一節我們來親自動手做一個自己的sniff,畢竟,用程序代碼來說話比什麼都要來得真實,也容易加深理解。
回頭想一想我們上面說的原理,我們要做的事情有幾件:
1. 把網卡置於混雜模式。 2. 捕獲數據包。 3.分析數據包。
註:下面的源代碼取至Chad Renfro的《Basic Packet-SnifferConstruction from the Ground Up》一文中
/************************Tcp_sniff_2.c********************/
1.#include
2.#include
3.#include
4.#include
5.#include
6.#include
7.#include
8.#include
9.#include headers.h
#define INTERFACE eth0
/*Prototype area*/
1 0 int Open_Raw_Socket(void);
11 int Set_Promisc(char *interface,intsock);
12 int main() {
13int sock,bytes_recieved,fromlen;
14.char buffer[65535];
15.struct sockaddr_in from;
16.struct ip *ip;
17.struct tcp *tcp;
18.sock = Open_Raw_Socket();
19. Set_Promisc(INTERFACE,sock);
20. while(1)
22. {
23. fromlen = sizeof from;
24. bytes_recieved = recvfrom(sock,buffer,sizeofbuffer,0,(struct sockaddr *)&from,&fromlen);
25. printf( Bytes received :::%5d ,bytes_recieved);
26. printf(Source address :::%s ,inet_ntoa(from.sin_addr));
27. ip = (struct ip *)buffer;
/*See if this is a TCP packet*/
28. if(ip->ip_protocol == 6) {
29. printf(IP header length :::%d ,ip->ip_length);
30. printf(Protocol :::%d ,ip->ip_protocol);
31. tcp = (struct tcp *)(buffer +(4*ip->ip_length));
32. printf(Source port :::%d ,ntohs(tcp->tcp_source_port));
33. printf(Dest port :::%d ,ntohs(tcp->tcp_dest_port));
34. }
35. }
36.}
37 int Open_Raw_Socket() {
38. int sock;
39. if((sock = socket(AF_INET,SOCK_RAW,IPPROTO_TCP)) < 0){
/*Then the socket was not created properly and must die*/
40. perror(The raw socket was not created);
41. exit(0);
42. };
43. return(sock);
44. }
45 int Set_Promisc(char *interface,int sock ) {
46. struct ifreq ifr;
47. strncpy(ifr.ifr_name,interface,strnlen(interface)+1);
48. if((ioctl(sock,SIOCGIFFLAGS,&amp;ifr) == -1)) {
/*Could not retrieve flags for the interface*/
49. perror(Could not retrive flags for the interface);
50. exit(0);
51. }
52. printf(The interface is ::: %s ,interface);
53. perror(Retrieved flags from interface successfully);
54. ifr.ifr_flags |= IFF_PROMISC;
55. if (ioctl (sock,SIOCSIFFLAGS,&amp;ifr) == -1 ) {
/*Could not set the flags on the interface */
56. perror(Could not set the PROMISC flag:);
57. exit(0);
58. }
59. printf(Setting interface ::: %s ::: to promisc,interface);
60. return(0);
61. }
/***********************EOF**********************************/
上面這段程序中有很詳細的註解,不過我想還是有必要說一說,首先第10行--intOpen_Raw_Socket(void);是我們的自定義函數,具體內容如下:
37 int Open_Raw_Socket() {
38. int sock;
39. if((sock = socket(AF_INET,SOCK_RAW,IPPROTO_TCP)) < 0){
/*Then the socket was not created properly and must die*/
40. perror(The raw socket was not created);
41. exit(0);
42. };
43. return(sock);
44. }
第39行 if((sock = socket(AF_INET,SOCK_RAW,IPPROTO_TCP)) < 0) {
這里我們調用了socket函數,使創建了了一個原始套介面,使之收到TCP/IP信息包。
接下來第11行-int Set_Promisc(char *interface,intsock),這也是我們的自定義函數,目的是把網卡置於混雜模式,具體內容如下:
45 int Set_Promisc(char *interface,int sock ) {
46. struct ifreq ifr;
47. strncpy(ifr.ifr_name,interface,strlen(interface)+1);
48. if((ioctl(sock,SIOCGIFFLAGS,&amp;ifr) == -1)) {
/*Could not retrieve flags for the interface*/
49. perror(Could not retrive flags for the interface);
50. exit(0);
51. }
52. printf(The interface is ::: %s ,interface);
53. perror(Retrieved flags from interface successfully);
54. ifr.ifr_flags |= IFF_PROMISC;
55. if (ioctl (sock,SIOCSIFFLAGS,&amp;ifr) == -1 ) {
/*Could not set the flags on the interface */
56. perror(Could not set the PROMISC flag:);
57. exit(0);
58. }
59. printf(Setting interface ::: %s ::: to promisc,interface);
60. return(0);
61. }
首先 struct ifreq ifr; 定一了一個ifrreg的結構ifr,接下來strncpy(ifr.ifr_name,interface,strnlen(interface)+1);,就是把我們網路設備的名字填充到ifr結構中,在這里#define INTERFACE eth0 ,讓我們再往下看,ioctl(sock,SIOCGIFFLAGS,&amp;ifr),SIOCGIFFLAGS請求表示需要獲取介面標志,現在到了第54行,在我們成功的獲取介面標志後把他設置成混雜模式,ifr.ifr_flags|= IFF_PROMISC;ioctl (sock,SIOCSIFFLAGS,&amp;ifr)。OK,現在我們所說的第一步已經完成--------把網卡置於混雜模式。
現在進入第二步,捕獲數據包。從第20行開始,我們進入了一個死循環,while(1),在第24行,recvfrom(sock,buffer,sizeof buffer,0,(struct sockaddr *)&amp;from,&amp;fromlen),這個函數要做的就是接收數據,並把接收到的數據放入buffer中。就是這么簡單,已經完成了我們要捕獲數據包的任務。
到了第三步,分析數據包。27行,ip = (struct ip*)buffer,使我們在頭文件中的IP結構對應於所接收到的數據,接下來判斷在網路層中是否使用的是TCP協議,if(ip->ip_protocol== 6) ,如果答案是,tcp信息包從整個IP/TCP包 buffer +(4*ip->ip_length) 地址處開始,所以31行 tcp = (struct tcp*)(buffer +(4*ip->ip_length)),然後對應結構把你所需要的信息輸出。
/*************************headers.h**************************/
/*structure of an ip header*/
struct ip {
unsigned int ip_length:4; /*little-endian*/
unsigned int ip_version:4;
unsigned char ip_tos;
unsigned short ip_total_length;
unsigned short ip_id;
unsigned short ip_flags;
unsigned char ip_ttl;
unsigned char ip_protocol;
unsigned short ip_cksum;
unsigned int ip_source; unsigned int ip_dest;
};
/* Structure of a TCP header */
struct tcp {
unsigned short tcp_source_port;
unsigned short tcp_dest_port;
unsigned int tcp_seqno;
unsigned int tcp_ackno;
unsigned int tcp_res1:4,/*little-endian*/
tcp_hlen:4,
tcp_fin:1,
tcp_syn:1,
tcp_rst:1,
tcp_psh:1,
tcp_ack:1,
tcp_urg:1,
tcp_res2:2;
unsigned short tcp_winsize;
unsigned short tcp_cksum;
unsigned short tcp_urgent;
};
/*********************EOF***********************************/
從上面的分析我們可以清楚的認識到,認識一個SNIFF需要對TCP/IP協議有著詳細的了解,否則你根本無法找到你需要的信息。有了上面的基礎,你可以自己來做一個你需要的SNIFF了。

7. SNIFFER的作用究竟是啥

Sniffer,中文可以翻譯為嗅探器,是一種威脅性極大的被動攻擊工具。使用這種工具,可以監視網路的狀態、數據流動情況以及網路上傳輸的信息。當信息以明文的形式在網路上傳輸時,便可以使用網路監聽的方式來進行攻擊。將網路介面設置在監聽模式,便可以將網上傳輸的源源不斷的信息截獲。黑客們常常用它來截獲用戶的口令。據說某個骨幹網路的路由器曾經被黑客攻入,並嗅探到大量的用戶口令。本文將詳細介紹Sniffer的原理和應用。

一、Sniffer 原理

1.網路技術與設備簡介
在講述Sniffer的概念之前,首先需要講述區域網設備的一些基本概念。
數據在網路上是以很小的稱為幀(Frame)的單位傳輸的,幀由幾部分組成,不同的部分執行不同的功能。幀通過特定的稱為網路驅動程序的軟體進行成型,然後通過網卡發送到網線上,通過網線到達它們的目的機器,在目的機器的一端執行相反的過程。接收端機器的乙太網卡捕獲到這些幀,並告訴操作系統幀已到達,然後對其進行存儲。就是在這個傳輸和接收的過程中,嗅探器會帶來安全方面的問題。
每一個在區域網(LAN)上的工作站都有其硬體地址,這些地址惟一地表示了網路上的機器(這一點與Internet地址系統比較相似)。當用戶發送一個數據包時,這些數據包就會發送到LAN上所有可用的機器。
在一般情況下,網路上所有的機器都可以「聽」到通過的流量,但對不屬於自己的數據包則不予響應(換句話說,工作站A不會捕獲屬於工作站B的數據,而是簡單地忽略這些數據)。如果某個工作站的網路介面處於混雜模式(關於混雜模式的概念會在後面解釋),那麼它就可以捕獲網路上所有的數據包和幀。

2.網路監聽原理
Sniffer程序是一種利用乙太網的特性把網路適配卡(NIC,一般為乙太網卡)置為雜亂(promiscuous)模式狀態的工具,一旦網卡設置為這種模式,它就能接收傳輸在網路上的每一個信息包。
普通的情況下,網卡只接收和自己的地址有關的信息包,即傳輸到本地主機的信息包。要使Sniffer能接收並處理這種方式的信息,系統需要支持BPF,Linux下需要支持SOCKET一PACKET。但一般情況下,網路硬體和TCP/IP堆棧不支持接收或者發送與本地計算機無關的數據包,所以,為了繞過標準的TCP/IP堆棧,網卡就必須設置為我們剛開始講的混雜模式。一般情況下,要激活這種方式,內核必須支持這種偽設備Bpfilter,而且需要root許可權來運行這種程序,所以sniffer需要root身份安裝,如果只是以本地用戶的身份進入了系統,那麼不可能喚探到root的密碼,因為不能運行Sniffer。
基於Sniffer這樣的模式,可以分析各種信息包並描述出網路的結構和使用的機器,由於它接收任何一個在同一(物理)網段上傳輸的數據包,所以也就存在著捕獲密碼、各種信息、秘密文檔等一些沒有加密的信息的可能性。這成為黑客們常用的擴大戰果的方法,用來奪取其他主機的控制權

3. Snifffer的分類
Sniffer分為軟體和硬體兩種,軟體的Sniffer有 NetXray、Packetboy、Net monitor等,其優點是物美價廉,易於學習使用,同時也易於交流;缺點是無法抓取網路上所有的傳輸,某些情況下也就無法真正了解網路的故障和運行情況。硬體的Sniffer通常稱為協議分析儀,一般都是商業性的,價格也比較貴。
實際上本文中所講的Sniffer指的是軟體。它把包抓取下來,然後打開並查看其中的內容,可以得到密碼等。Sniffer只能抓取一個物理網段內的包,就是說,你和監聽的目標中間不能有路由或其他屏蔽廣播包的設備,這一點很重要。所以,對一般撥號上網的用戶來說,是不可能利用Sniffer來竊聽到其他人的通信內容的。

4.網路監聽的目的
當一個黑客成功地攻陷了一台主機,並拿到了root許可權,而且還想利用這台主機去攻擊同一(物理)網段上的其他主機時,他就會在這台主機上安裝Sniffer軟體,對乙太網設備上傳送的數據包進行偵聽,從而發現感興趣的包。如果發現符合條件的包,就把它存到一個LOg文件中去。通常設置的這些條件是包含字「username」或「password」的包,這樣的包裡面通常有黑客感興趣的密碼之類的東西。一旦黑客截獲得了某台主機的密碼,他就會立刻進入這台主機。
如果Sniffer運行在路由器上或有路由功能的主機上,就能對大量的數據進行監控,因為所有進出網路的數據包都要經過路由器。
Sniffer屬於第M層次的攻擊。就是說,只有在攻擊者已經進入了目標系統的情況下,才能使用Sniffer這種攻擊手段,以便得到更多的信息。
Sniffer除了能得到口令或用戶名外,還能得到更多的其他信息,比如一個重要的信息、在網上傳送的金融信息等等。Sniffer幾乎能得到任何在乙太網上傳送的數據包。

Sniffer是一種比較復雜的攻擊手段,一般只有黑客老手才有能力使用它,而對於一個網路新手來說,即使在一台主機上成功地編譯並運行了Sniffer,一般也不會得到什麼有用的信息,因為通常網路上的信息流量是相當大的,如果不加選擇地接收所有的包,然後從中找到所需要的信息非常困難;而且,如果長時間進行監聽,還有可能把放置Sniffer的機器的硬碟撐爆。

8. sniffer狀態

sniffer是竊聽的意思
應該就是竊聽狀態

sniffers(嗅探器)幾乎和internet有一樣久的歷史了.Sniffer是一種常用的收集有用數據方法,這些數據可以是用戶的帳號和密碼,可以是一些商用機密數據等等。隨著Internet及電子商務的日益普及,Internet的安全也越來越受到重視。在Internet安全隱患中扮演重要角色之一的Sniffer以受到越來越大的關注,所以今天我要向大家介紹一下介紹Sniffer以及如何阻止sniffer。
大多數的黑客僅僅為了探測內部網上的主機並取得控制權,只有那些"雄心勃勃"的黑客,為了控制整個網路才會安裝特洛伊木馬和後門程序,並清除記錄。他們經常使用的手法是安裝sniffer。
在內部網上,黑客要想迅速獲得大量的賬號(包括用戶名和密碼),最為有效的手段是使用 "sniffer" 程序。這種方法要求運行Sniffer 程序的主機和被監聽的主機必須在同一個乙太網段上,故而在外部主機上運行sniffer是沒有效果的。再者,必須以root的身份使用sniffer 程序,才能夠監聽到乙太網段上的數據流。談到乙太網sniffer,就必須談到乙太網sniffing。
那麼什麼是乙太網sniffer呢?
乙太網sniffing是指對乙太網設備上傳送的數據包進行偵聽,發現感興趣的包。如果發現符合條件的包,就把它存到一個log文件中
去。通常設置的這些條件是包含字"username"或"password"的包。它的目的是將網路層放到promiscuous模式,從而能幹些事情。
Promiscuous模式是指網路上的所有設備都對匯流排上傳送的數據進行偵聽,並不僅僅是它們自己的數據。根據第二章中有關對乙太網的工作原理的基本介紹,可以知道:一個設備要向某一目標發送數據時,它是對乙太網進行廣播的。一個連到乙太網匯流排上的設備在任何時間里都在接受數據。不過只是將屬於自己的數據傳給該計算機上的應用程序。
利用這一點,可以將一台計算機的網路連接設置為接受所有以太
網匯流排上的數據,從而實現sniffer。
sniffer通常運行在路由器,或有路由器功能的主機上。這樣就能對大量的數據進行監控。sniffer屬第二層次的攻擊。通常是攻擊者已經進入了目標系統,然後使用sniffer這種攻擊手段,以便得到更多的信息。
sniffer除了能得到口令或用戶名外,還能得到更多的其他信息,比如一個其他重要的信息,在網上傳送的金融信息等等。sniffer幾乎能得到任何乙太網上的傳送的數據包。黑客會使用各種方法,獲得系統的控制權並留下再次侵入的後門,以保證sniffer能夠執行。在Solaris 2.x平台上,sniffer 程序通常被安裝在/usr/bin 或/dev目錄下。黑客還會巧妙的修改時間,使得sniffer程序看上去是和其它系統程序同時安裝的。
大多數乙太網sniffer程序在後台運行,將結果輸出到某個記錄文件中。黑客常常會修改ps程序,使得系統管理員很難發現運行的sniffer程序。
乙太網sniffer程序將系統的網路介面設定為混合模式。這樣,它就可以監聽到所有流經同一乙太網網段的數據包,不管它的接受者或發送者是不是運行sniffer的主機。 程序將用戶名、密碼和其它黑客感興趣的數據存入log文件。黑客會等待一段時間 ----- 比如一周後,再回到這里下載記錄文件。
講了這么多,那麼到底我們可以用什麼通俗的話來介紹sniffer呢?
計算機網路與電話電路不同,計算機網路是共享通訊通道的。共享意味著計算機能夠接收到發送給其它計算機的信息。捕獲在網路中傳輸的數據信息就稱為sniffing(竊聽)。
乙太網是現在應用最廣泛的計算機連網方式。乙太網協議是在同一迴路向所有主機發送數據包信息。數據包頭包含有目標主機的正確地址。一般情況下只有具有該地址的主機會接受這個數據包。如果一台主機能夠接收所有數據包,而不理會數據包頭內容,這種方式通常稱為"混雜" 模式。
由於在一個普通的網路環境中,帳號和口令信息以明文方式在乙太網中傳輸, 一旦入侵者獲得其中一台主機的root許可權,並將其置於混雜模式以竊聽網路數據,從而有可能入侵網路中的所有計算機。
一句話,sniffer就是一個用來竊聽的黑客手段和工具。
二、sniffer的工作原理
通常在同一個網段的所有網路介面都有訪問在物理媒體上傳輸的所有數據的能力,而每個網路介面都還應該有一個硬體地址,該硬體地址不同於網路中存在的其他網路介面的硬體地址,同時,每個網路至少還要一個廣播地址。(代表所有的介面地址),在正常情況下,一個合法的網路介面應該只響應這樣的兩種數據幀:
1、幀的目標區域具有和本地網路介面相匹配的硬體地址。
2、幀的目標區域具有"廣播地址"。
在接受到上面兩種情況的數據包時,nc通過cpu產生一個硬體中斷,該中斷能引起操作系統注意,然後將幀中所包含的數據傳送給系統進一步處理。
而sniffer就是一種能將本地nc狀態設成(promiscuous)狀態的軟體,當nc處於這種"混雜"方式時,該nc具備"廣播地址",它對所有遭遇到的每一個幀都產生一個硬體中斷以便提醒操作系統處理流經該物理媒體上的每一個報文包。(絕大多數的nc具備置成 promiscuous方式的能力)
可見,sniffer工作在網路環境中的底層,它會攔截所有的正在網路上傳送的數據,並且通過相應的軟體處理,可以實時分析這些數據的內容,進而分析所處的網路狀態和整體布局。值得注意的是:sniffer是極其安靜的,它是一種消極的安全攻擊。
通常sniffer所要關心的內容可以分成這樣幾類:
1、口令
我想這是絕大多數非法使用sniffer的理由,sniffer可以記錄到明文傳送的userid和passwd.就算你在網路傳送過程中使用了加密的數據,sniffer記錄的數據一樣有可能使入侵者在家裡邊吃肉串邊想辦法算出你的演算法。
2、金融帳號
許多用戶很放心在網上使用自己的信用卡或現金帳號,然而sniffer可以很輕松截獲在網上傳送的用戶姓名、口令、信用卡號碼、截止日期、帳號和pin.
3、偷窺機密或敏感的信息數據
通過攔截數據包,入侵者可以很方便記錄別人之間敏感的信息傳送,或者乾脆攔截整個的email會話過程。
4、窺探低級的協議信息。
這是很可怕的事,我認為,通過對底層的信息協議記錄,比如記錄兩台主機之間的網路介面地址、遠程網路介面ip地址、ip路由信息和tcp連接的位元組順序號碼等。這些信息由非法入侵的人掌握後將對網路安全構成極大的危害,通常有人用sniffer收集這些信息只有一個原因:他正在進行一次欺詐,(通常的ip地址欺詐就要求你准確插入tcp連接的位元組順序號,這將在以後整理的文章中指出)如果某人很關心這個問題,那麼sniffer對他來說只是前奏,今後的問題要大得多。(對於高級的hacker而言,我想這是使用sniffer的唯一理由吧)
二.sniffer的工作環境
snifffer就是能夠捕獲網路報文的設備。嗅探器的正當用處在於分析網路的流量,以便找出所關心的網路中潛在的問題。例如,假設網路的某一段運行得不是很好,報文的發送比較慢,而我們又不知道問題出在什麼地方,此時就可以用嗅探器來作出精確的問題判斷。
嗅探器在功能和設計方面有很多不同。有些只能分析一種協議,而另一些可能能夠分析幾百種協議。一般情況下,大多數的嗅探器至少能夠分析下面的協議:
1.標准乙太網
2.TCP/IP
3.IPX
4.DECNet
嗅探器通常是軟硬體的結合。專用的嗅探器價格非常昂貴。另一方面,免費的嗅探器雖然不需要花什麼錢,但得不到什麼支持。
嗅探器與一般的鍵盤捕獲程序不同。鍵盤捕獲程序捕獲在終端上輸入的鍵值,而嗅探器則捕獲真實的網路報文。嗅探器通過將其置身於網路介面來達到這個目的——例如將乙太網卡設置成雜收模式。(為了理解雜收模式是怎麼回事,先解釋區域網是怎麼工作的)。
數據在網路上是以很小的稱為幀(Ftame)的單位傳輸的幀由好幾部分組成,不同的部分執行不同的功能。(例如,乙太網的前12個位元組存放的是源和目的的地址,這些位告訴網路:數據的來源和去處。乙太網幀的其他部分存放實際的用戶數據、TCP/IP的報文頭或IPX報文頭等等)。
幀通過特定的稱為網路驅動程序的軟體進行成型,然後通過網卡發送到網線上。通過網線到達它們的目的機器,在目的機器的一端執行相反的過程。接收端機器的乙太網卡捕獲到這些幀,並告訴操作系統幀的到達,然後對其進行存儲。就是在這個傳輸和接收的過程中,嗅探器會造成安全方面的問題。
每一個在LAN上的工作站都有其硬體地址。這些地址唯一地表示著網路上的機器(這一點於Internet地址系統比較相似)。當用戶發送一個報文時,這些報文就會發送到LAN上所有可用的機器。
在一般情況下,網路上所有的機器都可以「聽」到通過的流量,但對不屬於自己的報文則不予響應(換句話說,工作站A不會捕獲屬於工作站B的數據,而是簡單的忽略這些數據)。
如果某在工作站的網路介面處於雜收模式,那麼它就可以捕獲網路上所有的報文和幀,如果一個工作站被配置成這樣的方式,它(包括其軟體)就是一個嗅探器。
嗅探器可能造成的危害:
1.嗅探器能夠捕獲口令
2.能夠捕獲專用的或者機密的信息
3.可以用來危害網路鄰居的安全,或者用來獲取更高級別的訪問許可權
事實上,如果你在網路上存在非授權的嗅探器就以為著你的系統已經暴露在別人面前了。(大家可以試試天行2的嗅探功能)
一般我們只嗅探每個報文的前200到300個位元組。用戶名和口令都包含在這一部分中,這是我們關心的真正部分。工人,也可以嗅探給定介面上的所有報文,如果有足夠的空間進行存儲,有足夠的那裡進行處理的話,將會發現另一些非常有趣的東西……
簡單的放置一個嗅探器賓將其放到隨便什麼地方將不會起到什麼作用。將嗅探器放置於被攻擊機器或網路附近,這樣將捕獲到很多口令,還有一個比較好的方法就是放在網關上。如果這樣的話就能捕獲網路和其他網路進行身份鑒別的過程。這樣的方式將成倍地增加我們能夠攻擊的范圍。
三.誰會使用sniffers
可能誰都回知道誰會使用sniffer,但是並不是每個使用它的人都是網路高手,因為現在有很多的sniffer都成了傻瓜似的了,前段時間用的最多的不外乎oicq sniffer。我想那些喜歡查好友ip的朋友都應該記得它吧。呵呵,我都使用過它,現在當然不用了啊!
當然系統管理員使用sniffer來分析網路信息交通並且找出網路上何處發生問題。一個安全管理員可以同時用多種sniffer, 將它們放置在網路的各處,形成一個入侵警報系統。對於系統管理員來說sniffer是一個非常好的工具,但是它同樣是一個經常被黑客使用的工具.駭客安裝sniffer以獲得用戶名和賬號,信用卡號碼,個人信息,和其他的信息可以導致對你或是你的公司的極大危害如果向壞的方面發展。當它們得到這些信息後,駭客將使用密碼來進攻其他的internet 站點甚至倒賣信用卡號碼。
三.sniffer是如何在網路上實施的
談這個問題之前還應該先說一下Ethernet的通訊。通常在同一個網段的所有網路介面都有訪問在媒體上傳輸的所有數據的能力,而每個網路介面都還應該有一個硬體地址,該硬體地址不同於網路中存在的其它網路介面的硬體地址,同時,每個網路至少還要一個廣播地址。在正常情況下,一個合法的網路介面應該只響應這樣的兩種數據幀:
1�幀的目標區域具有和本地網路介面相匹配的硬體地址。

2�幀的目標區域具有「廣播地址」。

在接受到上面兩種情況的數據包時,網卡通過cpu產生一個硬體中斷。該中斷能引起操作系統注意,然後將幀中所包含的數據傳送給系統進一步處理。而sniffer就是一種能將本地網卡狀態設成雜亂模式(promiscuous Mode)的軟體。當網卡處於雜亂模式時,該網卡具備「廣播地址」,它對所有遇到的每一個幀都產生一個硬體中斷以提醒操作系統處理每一個報文包。(絕大多數的網卡具備設置成雜亂模式的能力。
可見,sniffer工作在網路環境中的底層,它會攔截所有的正在網路上傳送的數據。通過相應的軟體處理,可以實時分析這些數據的內容,進而分析所處的網路狀態和整體布局。值得注意的是:sniffer是極其安靜的,它是一種消極的安全攻擊。
四.哪裡可以得到sniffer
我們講的sniffer,主要是在unix系統下運用的,至於那些oicq sniffer就不在我們討論的范圍。
Sniffer是黑客們最常用的入侵手段之一。你可以在經過允許的網路中運行sniffer,了解它是如何有效地危及本地機器安全。
Sniffer可以是硬體,也可以是軟體。現在品種最多,應用最廣的是軟體Sniffer,絕大多數黑客們用的也是軟體Sniffer。
以下是一些也被廣泛用於調試網路故障的sniffer工具:
(一).商用sniffer:
1. Network General.
Network General開發了多種產品。最重要的是Expert Sniffer,它不僅僅可以sniff,還能夠通過高性能的專門系統發送/接收數據包,幫助診斷故障。還有一個增強產品"Distrbuted Sniffer System"可以將UNIX工作站作為sniffer控制台,而將sniffer agents(代理)分布到遠程主機上。
2. Microsoft's Net Monitor
對於某些商業站點,可能同時需要運行多種協議--NetBEUI、IPX/SPX、TCP/IP、802.3和SNA等。這時很難找到一種sniffer幫助解決網路問題,因為許多sniffer往往將某些正確的協議數據包當成了錯誤數據包。Microsoft的Net Monitor(以前叫Bloodhound)可以解決這個難題。它能夠正確區分諸如Netware控制數據包、NT NetBios名字服務廣播等獨特的數據包。(etherfind只會將這些數據包標識為類型0000的廣播數據包。)這個工具運行在MS Windows 平台上。它甚至能夠按MAC地址(或主機名)進行網路統計和會話信息監視。只需簡單地單擊某個會話即可獲得tcpmp標準的輸出。過濾器設置也是最為簡單的,只要在一個對話框中單擊需要監視的主機即可。

(二).免費軟體sniffer
1. Sniffit由Lawrence Berkeley 實驗室開發,運行於Solaris、SGI和Linux等平台。可以選擇源、目標地址或地址集合,還可以選擇監聽的埠、協議和網路介面等。這個SNIFFER默認狀態下只接受最先的400個位元組的信息包,這對於一次登陸會話進程剛剛好。
2. SNORT:這個SNIFFER有很多選項供你使用並可移植性強,可以記錄一些連接信息,用來跟蹤一些網路活動。
3. TCPDUMP:這個SNIFFER很有名,linux,FREEBSD還搭帶在系統上,是一個被很多UNIX高手認為是一個專業的網路管理工具,記得以前TsutomuShimomura(應該叫下村侵吧)就是使用他自己修改過的TCPDUMP版本來記錄了KEVINMITNICK攻擊他系統的記錄,後來就配合FBI抓住了KEVINMITNICK,後來他寫了一文:使用這些LOG記錄描述了那次的攻擊,
( http://www.attrition.org/security/newbie/security/sniffer/shimomur.txt )
4. ADMsniff:這是非常有名的ADM黑客集團寫的一個SNIFFER程序。
5. linsniffer:這是一個專門設計雜一LINUX平台上的SNIFFER。
6. Esniffer:這個也是一個比較有名的SNIFFER程序。
7. Solsniffer:這是個Solarissniffer,主要是修改了SunSniff專門用來可以方便的在Solair平台上編譯。
8. Ethereal是一基於GTK+的一個圖形化Sniffer
9. Gobbler(for MS-DOS&Win95)、Netman、NitWit、Ethload...等等。
(三).UNIX下的sniffer
UNIX下的sniffer,我比較傾向於snoop.Snoop是按Solaris的標准製作的,雖然Snoop不像是Sniffer Pro那樣好,但是它是一個可定製性非常強的sniffer,在加上它是免費的(和Solaris附一起).誰能打敗它的地位?你可以在極短時間內抓獲一個信息包或是更加深的分析.如果你想學習如何使用snoop,看下面的url:
http://www.enteract.com/~lspitz/snoop.html
(四).Linux下的sniffer工具
Linux下的sniffer工具,我推薦Tcpmp。
[1].tcpmp的安裝
在linux下tcpmp的安裝十分簡單,一般由兩種安裝方式。一種是以rpm包的形式來進行安裝。另外一種是以源程序的形式安裝。
1. rpm包的形式安裝
這種形式的安裝是最簡單的安裝方法,rpm包是將軟體編譯後打包成二進制的格式,通過rpm命令可以直接安裝,不需要修改任何東西。以超級用戶登錄,使用命令如下:
#rpm -ivh tcpmp-3_4a5.rpm
這樣tcpmp就順利地安裝到你的linux系統中。怎麼樣,很簡單吧。
2. 源程序的安裝
既然rpm包的安裝很簡單,為什麼還要採用比較復雜的源程序安裝呢?其實,linux一個最大的誘人之處就是在她上面有很多軟體是提供源程序的,人們可以修改源程序來滿足自己的特殊的需要。所以我特別建議朋友們都採取這種源程序的安裝方法。
· 第一步 取得源程序 在源程序的安裝方式中,我們首先要取得tcpmp的源程序分發包,這種分發包有兩種 形式,一種是tar壓縮包(tcpmp-3_4a5.tar.Z),另一種是rpm的分發包(tcpmp-3_4a5.src.rpm)。這兩種 形式的內容都是一樣的,不同的僅僅是壓縮的方式.tar的壓縮包可以使用如下命令解開:
#tar xvfz tcpmp-3_4a5.tar.Z
rpm的包可以使用如下命令安裝:
#rpm -ivh tcpmp-3_4a5.src.rpm
這樣就把tcpmp的源代碼解壓到/usr/src/redhat/SOURCES目錄下.

· 第二步 做好編譯源程序前的准備活動
在編譯源程序之前,最好已經確定庫文件libpcap已經安裝完畢,這個庫文件是tcpmp軟體所需的庫文件。同樣,你同時還要有一個標準的c語言編譯器。在linux下標準的c 語言編譯器一般是gcc。 在tcpmp的源程序目錄中。有一個文件是Makefile.in,configure命令就是從Makefile.in文件中自動產生Makefile文件。在Makefile.in文件中,可以根據系統的配置來修改BINDEST 和 MANDEST 這兩個宏定義,預設值是
BINDEST = @sbindir @
MANDEST = @mandir @
第一個宏值表明安裝tcpmp的二進制文件的路徑名,第二個表明tcpmp的man 幫助頁的路徑名,你可以修改它們來滿足系統的需求。

· 第三步 編譯源程序
使用源程序目錄中的configure腳本,它從系統中讀出各種所需的屬性。並且根據Makefile.in文件自動生成Makefile文件,以便編譯使用.make 命令則根據Makefile文件中的規則編譯tcpmp的源程序。使用make install命令安裝編譯好的tcpmp的二進制文件。
總結一下就是:
# tar xvfz tcpmp-3_4a5.tar.Z
# vi Makefile.in
# . /configure
# make
# make install

[2].Tcpmp的使用
tcpmp採用命令行方式,它的命令格式為:
tcpmp [ -adeflnNOpqStvx ] [ -c 數量 ] [ -F 文件名 ]
[ -i 網路介面 ] [ -r 文件名] [ -s snaplen ]
[ -T 類型 ] [ -w 文件名 ] [表達式 ]

1. tcpmp的選項介紹
-a 將網路地址和廣播地址轉變成名字;
-d 將匹配信息包的代碼以人們能夠理解的匯編格式給出;
-dd 將匹配信息包的代碼以c語言程序段的格式給出;
-ddd 將匹配信息包的代碼以十進制的形式給出;
-e 在輸出行列印出數據鏈路層的頭部信息;
-f 將外部的Internet地址以數字的形式列印出來;
-l 使標准輸出變為緩沖行形式;
-n 不把網路地址轉換成名字;
-t 在輸出的每一行不列印時間戳;
-v 輸出一個稍微詳細的信息,例如在ip包中可以包括ttl和服務類型的信息;
-vv 輸出詳細的報文信息;
-c 在收到指定的包的數目後,tcpmp就會停止;
-F 從指定的文件中讀取表達式,忽略其它的表達式;
-i 指定監聽的網路介面;
-r 從指定的文件中讀取包(這些包一般通過-w選項產生);
-w 直接將包寫入文件中,並不分析和列印出來;
-T 將監聽到的包直接解釋為指定的類型的報文,常見的類型有rpc (遠程過程 調用)和snmp(簡單網路管理協議;)

2. tcpmp的表達式介紹
表達式是一個正則表達式,tcpmp利用它作為過濾報文的條件,如果一個報文滿足表達式的條件,則這個報文將會被捕獲。如果沒有給出任何條件,則網路上所有的信息包將會被截獲。
在表達式中一般如下幾種類型的關鍵字,一種是關於類型的關鍵字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主機,net 202.0.0.0 指明 202.0.0.0是一個網路地址,port 23 指明埠號是23。如果沒有指定類型,預設的類型是host.
第二種是確定傳輸方向的關鍵字,主要包括src , dst ,dst or src, dst and src ,這些關鍵字指明了傳輸的方向。舉例說明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的網路地址是202.0.0.0 。如果沒有指明方向關鍵字,則預設是src or dst關鍵字。
第三種是協議的關鍵字,主要包括fddi,ip ,arp,rarp,tcp,udp等類型。Fddi指明是在FDDI(分布式光纖數據介面網路)上的特定的網路協議,實際上它是"ether"的別名,fddi和ether具有類似的源地址和目的地址,所以可以將fddi協議包當作ether的包進行處理和分析。其他的幾個關鍵字就是指明了監聽的包的協議內容。如果沒有指定任何協議,則tcpmp將會監聽所有協議的信息包。
除了這三種類型的關鍵字之外,其他重要的關鍵字如下:gateway, broadcast,less,greater,還有三種邏輯運算,取非運算是 'not ' '! ', 與運算是'and','&&';或運算 是'or' ,'';
這些關鍵字可以組合起來構成強大的組合條件來滿足人們的需要,下面舉幾個例子來說明。
(1)想要截獲所有210.27.48.1 的主機收到的和發出的所有的數據包:
#tcpmp host 210.27.48.1
(2) 想要截獲主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通信,使用命令:(在命令行中適用括弧時,一定要
#tcpmp host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
(3) 如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包,使用命令:
#tcpmp ip host 210.27.48.1 and ! 210.27.48.2
(4)如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令:
#tcpmp tcp port 23 host 210.27.48.1

3. tcpmp 的輸出結果介紹
下面我們介紹幾種典型的tcpmp命令的輸出信息
(1) 數據鏈路層頭信息
使用命令#tcpmp --e host ice
ice 是一台裝有linux的主機,她的MAC地址是0:90:27:58:AF:1A
H219是一台裝有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一條命令的輸出結果如下所示:
21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice.telne
t 0:0(0) ack 22535 win 8760 (DF)
分析:21:50:12是顯示的時間, 847509是ID號,eth0 <表示從網路介面eth0 接受該數據包,eth0 >表示從網路介面設備發送數據包, 8:0:20:79:5b:46是主機H219的MAC地址,它表明是從源地址H219發來的數據包. 0:90:27:58:af:1a是主機ICE的MAC地址,表示該數據包的目的地址是ICE . ip 是表明該數據包是IP數據包,60 是數據包的長度, h219.33357 > ice.telnet 表明該數據包是從主機H219的33357埠發往主機ICE的TELNET(23)埠. ack 22535 表明對序列號是222535的包進行響應. win 8760表明發送窗口的大小是8760.

(2) ARP包的TCPDUMP輸出信息
使用命令#tcpmp arp
得到的輸出結果是:
22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)
分析: 22:32:42是時間戳, 802509是ID號, eth0 >表明從主機發出該數據包, arp表明是ARP請求包, who-has route tell ice表明是主機ICE請求主機ROUTE的MAC地址。 0:90:27:58:af:1a是主機ICE的MAC地址。

(3) TCP包的輸出信息
用TCPDUMP捕獲的TCP包的一般輸出信息是:
src > dst: flags data-seqno ack window urgent options
src > dst:表明從源地址到目的地址, flags是TCP包中的標志信息,S 是SYN標志, F (FIN), P (PUSH) , R (RST) "." (沒有標記); data-seqno是數據包中的數據的順序號, ack是下次期望的順序號, window是接收緩存的窗口大小, urgent表明數據包中是否有緊急指針. Options是選項.

(4) UDP包的輸出信息
用TCPDUMP捕獲的UDP包的一般輸出信息是:
route.port1 > ice.port2: udp lenth
UDP十分簡單,上面的輸出行表明從主機ROUTE的port1埠發出的一個UDP數據包到主機ICE的port2埠,類型是UDP, 包的長度是lenth上面,我就詳細介紹了TCPDUMP的安裝和使用,希望會對大家有所幫助。如果想要熟練運用TCPDUMP這個LINUX環境下的SNIFFER利器,還需要大家在實踐中總結經驗,充分發揮它的威力。
(五).windows平台上的sniffer
我推薦netxray和sniffer pro軟體,想必大家都用過他們,不過我在這兒還要再簡單介紹一下他們。
netxray的使用說明
1.1.1.1----2.2.2.2----3.3.3.3----4.4.4.4 這是一個ShareHub連接下的區域網

5.5.5.5 這是一個8080埠上的http/ftp proxy

Internet

啟動Capture,

9. 請問電腦處於sniffer狀態是什麼意識啊

sniffer是竊聽的意思,sniffer狀態應該就是竊聽狀態了

要更詳細的看下面,保證看到你頭大~哈哈

sniffers(嗅探器)幾乎和internet有一樣久的歷史了.Sniffer是一種常用的收集有用數據方法,這些數據可以是用戶的帳號和密碼,可以是一些商用機密數據等等。隨著Internet及電子商務的日益普及,Internet的安全也越來越受到重視。在Internet安全隱患中扮演重要角色之一的Sniffer以受到越來越大的關注,所以今天我要向大家介紹一下介紹Sniffer以及如何阻止sniffer。
大多數的黑客僅僅為了探測內部網上的主機並取得控制權,只有那些"雄心勃勃"的黑客,為了控制整個網路才會安裝特洛伊木馬和後門程序,並清除記錄。他們經常使用的手法是安裝sniffer。
在內部網上,黑客要想迅速獲得大量的賬號(包括用戶名和密碼),最為有效的手段是使用 "sniffer" 程序。這種方法要求運行Sniffer 程序的主機和被監聽的主機必須在同一個乙太網段上,故而在外部主機上運行sniffer是沒有效果的。再者,必須以root的身份使用sniffer 程序,才能夠監聽到乙太網段上的數據流。談到乙太網sniffer,就必須談到乙太網sniffing。
那麼什麼是乙太網sniffer呢?
乙太網sniffing是指對乙太網設備上傳送的數據包進行偵聽,發現感興趣的包。如果發現符合條件的包,就把它存到一個log文件中
去。通常設置的這些條件是包含字"username"或"password"的包。它的目的是將網路層放到promiscuous模式,從而能幹些事情。
Promiscuous模式是指網路上的所有設備都對匯流排上傳送的數據進行偵聽,並不僅僅是它們自己的數據。根據第二章中有關對乙太網的工作原理的基本介紹,可以知道:一個設備要向某一目標發送數據時,它是對乙太網進行廣播的。一個連到乙太網匯流排上的設備在任何時間里都在接受數據。不過只是將屬於自己的數據傳給該計算機上的應用程序。
利用這一點,可以將一台計算機的網路連接設置為接受所有以太
網匯流排上的數據,從而實現sniffer。
sniffer通常運行在路由器,或有路由器功能的主機上。這樣就能對大量的數據進行監控。sniffer屬第二層次的攻擊。通常是攻擊者已經進入了目標系統,然後使用sniffer這種攻擊手段,以便得到更多的信息。
sniffer除了能得到口令或用戶名外,還能得到更多的其他信息,比如一個其他重要的信息,在網上傳送的金融信息等等。sniffer幾乎能得到任何乙太網上的傳送的數據包。黑客會使用各種方法,獲得系統的控制權並留下再次侵入的後門,以保證sniffer能夠執行。在Solaris 2.x平台上,sniffer 程序通常被安裝在/usr/bin 或/dev目錄下。黑客還會巧妙的修改時間,使得sniffer程序看上去是和其它系統程序同時安裝的。
大多數乙太網sniffer程序在後台運行,將結果輸出到某個記錄文件中。黑客常常會修改ps程序,使得系統管理員很難發現運行的sniffer程序。
乙太網sniffer程序將系統的網路介面設定為混合模式。這樣,它就可以監聽到所有流經同一乙太網網段的數據包,不管它的接受者或發送者是不是運行sniffer的主機。 程序將用戶名、密碼和其它黑客感興趣的數據存入log文件。黑客會等待一段時間 ----- 比如一周後,再回到這里下載記錄文件。
講了這么多,那麼到底我們可以用什麼通俗的話來介紹sniffer呢?
計算機網路與電話電路不同,計算機網路是共享通訊通道的。共享意味著計算機能夠接收到發送給其它計算機的信息。捕獲在網路中傳輸的數據信息就稱為sniffing(竊聽)。
乙太網是現在應用最廣泛的計算機連網方式。乙太網協議是在同一迴路向所有主機發送數據包信息。數據包頭包含有目標主機的正確地址。一般情況下只有具有該地址的主機會接受這個數據包。如果一台主機能夠接收所有數據包,而不理會數據包頭內容,這種方式通常稱為"混雜" 模式。
由於在一個普通的網路環境中,帳號和口令信息以明文方式在乙太網中傳輸, 一旦入侵者獲得其中一台主機的root許可權,並將其置於混雜模式以竊聽網路數據,從而有可能入侵網路中的所有計算機。
一句話,sniffer就是一個用來竊聽的黑客手段和工具。
二、sniffer的工作原理
通常在同一個網段的所有網路介面都有訪問在物理媒體上傳輸的所有數據的能力,而每個網路介面都還應該有一個硬體地址,該硬體地址不同於網路中存在的其他網路介面的硬體地址,同時,每個網路至少還要一個廣播地址。(代表所有的介面地址),在正常情況下,一個合法的網路介面應該只響應這樣的兩種數據幀:
1、幀的目標區域具有和本地網路介面相匹配的硬體地址。
2、幀的目標區域具有"廣播地址"。
在接受到上面兩種情況的數據包時,nc通過cpu產生一個硬體中斷,該中斷能引起操作系統注意,然後將幀中所包含的數據傳送給系統進一步處理。
而sniffer就是一種能將本地nc狀態設成(promiscuous)狀態的軟體,當nc處於這種"混雜"方式時,該nc具備"廣播地址",它對所有遭遇到的每一個幀都產生一個硬體中斷以便提醒操作系統處理流經該物理媒體上的每一個報文包。(絕大多數的nc具備置成 promiscuous方式的能力)
可見,sniffer工作在網路環境中的底層,它會攔截所有的正在網路上傳送的數據,並且通過相應的軟體處理,可以實時分析這些數據的內容,進而分析所處的網路狀態和整體布局。值得注意的是:sniffer是極其安靜的,它是一種消極的安全攻擊。
通常sniffer所要關心的內容可以分成這樣幾類:
1、口令
我想這是絕大多數非法使用sniffer的理由,sniffer可以記錄到明文傳送的userid和passwd.就算你在網路傳送過程中使用了加密的數據,sniffer記錄的數據一樣有可能使入侵者在家裡邊吃肉串邊想辦法算出你的演算法。
2、金融帳號
許多用戶很放心在網上使用自己的信用卡或現金帳號,然而sniffer可以很輕松截獲在網上傳送的用戶姓名、口令、信用卡號碼、截止日期、帳號和pin.
3、偷窺機密或敏感的信息數據
通過攔截數據包,入侵者可以很方便記錄別人之間敏感的信息傳送,或者乾脆攔截整個的email會話過程。
4、窺探低級的協議信息。
這是很可怕的事,我認為,通過對底層的信息協議記錄,比如記錄兩台主機之間的網路介面地址、遠程網路介面ip地址、ip路由信息和tcp連接的位元組順序號碼等。這些信息由非法入侵的人掌握後將對網路安全構成極大的危害,通常有人用sniffer收集這些信息只有一個原因:他正在進行一次欺詐,(通常的ip地址欺詐就要求你准確插入tcp連接的位元組順序號,這將在以後整理的文章中指出)如果某人很關心這個問題,那麼sniffer對他來說只是前奏,今後的問題要大得多。(對於高級的hacker而言,我想這是使用sniffer的唯一理由吧)
二.sniffer的工作環境
snifffer就是能夠捕獲網路報文的設備。嗅探器的正當用處在於分析網路的流量,以便找出所關心的網路中潛在的問題。例如,假設網路的某一段運行得不是很好,報文的發送比較慢,而我們又不知道問題出在什麼地方,此時就可以用嗅探器來作出精確的問題判斷。
嗅探器在功能和設計方面有很多不同。有些只能分析一種協議,而另一些可能能夠分析幾百種協議。一般情況下,大多數的嗅探器至少能夠分析下面的協議:
1.標准乙太網
2.TCP/IP
3.IPX
4.DECNet
嗅探器通常是軟硬體的結合。專用的嗅探器價格非常昂貴。另一方面,免費的嗅探器雖然不需要花什麼錢,但得不到什麼支持。
嗅探器與一般的鍵盤捕獲程序不同。鍵盤捕獲程序捕獲在終端上輸入的鍵值,而嗅探器則捕獲真實的網路報文。嗅探器通過將其置身於網路介面來達到這個目的——例如將乙太網卡設置成雜收模式。(為了理解雜收模式是怎麼回事,先解釋區域網是怎麼工作的)。
數據在網路上是以很小的稱為幀(Ftame)的單位傳輸的幀由好幾部分組成,不同的部分執行不同的功能。(例如,乙太網的前12個位元組存放的是源和目的的地址,這些位告訴網路:數據的來源和去處。乙太網幀的其他部分存放實際的用戶數據、TCP/IP的報文頭或IPX報文頭等等)。
幀通過特定的稱為網路驅動程序的軟體進行成型,然後通過網卡發送到網線上。通過網線到達它們的目的機器,在目的機器的一端執行相反的過程。接收端機器的乙太網卡捕獲到這些幀,並告訴操作系統幀的到達,然後對其進行存儲。就是在這個傳輸和接收的過程中,嗅探器會造成安全方面的問題。
每一個在LAN上的工作站都有其硬體地址。這些地址唯一地表示著網路上的機器(這一點於Internet地址系統比較相似)。當用戶發送一個報文時,這些報文就會發送到LAN上所有可用的機器。
在一般情況下,網路上所有的機器都可以「聽」到通過的流量,但對不屬於自己的報文則不予響應(換句話說,工作站A不會捕獲屬於工作站B的數據,而是簡單的忽略這些數據)。
如果某在工作站的網路介面處於雜收模式,那麼它就可以捕獲網路上所有的報文和幀,如果一個工作站被配置成這樣的方式,它(包括其軟體)就是一個嗅探器。
嗅探器可能造成的危害:
1.嗅探器能夠捕獲口令
2.能夠捕獲專用的或者機密的信息
3.可以用來危害網路鄰居的安全,或者用來獲取更高級別的訪問許可權
事實上,如果你在網路上存在非授權的嗅探器就以為著你的系統已經暴露在別人面前了。(大家可以試試天行2的嗅探功能)
一般我們只嗅探每個報文的前200到300個位元組。用戶名和口令都包含在這一部分中,這是我們關心的真正部分。工人,也可以嗅探給定介面上的所有報文,如果有足夠的空間進行存儲,有足夠的那裡進行處理的話,將會發現另一些非常有趣的東西……
簡單的放置一個嗅探器賓將其放到隨便什麼地方將不會起到什麼作用。將嗅探器放置於被攻擊機器或網路附近,這樣將捕獲到很多口令,還有一個比較好的方法就是放在網關上。如果這樣的話就能捕獲網路和其他網路進行身份鑒別的過程。這樣的方式將成倍地增加我們能夠攻擊的范圍。
三.誰會使用sniffers
可能誰都回知道誰會使用sniffer,但是並不是每個使用它的人都是網路高手,因為現在有很多的sniffer都成了傻瓜似的了,前段時間用的最多的不外乎oicq sniffer。我想那些喜歡查好友ip的朋友都應該記得它吧。呵呵,我都使用過它,現在當然不用了啊!
當然系統管理員使用sniffer來分析網路信息交通並且找出網路上何處發生問題。一個安全管理員可以同時用多種sniffer, 將它們放置在網路的各處,形成一個入侵警報系統。對於系統管理員來說sniffer是一個非常好的工具,但是它同樣是一個經常被黑客使用的工具.駭客安裝sniffer以獲得用戶名和賬號,信用卡號碼,個人信息,和其他的信息可以導致對你或是你的公司的極大危害如果向壞的方面發展。當它們得到這些信息後,駭客將使用密碼來進攻其他的internet 站點甚至倒賣信用卡號碼。
三.sniffer是如何在網路上實施的
談這個問題之前還應該先說一下Ethernet的通訊。通常在同一個網段的所有網路介面都有訪問在媒體上傳輸的所有數據的能力,而每個網路介面都還應該有一個硬體地址,該硬體地址不同於網路中存在的其它網路介面的硬體地址,同時,每個網路至少還要一個廣播地址。在正常情況下,一個合法的網路介面應該只響應這樣的兩種數據幀:
1�幀的目標區域具有和本地網路介面相匹配的硬體地址。

2�幀的目標區域具有「廣播地址」。

在接受到上面兩種情況的數據包時,網卡通過cpu產生一個硬體中斷。該中斷能引起操作系統注意,然後將幀中所包含的數據傳送給系統進一步處理。而sniffer就是一種能將本地網卡狀態設成雜亂模式(promiscuous Mode)的軟體。當網卡處於雜亂模式時,該網卡具備「廣播地址」,它對所有遇到的每一個幀都產生一個硬體中斷以提醒操作系統處理每一個報文包。(絕大多數的網卡具備設置成雜亂模式的能力。
可見,sniffer工作在網路環境中的底層,它會攔截所有的正在網路上傳送的數據。通過相應的軟體處理,可以實時分析這些數據的內容,進而分析所處的網路狀態和整體布局。值得注意的是:sniffer是極其安靜的,它是一種消極的安全攻擊。
四.哪裡可以得到sniffer
我們講的sniffer,主要是在unix系統下運用的,至於那些oicq sniffer就不在我們討論的范圍。
Sniffer是黑客們最常用的入侵手段之一。你可以在經過允許的網路中運行sniffer,了解它是如何有效地危及本地機器安全。
Sniffer可以是硬體,也可以是軟體。現在品種最多,應用最廣的是軟體Sniffer,絕大多數黑客們用的也是軟體Sniffer。
以下是一些也被廣泛用於調試網路故障的sniffer工具:
(一).商用sniffer:
1. Network General.
Network General開發了多種產品。最重要的是Expert Sniffer,它不僅僅可以sniff,還能夠通過高性能的專門系統發送/接收數據包,幫助診斷故障。還有一個增強產品"Distrbuted Sniffer System"可以將UNIX工作站作為sniffer控制台,而將sniffer agents(代理)分布到遠程主機上。
2. Microsoft's Net Monitor
對於某些商業站點,可能同時需要運行多種協議--NetBEUI、IPX/SPX、TCP/IP、802.3和SNA等。這時很難找到一種sniffer幫助解決網路問題,因為許多sniffer往往將某些正確的協議數據包當成了錯誤數據包。Microsoft的Net Monitor(以前叫Bloodhound)可以解決這個難題。它能夠正確區分諸如Netware控制數據包、NT NetBios名字服務廣播等獨特的數據包。(etherfind只會將這些數據包標識為類型0000的廣播數據包。)這個工具運行在MS Windows 平台上。它甚至能夠按MAC地址(或主機名)進行網路統計和會話信息監視。只需簡單地單擊某個會話即可獲得tcpmp標準的輸出。過濾器設置也是最為簡單的,只要在一個對話框中單擊需要監視的主機即可。

(二).免費軟體sniffer
1. Sniffit由Lawrence Berkeley 實驗室開發,運行於Solaris、SGI和Linux等平台。可以選擇源、目標地址或地址集合,還可以選擇監聽的埠、協議和網路介面等。這個SNIFFER默認狀態下只接受最先的400個位元組的信息包,這對於一次登陸會話進程剛剛好。
2. SNORT:這個SNIFFER有很多選項供你使用並可移植性強,可以記錄一些連接信息,用來跟蹤一些網路活動。
3. TCPDUMP:這個SNIFFER很有名,linux,FREEBSD還搭帶在系統上,是一個被很多UNIX高手認為是一個專業的網路管理工具,記得以前TsutomuShimomura(應該叫下村侵吧)就是使用他自己修改過的TCPDUMP版本來記錄了KEVINMITNICK攻擊他系統的記錄,後來就配合FBI抓住了KEVINMITNICK,後來他寫了一文:使用這些LOG記錄描述了那次的攻擊,
( http://www.attrition.org/security/newbie/security/sniffer/shimomur.txt )
4. ADMsniff:這是非常有名的ADM黑客集團寫的一個SNIFFER程序。
5. linsniffer:這是一個專門設計雜一LINUX平台上的SNIFFER。
6. Esniffer:這個也是一個比較有名的SNIFFER程序。
7. Solsniffer:這是個Solarissniffer,主要是修改了SunSniff專門用來可以方便的在Solair平台上編譯。
8. Ethereal是一基於GTK+的一個圖形化Sniffer
9. Gobbler(for MS-DOS&Win95)、Netman、NitWit、Ethload...等等。
(三).UNIX下的sniffer
UNIX下的sniffer,我比較傾向於snoop.Snoop是按Solaris的標准製作的,雖然Snoop不像是Sniffer Pro那樣好,但是它是一個可定製性非常強的sniffer,在加上它是免費的(和Solaris附一起).誰能打敗它的地位?你可以在極短時間內抓獲一個信息包或是更加深的分析.如果你想學習如何使用snoop,看下面的url:
http://www.enteract.com/~lspitz/snoop.html
(四).Linux下的sniffer工具
Linux下的sniffer工具,我推薦Tcpmp。
[1].tcpmp的安裝
在linux下tcpmp的安裝十分簡單,一般由兩種安裝方式。一種是以rpm包的形式來進行安裝。另外一種是以源程序的形式安裝。
1. rpm包的形式安裝
這種形式的安裝是最簡單的安裝方法,rpm包是將軟體編譯後打包成二進制的格式,通過rpm命令可以直接安裝,不需要修改任何東西。以超級用戶登錄,使用命令如下:
#rpm -ivh tcpmp-3_4a5.rpm
這樣tcpmp就順利地安裝到你的linux系統中。怎麼樣,很簡單吧。
2. 源程序的安裝
既然rpm包的安裝很簡單,為什麼還要採用比較復雜的源程序安裝呢?其實,linux一個最大的誘人之處就是在她上面有很多軟體是提供源程序的,人們可以修改源程序來滿足自己的特殊的需要。所以我特別建議朋友們都採取這種源程序的安裝方法。
· 第一步 取得源程序 在源程序的安裝方式中,我們首先要取得tcpmp的源程序分發包,這種分發包有兩種 形式,一種是tar壓縮包(tcpmp-3_4a5.tar.Z),另一種是rpm的分發包(tcpmp-3_4a5.src.rpm)。這兩種 形式的內容都是一樣的,不同的僅僅是壓縮的方式.tar的壓縮包可以使用如下命令解開:
#tar xvfz tcpmp-3_4a5.tar.Z
rpm的包可以使用如下命令安裝:
#rpm -ivh tcpmp-3_4a5.src.rpm
這樣就把tcpmp的源代碼解壓到/usr/src/redhat/SOURCES目錄下.

· 第二步 做好編譯源程序前的准備活動
在編譯源程序之前,最好已經確定庫文件libpcap已經安裝完畢,這個庫文件是tcpmp軟體所需的庫文件。同樣,你同時還要有一個標準的c語言編譯器。在linux下標準的c 語言編譯器一般是gcc。 在tcpmp的源程序目錄中。有一個文件是Makefile.in,configure命令就是從Makefile.in文件中自動產生Makefile文件。在Makefile.in文件中,可以根據系統的配置來修改BINDEST 和 MANDEST 這兩個宏定義,預設值是
BINDEST = @sbindir @
MANDEST = @mandir @
第一個宏值表明安裝tcpmp的二進制文件的路徑名,第二個表明tcpmp的man 幫助頁的路徑名,你可以修改它們來滿足系統的需求。

· 第三步 編譯源程序
使用源程序目錄中的configure腳本,它從系統中讀出各種所需的屬性。並且根據Makefile.in文件自動生成Makefile文件,以便編譯使用.make 命令則根據Makefile文件中的規則編譯tcpmp的源程序。使用make install命令安裝編譯好的tcpmp的二進制文件。
總結一下就是:
# tar xvfz tcpmp-3_4a5.tar.Z
# vi Makefile.in
# . /configure
# make
# make install

[2].Tcpmp的使用
tcpmp採用命令行方式,它的命令格式為:
tcpmp [ -adeflnNOpqStvx ] [ -c 數量 ] [ -F 文件名 ]
[ -i 網路介面 ] [ -r 文件名] [ -s snaplen ]
[ -T 類型 ] [ -w 文件名 ] [表達式 ]

1. tcpmp的選項介紹
-a 將網路地址和廣播地址轉變成名字;
-d 將匹配信息包的代碼以人們能夠理解的匯編格式給出;
-dd 將匹配信息包的代碼以c語言程序段的格式給出;
-ddd 將匹配信息包的代碼以十進制的形式給出;
-e 在輸出行列印出數據鏈路層的頭部信息;
-f 將外部的Internet地址以數字的形式列印出來;
-l 使標准輸出變為緩沖行形式;
-n 不把網路地址轉換成名字;
-t 在輸出的每一行不列印時間戳;
-v 輸出一個稍微詳細的信息,例如在ip包中可以包括ttl和服務類型的信息;
-vv 輸出詳細的報文信息;
-c 在收到指定的包的數目後,tcpmp就會停止;
-F 從指定的文件中讀取表達式,忽略其它的表達式;
-i 指定監聽的網路介面;
-r 從指定的文件中讀取包(這些包一般通過-w選項產生);
-w 直接將包寫入文件中,並不分析和列印出來;
-T 將監聽到的包直接解釋為指定的類型的報文,常見的類型有rpc (遠程過程 調用)和snmp(簡單網路管理協議;)

2. tcpmp的表達式介紹
表達式是一個正則表達式,tcpmp利用它作為過濾報文的條件,如果一個報文滿足表達式的條件,則這個報文將會被捕獲。如果沒有給出任何條件,則網路上所有的信息包將會被截獲。
在表達式中一般如下幾種類型的關鍵字,一種是關於類型的關鍵字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主機,net 202.0.0.0 指明 202.0.0.0是一個網路地址,port 23 指明埠號是23。如果沒有指定類型,預設的類型是host.
第二種是確定傳輸方向的關鍵字,主要包括src , dst ,dst or src, dst and src ,這些關鍵字指明了傳輸的方向。舉例說明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的網路地址是202.0.0.0 。如果沒有指明方向關鍵字,則預設是src or dst關鍵字。
第三種是協議的關鍵字,主要包括fddi,ip ,arp,rarp,tcp,udp等類型。Fddi指明是在FDDI(分布式光纖數據介面網路)上的特定的網路協議,實際上它是"ether"的別名,fddi和ether具有類似的源地址和目的地址,所以可以將fddi協議包當作ether的包進行處理和分析。其他的幾個關鍵字就是指明了監聽的包的協議內容。如果沒有指定任何協議,則tcpmp將會監聽所有協議的信息包。
除了這三種類型的關鍵字之外,其他重要的關鍵字如下:gateway, broadcast,less,greater,還有三種邏輯運算,取非運算是 'not ' '! ', 與運算是'and','&&';或運算 是'or' ,'';
這些關鍵字可以組合起來構成強大的組合條件來滿足人們的需要,下面舉幾個例子來說明。
(1)想要截獲所有210.27.48.1 的主機收到的和發出的所有的數據包:
#tcpmp host 210.27.48.1
(2) 想要截獲主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通信,使用命令:(在命令行中適用括弧時,一定要
#tcpmp host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
(3) 如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包,使用命令:
#tcpmp ip host 210.27.48.1 and ! 210.27.48.2
(4)如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令:
#tcpmp tcp port 23 host 210.27.48.1

3. tcpmp 的輸出結果介紹
下面我們介紹幾種典型的tcpmp命令的輸出信息
(1) 數據鏈路層頭信息
使用命令#tcpmp --e host ice
ice 是一台裝有linux的主機,她的MAC地址是0:90:27:58:AF:1A
H219是一台裝有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一條命令的輸出結果如下所示:
21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice.telne
t 0:0(0) ack 22535 win 8760 (DF)
分析:21:50:12是顯示的時間, 847509是ID號,eth0 <表示從網路介面eth0 接受該數據包,eth0 >表示從網路介面設備發送數據包, 8:0:20:79:5b:46是主機H219的MAC地址,它表明是從源地址H219發來的數據包. 0:90:27:58:af:1a是主機ICE的MAC地址,表示該數據包的目的地址是ICE . ip 是表明該數據包是IP數據包,60 是數據包的長度, h219.33357 > ice.telnet 表明該數據包是從主機H219的33357埠發往主機ICE的TELNET(23)埠. ack 22535 表明對序列號是222535的包進行響應. win 8760表明發送窗口的大小是8760.

(2) ARP包的TCPDUMP輸出信息
使用命令#tcpmp arp
得到的輸出結果是:
22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)
分析: 22:32:42是時間戳, 802509是ID號, eth0 >表明從主機發出該數據包, arp表明是ARP請求包, who-has route tell ice表明是主機ICE請求主機ROUTE的MAC地址。 0:90:27:58:af:1a是主機ICE的MAC地址。

(3) TCP包的輸出信息
用TCPDUMP捕獲的TCP包的一般輸出信息是:
src > dst: flags data-seqno ack window urgent options
src > dst:表明從源地址到目的地址, flags是TCP包中的標志信息,S 是SYN標志, F (FIN), P (PUSH) , R (RST) "." (沒有標記); data-seqno是數據包中的數據的順序號, ack是下次期望的順序號, window是接收緩存的窗口大小, urgent表明數據包中是否有緊急指針. Options是選項.

(4) UDP包的輸出信息
用TCPDUMP捕獲的UDP包的一般輸出信息是:
route.port1 > ice.port2: udp lenth
UDP十分簡單,上面的輸出行表明從主機ROUTE的port1埠發出的一個UDP數據包到主機ICE的port2埠,類型是UDP, 包的長度是lenth上面,我就詳細介紹了TCPDUMP的安裝和使用,希望會對大家有所幫助。如果想要熟練運用TCPDUMP這個LINUX環境下的SNIFFER利器,還需要大家在實踐中總結經驗,充分發揮它的威力。
(五).windows平台上的sniffer
我推薦netxray和sniffer pro軟體,想必大家都用過他們,不過我在這兒還要再簡單介紹一下他們。
netxray的使用說明
1.1.1.1----2.2.2.2----3.3.3.3----4.4.4.4 這是一個ShareHub連接下的區域網

5.5.5.5 這是一個8080埠上的http/ftp proxy

Internet

啟動Capture,?

10. sniffer問題,高分請求各位高手

當你在兩台計算機上同時使用Sniffer其中一台一般都會報出存在另一個Sniffer,當然也不排除的確存在安全隱患,你可以這樣,由於sniffer不能跨網段掃描~你可以劃分網段將計算機隔離~完全禁止同寢室的計算機互相通訊~發包都不讓~這不影響你們正常上網~平時的通訊盡量用加密等級高的方式比如上支持https的站點~計算機路由器的密碼都要定期更換~系統重新做~這樣就可以防止信息被竊~如果真的存在嗅探者~那你們可要當心~這是個高手~不過我的辦法能讓你的防禦等級上一個台階~如果嗅探是他的絕招那麼他還需要學習一年多才能排除我設下的障礙~速度應該會上去~你們可以用基本的網路命令查一下~看是不是路由器的問題~因為這樣一個高手沒必要去一個普通學生寢室抓包獲取信息~

Sniffer(嗅探器)是一種常用的收集有用數據方法,這些數據可以是用戶的帳號和密碼,可以是一些商用機密數據等等。Snifffer可以作為能夠捕獲網路報文的設備,ISS為Sniffer這樣定義:Sniffer是利用計算機的網路介面截獲目的地為其他計算機的數據報文的一種工具。

Sniffer的正當用處主要是分析網路的流量,以便找出所關心的網路中潛在的問題。例如,假設網路的某一段運行得不是很好,報文的發送比較慢,而我們又不知道問題出在什麼地方,此時就可以用嗅探器來作出精確的問題判斷。 在合理的網路中,sniffer的存在對系統管理員是致關重要的,系統管理員通過sniffer可以診斷出大量的不可見模糊問題,這些問題涉及兩台乃至多台計算機之間的異常通訊有些甚至牽涉到各種的協議,藉助於sniffer%2C系統管理員可以方便的確定出多少的通訊量屬於哪個網路協議、佔主要通訊協議的主機是哪一台、大多數通訊目的地是哪台主機、報文發送佔用多少時間、或著相互主機的報文傳送間隔時間等等,這些信息為管理員判斷網路問題、管理網路區域提供了非常寶貴的信息。

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

為了對sniffer的工作原理有一個深入的了解,我們先簡單介紹一下HUB與網卡的原理。

預備知識

HUB工作原理
由於乙太網等很多網路(常見共享HUB連接的內部網)是基於匯流排方式,物理上是廣播的,就是當一個機器發給另一個機器的數據,共享HUB先收到然後把它接收到的數據再發給其他的(來的那個口不發了)每一個口,所以在共享HUB下面同一網段的所有機器的網卡都能接收到數據。

交換式HUB的內部單片程序能記住每個口的MAC地址,以後就該哪個機器接收就發往哪個口,而不是像共享HUB那樣發給所有的口,所以交換HUB下只有該接收數據的機器的網卡能接收到數據,當然廣播包還是發往所有口。顯然共享HUB的工作模式使得兩個機器傳輸數據的時候其他機器別的口也佔用了,所以共享HUB決定了同一網段同一時間只能有兩個機器進行數據通信,而交換HUB兩個機器傳輸數據的時候別的口沒有佔用,所以別的口之間也可以同時傳輸。這就是共享HUB與交換HUB不同的兩個地方,共享HUB是同一時間只能一個機器發數據並且所有機器都可以接收,只要不是廣播數據交換HUB同一時間可以有對機器進行數據傳輸並且數據是私有的。

網卡工作原理
再講講網卡的工作原理。網卡收到傳輸來的數據,網卡內的單片程序先接收數據頭的目的MAC地址,根據計算機上的網卡驅動程序設置的接收模式判斷該不該接收,認為該接收就在接收後產生中斷信號通知CPU,認為不該接收就丟棄不管,所以不該接收的數據網卡就截斷了,計算機根本就不知道。CPU得到中斷信號產生中斷,操作系統就根據網卡驅動程序中設置的網卡中斷程序地址調用驅動程序接收數據,驅動程序接收數據後放入信號堆棧讓操作系統處理。

區域網如何工作
數據在網路上是以很小的稱為幀(Frame)的單位傳輸的幀由好幾部分組成,不同的部分執行不同的功能。(例如,乙太網的前12個位元組存放的是源和目的的地址,這些位告訴網路:數據的來源和去處。乙太網幀的其他部分存放實際的用戶數據、TCP/IP的報文頭或IPX報文頭等等)。

幀通過特定的網路驅動程序進行成型,然後通過網卡發送到網線上。通過網線到達它們的目的機器,在目的機器的一端執行相反的過程。接收端機器的乙太網卡捕獲到這些幀,並告訴操作系統幀的到達,然後對其進行存儲。就是在這個傳輸和接收的過程中,嗅探器會造成安全方面的問題。

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

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

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

當採用共享HUB,用戶發送一個報文時,這些報文就會發送到LAN上所有可用的機器。在一般情況下,網路上所有的機器都可以「聽」到通過的流量,但對不屬於自己的報文則不予響應(換句話說,工作站A不會捕獲屬於工作站B的數據,而是簡單的忽略這些數據)。

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

Sniffer

Sniffer原理
有了這HUB、網卡的工作原理就可以開始講講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就是一種能將本地網卡狀態設成『雜收』狀態的軟體,當網卡處於這種「雜收」方式時,該網卡具備「廣播地址」,它對遇到的每一個幀都產生一個硬體中斷以便提醒操作系統處理流經該物理媒體上的每一個報文包。(絕大多數的網卡具備置成雜收方式的能力)

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

嗅探器在功能和設計方面有很多不同。有些只能分析一種協議,而另一些可能能夠分析幾百種協議。一般情況下,大多數的嗅探器至少能夠分析下面的協議:標准乙太網、TCP/IP、IPX、DECNet。

嗅探器造成的危害
sniffing是作用在網路基礎結構的底層。通常情況下, 用戶並不直接和該層打交道,有些甚至不知道有這一層存在。所以,應該說snffer的危害是相當之大的,通常,使用sniffer是在網路中進行欺騙的開始。它可能造成的危害:

嗅探器能夠捕獲口令。這大概是絕大多數非法使用sniffer的理由,sniffer可以記錄到明文傳送的userid和passwd。
能夠捕獲專用的或者機密的信息。比如金融帳號,許多用戶很放心在網上使用自己的信用卡或現金帳號,然而sniffer可以很輕松截獲在網上傳送的用戶姓名、口令、信用卡號碼、截止日期、帳號和pin。比如偷窺機密或敏感的信息數據,通過攔截數據包,入侵者可以很方便記錄別人之間敏感的信息傳送,或者乾脆攔截整個的email會話過程。
可以用來危害網路鄰居的安全,或者用來獲取更高級別的訪問許可權。
窺探低級的協議信息。
這是很可怕的事,通過對底層的信息協議記錄,比如記錄兩台主機之間的網路介面地址、遠程網路介面ip地址、ip路由信息和tcp連接的位元組順序號碼等。這些信息由非法入侵的人掌握後將對網路安全構成極大的危害,通常有人用sniffer收集這些信息只有一個原因:他正要進行一次欺騙(通常的ip地址欺騙就要求你准確插入tcp連接的位元組順序號),如果某人很關心這個問題,那麼sniffer對他來說只是前奏,今後的問題要大得多。(對於高級的hacker而言,我想這是使用sniffer的唯一理由吧)
事實上,如果你在網路上存在非授權的嗅探器就意味著你的系統已經暴露在別人面前了。

一般Sniffer只嗅探每個報文的前200到300個位元組。用戶名和口令都包含在這一部分中,這是我們關心的真正部分。工人,也可以嗅探給定介面上的所有報文,如果有足夠的空間進行存儲,有足夠的那裡進行處理的話,將會發現另一些非常有趣的東西……

簡單的放置一個嗅探器並將其放到隨便什麼地方將不會起到什麼作用。將嗅探器放置於被攻擊機器或網路附近,這樣將捕獲到很多口令,還有一個比較好的方法就是放在網關上。sniffer通常運行在路由器,或有路由器功能的主機上。這樣就能對大量的數據進行監控。sniffer屬第二層次的攻擊。通常是攻擊者已經進入了目標系統,然後使用sniffer這種攻擊手段,以便得到更多的信息。如果這樣的話就能捕獲網路和其他網路進行身份鑒別的過程