WireShark學習筆記(二)資料包過濾
WireShark有捕獲過濾器和顯示過濾器兩種過濾器,捕獲過濾器可以在捕獲資料包的時候就進行過濾,使得捕獲的時候只進行過濾的資料捕獲。顯示過濾器在顯示的時候進行過濾,使得顯示的時候將捕獲到的資料進行顯示。
這兩種過濾方式的優勢顯而易見,第一種可以減少捕獲的資料包數量,從而減少系統的負荷。第二種可以捕獲更多的資料包,只是在顯示的時候過濾,這樣可以在以後的分析中如果需要其他資料資訊的話可以直接更改顯示過濾規則將其他的資料包找到。
一、捕獲過濾器
開啟捕獲過濾器的方法是:點選Capture –>Interfaces,選擇好網絡卡之後點選Option按鈕在Capture Filtera旁邊的輸入框裡就可以輸入表示式了。
1、基本語法
由限定詞後跟一個ID名字或數字組成一個原語,一個表示式可以包含多個原語。例如:dst host 192.168.0.1 && tcp port 80中dst host 192.168.0.1組成一個原語,dst和host 是這個原語中的限定詞192.168.0.1是ID,&&是操作符,tcp port 80又組成一個原語,tcp和port是這個原語 的限定詞,80是ID,整個語句組成一個表示式。
2、BPF限定詞
限定詞 | 說明 | 例子 |
---|---|---|
Type | 指出名字或數字所代表的意思 | host、net、port |
Dir | 指明傳輸方向是前往還是來自名字或數字 | src、dst |
Proto | 限定所要匹配的協議 | ether、ip、tcp、udp、http、ftp |
3、邏輯運算子
- 連線運算子:與(&&)
- 選擇運算子:或(||)
- 否定運算子:非(!)
4、主機名和地址過濾器
WireShark可以根據主機的屬性進行過濾,包括MAC地址、IPV4、IPV6或者DNS主機名配置等過濾規則,如下例子:
- 根據IPv4過濾:host 192.168.0.1
- 根據IPv6過濾:host fe80::be30:7dff:fea0:5a6f
- 根據MAC地址過濾:ether host 00-1a-a0-52-e2-a0
- 根據流出傳輸方向過濾:src host 192.168.0.1
- 根據流入傳輸方向過濾:dst 192.168.0.1(host限定詞可以省略)
5、埠過濾
WireShark不但可以通過主機過濾還可以通過埠過濾,埠過濾通常被用來過濾使用已知埠的服務和應用。比如我們可以監控捕獲80(標準HTTP協議)埠的流量
port 80
6、協議和協議域過濾
協議過濾器可以幫助我們進行相應協議的過濾,只抓取相應協議或除這些協議的資料包,例如:
icmp (抓取icmp協議資料包)
!ip6 (抓取除ipv6協議以外的資料包)
協議域過濾器是用來對資料包某一個區域的資料進行過濾,比如要過濾icmp資料包的最開頭位置(偏移量為0)的數值是不是3:
icmp[0] == 3
如果需要過濾從最開頭向後偏移兩個位元組的資料只需要有:分割,之前寫偏移位置,之後寫偏移量即可。例如檢視icmp資料包中從最開頭向後偏移2個位元組的資料是不是0x0301:
icmp[0:2] == 0x0301
7、常用捕獲過濾器總結:
過濾器 | 說明 |
---|---|
tcp[13]&32==32 | 設定了URG位的TCP資料包 |
tcp[13]&16==16 | 設定了ACK位的TCP資料包 |
tcp[13]&8==8 | 設定了PSH位的TCP資料包 |
tcp[13]&4==4 | 設定了RST位的TCP資料包 |
tcp[13]&2==2 | 設定了SYN位的TCP資料包 |
tcp[13]&1==1 | 設定了FIN位的資料包 |
tcp[13]==18 | TCP SYN-ACK資料包 |
ether host 00:00:00:00:00 | 流入或者流出MAC地址為00:00:00:00:00的資料包 |
!ether host 00:00:00:00:00 | 不流入或者流出MAC地址為00:00:00:00:00的資料包 |
broadcast | 僅廣播流量 |
icmp | ICMP流量 |
icmp[0:2] == 0x0301 | ICMP目標不可達、主機不可達 |
ip | 僅IPv4流量 |
ip6 | 僅IPv6流量 |
udp | 僅UDP流量 |
二、顯示過濾器
顯示過濾器在WireShark的主介面左上角的Filter按鈕旁邊,WireShark也提供了強大圖形支援,可以點選Expression按鈕進行選擇表示式。同樣,我們也可以輸入表示式來進行過濾。顯示過濾器語法、運算子等和捕獲過濾器還有一定的差別。
顯示過濾器的語法也很簡單,支援比較運算子。例如現在要檢視長度小於128位元組的資料只需要輸入frame.len < 128即可。
1、比較操作運算子一覽:
運算子 | 功能 |
---|---|
== | 等於 |
!= | 不等於 |
> | 大於 |
< | 小於 |
>= | 大於等於 |
<= | 小於等於 |
2、邏輯運算子一覽表
運算子 | 功能 |
---|---|
and | 邏輯與 |
or | 邏輯或 |
xor | 有且僅有一個滿足 |
not | 沒有一個滿足 |
3、常用顯示過濾器
過濾器 | 功能 |
---|---|
!tcp.port==3389 | 排除RDP流量 |
tcp.flags.syn==1 | 具有SYN標誌位的TCP資料 |
tcp.flags.rst==1 | 具有RST標誌位的TCP資料包 |
!arp | 排除ARP資料包 |
http | 所有的HTTP流量 |
tcp.port==23 || tcp.port == 21 | 文字管理流量(Telnet或FTP) |
smtp || pop || imap | 文字email流量(SMTP、POP、或IMAP) |