實驗目的
1、工具介紹
2、主要應用
實驗原理
1、網絡管理員用來解決網絡問題
2、網絡安全工程師用來檢測安全隱患
3、開發人員用來測試執行情況
4、學習網絡協議
實驗內容
1、抓取特定數據流
2、顯示特定數據流
實驗環境描述
實驗環境描述
1、學生機與實驗室網絡直連;
2、VPC1與實驗室網絡直連;
3、學生機與VPC1物理鏈路連通;
pc機:Windows7旗艦版
實驗步驟
首先打開桌面上的wireshark工具
Wireshark過濾器
抓取特定流量過濾器是在抓包的時候只抓取過濾條件的包,顯示過濾器是在有多種流量的情況下,顯示具備過濾條件的包
抓取特定數據流
首先在這里建議大家盡量避免使用抓取特定流量過濾。即便多看幾個報文,也比漏看一個報文要好。當你抓取了大量報文的時候,用顯示過濾(過濾選項也更多)來重點查看某一數據流。
應用抓取特定流量過濾,在 Capture下打開Capture Options設置窗口
這里可以設置抓取特定流量過濾條件,如果你確定過濾條件的語法,直接在Capture Filter區域輸入。在輸入錯誤時,Wireshark通過紅色背景區域表明無法處理過濾條件。最有可能的情況是,過濾條件中含有輸入錯誤,或是使用了display filter的語法。
點擊Capture Filter 按鈕查看並選擇已保存的過濾條件
1、抓取基於MAC的數據流
當你需要抓取發到/來自某一主機的IPv4或IPv6數據流,可創建基於主機MAC地址的抓包過濾條件。應用MAC地址時,需確保與目標主機處於同一網段。
ether host 6C-C6-7C-B8-68-01:抓取發送到/來自6C-C6-7C-B8-68-01的數據流
ether src 6C-C6-7C-B8-68-01:抓取來自6C-C6-7C-B8-68-01的數據流
ether dst 6C-C6-7C-B8-68-01:抓取發到6C-C6-7C-B8-68-01的數據流
not ether host 6C-C6-7C-B8-68-01:抓取除了發到/來自6C-C6-7C-B8-68-01以外的所有數據流
ether broadcast或ether dst ff:ff:ff:ff:ff:ff:抓取廣播報文
ether multicast:抓取多播報文
抓取指定以太網類型的報文:ether proto 0800
抓取指定VLAN:vlan (vlan number)
抓取指定幾個VLAN:vlan (vlan number)and vlan (vlan number)
例:ether host 6C-C6-7C-B8-68-01
顯示信息發送到/來自6C-58-67-9B-C7-01的數據流
例:ether src host 6C-58-67-9B-C7-01
顯示來自6C-58-67-9B-C7-01的數據流
2、抓取基於IP的數據流
如果你的抓包環境下有很多主機正在通訊,可以考慮使用所觀察主機的IP地址來進行過濾。以下為IP地址抓包過濾示例:
host 172.16.1.69:抓取發到/來自172.16.1.69的數據流
host 2406:da00:ff00::6b16:f02d:抓取發到/來自IPv6地址2406:da00:ff00::6b16:f02d的數據流
not host 172.16.1.69:抓取除了發到/來自172.16.1.69以外的所有數據流
src host 172.16.1.69:抓取來自172.16.1.69的數據流
dst host 172.16.1.69:抓取發到172.16.1.69的數據流
host 172.16.1.69 or 172.16.1.70:抓取發到/來自172.16.1.69以及與通訊的數據流,抓取發到/來自192.168.11.254以及與通訊的所有數據流
例: src host 172.16.1.69
顯示信息,所有的包都是來自172.16.1.69的數據流
3、抓取基於端口的數據流
你可能需要查看基於一個或幾個應用的數據流。抓包過濾器語法無法識別應用名,因此需要根據端口號來定義應用。通過目標應用的TCP或UDP端口號,將不相關的報文過濾掉。
port 53:抓取發到/來自端口53的UDP/TCP數據流(典型是DNS數據流)
not port 53:抓取除了發到/來自端口53以外的UDP/TCP數據流
port 80:抓取發到/來自端口80的UDP/TCP數據流(典型是HTTP數據流)
udp port 67:抓取發到/來自端口67的UDP數據流(典型是DHCP據流)
tcp port 21:抓取發到/來自端口21的TCP數據流(典型是FTP命令通道)
portrange 1-80:抓取發到/來自端口1-80的所有UDP/TCP數據流
tcp portrange 1-80:抓取發到/來自端口1-80的所有TCP數據流
(可自行嘗試)
當你需要抓取多個不連續端口號的數據流,將它們通過邏輯符號連接起來。
port 20 or port 21:抓取發到/來自端口20或21的UDP/TCP數據流(典型是FTP數據和命令端口)
host 10.3.1.1 and port 80:抓取發到/來自10.3.1.1端口80的數據流
host 10.3.1.1 and not port 80:抓取發到/來自10.3.1.1除了端口80以外的數據流
udp src port 68 and udp dst port 67:抓取從端口68到端口67的所有UDP數據流(典型是從DHCP客戶端到DHCP服務器)
udp src port 67 and udp dst port 68:抓取從端口67到端口68的所有UDP數據流(典型是從DHCP服務器到DHCP客戶端)
抓取TCP連接的開始(SYN)和結束(FIN)報文,配置tcp[tcpflags] & (tcp-syn|tcp-fin)!=0
抓取所有RST(Reset)標志位為1的TCP報文,配置tcp[tcpflags] & (tcp-rst)!=0
less (length):抓取小於等於某一長度的報文,等同於len <=(length)
greater (length):抓取大於等於某一長度的報文,等同於len >=(length)
4、抓取基於指定協議的數據流
你可能需要查看基於一個或幾個協議的數據流。通過目標應用的TCP、UDP或在TCP、UDP后加上端口號,將不相關的報文過濾掉。
icmp:抓取發到/來自icmp的數據流
port 53:抓取發到/來自端口53的UDP/TCP數據流(典型是DNS數據流)
not port 53:抓取除了發到/來自端口53以外的UDP/TCP數據流
port 80:抓取發到/來自端口80的UDP/TCP數據流(典型是HTTP數據流)
udp port 67:抓取發到/來自端口67的UDP數據流(典型是DHCP據流)
tcp port 21:抓取發到/來自端口21的TCP數據流(典型是FTP命令通道)
portrange 1-80:抓取發到/來自端口1-80的所有UDP/TCP數據流
tcp portrange 1-80:抓取發到/來自端口1-80的所有TCP數據流
顯示特定數據流
顯示過濾器可基於協議,應用,域名,或字符,對大小寫敏感。絕大多數簡單的顯示過濾器由小寫字母組成。與捕捉過濾器使用的BPF語法不同,顯示過濾器使用的是Wireshark特定的格式。除了某些特例之外,Wireshark顯示過濾器和捕捉過濾器有很大的區別。
5、基於IP地址或主機報文過濾
對於IPv4數據流,我們使用字段名ip.src,ip.dst,ip.addr;對於IPv6數據流,使用ipv6.src,ipv6.dst,ipv6.host以及ipv6.addr。
ip.addr==172.16.1.69顯示在IP源地址字段或IP目的地址字段包含172.16.1.69的幀。
ip.src==172.16.1.69顯示所有來自172.16.1.69的數據流。
ip.dst==172.16.1.69顯示所有發往172.16.1.69的數據流
!ip.addr==172.16.1.69顯示除了在IP源地址字段或IP目的地址字段包含172.16.1.69以外的幀
例如在filter欄輸入ip.dst ==172.16.1.79
顯示信息,所有發往172.16.1.79的數據流
ip.src == 172.16.1.79 and ip.dst ==172.16.1.79 過濾源IP為172.16.1.79,目的IP為172.16.1.255的通信數據包
顯示信息,源IP172.16.1.79,目的IP172.16.1.255的數據包
6、基於端口號的過濾
tcp.port == 80過濾tcp的80端口
協議過濾器
arp:顯示所有包括ARP請求和回復在內的所有ARP數據流。
ip:顯示內含IPv4頭在內的(如ICMP目的地址不可達報文,在ICMP報文頭之后返回到來方向的IPv4頭)IP數據流。
ipv6:顯示所有IPv6數據流,包括內含IPv6報文頭的IPv4報文,如6to4,Teredo,以及ISATAP數據流。
tcp:顯示所有基於TCP的數據流。
7、字符過濾器:
tcp.analysis.flags:顯示所有包含TCP分析標識的所有報文,包括報文丟失,重傳,或零窗口標識。
tcp.analysis,zero_window:顯示含有表明發送方的接收緩存用完標識的報文
例tcp.flags.syn == 1:過濾三次握手fsyn=1的數據包
8、顯示運算符
通過擴展過濾條件可查找某一域值,Wireshark針對此功能支持數字比較運算符。我整理出來幾種類型,這里就不一一給大家查看結果了,
==或eq
例如:ip.src == 10.2.2.2顯示所有源地址為10.2.2.2的IPv4數據流
!=或ne
例如:tcp.srcport != 80顯示源端口除了80以外的所有TCP數據流
或gt
例如:frame.time_relative > 1 顯示距前一個報文到達時間相差1秒的報文
<或lt
例如:tcp.window_size < 1460 顯示當TCP接收窗口小於1460字節時的報文
=或ge
例如:dns.count.answers >= 10 顯示包含10個以上answer的DNS響應報文
<=或le
例如:ip.ttl <= 10 顯示IP報文中Time to Live字段小於等於10的報文
contains
例如:http contains “GET” 顯示所有HTTP客戶端發送給HTTP服務器的GET請求
運算符兩邊不用留空格。ip.src == 10.2.2.2與ip.src==10.2.2.2的效果是相同的。