抓包

電腦專業術語

抓包(packet capture)就是將網路傳輸發送與接收的數據包進行截獲、重發、編輯、轉存等操作,也用來檢查網路安全。抓包也經常被用來進行數據截取等。

背景知識


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

主要作用


通過對網路上傳輸的數據進行抓取,可以對其進行分析,對於軟體的Debug很大的幫助。當然也可以通過抓取用戶發送的涉及用戶名和密碼的數據包來獲取用戶的密碼。
(1)網路通訊的真實內容
(2)網路故障分析
(3)程序網路介面分析
(4)木馬通訊數據內容

抓包工具


抓包工具是攔截查看網路數據包內容的軟體。通過對抓獲的數據包進行分析,可以得到有用的信息。目前流行的抓包工具有很多,比較出名的有wireshark、sniffer、httpwatch、iptool等。這些抓包工具功能各異,但基本原理相同。我們的計算機通過向網路上傳和從網路下載一些數據包來實現數據在網路中的傳播。通常這些數據包會由發出或者接受的軟體自行處理,普通用戶並不過問,這些數據包一般也不會一直保存在用戶的計算機上。抓包工具可以幫助我們將這些數據包保存下來,如果這些數據包是以明文形式進行傳送或者我們能夠知道其加密方法,那麼我們就可以分析出這些數據包的內容以及它們的用途。
目前抓包工具更多的用於網路安全,比如查找感染病毒的計算機。有時也用於獲取網頁的源代碼,以及了解攻擊者所用方法、追查攻擊者的ip地址等。

主要分類


Wireshark

Wireshark(前稱Ethereal)是目前應用最廣泛的網路數據包分析軟體之一,功能十分強大。它可以實時捕獲並詳細顯示各種類型數據包,可以通過多種方式過濾數據包,還可以進行多種統計分析。Wireshark是一個網路抓包軟體,網路抓包分析軟體的主要功能是通過抓取網路數據包,然後最大限度分析出網路數據包的詳細的資料。

Sniffer

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

Fiddler

Fiddler是一個http協議調試代理工具,它能夠記錄並檢查所有你的電腦和網際網路之間的HTTP通訊,設置斷點,查看所有的進出Fiddler的數據。 Fiddler 要比其他的網路調試器要更加簡單,因為它不僅僅暴露HTTP通訊還提供了一個用戶友好的格式。