瞭解使用wireshark抓包工具

樂章發表於2019-07-22

一、簡介

  1、什麼是wireshark

    百度:

    Wireshark(前稱Ethereal)是一個網路封包分析軟體。網路封包分析軟體的功能是擷取網路封包,並儘可能顯示出最為詳細的網路封包資料。Wireshark使用WinPCAP作為介面,直接與網路卡進行資料包文交換。
    在過去,網路封包分析軟體是非常昂貴的,或是專門屬於盈利用的軟體。Ethereal的出現改變了這一切。在GNUGPL通用許可證的保障範圍底下,使用者可以以免費的代價取得軟體與其原始碼,並擁有針對其原始碼修改及客製化的權利。Ethereal是目前全世界最廣泛的網路封包分析軟體之一。
    開源軟體,用GPL協議發行,所以可以免費在任意數量機器上使用
    

  2、主要應用

    幫助管理員解決網路問題

    幫助安全工程師用來檢測安全隱患

    開發人員用來測試協議執行情況

    用來學習網路協議

    等等。

  3、特性

    跨平臺支援windows/unix平臺

    在介面實時抓包

    能詳細顯示包的詳細協議資訊

    可以開啟/儲存捕捉的包

    可以匯入匯出其他程式支援的包資料格式

    可以通過多種方式過濾包

    多種方式查詢包

    通過過濾以多種彩色顯示包

    建立多種統計分析。。。

  4、多種網路介面

    可以捕捉多種網路介面,甚至無線區域網介面

  5、哪些事情不能做?

    不能用作入侵檢測系統,不會處理網路事務,僅是監視網路,不會傳送網路包或做其他互動的事情,但可以做名稱解析

二、使用wireshark

  1、開啟後看到的第一頁面,這裡就稱為初始頁面吧

  2、怎麼樣開始抓包

    通過捕獲選項

    上面的初始頁面,有兩個入口可以點選一個是在main工具欄,一個是中間位置的captrue options

    點選captrue options圖示》彈出網路卡如多網路卡指定抓包網路卡》開始抓包

  3、wireshark視窗的介紹

    wireshark主要分為7個介面

    主選單

      選單頁面包括file、edit、view、go、capture、analyze、statistics、help

    main工具欄

      一些快捷導航,比如capture,開始,停止等等

    過濾器

      指定需要捕獲所需要的條件,比如源地址/目標地址

    封包列表

      已經捕獲到的封包,有源地址/目標地址,埠;顏色的不同代表不同的

    封包詳情

      顯示封包中的各欄位

    16禁止資料

      顧名思義

    位址列

      位址列及一些雜項

  4、過濾條件

    通過集中表示式規則進行過濾

    1)protocols

      比如tcp,ether,fddi,ip,arp,rarp,decnet,lat,sca,moprc,mopdl,tcp and udp

    2)direction

      src,dst,src and dst,src or dst(不指定就是雙向)

    3)host(新版,老版本沒有host)

      net,port,host,portrange

    4)logical openrations邏輯運算

      and,or,not(下面有官方例項)

 

  5、過濾關係

    1)組合表示式

    Table 6.6. Display Filter Logical Operations

EnglishC-likeDescription and example

and

&&

Logical AND. ip.src==10.0.0.5 and tcp.flags.fin

or

||

Logical OR. ip.scr==10.0.0.5 or ip.src==192.1.1.1

xor

^^

Logical XOR. tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29

not

!

Logical NOT. not llc

[…​]

 

See “Slice Operator” below.

in

 

See “Membership Operator” below.

    2)運算子號

      參考官方https://www.wireshark.org/docs/wsug_html/#DispCompOps

   Table 6.5. Display Filter comparison operators

EnglishC-likeDescription and example

eq

==

Equal. ip.src==10.0.0.5

ne

!=

Not equal. ip.src!=10.0.0.5

gt

>

Greater than. frame.len > 10

lt

<

Less than. frame.len < 128

ge

>=

Greater than or equal to. frame.len ge 0x100

le

<=

Less than or equal to. frame.len ⇐ 0x20

contains

 

Protocol, field or slice contains a value. sip.To contains "a1762"

matches

~

Protocol or text field match Perl regualar expression. http.host matches "acme\.(org|com|net)"

bitwise_and

&

Compare bit field value. tcp.flags & 0x02

 

  6、常見過濾需求

   1)、資料鏈路層

    mac地址過濾

      eth.addr==00:0c:29:1c:8b:39

      eth.src==00:0c:29:1c:8b:39

      eth.dst==00:0c:29:1c:8b:39

   2)、網路層    

    ip地址過濾

      ip.addr==192.168.216.51

      ip.src==192.168.216.51

      ip.dst==192.168.216.51

   3)、傳輸層

      tcp/udp

      tcp.prot==80

      tcp.dstport==80

      tcp.srcport==80

   4)、應用層

      http.request.uri contains ".php"

 

   5)、wireshark支援篩選的還有很多協議,這裡不一一列舉,請檢視官方文件

      udp、tcp、arp、icmp、smtp、pop、dns、ip、ssl、http、ftp、telnet、ssh、rdp、rip、ospf

   6)、協議引數過濾

      tcp.flags.syn==0x02 顯示包含syn標誌位的資料包

      frame.len==119  整個資料包長度,從eth開始到最後

      http.request.method=="get"  顯示http請求中method值為get的包

 

   7)、邏輯條件組合篩選

    ||

    &&

    !

    組合條件“與”

    ip.src==192.168.216.51&&ip.dst==192.168.216.52

    組合條件“或”

    ip.src==192.168.216.51||ip.src==192.168.216.52

    組合條件“非”

    !(ip.src==192.168.216.51)

 

三、新版本差異 

  新版和老版本是存在很多差異的如

  1、示例1-mac

  2、示例2-ip

  3、示例3-tcp

  4、示例4-http

 四、分析tcp三次握手

  1、三次握手簡單圖示

 

  2、第一次握手

    客戶端請求建立連線,傳送請求包,標誌位SYN,序號為0

  3、第二次握手

    服務端返回確認,標誌位SYN,ACK,設定初始序列號Y=0, X+1=0+1=1,這個就是acknowledgement number了(確認序號)

  4、第三次握手

    客戶端收到伺服器發來的確認號正確,客戶端再次傳送確認ACK,SYN標誌位為0,ACK標誌位是1,確認序號=y+1=0+1,傳送序號位x+1=1,伺服器收到確認序號值與ack=1連線建立成功,開始傳輸資料

 

五、四次揮手

    四次揮手即tcp斷開連線得時候會有四次揮手得過程

    為什麼需要四次揮手那?

      因為tcp協議是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議,並且是全雙工模式,需要兩邊連線全部關閉,此tcp會話才算完全關閉,四次揮手使得tcp連線能夠可靠的終止,還有timed_wait也使得連線終止後網路上殘餘的傳送給該連線的資料被丟棄而不至於被新連線接收,這種方式也更安全

  1、圖示四次揮手

 

  2、抓包示例揮手協議圖示

  3、第一次揮手

    屬性:

      ACK+FIN:標誌位

      Seq=23:序列號

      ACK=29:接收的序列號+SYN包,也就是確認的序號

    第一次揮手,客戶端給伺服器傳送tcp包,用來關閉客戶端到伺服器的資料傳輸,傳送FIN ACK報文 seq=23 ack=29

  4、第二次揮手

     第二次揮手,伺服器收到FIN,發回一個ACK,Seq=29,ack=23

  5、第三次揮手

    服務端關閉和客戶端連線,傳送一個FIN,seq=24,ack=29

  6、第四次揮手

    第四次揮手,客戶端收到伺服器傳送的FIN後,發回ACK確認,確認序號加1,就是30,這裡就完全斷開連線了。

轉載請註明出處:https://www.cnblogs.com/zhangxingeng/p/11200063.html 

 

相關文章