《熬夜整理》保姆級系列教程-玩轉Wireshark抓包神器教程(1)-初識Wireshark

宏哥發表於2024-01-31

1.簡介

  前邊已經介紹過兩款抓包工具,應該是夠用了,也能夠處理在日常工作中遇到的問題了,但是還是有人留言讓宏哥要講解講解Wireshark這一款抓包工具,說實話宏哥之前也沒有用過這款工具,只能邊研究邊分享。換句話說就是現學現賣,希望大家不要介意,宏哥這裡的分享僅供你參考學習,有錯誤的地方也歡迎你指出。你自己也可以深入的研究一下。

2.軟體介紹

Wireshark(前稱Ethereal)是一款免費開源的網路嗅探抓包工具,世界上最流行的網路協議分析器!網路封包分析軟體的功能是擷取網路封包,並儘可能顯示出最為詳細的網路封包資料。Wireshark網路抓包工具使用WinPCAP作為介面,直接與網路卡進行資料包文交換,可以實時檢測網路通訊資料,檢測其抓取的網路通訊資料快照檔案,透過圖形介面瀏覽這些資料,可以檢視網路通訊資料包中每一層的詳細內容。它的強大特性:例如包含有強顯示過濾器語言和檢視TCP會話重構流的能力,支援幾百種協議和流媒體型別。

網路封包分析軟體的功能可想像成 "電工技師使用電錶來量測電流、電壓、電阻" 的工作 - 只是將場景移植到網路上,並將電線替換成網路線。在過去,網路封包分析軟體是非常昂貴的,或是專門屬於營利用的軟體。Ethereal的出現改變了這一切。在GNUGPL通用許可證的保障範圍底下,使用者可以以免費的代價取得軟體與其原始碼,並擁有針對其原始碼修改及客製化的權利。Ethereal是目前全世界最廣泛的網路封包分析軟體之一。

Wireshark 在網路排障中使用非常頻繁,顯示了網路模型中的第 2 層到第 5 層(鏈路層、網路層、傳輸層、應用層),不管是網路工程師、網路安全工程師、駭客、軟體開發工程師,平時都會用到Wireshark。

3.WireShark簡史

1997年,Gerald Combs 需要一個工具追蹤網路問題,並且想學習網路知識。所以他開始開發Ethereal (Wireshark專案以前的名稱) 以解決自己的需求。

1998年,Ethreal0.2.0版誕生了。此後不久,越來越多的人發現了它的潛力,併為其提供了底層分析。

Wireshark 是一款免費開源的資料包嗅探器/分析器,可用於捕獲網路上的資料包。Wireshark 最初的版本叫做 Ethereal,由 Gerald Combs 於1998年釋出,Wireshark 軟體和官網上都可以看到他的名字排在首位:

 

2006年5月,Gerald Combs前往CACE Technologies工作,但是他沒能拿到 Ethereal 的商標權。為了保證專案成功執行下去,Combs 和他的開發團隊在 2006 年年中將這個專案重新命名為 Wireshark。

隨著 Combs 和其他貢獻者在接下來十幾年內持續維護 Wireshark 的程式碼併發布新版本,Wireshark 已經成為世界上最流行的資料包分析/嗅探軟體之一。

上述的 Wireshark 歷史在網路上很容易查到,但是這些資料並未提及 Combs 為何要將該軟體取名為 Wireshark(如果有讀者能找到請在評論區指出)。

不過官網上有這樣一個問題可以參考:

這個回答中的 carcharodon 無疑讓人想起了最有名的鯊魚——大白鯊 (Carcharodon carcharias)。大家都知道鯊魚具有極其靈敏的嗅覺,能在幾公里外嗅到受傷的獵物,用 shark來命名資料包嗅探器真是再合適不過了。

連 Wireshark 圖示都是鯊魚鰭的形狀,如下圖所示:

2008年,在經過了十年的發展後,Wireshark釋出了1.0版本。

4.WireShark可以做什麼

簡而言之,WireShark主要作用就是可以抓取各種埠的報文,包括有線網口、無線網口、USB口、LoopBack口等等,從而就可以很方便地進行協議學習、網路分析、系統排錯等後續任務。

支援實時捕獲資料並儲存為pcap檔案

支援從已經捕獲的資料包中讀取資料;

支援超過1000種標準/專用協議解析

支援建立外掛解析私有協議;

支援使用捕獲和顯示過濾器細化資料;

支援TLS協議解密(設定比較複雜,不如使用charles/burp/fidder方便)

上邊說了一堆,換句話主要就是三點:

①分析網路底層協議,

②解決網路故障問題,

③找尋網路安全問題。

5.Wireshark不能做的

為了安全考慮,wireshark只能檢視封包,而不能修改封包的內容,或者傳送封包。

不支援編輯修改資料包(需要編輯資料包建議使用 WireEdit)

不支援入侵/檢測異常流量 

6.Wireshark VS Fiddler

Fiddler是在windows上執行的程式,專門用來捕獲HTTP,HTTPS的。

wireshark能獲取HTTP,也能獲取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的內容。

7.同類的其他工具

1.微軟的network monitor

2.Sniffer 

3.Omnipeek

4.Fiddler

5.Httpwatch

6.科來網路分析系統

8.什麼人會用到wireshark

1. 網路管理員會使用wireshark來檢查網路問題

2. 軟體測試工程師使用wireshark抓包,來分析自己測試的軟體

3. 從事socket程式設計的工程師會用wireshark來除錯

4. IT運維工程師

5.網路工程師

6.安全工程師

7.聽說,華為,中興的大部分工程師都會用到wireshark。

總之跟網路相關的東西,都可能會用到wireshark。

9.平臺支援

Wireshark可以在以下平臺執行:

①Windows

②MacOS

③Linux/Unix

10.相關網址

1.官網:https://www.wireshark.org/

2.書籍:http://www.wiresharkbook.com/

3.維基文件:https://wiki.wireshark.org/

11.Wireshark抓包原理

Wireshark使用WinPCAP作為介面,直接與網路卡進行資料包文交換。Wireshark使用的環境大致分為兩種,一種是電腦直連網路的單機環境,另外一種就是應用比較多的網路環境,即連線交換機的情況。

「單機情況」下,Wireshark直接抓取本機網路卡的網路流量;

「交換機情況」下,Wireshark透過埠映象、ARP欺騙等方式獲取區域網中的網路流量。

埠映象:利用交換機的介面,將區域網的網路流量轉發到指定電腦的網路卡上。

ARP欺騙:交換機根據MAC地址轉發資料,偽裝其他終端的MAC地址,從而獲取區域網的網路流量。

抓包原理分為網路原理和底層原理1.網路原理: 1)本機環境-直接抓本機網路卡進出的流量:直接在終端安裝ws,然後ws抓本機網路卡的與網際網路通訊的流量。 2)集線器環境(老網路)-集線器:向其他所有埠都會泛洪,抓整個區域網裡面的包。

11.1網路抓包原理

網路中不論傳輸什麼,最終透過物理介質傳送的都是二進位制,類似於0101的Bit流。純文字(字串)中文通常採用UTF-8編碼,英文用ASCII編碼;非純文字音訊、影片、圖片、壓縮包等按不同編碼封裝好,轉換成二進位制傳輸。在IP網路中,透過Wireshark抓包,獲取的原始資料都是二進位制。

哪種網路情況下能夠抓取到包呢?下面結合網路原理講解。網路抓包主要存在三種情況:本機環境、集線器環境和交換機環境。

11.1.1本機環境

本機環境直接抓包本機網路卡進出的流量。Wireshark會繫結我們的網路卡,不需要藉助第三方裝置(交換機、集線路由器)就能抓取我們的網路通訊流量,這是最基本的抓包方式。即直接抓取進出本機網路卡的流量包。這種情況下,wireshark會繫結本機的一塊網路卡。

11.1.2集線器環境

集線器環境可以做流量防洪,同一衝突域。集線器的英文是“Hub”,“Hub”是“中心”的意思,集線器的主要功能是對接收到的訊號進行再生整形放大,以擴大網路的傳輸距離,同時把所有節點集中在以它為中心的節點上。它工作於OSI參考模型第一層,即“物理層”。

假設三臺電腦通訊,PC1處安裝Wireshark,當PC2、PC3傳送資料包到集線器網路裡面(衝突域或廣播域),由於集線器是物理層產品,不能識別MAC地址、IP地址,它會將接收包往其他所有介面泛洪,此時Wireshark就能抓到從同一個集線器其他電腦發過來的資料包,即區域網中的資料包。這是一種典型的老網路做法,現在基本淘汰。

用於抓取流量泛洪,衝突域內的資料包,即整個區域網的資料包。

11.1.3交換機環境

交換機環境是更加常見的方式,包括埠映象、ARP欺騙、MAC泛洪。

11.1.3.1埠映象

交換機是一種資料鏈路層甚至網路層的產品,它的轉包接包嚴格按照交換機上的MAC地址表通訊。所以正常情況下,PC2和PC3通訊流量是很難流到PC1的網路卡上。當PC2和PC3通訊時,PC1是無法透過Wireshark抓到包。但是我們可以在交換機埠做SAPN埠映象操作,它會將其他兩個口的流量複製一份到PC1處,PC1的網路卡和Wireshark設定為混插模式,此時就能進行抓包。該模式常用於很多付費的流量分析軟體。這種方式下,交換機嚴格按照tenlnet表和mac地址表進行轉發資料包。當pc2和pc3通訊的時候,預設是pc1是無法抓取資料包的,但是可以透過在交換機上設定策略,即埠映象。這樣Pc2和Pc3通訊的資料包就被複制一份到連線pc2的那個交換機埠,這樣pc2就可以抓取到Pc2和Pc3的通訊資料包了。

11.1.3.2ARP欺騙

假設我們沒有許可權在交換機上做埠映象技術,因為有MAC地址表,又想獲取整個區域網中的流量,竊取到PC2、PC3上的流量。這可以透過著名的ARP攻擊軟體Cain&Abel實現,其流程是:

  • 首先,PC2傳送ARP請求廣播包,交換機收到包之後會發給PC1和PC3。
  • PC1和PC3接收到,正常情況下PC1會丟棄該包,因為詢問的是PC3,但ARP欺騙會回覆“我是IP3,對應地址為MAC1”,這就是典型的ARP欺騙或ARP病毒。
  • 最後PC2會將流量封裝成底層的MAC1回覆過去。如果PC3和PC1都回應,但APR有個特性叫後到優先,PC1會做一個錯誤的繫結,將資料包發到MAC1,從而導致PC2和PC3的通訊流量都會經過PC1,這也是典型的流量劫持、區域網攻擊。

步驟如下:

(1)PC2想和PC3通訊,故而向交換機傳送廣播

(2)正常情況下PC1會將此包丟棄掉(因為要找的不是它),但是這裡的PC1會進行ARP欺騙,告訴PC2它就是PC2要找的PC3

(3)因為ARP後到優先的特性,PC2很大可能會認為PC1的MAC地址是自己要找的PC3

(4)就這樣,PC2和PC3的通訊就變成了PC2和PC1的通訊了。

(5)至於後續PC1要不要把資料(可能被修改的資料)交給PC3,那完全取決於PC1的心情。

以上便是區域網ARP攻擊的典型情況。

11.1.3.3MAC泛洪

透過工具泛洪帶來大量垃圾包,產生大量MAC地址,此時交換機MAC地址表會變為右邊這張表(爆表),MAC2和MAC3被擠出了MAC地址表。一旦這種MAC地址被擠出MAC地址表,按照交換機原理,如果收到的資料包是未知,它會對外泛洪,此時PC2和PC3對外流量泛洪。

這種情況下,PC1沒有埠映象的許可權,所以它不能直接擷取全網的流量,那麼該怎麼做呢?

(1)PC1傳送大量垃圾包,這裡產生了大量的MAC地址,導致MAC表爆表

(2)PC2和PC3發出的資料找不到目的地址就會進行全網泛洪,被PC1擷取全網流量

11.2底層原理

那麼,抓包的底層架構是怎樣的?下面開始講解Wireshark的底層原理。

底層原理:wireshark底層抓包工具。

12.wireshark整體架構

Wireshark包括5層架構:

最底層Win-/libpcap:wireshark底層驅動軟體,Wireshark抓包時依賴的庫檔案(驅動檔案、庫檔案)

Capture:抓包引擎,利用libpcap/WinPcap底層抓取網路資料包,libpcap/WinPcap提供了通用的抓包介面,能從不同型別的網路介面(包括乙太網、令牌環網、ATM網等)獲取資料包

Wiretap:將抓來的二進位制資料轉換成需要的格式檔案,此時獲取的是一些位元流,透過Wiretap(格式支援引擎)能從抓包檔案中讀取資料包,支援多種檔案格式

Core:核心引擎,透過函式呼叫將其他模組連線在一起,起到聯動呼叫的作用,Epan(包分析引擎涉):Protocol-Tree(儲存資料包的協議資訊,協議結構採用樹形結構,解析協議報文時只需從根節點透過函式控制程式碼依次呼叫各層解析函式即可)、Dissectors(各種協議解碼器,支援700多種協議解析,解碼器能識別出協議欄位,並顯示出欄位值,Wireshark採用協議樹的形式對資料流量的各層次協議逐層處理)、Plugins(一些協議解碼器以外掛形式實現,原始碼在plugins目錄)、Display-Filters(顯示過濾引擎,原始碼在epan/dfilter目錄)。

GTK1/2:圖形處理工具,處理使用者的輸入輸出顯示,最終儲存至Harddisk硬碟中。

PS:瞭解基本的原理知識挺重要的,尤其為後續。

13.功能模組

模組名

功能

原始碼子目錄

GTK/Qt

處理所有的使用者輸入/輸出(所有的視窗,對話方塊等等)

/ui
GTK: /ui/gtk
Qt: /ui/qt

Core

主要的"粘合程式碼"(glue code),它把其他的塊組合到一起

/

Epan

(Ethereal Packet Analyzer)

協議樹(Protocol-Tree) - 儲存捕獲檔案的協議資訊資料

/epan

解析器(Dissectors) - 多種協議的解析器

/epan/dissectors

外掛(Plugins) - 一些用外掛實現的協議解析器

/plugins

顯示過濾器(Display-Filters) - 顯示過濾器引擎

/epan/dfilter

Wiretap

wiretap庫用於讀/寫libpcap格式或者其他檔案格式的捕獲檔案

/wiretap

Capture

抓包引擎相關介面

/

Dumpcap

抓包引擎. 這是唯一需要提升許可權來執行的部

/

WinPcap/libpcap

(不是Wireshark包的一部分) - 依賴於平臺的包捕獲庫,包含捕獲過濾器引擎.這就是我們為什麼有不同的顯示和捕獲 兩套過濾語法的原因 - 因為用了兩種不同的過濾引擎

-

14.WireShark程式碼流程圖

15.小結

好了,到此宏哥就將Wireshark工具的前世今生基本上全都講解和分享完了,今天時間也不早了,就到這裡!感謝您耐心的閱讀~~

相關文章