溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Wireshark學(xué)習(xí)總結(jié)

發(fā)布時間:2020-07-17 10:34:58 來源:網(wǎng)絡(luò) 閱讀:8609 作者:gaoqing201008 欄目:軟件技術(shù)

簡介

Wireshark是一款開源的網(wǎng)絡(luò)協(xié)議分析工具,是遵循GPL協(xié)議發(fā)布的自由軟件,因為以上原因,人們可以很容易在Wireshark上添加新的協(xié)議,或者將其作為插件整合到您的程序里,Wireshark支持Linux、Windows、MacOS等多個操作系統(tǒng)。

Wireshark在支持協(xié)議的數(shù)量方面是出類拔萃的—已經(jīng)支持數(shù)千種協(xié)議,這些協(xié)議包括從最基礎(chǔ)的IP協(xié)議和DHCP協(xié)議到高級的專門應(yīng)用協(xié)議比如AppleTalk和BitTorrent等。由于Wireshark在開源模式下開發(fā),每次更新都會增加一些對新協(xié)議的支持。

wireshark架構(gòu)

參見下圖從功能上,wireshark可以被劃分為四個主要模塊:Capture Core,WireTap, Protocol Interpreter and Dissector和GUIintrerface。其中Capture Core使用pcap(windows下為winpcap,linux下為libpcap)抓取網(wǎng)絡(luò)數(shù)據(jù)包,獲取數(shù)據(jù)包后,WireTap把它保存為二進制文件,interpreter and dissector就是把二進制文件展現(xiàn)成用戶容易理解的文本形式,其中dissector又分為build-in和plug-in兩種,build-in很好理解,plug-in在1.3節(jié)會詳細介紹一下;GUIinterface,顧名思義就是用戶界面了。

Wireshark學(xué)習(xí)總結(jié)

 



Wireshark的安裝

在Windows系統(tǒng)中安裝很簡單。

第一步:到Wireshark的官方網(wǎng)站http://www.wireshark.org/ 上找到download頁面,并選擇一個鏡像點下載需要的版本。

第二步:下載好exe安裝包后,直接安裝,一路next,當彈出是否需要安裝WinPcap對話框時,務(wù)必要勾選install WinPcap選項。


 

使用Wireshark捕獲數(shù)據(jù)包。

從主下拉菜單中選擇Capture的Interfaces菜單項,彈出的窗口顯示出所有可以的網(wǎng)卡,選擇你想要使用的網(wǎng)卡,點擊工具欄的start按鈕開始捕獲數(shù)據(jù),點擊工具欄的stop按鈕停止捕獲。這時Wireshark主窗口中就呈現(xiàn)了相應(yīng)的數(shù)據(jù)。

Wireshark主窗口如下圖


Wireshark學(xué)習(xí)總結(jié)

Packet Lists(數(shù)據(jù)包列表):顯示了當前捕獲文件中的所有數(shù)據(jù)包,包括數(shù)據(jù)包序號、數(shù)據(jù)包被捕獲的相對時間,源地址、目標地址、協(xié)議、概況信息。

Packet Details(數(shù)據(jù)包詳情):分層次的顯示了一個數(shù)據(jù)包中的內(nèi)容,并且可以展開或是收縮來顯示這個數(shù)據(jù)包中所捕獲到的全部內(nèi)容。

Packet Bytes(數(shù)據(jù)包字節(jié)):同時以十六進制和ASCII碼的方式列出報文內(nèi)容。

抓包過濾器的配置

抓包過濾器配置于抓包之前,一經(jīng)配置,Wireshark將只抓取經(jīng)過抓包過濾器過濾的數(shù)據(jù)。抓包過濾器配置派生自libpcap/WinPcap庫中tcpdump的語法(可以從

http://wiki.wireshark.org/CaptureFilters找到捕捉過濾范例)。

抓包過濾器的配置步驟:選擇Capture | Options,彈出Capture Options窗口。雙擊選定的網(wǎng)卡,彈出EditInterface Settints窗口。

Wireshark學(xué)習(xí)總結(jié)

下圖顯示了Edit Interface Settings窗口,這里可以設(shè)置抓包過濾條件。如果你確知抓包過濾條件的語法,直接在Capture Filter區(qū)域輸入。在輸入錯誤時,Wireshark通過紅色背景區(qū)域表明無法處理過濾條件。最有可能的情況是,過濾條件中含有輸入錯誤,或是使用了 display filter的語法。點擊Capture Filter按鈕查看并選擇已保存的抓包過濾條件。

Wireshark學(xué)習(xí)總結(jié)

小貼士:

Wireshark包含了一些默認的抓包過濾條件。點擊主工具欄的Edit Capture Filters,跳轉(zhuǎn)到已保存抓包過濾列表。你會發(fā)現(xiàn)一些常見抓包過濾的示例。

 

配置Ethernet過濾器

Ethernet過濾器即為第二層(OSI模型的第二層)過濾器,即根據(jù)MAC地址來行使過濾功能的抓包過濾器。抓包原理:Ethernet抓包引擎會先拿用戶事先指定的源/或目的主機MAC地址,與抓取的以太網(wǎng)流量的源/或目的主機MAC地址相比較,再篩選出源/或目的主機MAC地址相匹配的流量。

  • ether host <Ethernet host > 讓W(xué)ireshark只抓取源于或發(fā)往由標識符Ethernethost所指定的以太網(wǎng)主機的以太網(wǎng)幀

例如:ether host00:24:d6:ab:98:b6

  • ether dst <Ethernet host > 讓W(xué)ireshark只抓取發(fā)往由標識符Ethernethost所指定的以太網(wǎng)主機的以太網(wǎng)幀

例如:ether dst00:24:d6:ab:98:b6

  • ether src<Ethernet host > 讓W(xué)ireshark只抓取由標識符Ethernethost所指定的以太網(wǎng)主機發(fā)出的以太網(wǎng)幀

例如:ether src 00:24:d6:ab:98:b6

  • ether broadcast 讓W(xué)ireshark只抓取所有以太網(wǎng)廣播流量

例如:ether broadcast

  • ether multicast 讓W(xué)ireshark只抓取所有以太網(wǎng)多播流量

例如:ether multicast

  • ether proto <protocol>所抓以太網(wǎng)流量的以太網(wǎng)協(xié)議類型編號,與標識符protocol所定義的以太網(wǎng)協(xié)議類型編號匹配

例如:ether proto 0800

  • vlan <vlan_id>讓W(xué)ireshark只抓取由標識符vlan_id所指定的VLAN的流量

例如:vlan 9999

要想讓抓包過濾器中的字符串起反作用,需在原詞之前添加關(guān)鍵字not或符號“!”

 

配置主機或網(wǎng)絡(luò)過濾器

主機或網(wǎng)絡(luò)過濾器是基于IP地址的第三層過濾器。原理:若根據(jù)主機名進行過濾,則wireshark會把用戶輸入的主機名轉(zhuǎn)換為iP地址,并抓取與這一IP地址相對于的流量。

  • host <host> 讓W(xué)ireshark只抓取源于或發(fā)往由標識符host所指定的主機名或IP地址的IP流量。

例如:host 101.10.10.2     host funshion.game.com

  • dst host <host> 讓W(xué)ireshark只抓取發(fā)往由標識符host所指定的主機名或IP地址的IP流量。

例如:dst host 101.10.10.2

  • src host <host> 讓W(xué)ireshark只抓取源于由標識符host所指定的主機名或IP地址的IP流量。

例如:src host 101.10.10.2

  • net <net > 讓W(xué)ireshark只抓取源于或發(fā)往由標識符net所標識的IPv4/IPv6網(wǎng)絡(luò)號的流量

例如:net 192.168.1.0/24

  • dst <net > 讓W(xué)ireshark只抓取發(fā)往由標識符net所標識的IPv4/IPv6網(wǎng)絡(luò)號的流量

  • src <net > 讓W(xué)ireshark只抓取源于由標識符net所標識的IPv4/IPv6網(wǎng)絡(luò)號的流量

  • broadcast 讓W(xué)ireshark只抓取IP廣播包

  • multicast 讓W(xué)ireshark只抓取IP多播包

  • ip proto <protocol code> 讓W(xué)ireshark只抓取IP包頭的協(xié)議類型字段值等于特定值的數(shù)據(jù)包(比如TCP數(shù)據(jù)包為6,UDP數(shù)據(jù)包為17,ICMP數(shù)據(jù)包為1)

例如:ip proto 1

  • icmp [icmptype] == <identifier> 讓W(xué)ireshark只抓取特定類型[icmptype]的ICMP數(shù)據(jù)包

例如:icmp [icmptype] ==icmp-echo 或icmp [icmptype] ==8

  • ip[2:2] == <number> 用來抓取特定長度的數(shù)據(jù)包

配置TCP/UDT及端口過濾器

根據(jù)第四層協(xié)議TCP/UDT的端口號來進行過濾,原理:第四次協(xié)議(主要指TCP/UPD)互連末端應(yīng)用程序的協(xié)議,對于TCP和UPD而言,端口號就是用來標識應(yīng)用程序的代號。

  • port <port>Wireshark所抓數(shù)據(jù)包的源或目的端口號將匹配標識符port所指明的端口號

例如:port 5080

  • dst port <port> Wireshark所抓數(shù)據(jù)包的目的端口號將匹配標識符port所指明的端口號

例如:dst port 80 或 dst port http

  • src port <port> Wireshark所抓數(shù)據(jù)包的源端口號將匹配標識符port所指明的端口號

  • tcp portrange <p1>-<p2> 或 udp portrange <p1>-<p2> 用來抓取源或目的端口號介于p1和p2之間的TCP活UDP數(shù)據(jù)包

例如:tcpportrange 2000-2500

  • tcp src portrange <p1>-<p2> 或 udp src portrange <p1>-<p2> 用來抓取源端口號介于p1和p2之間的TCP活UDP數(shù)據(jù)包

  • tcp dst portrange <p1>-<p2> 或 udp dst portrange <p1>-<p2> 用來抓取目的端口號介于p1和p2之間的TCP活UDP數(shù)據(jù)包

  • less <length> 讓W(xué)ireshark只抓取不長于標識符length所指定長度的數(shù)據(jù)包,等同于len <=<length>

  • greater <length> 讓W(xué)ireshark只抓取不短于標識符length所指定長度的數(shù)據(jù)包,等同于len >=<length>

  • 復(fù)合型過濾器

舉例1:讓W(xué)ireshark只抓取TCP連接中用來發(fā)起連接或終止連接的數(shù)據(jù)包

tcp [tcpflags]& (tcp-syn | tcp-fin)!=0

舉例2:讓W(xué)ireshark抓取來源于game.funshion.com的http流量

hostgame.funshion.com and port 80

配置字節(jié)偏移或凈載匹配型過濾器

就過濾功能而言,字節(jié)偏移或凈載匹配型過濾器要更加靈活,可以配置自定義型抓包過濾器。

格式:proto <Offset : bytes> 根據(jù)TCP、UDP、IP 等協(xié)議頭部中的某些字段值來實施過濾

  • ip  <Offset : bytes> 針對ip層實施過濾

  • tcp <Offset : bytes> 針對TCP頭部中的某些字段值實施過濾

  • udp <Offset : bytes>針對UDP頭部中的某些字段值實施過濾

例如:讓W(xué)ireshark抓取目的端口范圍為50~100的TCP數(shù)據(jù)包

tcp[2:2] >50 and tcp[2:2]<100  (第一個數(shù)字2指明從tcp頭部的第二個字節(jié)起開始檢查,第二個數(shù)據(jù)2指明了檢查范圍為2個字節(jié))

顯示過濾器的配置

顯示過濾器配置于抓包之后,一經(jīng)配置,Wireshark將只顯示經(jīng)過顯示過濾器過濾的數(shù)據(jù)(可以在WiresharkWiki Display頁找到發(fā)現(xiàn)大量的顯示過濾范例。http://wiki.wireshark.org/DisplayFilters。

與捕捉過濾器使用的語法不同,顯示過濾器使用的是Wireshark特定的格式。

顯示過濾器比較運算符

1.==或eq

例如:ip.src == 10.2.2.2顯示所有源地址為10.2.2.2的IPv4數(shù)據(jù)流
2. !=或ne

例如:tcp.srcport != 80顯示源端口除了80以外的所有TCP數(shù)據(jù)流
3. >或gt

例如:frame.time_relative > 1顯示距前一個報文到達時間相差1秒的報文
4. <或lt

例如:tcp.window_size < 1460顯示當TCP接收窗口小于1460字節(jié)時的報文
5. >=或ge

例如:dns.count.answers >= 10顯示包含10個以上answer的DNS響應(yīng)報文
6. <=或le

例如:ip.ttl <= 10顯示IP報文中Time to Live字段小于等于10的報文
7. Contains

例如:http contains “GET”顯示所有HTTP客戶端發(fā)送給HTTP服務(wù)器的GET請求

配置顯示過濾器的方法:

1、借助于顯示過濾器的窗口,點擊過濾器工具條上的Extensions…按鈕,彈出Filter Expression窗口,如下圖,該窗口由5個重要區(qū)域組成

Wireshark學(xué)習(xí)總結(jié)

FieldName(協(xié)議頭部中的字段名稱)區(qū)域,在該區(qū)域,可利用Wireshark預(yù)定義的協(xié)議模板來配置顯示過濾器所含各參數(shù)。點最左邊的“+”號,即可瀏覽到相關(guān)協(xié)議的各個屬性(或協(xié)議頭部中個字段的名稱)

Relation(關(guān)系)區(qū)域,可從該區(qū)域選擇條件操作符

Value(值)區(qū)域,可在該區(qū)域的輸入欄內(nèi)輸入事先從Field Name區(qū)域中選擇的協(xié)議頭部字段的熟悉值

Predefinedvalues(預(yù)定義值),該區(qū)域的值取決于Field Name設(shè)定的協(xié)議類型和協(xié)議屬性

Range(offset:length)(范圍(偏移:長度))區(qū)域,構(gòu)造字節(jié)偏移型過濾器

2、在顯示過濾器工具條的Filter輸入欄內(nèi)直接輸入顯示過濾語句,可借助于自動補齊特性,來完成過濾器的構(gòu)造。比如,若在Filter輸入欄內(nèi)輸入tcp.f時,自動補齊特性將會生效,會使Wireshark在輸入欄下自動列出所有以tcp.f打頭的顯示過濾器參數(shù)。

小貼士:

如何獲取顯示過濾器所包含的參數(shù):在Wireshark抓包主窗口的數(shù)據(jù)包結(jié)構(gòu)區(qū)域中,只要選中了任意一種協(xié)議頭部的某個字段,與該字段相對應(yīng)的顯示過濾參數(shù)將會出現(xiàn)在抓包主窗口底部狀態(tài)欄的左側(cè)。

配置Ethernet、ARP、主機和網(wǎng)絡(luò)過濾器

配置Ethernet(OSI模型的第二層)顯示過濾器的目的,讓wireshark只顯示相關(guān)的第二層以太網(wǎng)幀,依據(jù)的是MAC地址或Ethernet幀的某些熟悉。

  • 常用的Ethernet顯示過濾器:

eth.addr==<MACAddress>讓wireshark只顯示具有指定MAC地址的數(shù)據(jù)幀

例如:eth.addr==00:24:d6:ab:98:b6 讓wireshark只顯示具有指定MAC地址00:24:d6:ab:98:b6的數(shù)據(jù)幀

eth.src==<MAC Address> 讓wireshark只顯示具有指定源MAC地址的數(shù)據(jù)幀

例如:eth.src== 00:24:d6:ab:98:b6 讓wireshark只顯示源于MAC地址為00:24:d6:ab:98:b6的數(shù)據(jù)幀

eth.dst==<MAC Address>6 讓wireshark只顯示具有指定目的MAC地址數(shù)據(jù)幀

例如:eth.dst== 00:24:d6:ab:98:b6 讓wireshark只顯示目的MAC地址為00:24:d6:ab:98:b6的數(shù)據(jù)幀

eth.dst== ffff.ffff.ffff 讓wireshark只顯示以太網(wǎng)廣播幀

常用的ARP過濾器

 

arp.opcode==<value>讓wireshark只顯示指定類型的ARP幀,例如:

arp.opcode== 1 讓wireshark只顯示ARP請求幀

arp.opcode== 2 讓wireshark只顯示ARP應(yīng)答幀

arp.src.hw_mac==<MAC Address> 讓wireshark只顯示由指定MAC地址的主機發(fā)出的ARP幀

配置ip(OSI模型的第三層)顯示過濾器的目的,讓wireshark只顯示必要的第三層數(shù)據(jù)包,依據(jù)的是IP地址或IP數(shù)據(jù)包的的某些熟悉

 

常用的IP和ICMP過濾器

ip.addr== <IP Address>讓W(xué)ireshark只顯示源于或發(fā)往設(shè)有指定IP地址的主機的數(shù)據(jù)包

例如:ip.addr==200.1.1.1 and ip.addr ==192.168.1.1

ip.src== <IP Address>讓wireshark只顯示由設(shè)定ip地址發(fā)出的數(shù)據(jù)包

ip.src== 101.10.10.2

ip.dst== <IP Address>讓wireshark只顯示發(fā)往設(shè)定ip地址的主機的數(shù)據(jù)包

ip.ttl==<value>讓wireshark只顯示IP包頭中TTL字段值為指定值的數(shù)據(jù)包

ip.len==<value>讓wireshark只顯示指定長度的IP數(shù)據(jù)包

ip.version==<value>讓wireshark只顯示指定版本號的IP數(shù)據(jù)包

!Ip.src== 101.10.10.2讓wireshark顯示除了設(shè)定ip地址之外的所有發(fā)出的數(shù)據(jù)包

配置TCPUDP主機和網(wǎng)絡(luò)過濾器

  • tcp.port == <value> 或udp.port == <value>讓W(xué)ireshark在顯示數(shù)據(jù)包時,根據(jù)指定的TCP/UDP源、目的端口號來篩選。

例如:tcp.port == 80

 tcp.dstport== <value> 或udp.dstport== <value>讓W(xué)ireshark在顯示數(shù)據(jù)包時,根據(jù)指定的TCP/UDP目的端口號來篩選。

例如:tcp.dstport ==80

  • tcp.srcport == <value> 或udp.srcport == <value>讓W(xué)ireshark在顯示數(shù)據(jù)包時,根據(jù)指定的TCP/UDP源端口號來篩選。

例如:tcp.srcport ==80

  • tcp.flags:Wireshark檢查數(shù)據(jù)包TCP頭部中個標記位的置位情況

例如:tcp.flags.syn == 1:讓W(xué)ireshark顯示SYN標記位置1的TCP數(shù)據(jù)包

       tcp.flags.reset ==1:讓W(xué)ireshark顯示RST標記位置1的TCP數(shù)據(jù)包

    tcp.flags.fin== 1:讓W(xué)ireshark顯示FIN標記位置1的TCP數(shù)據(jù)包

要想讓抓包過濾器中的字符串起反作用,需在原詞之前添加關(guān)鍵字not或符號“!”

 

配置應(yīng)用層協(xié)議的顯示過濾器

常用的HTTP顯示過濾器

http.host== <”hostname”> :讓W(xué)ireshark只顯示訪問某指定主機名的HTTP協(xié)議數(shù)據(jù)包

http.request.method== ”GET”: 讓W(xué)ireshark只顯示包含HTTP GET方法的HTTP協(xié)議數(shù)據(jù)包

http.request.uri==  <”Full request URI”>讓W(xué)ireshark只顯示HTTP客戶端發(fā)起的包含指定URI請求的HTTP協(xié)議數(shù)據(jù)包。

http.request.uricontens “URI String” 讓W(xué)ireshark只顯示HTTP客戶端發(fā)起的包含指定字符串的URI請求的HTTP協(xié)議數(shù)據(jù)包。

http.cookie:讓W(xué)ireshark只顯示網(wǎng)絡(luò)中傳播的所有包含cookie請求的HTTP協(xié)議數(shù)據(jù)包

http.set_cookie:讓W(xué)ireshark只顯示所有包含由HTTP服務(wù)器發(fā)送給HTTP客戶端的cookie set命令的HTTP協(xié)議數(shù)據(jù)包。

(http.set_cookie)&& (http contens”google”):讓W(xué)ireshark只顯示所有由google HTTP服務(wù)器發(fā)送給HTTP客戶端,且包含cookie set命令的HTTP協(xié)議數(shù)據(jù)包

httpmatches “\.zip” && http.request.method == “GET”:讓W(xué)ireshark只顯示包含ZIP文件的HTTP數(shù)據(jù)包。

 

常見的DNS顯示過濾器

讓W(xué)ireshark只顯示DNS查詢和DNS響應(yīng)數(shù)據(jù)包

dns.flags.response== 0 (DNS 查詢)

dns.flags.response== 1(DNS 響應(yīng))

讓W(xué)ireshark只顯示所有anser count字段值大于或等于4的DNS響應(yīng)數(shù)據(jù)包

dns.count.answers>=4

配置字節(jié)偏移型過濾器

通用格式為:protocols[x:y] == <value> 先通過x來定位到數(shù)據(jù)包協(xié)議頭部中的某個字段,并檢查接下來y個字節(jié)的值是否等于value,Wireshark根據(jù)檢查結(jié)果來顯示抓包文件中的相關(guān)數(shù)據(jù)。這種過濾器的應(yīng)用場合非常廣泛,只要熟知各種協(xié)議頭部的格式,對其中各字段的位置及長度了然于胸,就能使用它在抓包文件中篩選出自己想看的數(shù)據(jù)包。

例如:eth.dst[0:3] == 01:00:5e,讓W(xué)ireshark只顯示IPV4多播數(shù)據(jù)包


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI