1. 程式人生 > >Wireshark入門難?您的老朋友告訴你要怎麼做

Wireshark入門難?您的老朋友告訴你要怎麼做

Wireshark的歷史相當久遠豐富,其最初的版本叫作Ethereal,由畢業於密蘇里大學堪薩斯城分校電腦科學專業的Gerald Combs出於專案需要而開發,並於1998年以GNU Public Licence(GPL)開源許可證釋出。

在Ethereal釋出8年之後,Combs辭職並另謀高就,但是在那個時候他的僱主公司掌握著Ethereal的商標權,而Combs也沒能和其僱主就取得Ethereal商標達成協議。於是Combs和整個開發團隊在2006年年中的時候將這個專案重新冠名為Wireshark。

Wireshark隨後迅速地取得了大眾的青睞,而其合作開發團隊也壯大到500人以上,然而Ethereal專案卻再沒有前進過一步。

如果你喜歡前兩個版本,那麼相信你也會喜歡這本書。它延續了之前的寫作風格,以一種簡單易懂的方式來分析解釋。

如果你因為缺少關於網路或Wireshark更新的最新資訊而不願意嘗試之前的兩個版本,那麼你可以閱讀本書,因為這裡包含了新的網路協議擴充套件內容和關於Wireshark 2.x的更新資訊。​

我是一個非常隨意的人,所以,當我教授你一個概念時,我也會嘗試用非常隨意的方式來進行解釋。

而本書的語言也會同樣隨意,雖然晦澀的技術術語很容易讓人迷失,但我已經盡我所能地保持行文的一致與清晰,讓所有的定義更加明確、直白,沒有任何繁文縟節。

然而我終究是從偉大的肯塔基州來的,所以我不得不收起我們的一些誇張語氣,但如果你在本書中看到一些粗野的鄉村土話,請務必原諒我。

如果你真的想學習並精通資料包分析技術,你應該首先掌握本書前幾章中介紹的概念,因為它們是理解本書其餘部分的前提。

本書的後半部分將是純粹的實戰內容,或許你在工作中並不會遇到完全相同的場景,但在學習本書後你應該可以應用所學到的概念與技術,來解決你所遇到的實際問題。

Wireshark入門

1.1 Wireshark的優點

Wireshark在日常應用中具有許多優點,無論你是初學者還是資料包分析專家,Wireshark都能通過豐富的功能來滿足你的需要。我們之前為挑選資料包嗅探工具提出過一些重要的判斷特徵,讓我們來檢查一下Wireshark是否具有這些特徵。

支援的協議:Wireshark在支援協議的數量方面是出類拔萃的——在本書截稿時Wireshark已提供了超過1000種協議的支援。這些協議從最基礎的IP協議和DHCP協議到高階的專用協議,比如DNP3和BitTorrent等。由於Wireshark是在開源模式下進行開發的,因此每次更新都會增加一些對新協議的支援。

使用者友好度:Wireshark的介面是資料包嗅探工具中一種很容易理解的介面。它基於GUI,並提供了清晰的選單欄和簡明的佈局。為了增強實用性,它還提供了類似於不同協議的彩色高亮,以及通過圖形展示原始資料細節等不同功能。與類似於Tcpdump使用複雜命令列的那些資料包嗅探工具相比,Wireshark的圖形化介面對於那些資料包分析的初學者而言,是十分方便的。

價格:由於Wireshark是開源的,因此它在價格上面是無以匹敵的。Wireshark是遵循GPL協議釋出的自由軟體,任何人無論出於私人還是商業目的,都可以下載並且使用。

軟體支援:一個軟體的成敗取決於其後期支援的好壞。雖然像Wireshark這樣自由分發的軟體很少會有官方正式的支援,它依賴於開源社群的使用者群提供幫助。但幸運的是,Wireshark社群是最活躍的開源專案社群之一。

Wireshark網站上給出了很多種軟體幫助的相關連結,包括線上文件、支援與開發wiki、FAQ。很多頂尖的開發者也都註冊並關注著Wireshark的郵件列表。Riverbed Technology也提供了對Wireshark的付費支援。

原始碼訪問:因為Wireshark是開源軟體,所以你可以在任何時間訪問到其原始碼。這對查詢程式的Bug、理解協議直譯器的工作原理或自己貢獻程式碼都有很大幫助。

支援的作業系統:Wireshark對主流的作業系統都提供了支援,其中包括Windows、Mac OS X以及基於Linux的系統。你可以在Wireshark的主頁上查詢所有Wireshark支援的作業系統列表。

1.2 安裝Wireshark

Wireshark的安裝過程極其簡單,但在安裝之前要確保你的機器滿足如下要求。

任意新型的32位或64位CPU。

至少400MB可用記憶體(主要為了大型流量檔案)。

至少300MB的可用儲存空間(不包括捕獲的流量檔案)。

支援混雜模式的網絡卡。

WinPcap或libpcap驅動。

WinPcap驅動是Windows對於pcap資料包捕獲的通用程式介面(API)的實現,簡單來說就是這個驅動能夠通過作業系統捕捉原始資料包、應用過濾器,並能夠讓網絡卡切入或切出混雜模式。

雖然你也可以單獨下載安裝WinPcap,但一般最好使用Wireshark安裝包中的WinPcap。因為這個版本的WinPcap經過測試,能夠和Wireshark一起工作。

1.3.1 在微軟Windows系統中安裝

通過測試的當前Wireshark版本,能夠在微軟仍維護的Windows作業系統上執行,於本書截稿時包括Windows Vista、Windows 7、Windows 8、Windows 10 和 Windows Servers 2003/2008/2012。雖然Wireshark 也可以在一些其他版本的Windows 中執行(比如Windows XP),但這些版本不被官方支援。

在Windows中安裝Wireshark的第一步就是在Wireshark的官方網站上找到Download頁面,並選擇一個映象站點下載最新版的安裝包。

在下載好安裝包之後,遵照如下步驟實裝。

(1)雙擊.exe檔案開始進行安裝,在介紹頁面上單擊Next。

(2)閱讀許可證條款,如果同意接受此條款,單擊I Agree。

(3)選擇你希望安裝的Wireshark元件,如圖1-1所示。在本書中接受預設設定即可,然後單擊Next。

圖1-1 選擇你想要安裝的Wireshark元件

(4)在Aditional Tasks視窗中單擊Next。

(5)選擇Wireshark的安裝位置並單擊Next。

(6)當彈出是否需要安裝WinPcap的對話方塊時,務必確保Install WinPcap選項已被勾選,如圖1-2所示,然後單擊Install。安裝過程便會隨即開始。

圖1-2 將安裝WinPcap驅動的選項選中

(7)Wireshark的安裝過程進行了大約一半的時候,會開始安裝WinPcap。在介紹頁面單擊Next之後,請閱讀許可協議並單擊I Agree。

(8)你將選擇是否安裝 USBPcap選項。這是一個從USB裝置中收集資料的工具。勾選你想要的複選框並單擊Next。

(9)WinPcap和USBPcap(如果你在上一步勾選了的話)應該已經安裝到你的計算機上了,在安裝完成之後,單擊Finish。

(10)Wireshark應該已經安裝到你的計算機上了,在安裝完成之後,單擊Finish。

(11)在安裝確認介面中,單擊Finish。

1.3.2 在Linux系統中安裝

Wireshark可以在大部分基於UNIX的系統中執行。你可以通過系統包管理器下載,並安裝針對你的系統所適用的發行版本。我們在這裡只介紹幾個常見的Linux發行版本的安裝步驟。

一般來說,如果作為系統軟體安裝,你需要具有root許可權;但如果你通過編譯原始碼安裝成為本地軟體,那麼通常就不需要root許可權了。

1.基於RPM的系統

對於類似紅帽Linux(Red Hat Linux)等使用RPM的Linux發行版,比如 CentOS,很可能系統預設安裝了Yum包管理器。如果是這樣的話,你可以從發行版本的軟體源中獲取並快速安裝Wireshark。你需要做的是開啟一個控制檯視窗,並輸入以下命令:

$ sudo yum install wireshark

如果需要依賴元件,那麼你將通過提示來安裝它們。如果一切成功執行,你將可以使用命令列啟動它並通過GUI 來操作它。

2.基於DEB的系統

對於類似於Debian和Ubuntu等使用DEB的Linux發行版,你可以使用APT 包管理工具安裝Wireshark。要從系統軟體源中安裝 Wireshark,可開啟一個控制檯視窗並鍵入如下命令:如果需要依賴元件,那麼你將通過提示來安裝它們。

$ sudo apt-get install wireshark wireshark-qt

3.使用原始碼編譯

因為作業系統架構和Wireshark 功能的改變,所以從原始碼安裝的方法可能也會隨之變化,這也是建議從系統包管理器安裝的一個原因。

然而,如果你的Linux發行版沒有自動安裝包管理工具,那麼安裝Wireshark的一種高效的方法就是使用原始碼編譯。

下面的步驟給出了安裝方法。

(1)從Wireshark網站下載原始碼包。

(2)鍵入下面的命令將壓縮包解壓(將檔名替換成你所下載的原始碼包的名稱):

$ tar -jxvf <file_name_here>.tar.bz2

(3)在安裝和設定 Wireshark之前,可能需要安裝一些依賴元件。比如,Ubuntu 14.04需要一些額外的軟體包才能讓 Wireshark 工作。這些依賴元件可以用以下的命令進行安裝(你可能需要使用root許可權,你可以在命令前面新增sudo):

$ sudo apt-get install pkg-config bison flex qt5-default libgtk-3-dev

libpcap-dev qttools5-dev-tools

(4)進入解壓縮後建立的資料夾。

(5)root級別的使用者使用./configure命令配置原始碼以便於其能正常編譯。如果你不想使用預設的設定,那麼你可以在這時指定安裝選項;如果缺少相關軟體支援,那麼你應該會得到相關錯誤資訊;如果安裝成功了,那麼你應該可以得到成功提示,如圖1-3所示。

圖1-3 由./configure命令得到的成功輸出

(6)鍵入make命令將原始碼編譯成二進位制檔案。

(7)使用sudo make install命令完成最後的安裝。

(8)執行sudo/sbin/ldconfig來結束安裝。

1.3.3 在Mac OS X系統中安裝

在OS X系統中安裝Wireshark,請依照以下步驟操作。

(1)從Wireshark網站上下載針對 Mac OS X 系統的軟體包。

(2)執行安裝程式並按照指導依次安裝。只有接受了使用者使用許可規定,你才能繼續安裝。

(3)完成安裝指引。

1.4 Wireshark初步入門

在成功地在系統中裝好了Wireshark之後,你就可以開始學習使用它了。當你終於打開了這個功能強大的資料包嗅探器時,會發現你什麼都看不見!

好吧,Wireshark在剛開啟的時候確實不太好玩,只有在拿到一些資料之後事情才會變得有趣起來。

1.4.1 第一次捕獲資料包

為了能讓Wireshark得到一些資料包,你可以開始第一次資料包捕獲實驗了。你可能會想:“當網路什麼問題也沒有的時候,怎麼能捕獲資料包呢?”

第一,網路總是有問題的。如果你不相信,那麼請給你網路上所有的使用者發一封郵件,告訴他們一切都工作得非常好。

第二,資料包分析並不一定要等到有問題的時候再做。事實上,大多數的資料包分析員在分析沒有問題的網路流量上花費的時間要比解決問題的時間多。為了能高效地解決網路問題,你也同樣需要得到一個基準來與之對比。舉例來說,如果你想通過分析網路流量來解決關於DHCP的問題,那麼你至少需要知道DHCP在正常工作時的資料流是什麼樣子的。

更廣泛地講,為了能夠發現日常網路活動的異常,你必須對日常網路活動的情況有所掌握。當你的網路正常執行時,以此作為基準,就能知道網路流量在正常情況下的樣子。

閒言少敘,讓我們來捕獲一些資料包吧!

(1)開啟Wireshark。

(2)從主下拉選單中選擇Capture,然後是Interface。

這時你應該可以看到一個對話方塊,裡面列出了你可以用來捕獲資料包的各種裝置,以及它們的IP地址。

(3)選擇你想要使用的裝置,如圖1-4所示,然後單擊Start,或者直接單擊歡迎畫面中Interface List下的某一個裝置。隨後資料就會在視窗中呈現出來。

圖1-4 選擇你想要進行資料包捕獲的埠

(4)等上l min左右,當你打算停止捕獲並檢視你的資料的時候,在Capture的下拉選單中單擊Stop按鈕即可。

當你做完了以上步驟並完成了資料包的捕獲時,Wireshark的主視窗中應該已經呈現了相應的資料,但此時你可能對於那些資料的規模感到頭疼,這也就是我們把Wireshark一整塊的主視窗進行拆分的原因

1.4.2 Wireshark主視窗

Wireshark的主視窗將你所捕獲的資料包拆分並以更容易使人理解的方式呈現出來,它也將是你花費時間較多的地方。我們使用剛剛捕獲的資料包來介紹一下Wireshark的主視窗,如圖1-5所示。

圖1-5 Wireshark主視窗的設計使用了3個面板

主視窗的3個面板之間有著互相的聯絡。如果希望在Packet Details面板中檢視一個單獨的資料包的具體內容,那麼你必須在Packet List面板中單擊選中那個資料包。

在選中了資料包之後,你可以在Packet Details面板中選中資料包的某個欄位,從而在Packet Bytes面板中檢視相應欄位的位元組資訊。

面介紹了每個面板的內容。

Packet List(資料包列表):這個最上面的面板用表格顯示了當前捕獲檔案中的所有資料包,其中包括了資料包序號、資料包被捕獲時的相對時間、資料包的源地址和目標地址、資料包的協議以及在資料包中找到的概況資訊等列。

Packet Details(資料包細節):這個中間的面板分層次地顯示了一個數據包中的內容,並且可以通過展開或是收縮來顯示這個資料包中所捕獲到的全部內容。

Packet Bytes(資料包位元組):這個最下面的面板可能是最令人困惑的,因為它顯示了一個數據包未經處理的原始樣子,也就是其在鏈路上傳播時的樣子。這些原始資料看上去一點都不舒服而且不容易理解。

1.4.3 Wireshark首選項

Wireshark提供一些首選項設定可以讓你根據需要進行定製。如果需要設定Wireshark首選項,那麼需要在主下拉選單中選擇Edit並單擊Preferences,然後你便可以看到一個首選項的對話方塊,裡面有一些可以定製的選項,如圖1-6所示。

圖1-6 你可以使用Preferences對話方塊中的選項自定義Wireshark的配置

Wireshark首選項分為6個主要部分,外加1個高階選項。

Appearance(外觀):這些選項決定了Wireshark將如何顯示資料。你可以根據個人喜好對大多數選項進行調整,比如是否儲存視窗位置、3個主要視窗的佈局、滾動條的擺放、Packet List面板中列的擺放、顯示捕獲資料的字型、前景色和背景色等。

Capture(捕獲):這些選項可以讓你對於自己捕獲資料包的方式進行特殊設定,比如你預設使用的裝置、是否預設使用混雜模式、是否實時更新Packet List面板等。

Filter Expressions(過濾器表示式):在之後的章節裡我們將探討 Wireshark 是如何讓你基於設定標準去過濾流量的。這個部分中的選項可以讓你生成和管理這些過濾器。

Name Resolutions(名稱解析):通過這些設定,你可以開啟Wireshark將地址(包括MAC、網路以及傳輸名稱解析)解析成更加容易分辨的名字這一功能,並且可以設定併發處理名稱解析請求的最大數目。

Protocols(協議):這個部分中的選項可以讓你調整關於捕捉和顯示各種Wireshark解碼資料包的功能。雖然並不是針對每一個協議都可以進行調整,但是有一些協議的選項可以進行更改。除非你有特殊的原因去修改這些選項,否則最好保持它們的預設值。

Statistics(統計):這一部分提供了Wireshark中統計功能的設定選項。在第5章節我們會對之進行更深入的學習。

Advanced(高階):在以上6個部分中沒有做的設定會被歸類到這裡。通常這些設定只有Wireshark的高階使用者才會去修改。

1.4.4 資料包彩色高亮

如果你像我一樣喜歡五顏六色的物體,那麼你應該會對Packet List面板中那些不同的顏色感到興奮。如圖1-7所示(雖然圖示是黑白的,但你應該可以理解的),那些顏色看上去就像是隨機分配給每一個數據包的,但其實並不是這樣的。

圖1-7 Wireshark的彩色高亮有助於快速標識協議

每一個數據包的顏色都是有講究的,這些顏色對應著資料包使用的協議。舉例來說,所有的DNS流量都是藍色的,而HTTP流量都是綠色的。

將資料包進行彩色高亮,可以讓你迅速將不同協議的資料包分開,而不需要檢視每個資料包的Packet List面板中的協議列。你會發現這樣做在瀏覽較大的捕獲檔案時,可以極大地節省時間。

如圖1-8所示,Wireshark通過Coloring Rules(著色規則)視窗可以輕鬆地檢視每個協議所對應的顏色。如果想要開啟這個視窗,那麼可以在主下拉選單中選擇View並單擊Coloring Rules。

你可以建立你自己的著色規則,或者修改已有設定。舉例來說,使用下列步驟可以將HTTP流量綠色的預設背景改成淡紫色。

(1)開啟Wireshark,並且開啟Coloring Rules視窗(View->Coloring Rules)。

(2)在著色規則的列表中找到HTTP著色規則並單擊選中。

(3)單擊Edit按鈕,你會看到一個Edit Color Filter視窗,如圖1-9所示。​

圖1-8 你可以在Coloring Rules視窗中檢視並更改資料包的著色

圖1-9 在編輯著色過濾器時,前景色和背景色都可以進行更改

(4)單擊Background Color按鈕。

(5)使用顏色滾輪選擇一個你希望使用的顏色,然後單擊OK。

(6)再次單擊OK來應用改變,並回到主視窗。主視窗此時應該已經過載,並使用了更改過的顏色樣式。

當在網路上使用Wireshark時,可能會發現你處理某個協議的工作要比其他協議多得多。這時彩色高亮的資料包能讓你的工作更加方便。

舉例來說,如果你覺得你的網路上有一個惡意的DHCP伺服器在分發IP,那麼你可以簡單地修改DHCP協議的著色規則,使其呈現明黃色(或者其他易於辨認的顏色)。

這可以使你更快地找出所有DHCP流量,並讓你的資料包分析工作更具效率。你還可以通過基於定製的過濾器建立著色規則,來擴充套件這些著色規則的使用。

1.4.5 配置檔案

當我們想直接修改設定時,明確Wireshark 在哪裡儲存配置檔案是很有幫助的。要想找到該檔案,你可以在主下拉選單中單擊Help並選擇About Wireshark,然後單擊Folders標籤卡。該視窗如圖1-10所示。

圖1-10 定位Wireshark配置檔案的位置

Wireshark個性化設定最重要的兩個位置是個人和全域性設定目錄。全域性設定目錄包含著所有預設的配置選項。個人設定目錄只包含了針對你賬戶的配置選項。任何你所做的新配置都將會使用你提供的名字並儲存在個人配置資料夾的子目錄裡。

全域性和個人配置目錄的區別是重要的,因為任何有關全域性設定的改變都將會影響到每一個在該系統中使用Wireshark的使用者。

1.4.6 配置方案

學習了Wireshark 的引數配置後,有些時候會發現你在使用一種配置方案但很快又要切換到另一種配置方案的應用場景。其實我們沒必要每次都重新手動設定這些選項,Wireshark 引入了個性化配置方案,讓使用者可以儲存一組配置。

一個配置方案儲存了下面的設定。

Preferences 引數選項。

Capture filters 捕獲過濾器。

Display filters 顯示過濾器。

Coloring rules 著色規則。

Disabled protocols 已禁用的協議。

Forced decodes 強制解碼。

Recent settings 最近設定,比如窗格大小、選單設定和列寬。

Protocol-specific tables針對特定協議的表格,例如SNMP使用者和自定義HTTP頭。

要檢視配置方案列表,可以在主下拉選單單擊Edit,並選擇 Configuration Profiles 選項。另一種辦法是在螢幕的右下角單擊右鍵並選擇Manage Profiles選項。

當處在配置方案的那個視窗時,你將會看到Wireshark的預設配置方案,它包含了如圖1-11所示的“預設”、“藍芽”和“經典”方案。其中“Latency Investigation”方案是我自定義的方案,它被顯示為正體,而其他系統全域性或預設的方案被顯示為斜體。

圖1-11 檢視配置方案

配置方案視窗可以讓你建立、複製、刪除和應用配置方案。建立一個新的配置方案是非常簡單的。

(1)把Wireshark設定成你想要儲存的配置。

(2)在主下拉選單單擊 Edit,並選擇 Configuration Profiles 選項,以調出配置方案視窗。

(3)單擊加號(+)按鈕並且給該方案取名。

(4)單擊 OK。

當你想切換配置方案時,在配置方案視窗下選擇方案名,然後單擊 OK 即可。有一種更快的方法,就是在螢幕的右下角單擊配置檔案,然後直接選擇你想要的那個方案,如圖1-12所示。

圖1-12 快速轉換配置方案

其中一個特別有用的特性就是,每個配置方案都會儲存在單獨的目錄中,這意味著你可以方便地備份和共享給其他人。

在圖1-10所示的 folders 標籤卡下提供了全域性和個人配置檔案的路徑。你只要把那個配置方案的整個目錄複製到相同的路徑下,就可以把當前配置共享給其他計算機了。

之後你也許會需要去建立一些特別的配置方案,來解決常見問題、查詢網路延遲的源頭和調查安全問題。別被頻繁切換配置方案嚇著。恰恰相反,這可是很省時間的技巧。我知道很多高手有一堆不同的配置方案用來應對不同的場景。

現在你的Wireshark應該已經安裝好並執行起來了,你已經準備好進行資料包的分析了。

《Wireshark資料包分析實戰(第3版)》

[美]克里斯 ▪ 桑德斯(Chris Sanders) 著

Wireshark是最流行的一款網路嗅探軟體,本書在上一版的基礎上針對Wireshark 2.0.5和IPv6進行了更新,並通過大量真實的案例對Wireshark的使用進行了詳細講解,旨在幫助讀者理解Wireshark捕獲的PCAP格式的資料包,以便對網路中的問題進行排錯。

長按二維碼,可以關注我們喲

每天與你分享IT好文。

在“非同步圖書”後臺回覆“關注”,即可免費獲得2000門線上視訊課程

非同步圖書福利送不停

​邀請10名好友關注10天直接獲取非同步圖書一本(點選文字獲取活動詳情哦)

點選閱讀原文,購買Wireshark資料包分析實戰(第3版)

閱讀原文