Wireshark简介:
Wireshark是一款最流行和强大的开源数据包抓包与分析工具,没有之一。在SecTools安全社区里颇受欢迎,曾一度超越Metasploit、Nessus、Aircrack-ng等强悍工具。该软件在网络安全与取证分析中起到了很大作用,作为一款网络数据嗅探与协议分析器,已经成为网络运行管理、网络故障诊断、网络应用开发与调试的必用工具。
查找数据包:
按ctrl+N打开查找对话框
可以看到有三种查询条件:
- Display filter 通过表达式进行筛选,其功能强大,后面有具体介绍,如ip.addr==192.168.1.23
- Hex value 通过十六进制对数据包进行筛选,如00:ff
- String 通过字符串进行查找,如passwd
按ctrl+N向下查找,按ctrl+B向前查找。其实wireshark的使用说明已经做的非常非常的人性化的,它的所有设置窗口都有在线的帮助说明,上面是左下角的“Help”就是。而且是英文的,那么问题来了,你是到底啥不懂呢?
标记数据包:
在Packet List中选中一个数据包,右键选择Mark Packet就可以将该数据包标记,标记后该数据包会高亮显示。快捷键是选中一个数据包,按ctrl+M,取消标记同样是ctrl+M,
在多个被标记的数据之间切换可用shift+ctrl+N、shift+ctrl+B。
捕获设置:
启动Wireshark后,在左边的网络接口里的Capture Optiion可以用来设置各种数据包抓取规则。
- 在‘1’处设置网络接口,可以选择一个接口双击,弹出该接口的具体设置信息(如下图)。这里可以设置是否开启混杂模式,是否以pcap-ng格式捕获数据包,以及按字节数限制每个捕获数据包的大小。
- 在‘3’捕获文件的设置:这里提供了过滤规则,各种触发器(基于文件大小或时间),其中的Ring Buffer With选项可以设置环形缓冲创建文件,采用FIFO原则,只保留所设定的文件数目,从而只会捕获指定的数据包数,不会因为大量数据包占用大量空间。
- 在‘4’停止捕获:同样的,可以以文件大小、时间或者数据包数目为触发条件,停止数据包捕获。
- 在‘5’显示设置的相关设置。注意实时显示会增加CPU负荷,可以取消该项。
- 在‘6’名字解析.MAC地址解析,尝试将数据链路层的MAC地址解析成网络层的IP,如果解析失败,则会按MAC地址前三个字节转换成设定制造商的名称,如Netgear_01:02:03;网络名字解析:尝试使用DNS协议,将IP地址解析成主机名,注意这会产生格外的DNS流量;传输名字解析:尝试将端口号解析成与其相关的名字,如80端口转换成http显示。
过滤器:
过滤器算是高级的设置了,它可以按照设置的要求来捕获数据包,功能十分强大好用。Wireshark提供了两种数据包的过滤规则:
- 捕获过滤:在数据包捕获时,按指定要求捕获相关数据包。
- 显示捕获:Wireshark会捕获所有是数据包流量,可以按照设置条件来显示相关的数据包。
(1)捕获过滤
当处理的数据包较大或者需要捕获指定的数据包时,可以采用这种设置。其设置在上图是Capture Filter里可以设置。
捕获所使用的BPF(Berkeley Packet Filter)语法表达式:
host、net、port | 名字或是数字 |
src、dst | 传输方向 |
ether、ip、tcp、udp、http、ftp | 匹配的协议 |
三种逻辑运算符:
- 与 (&&) 连接运算符
- 或 ( || ) 选择运算符
- 非 (!) 否定运算符
通过BPF限定词与逻辑运算符可以组合出很多高级实用的过滤规则。例如:
- host 192.168.1.23 //捕获所有与192.168.1.23主机的IPV4流量
- host fe80::2ad0:5aff:fe6f:92b0 //捕获所有与fe80::2ad0:5aff:fe6f:92b0主机的IPV6流量
- host server1 //捕获所有与server1主机流量
- ether host 00-8a-23-e3-d2-df //基于MAC地址过滤
- src host 192.168.1.20 && port 80 //捕获来自192.168.1.2的80端口流量
- dst 192.168.1.20 //捕获发送到192.168.1.20的流量
- !port 8080 //捕获非8080端口的流量
- icmp //只捕获ICMP流量
- !ip //只捕获ipv流量,ip6只捕获ipv6流量
(2)显示捕获
显示过滤可以在主菜单下面的过滤框里设置,在右边的“Expression”里列举了所有的协议及其可用的过滤规则,其设置功能十分强大灵。设置成功后会自动给出过滤表达式,对于熟悉的使用者,可以直接使用过滤表达式来筛选。
相关比较操作符:
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
逻辑操作符:
and | 两个条件同时满足 |
or | 其中一个条件满足 |
xor | 有且仅有一个条件满足 |
not | 没有条件满足 |
相关表达式实例:
- ip.addr==192.168.1.10 or ip.addr==192.168.1.11
- !tcp.port==3389
- tcp.flags.syn==1
- !dns
- https
- tcp.port==23 || tcp.port==22
- smtp || pop || imap
当然,对于常用的过滤表达式,可以保存起来一便再次使用,在主菜单的Capture->Capture Filters里有相关设置。