網路抓包wireshark

來源:互聯網
上載者:User

標籤:

抓包應該是每個技術人員掌握的基礎知識,無論是支援人員營運人員或者是研發,多少都會遇到要抓包的情況,用過的抓包工具有fiddle、wireshark,作為一個不是經常要抓包的人員,學會用Wireshark就夠了,畢竟它是功能最全面使用者最多的抓包工具。Wireshark(前稱Ethereal)是一個網路封包分析軟體。網路封包分析軟體的功能是擷取網路封包,並儘可能顯示出最為詳細的網路封包資料。Wireshark使用WinPCAP作為介面,直接與網卡進行資料報文交換。網路封包分析軟體的功能可想像成 "電工技師使用電錶來量測電流、電壓、電阻" 的工作 - 只是將情境移植到網路上,並將電線替換成網路線。在過去,網路封包分析軟體是非常昂貴的,或是專門屬於營利用的軟體。Ethereal的出現改變了這一切。在GNUGPL通用許可證的保障範圍底下,使用者可以以免費的代價取得軟體與其原始碼,並擁有針對其原始碼修改及客制化的權利。Ethereal是目前全世界最廣泛的網路封包分析軟體之一。

wireshark的官方下載網站: http://www.wireshark.org/

wireshark是非常流行的網路封包分析軟體,功能十分強大。可以截取各種網路封包,顯示網路封包的詳細資料。

wireshark是開源軟體,可以放心使用。 可以運行在Windows和Mac OS上。


Wireshark不能做的

為了安全考慮,wireshark只能查看封包,而不能修改封包的內容,或者發送封包。


Wireshark VS Fiddler

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

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


同類的其他工具

微軟的network monitor

sniffer 

 

什麼人會用到wireshark

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

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

3. 從事socket編程的工程師會用wireshark來調試

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

 

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

 wireshark 開始抓包

開始介面

wireshark是捕獲機器上的某一塊網卡的網路包,當你的機器上有多塊網卡的時候,你需要選擇一個網卡。

點擊Caputre->Interfaces.. 出現下面對話方塊,選擇正確的網卡。然後點擊"Start"按鈕, 開始抓包

 

Wireshark 視窗介紹

 

WireShark 主要分為這幾個介面

1. Display Filter(顯示過濾器),  用於過濾

2. Packet List Pane(封包列表), 顯示捕獲到的封包, 有源地址和目標地址,連接埠號碼。 顏色不同,代表

3. Packet Details Pane(封包詳細資料), 顯示封包中的欄位

4. Dissector Pane(16進位資料)

5. Miscellanous(地址欄,雜項)

 

Wireshark 顯示過濾

使用過濾是非常重要的, 初學者使用wireshark時,將會得到大量的冗餘資訊,在幾千甚至幾萬條記錄中,以至於很難找到自己需要的部分。搞得暈頭轉向。

過濾器會協助我們在大量的資料中迅速找到我們需要的資訊。

過濾器有兩種,

一種是顯示過濾器,就是主介面上那個,用來在捕獲的記錄中找到所需要的記錄

一種是捕獲過濾器,用來過濾捕獲的封包,以免捕獲太多的記錄。 在Capture -> Capture Filters 中設定

 

儲存過濾

在Filter欄上,填好Filter的運算式後,點擊Save按鈕, 取個名字。比如"Filter 102",

Filter欄上就多了個"Filter 102" 的按鈕。

過濾運算式的規則

運算式規則

 1. 協議過濾

比如TCP,只顯示TCP協議。

2. IP 過濾

比如 ip.src ==192.168.1.102 顯示源地址為192.168.1.102,

ip.dst==192.168.1.102, 目標地址為192.168.1.102

3. 連接埠過濾

tcp.port ==80,  連接埠為80的

tcp.srcport == 80,  只顯示TCP協議的願連接埠為80的。

4. Http模式過濾

http.request.method=="GET",   只顯示HTTP GET方法的。

5. 邏輯運算子為 AND/ OR

常用的過濾運算式

過濾運算式 用途
http 只查看HTTP協議的記錄
ip.src ==192.168.1.102 or ip.dst==192.168.1.102  源地址或者目標地址是192.168.1.102
   
   

 

 

 

 

 

 

 

封包列表(Packet List Pane)

封包列表的面板中顯示,編號,時間戳記,源地址,目標地址,協議,長度,以及封包資訊。 你可以看到不同的協議用了不同的顏色顯示。

你也可以修改這些顯示顏色的規則,  View ->Coloring Rules.

 

封包詳細資料 (Packet Details Pane)

這個面板是我們最重要的,用來查看協議中的每一個欄位。

各行資訊分別為

Frame:   物理層的資料幀概況

Ethernet II: 資料連結層乙太網路幀頭部資訊

Internet Protocol Version 4: 互連網層IP包頭部資訊

Transmission Control Protocol:  傳輸層T的資料區段頭部資訊,此處是TCP

Hypertext Transfer Protocol:  應用程式層的資訊,此處是HTTP協議

 

wireshark與對應的OSI七層模型

TCP包的具體內容

 從可以看到wireshark捕獲到的TCP包中的每個欄位。

 

 

執行個體分析TCP三向交握過程

看到這, 基本上對wireshak有了初步瞭解, 現在我們看一個TCP三向交握的執行個體

 

 三向交握過程為

 

這圖我都看過很多遍了, 這次我們用wireshark實際分析下三向交握的過程。

開啟wireshark, 開啟瀏覽器輸入 http://www.cnblogs.com/tankxiao

在wireshark中輸入http過濾, 然後選中GET /tankxiao HTTP/1.1的那條記錄,右鍵然後點擊"Follow TCP Stream",

這樣做的目的是為了得到與瀏覽器開啟網站相關的資料包,將得到如

圖中可以看到wireshark截獲到了三向交握的三個資料包。第四個包才是HTTP的, 這說明HTTP的確是使用TCP建立串連的。

 

第一次握手資料包

用戶端發送一個TCP,標誌位為SYN,序號為0, 代表用戶端請求建立串連。 如

第二次握手的資料包

伺服器發回確認包, 標誌位為 SYN,ACK. 將確認序號(Acknowledgement Number)設定為客戶的I S N加1以.即0+1=1, 如

第三向交握的資料包

用戶端再次發送確認包(ACK) SYN標誌位為0,ACK標誌位為1.並且把伺服器發來ACK的序號欄位+1,放在確定欄位中發送給對方.並且在資料區段放寫ISN的+1, 如:

 就這樣通過了TCP三向交握,建立了串連

http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html

1.設定過濾條件【1】http and ip.addr == 192.168.1.106 and tcp.port == 8080【a】http:指定網路通訊協定【b】ip.addr == 192.168.1.106:指定伺服器ip地址,請根據實際情況替換。【c】tcp.port == 8080,指定連接埠號碼,請根據實際情況替換。
圖1 過濾條件【2】點擊apply    點擊apply之後可過濾得到兩個資料包,分別是HTTP請求和HTTP響應。
圖2 HTTP請求和響應
2.查看TCP資料流——Follow TCP Stream【1】在任意資料包上右擊,選擇Follow TCP Stream    該步驟可以過濾出和該HTTP資料包有關的TCP資料包,包括TCP 3次握手,TCP分區和組裝等。
圖3 選擇Follow TCP Stream【2】最終得到HTTP請求和響應【a】紅色背景字型為HTTP請求,藍色背景字型為HTTP響應【b】從User-Agent中可以看出,360瀏覽器安全色模式使用了IE8核心(該台電腦作業系統為XP,IE瀏覽器版本為8),這說明360瀏覽器使用了系統中的IE核。
圖4 HTTP請求和響應具體內容

網路中明碼傳輸的危險性

    通過明碼傳輸的protocol和工具相當多,典型的就是telnet,ftp,http。我們拿telnet做這次實驗。假設我以telnet方式登入到我的linux伺服器,然後通過wireshark抓包,以抓取帳號和密碼資訊。

1、首先啟動wireshark,並處於Capture狀態。然後通過telnet遠程登入我們的linux伺服器。

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

2、接下來停止wireshark的截取封包的操作,執行捷徑的"Stop"即可。

    不過,捕獲的資訊非常多,這個時候可以利用Display Filter功能,過濾顯示的內容,如所示,點擊Expression,然後選擇過濾運算式。這裡,我們選擇TELNET即可。

運算式確定之後,選擇"Apply",就可以過濾出只包含TELNET的封包

來,我們查看一下整個telnet會話的所有記錄, wireshark可以記錄會話記錄(就像我們聊QQ時,"QQ聊天記錄"一樣),任意找到一個telnet封包,右鍵找到"Follow TCP Stream",wireshark就會返回整個會話記錄。

OK, 我們看到以下這些資料資訊,紅色的部分是我們發送出去的DATA,藍色的部分是我們接收到的DATA。 , 告訴我, 你看到了什麼

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

從這裡,我們可以確切的抓到帳號和密碼資訊。login:wireshark  Password:123456,除了這些,我們還可以更進一步知道別人在看什麼網站,或是私人檔案,隱私將毫無保障。

註:為了避免這些情況,防止有心人監測到重要訊息,可以使用SSH,SSL,TSL,HTTPS等加密協議對重要資料進行加密,然後再到網路上傳輸,如果被人截取下來,看到的內容也是被加密的。

 <http://skypegnu1.blog.51cto.com/8991766/1540728/>常用到的過濾器規則:捕捉過濾器(CaptureFilters):用於決定將什麼樣的資訊記錄在捕捉結果中。需要在開始捕捉前設定。
顯示過濾器(DisplayFilters):在捕捉結果中進行詳細尋找。他們可以在得到捕捉結果後隨意修改。 

捕捉過濾器 Protocol(協議):可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.如果沒有特別指明是什麼協議,則預設使用所有支援的協議。 Direction(方向):可能的值: src, dst, src and dst, src or dst如果沒有特別指明來源或目的地,則預設使用 “src or dst” 作為關鍵字。 例如,”host 10.2.2.2″與”src or dst host 10.2.2.2″是一樣的。 Host(s):可能的值: net, port, host, portrange.如果沒有指定此值,則預設使用”host”關鍵字。 例如,”src 10.1.1.1″與”src host 10.1.1.1″相同。 Logical Operations(邏輯運算):可能的值:not, and, or.否(“not”)具有最高的優先順序。或(“or”)和與(“and”)具有相同的優先順序,運算時從左至右進行。 例如,“not tcp port 3128 and tcp port 23″與”(not tcp port 3128) and tcp port 23″相同。“not tcp port 3128 and tcp port 23″與”not (tcp port 3128 and tcp port 23)”不同。  例子:tcp dst port 3128  //捕捉目的TCP連接埠為3128的封包。ip src host 10.1.1.1  //捕捉來源IP地址為10.1.1.1的封包。host 10.1.2.3  //捕捉目的或來源IP地址為10.1.2.3的封包。ether host e0-05-c5-44-b1-3c //捕捉目的或來源MAC地址為e0-05-c5-44-b1-3c的封包。如果你想抓本機與所有外網通訊的資料包時,可以將這裡的mac地址換成路由的mac地址即可。src portrange 2000-2500  //捕捉來源為UDP或TCP,並且連接埠號碼在2000至2500範圍內的封包。not imcp  //顯示除了icmp以外的所有封包。(icmp通常被ping工具使用)src host 10.7.2.12 and not dst net 10.200.0.0/16 //顯示來源IP地址為10.7.2.12,但目的地不是10.200.0.0/16的封包。(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8  //捕捉來源IP為10.4.1.12或者來源網路為10.6.0.0/16,目的地TCP連接埠號碼在200至10000之間,並且目的位於網路 10.0.0.0/8內的所有封包。src net 192.168.0.0/24 src net 192.168.0.0 mask 255.255.255.0  //捕捉源地址為192.168.0.0網路內的所有封包。  顯示過濾器例子:snmp || dns || icmp //顯示SNMP或DNS或ICMP封包。 ip.addr == 10.1.1.1  //顯示來源或目的IP地址為10.1.1.1的封包。ip.src != 10.1.2.3 or ip.dst != 10.4.5.6  //顯示來源不為10.1.2.3或者目的不為10.4.5.6的封包。 換句話說,顯示的封包將會為: 來源IP:除了10.1.2.3以外任意;目的IP:任意 以及 來源IP:任意;目的IP:除了10.4.5.6以外任意ip.src != 10.1.2.3 and ip.dst != 10.4.5.6  //顯示來源不為10.1.2.3並且目的IP不為10.4.5.6的封包。 換句話說,顯示的封包將會為: 來源IP:除了10.1.2.3以外任意;同時須滿足,目的IP:除了10.4.5.6以外任意tcp.port == 25  //顯示來源或目的TCP連接埠號碼為25的封包。 tcp.dstport == 25  //顯示目的TCP連接埠號碼為25的封包。 tcp.flags  //顯示包含TCP標誌的封包。 tcp.flags.syn == 0×02  //顯示包含TCP SYN標誌的封包。 如果過濾器的文法是正確的,運算式的背景呈綠色。如果呈紅色,說明運算式有誤。



來自為知筆記(Wiz)

網路抓包wireshark

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.