Wireshark 是常用的网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包, 并尽可能详细的显示包的情况。
Wireshark 是Etheral 更高级的版本,包含WinPcap。它具有方便易用的图形界面和众多分类信息及过滤选项,是一款免费、开源的网络协议检测软件 。Wireshatk通常运行在路由器或有路由功能的主机上,这样就能对大量的数据进行监控,几乎能得到以太网上传送的任何数据包。
Wireshark 不是人侵侦测软件。对于网络上的异常流量行为,Wireshark 不会产生警示或任何提示。通过仔细分析Wireshark 捕获的数据包能够帮助使用者对网络行为有更清楚的了解。Wireshark 没有数据包生成器,因而只能查看数据包而不能修改,它只会反映出被捕获的数据包的信息,并对其内容进行分析。
Get started
Wireshark的使用主要有三个步骤:
通过单击捕捉到的数据包, 在下方的窗口中查看数据包头以及数据字段等详细信息。使用者通过对相关协议知识的了解, 再加上实验观察到的现象, 对实验结果进行分析和论证,从而得出所有参数的含义。
一般来说,对于Windows系统,在命令行输入:
ipconfig
之后就会显示对应的物理网卡。又称网络适配器或网络接口卡(NIC),英文名为Network Interface Card。也有直接翻译为Network Card,简称NC。
详细操作,参考:Wireshark详细操作
打开 Wireshark 后,会直接进入“网卡选择界面”,Wi-Fi:en0
是我连接无线的网卡,我们抓一下这个网卡的流量,双击网卡名,自动开始抓包。
点击左上角的“红色按钮”,可以停止抓包。
可以直接点击工具栏的保存按钮,保存抓包的数据。
Wireshark的一个重要功能就是过滤器(Filter) 。由于Wireshark 所捕捉的数据较复杂,要迅速、准确地获取需要的信息,就要使用过滤 、工具。可以有两次过滤:第一次是捕捉过滤,用于筛选需要的捕捉结果;第二次是显示过滤,只将需要查看的结果显示。
Filter位于工具栏上,可以按照规则输入过滤条件,如:
其中ip.src_host==192.168.1.10
表示过滤出源地址为192.168.1.10的数据包。
常见的过滤规则如下:
Wireshark 支持的协议包括TCP、UDP、ARP、ICMP、HTTP、 SMTP、FTP、DNS、MSN、IP、SSL、OICQ、BOOTP等。
http
。若仅显示与指定IP地址(例如192. 168.0. 123)通信的记录,则可输人ip.addr==192.168.0.123
。
如果限制为只要从192.168.0.123送来的记录,则输人ip.src==192.168.0.123
。
而得到目的IP地址为192.168.0.123的记录则应输人ip.dst==192.168.0.123
。
例如HTTP协议可以针对HTTP的请求方式进行过滤:
http.request.method=="GET"
或http.request.method=="POST"
。例如tcp.port eq 80
。不管端口是源还是目标的都只显示满足tcp.port== 80条件的包。
eth.dst==A0:00:00:04:c5:84 // 过滤目的MAC
eth.src eq A0:00:00:04:c5:84 // 过滤源MAC
例如udp.length==26
,这个长度是指udp本身固定长度8加上udp下面的数据包之和。
而tcp.len>=7
指的是IP数据包( tcp 下面数据),不包括tcp本身。ip.len==94
指除了以太网头固定长度为14,其他都算是ip.len,即从IP本身到最后。frame.len==119
指整个数据包长度,从eth开始到最后,即eth–> ip or arp --> tcp or udp --> data。
例如按TCP参数过滤:
tcp.flags // 显示包含TCP标识的数据包
tcp.flags.syn==0x02 // 显示包含TCP SYN标识的数据包
例如:
tcp[20] // 表示从20开始取1个字符
tcp[20:] // 表示从20开始取1个字符以上
tcp[20:8] // 表示从20开始取8个字符
过滤语句可利用&&
或者and
(表示“与”)、||
或者or
(表示“或”)、!
或者not
(表示 “ 非”)组合使用多个限制规则,例如(http&&ip.dst==192.168.0.123)||dns
;再如要排除ARP包,则使用!arp
或者not arp
。
Wireshark面板:
快捷工具栏:
这里以ARP协议为例,演示数据的分析过程。首先启动监听(没有设置捕获过滤器),等过一段时间后,停止抓包。然后在显示过滤器输人arp
(注意是小写)作为过滤条件,按回车。得到ARP包如下:
Wireshark窗口的数据帧列表面板的每行都对应着网络上单独的一个数据包。默认情况下,每行会显示数据包的时间戳、源地址、目的地址 、所使用的协议、关于数据包的一些信息。通过单击此列表中的某一行,可以获悉更详细的信息。
这部分的信息分布与查看的协议有关,一般包含有物理层、数据链路层、网络层、传输层等各层信息。
在物理层可以得到线路的字节数和捕获到的字节数 ,还有抓包的时间戳和距离第一次抓包的时间间隔等信息。
在数据链路层可以得到源网卡物理地址和目的网卡物理地址以及帧类型。
在网络层可以得到版本号、源IP和目的IP地址、报头长度、包的总长度、TTL 和网络协议等信息。
在传输层可以得到源端口和目的端口以及序列号和控制位等有效信息。
展开数据包细节中的第一行,该行主要包含一些关于帧的详细信息:
展开第2行,该行主要包含地址一类的信息:
展开第3行,主要包含协议的格式:
地址解析协议有硬件类型(以太网)、协议类型(IP)、硬件大小(6)、协议大小(4)、发送方MAC地址、发送方IP地 址、目的MAC地址、目的IP地址等。