學習Wireshark之二:數據包分析

    在上一篇博文中,主要講解了wireshark的界面,以及如何抓包和過濾所須要的包。這篇博文主要講解一下如何分析捕獲的數據包。
php

回顧上一篇的內容:html

抓取封包linux

    啓動wireshark,在接口列表中選擇網卡接口名,而後點擊開始,則在此接口上抓包。菜單:Capture -> Options 能夠配置高級屬性,可是如今咱們先無論。
瀏覽器

wKiom1PtpeOwhqCSAARo5sYviNQ739.jpg

    選擇一個接口,而後點擊工具欄的"Start",就能夠看到捕獲的封包。Wireshark默認會捕獲該接口全部發送和接收的封包。服務器

    若是要中止捕獲,點擊工具欄的"Stop"(紅色的小方塊),便可。若是不中止,一直會不斷的抓取數據包,可能致使咱們的內存吃緊。
網絡

wKiom1Ptp4-i-y4rAAB5mTGEg2Q162.jpg

過濾封包tcp

    默認狀況下,Wireshark會捕獲大量的封包,以致於咱們沒法找到所須要的封包。這時就要用到wireshark過濾器。wireshark提供兩種類型的過濾器,一種是捕獲過濾器,一種是顯示過濾器。
ide

    最基本的方式就是使用窗口頂端的顯示過濾器,輸入過濾表達式(或者點擊Expression按鈕,而後選擇一個過濾表達式)並點擊輸入框後的"Apply"或者按下回車。
工具

wKiom1PtrJfyMbHHAAO1cwBGKHw076.jpg一樣,咱們也能夠點擊菜單中的Analyze -> Display Filters來自定義咱們的過濾條件。post

wKiom1PtraXzk3ILAAHCqEg-8ck912.jpg

另外一個頗有趣的事情是,在封包列表窗口,選擇一個封包而後右鍵,會出現follow TCP stream或follow UDP stream(SSL我是沒見過)可選,而後follow進去。

wKioL1Ptr4_wmNzNAAOd0fNeN6o574.jpg

解釋一下:Follow Stream是什麼意思呢?也就是會話記錄,服務器和客戶端之間的所有會話記錄。

wKioL1PttFWAO-0OAAOSwI5E7uo994.jpg

新手上路一般都會疑問,這麼多請求我應該follow哪一個封包?實際看哪一個都是同樣。follow進入就是一個歷史頁面,進入了再慢慢找你須要的數據。你會發現顯示過濾表達式被自動生成,wireshark僅顯示構成此會話的全部封包。

wKiom1PttEzzPVdvAAghaIuqtmA591.jpg    

這裏還有一個更好玩的,如何構造顯示過濾表達式。

假設我要捕獲全部以首部Flags標誌爲ACK的封包,怎麼辦呢? 

wKioL1Ptt_nRn2f0AAOr33d0hwk384.jpg


TCP/IP協議棧(DOD模型)

wKioL1PtuUWh1rV1AAIUC7uxHOM866.jpg


wireshark-以太網幀示例

    wireshark是嚴格遵循OSI模型規範的。咱們知道以太網是實如今數據鏈路層和物理層的。

wKioL1Ptulqh05TxAAS8WSOVzQA917.jpg




IP數據報

wKioL1Ptur7RoisTAAD3VgkDEu4513.jpg

wKioL1PtusCz2jtwAAILtQd1axo818.jpg

wireshark-IP數據報示例

wKioL1Ptu3Dg96a4AAUdGzp4oBo690.jpg


TCP報文段

wKioL1Ptu_fgUbCoAAJSFxmOtS8202.jpg

wireshark-TCP報文段示例

wKiom1PtuuCQPFQlAAWsVGcjFkg387.jpg

    咱們能夠很清晰的看到,wireshark中的首部數據與OSI模型中各協議的首部格式是相對應的。因此,利用wireshark來學習網絡,那是很是直觀有效的。

wKiom1Ps0_3igy6cAAHK8wMKs6w115.jpg


wireshark 實戰演練

實驗一:網絡中明碼傳輸的危險性

    經過明碼傳輸的protocol和工具至關多,典型的就是telnet,ftp,http。咱們拿telnet作此次實驗。假設我以telnet方式登陸到個人linux服務器,而後經過wireshark抓包,以抓取帳號和密碼信息。

一、首先啓動wireshark,並處於Capture狀態。而後經過telnet遠程登陸咱們的linux服務器。

wKiom1PtxDOQimlAAACdwiZqfeE162.jpg

進入登陸界面後,輸入帳號和密碼登入系統。

wKioL1PtxUvT0yksAACzkwdoI_Y013.jpg

二、接下來中止wireshark的截取封包的操做,執行快捷方式的"Stop"便可。

    不過,捕獲的信息很是多,這個時候能夠利用Display Filter功能,過濾顯示的內容,以下圖所示,點擊Expression,而後選擇過濾表達式。這裏,咱們選擇TELNET便可。

wKiom1PtxVXjVpp9AAU8cd7PEgE073.jpg

表達式肯定以後,選擇"Apply",就能夠過濾出只包含TELNET的封包

wKioL1Ptx42CAgvXAAYLelyRK58954.jpg來,咱們查看一下整個telnet會話的全部記錄, wireshark能夠記錄會話記錄(就像咱們聊QQ時,"QQ聊天記錄"同樣),任意找到一個telnet封包,右鍵找到"Follow TCP Stream",wireshark就會返回整個會話記錄。

wKioL1PtyevSaTfJAASR__mwGZk771.jpg

OK, 咱們看到如下這些數據信息,紅色的部分是咱們發送出去的DATA,藍色的部分是咱們接收到的DATA。 j_0061.gif, 告訴我, 你看到了什麼

wKiom1PtyVriu__WAAINWJKx1S0346.jpg

爲了更準確的看清楚,咱們再次僅篩選出咱們發送出去的DATA。或者僅接收到的DATA。

wKioL1PtzA7D1_ewAAIm3rxMBZk668.jpg

從這裏,咱們能夠確切的抓到帳號和密碼信息。login:wireshark  Password:123456,除了這些,咱們還能夠更進一步知作別人在看什麼網站,或是私人文件,隱私將毫無保障。

注:爲了不這些狀況,防止有心人監測到重要信息,可使用SSH,SSL,TSL,HTTPS等加密協議對重要數據進行加密,而後再到網絡上傳輸,若是被人截取下來,看到的內容也是被加密的。


實驗二:HTTP Protocol

目的:經過觀察HTTP協議,練習如何過濾出本身須要的數據,並可以清楚的知道TCP/IP實際的運做方式。

這裏,咱們採用"(Capture Filter)捕獲過濾",菜單欄 Capture -> Options

跟咱們相關設定的有以下部分,Use promiscuous mode on all interfaces, Capture Filter, 其實咱們須要設定的僅僅是Captrue Filter

wKiom1PtznziqP3cAAFRgLAegaM081.jpg

Capture Filter使用libpcap filter語言,詳細的語法能夠參考tcpdump的man頁面( http://www.tcpdump.org/tcpdump_man.html )

咱們這裏不須要使用這麼複雜的過濾表達式,直接用wireshark已經創建好的經常使用功能HTTP TCP port(80)便可。首先點擊"Capture Filter"按鈕,而後選擇HTTP TCP port(80), OK以後選擇"Start"開始捕獲封包。

wKiom1Ptz6GiqZOPAALPjY85aUI325.jpg

這裏以瀏覽器訪問www.baidu.com首頁爲例, 來看看訪問一個網頁會發生什麼?

回到wireshark,看到已經抓取了不少封包。OK,前面咱們已經交代了TCP/IP協議棧,這裏就再也不累述。

看下面這幅圖中,紅色的框框,這就是TCP在作三次握手,創建鏈接。

wKioL1Pt0sTSxfEzAAZvlWQtAOg908.jpg

接下來這一行,就是Client向server做出request。

咱們能夠在封包詳細信息列表框中,針對於每一層查看,更清楚的瞭解每一層的運做模式,同理也可使用Follow TCP Stream

wKiom1Pt0xnx7E53AAPZAtlOrlo537.jpg



https://community.emc.com/message/818739#818739

http://openmaniak.com/cn/wireshark_use.php

http://blog.shaolin.tw/2008/03/wireshark.html

http://buzai.me/post-107.html

http://man.lupaworld.com/content/network/wireshark/Introduction.html#whatis

相關文章
相關標籤/搜索