Wireshark的兩種過濾器與BPF過濾規則
Wirshark使用的關鍵就在於過濾出想要的資料包,下面介紹怎麼過濾。
抓包過濾器
Wirshark有兩種過濾器,一個是抓包過濾器,一個是顯示過濾器,他們之間的區別
在於抓包過濾器
只抓取你設定的規則,同時丟棄其他資訊,顯示過濾器
並不會丟棄資訊,只是將不符合規則的資料隱藏起來而已。有時候一旦資料包被丟棄,這些資料包就無法在恢復回來。還有一個區別就是,捕捉過濾器必須在開始捕捉前設定完畢,這一點跟顯示過濾器是不同的。
兩種過濾器的目的也是不同的:
捕捉過濾器是資料經過的第一層過濾器,它用於控制捕捉資料的數量,以避免產生過大的日誌檔案。
顯示過濾器是一種更為強大(複雜)的過濾器。它允許您在日誌檔案中迅速準確地找到所需要的記錄。
說完區別,他們也是有共同點
的,就是都遵循BPF語法。看到這裡,你可能大概就能知道wireshark的套路了,想用好他,熟練的使用BPF是關鍵,下面只是介紹了兩種過濾的流程,跟著步驟,誰都能完成特定的效果。但是給你一個新任務,你是否能快速過濾出想要的資料包呢?
使用演示
-
新增一條自定義的抓包規則
-
選擇自定義的抓包規則
技巧_只抓協議頭部引數的抓包過濾器
先看一個ICMP協議發包的特徵,
-
發包
-
分析
你會發現每一條資料包的這個位置都是00
-
解釋
知道協議的頭部都是固定這個特徵之後,我們就能完成一個根據協議頭部欄位的引數來自定義抓包過濾器
,建立這類抓包過濾器的語法為:
proto[offset:size(optional)]=value
語法對應的示意圖:
icmp[0:1]=0
這樣就完成了一個只抓取ICMP響應的抓包過濾器規則,我實驗過了,只能抓包ICMP的包。
- 常用只抓協議頭的抓包過濾器規則
抓包過濾器規則 | 描述 |
---|---|
icmp[0]=0 | ICMP響應包 |
icmp[0:1]=8 | ICMP請求包 |
icmp[0:1]=3、icmp[13]=2 | ICMP目的主機不可達資料包,僅抓取TCP SYN標記的資料包 |
icmp[13]=18 | 僅抓取TCP SYN/ACK標記的資料包 |
icmp[13]=32 | 僅抓取TCP URG標記設定資料包 |
抓包過濾器語法規則解釋
語法規則圖示:
名詞解釋:
-
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)" 不同
常見的抓包過濾器BPF
來源或目的地是指定地址的包
host 192.168.0.123
host www.taobao.com
範圍內的包
net 192.168.0.0/24
or
net 192.168.0.0 mask 255.255.255.0
抓取目的地是某範圍的包
dst net 192.168.0.0/24
or
dst net 192.168.0.0 mask 255.255.255.0
抓取來源是某範圍的包
src net 192.168.0.0/24
or
src net 192.168.0.0 mask 255.255.255.0
僅抓取DNS(埠是53)的包
port 53
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的封包。
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內的所有封包。
顯示過濾器
使用演示
在這裡輸入過濾語法,必須正確才會顯示綠色。
顯示過濾器語法規則解釋
語法圖示:
名詞解釋:
-
Protocol(協議)
您可以使用大量位於OSI模型第2至7層的協議。(wireshark支援的協議介紹 https://www.wireshark.org/docs/dfref/)
常用值:IP
、TCP
、DNS
、SSH
-
String1, String2 (可選項)
協議的子類。
點選相關父類旁的"+"號,然後選擇其子類 -
Comparison operators (比較運算子)
可以使用6種比較運算子
-
Logical expressions(邏輯運算子)
舉例:
"tcp.dstport 80 xor tcp.dstport 1025"
只有當目的TCP埠為80或者來源於埠1025(但又不能同時滿足這兩點)時,這樣的封包才會被顯示。
常見的顯示過濾器BPF
只顯示本地發出去的包
ip.src==192.168.8.60
過濾從某地址發出的請求
ip.src==192.168.8.60
過濾傳送到某地址的請求
ip.dst==192.168.8.60
過濾http協議
http
過濾某地址
http.request.uri=="/projectname/a.html"
過濾全地址(它與uri的區別是,包含host)
http.request.full_uri=="www.mydomain.com/projectname/a.html"
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 == 0x02 顯示包含TCP SYN標誌的封包。
Find文字匹配器
流量面板文字搜尋
ctr + f 彈出搜尋框
並且支援這幾種匹配模式
Stream文字搜尋
這裡只支援普通的文字搜尋;
總結_注意事項
- 寫表示式時關鍵字要轉義
當使用關鍵字作為值時,需使用反斜槓“\”
"ether proto \ip" (與關鍵字"ip"相同).
這樣寫將會以IP協議作為目標。
"ip proto \icmp" (與關鍵字"icmp"相同).
這樣寫將會以ping工具常用的icmp作為目標。
可以在"ip"或"ether"後面使用"multicast"及"broadcast"關鍵字。
當您想排除廣播請求時,"no broadcast"就會非常有用。
- 輔助生存表示式
mac os版開啟的方式
把所有協議的引數選項,可用符號都列舉出來了,對於一些陌生協議來說,是個好輔助工具。
參考
https://biot.com/capstats/bpf.html
https://wiki.wireshark.org/CaptureFilters
https://openmaniak.com/cn/wireshark_filters.php
https://staight.github.io/2018/07/25/BPF過濾規則/