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格式的數據包,以便對網絡中的問題進行排錯。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!