wireshark的原名是Ethereal,新名字是2006年起用的。当时Ethereal的主要开发者Gerald决定离开他原来供职的公司NIS,并继续开发这个软件。但由于Ethereal这个名称的使用权已经被原来那个公司注册,Wireshark这个新名字也就应运而生了。 

Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息,也是网络工程师、信息安全工程师必备的一个工具之一。

Wireshark下载:https://www.wireshark.org/download.html

Wireshark安装就是傻瓜式的下一步下一步。


一:wireshark主要应用

网络管理员用来解决网络问题

网络安全工程师用来检测安全隐患

开发人员用来测试执行情况

学习网络协议



二:界面介绍  

wireshark主界面可以分为如下七个部分:1:主菜单栏、2:快捷方式、3:过滤栏、4:数据包列表区、5:数据包详细信息区、6:比特区、7:数据包统计区域 wiresherk抓包之旅_第1张图片



1..菜单栏选项介绍

(1)、flie(文件)栏用于打开,合并文件,保存,另存,导出为特殊文件等等操作

(2)、Edit(编辑)菜单栏,查询数据包,数据包标志、时间设置等操作

(3)、view(试图)菜单栏调整主界面信息

(4)、Capture(捕获)菜单栏,选择网卡,开始,停止抓包,过滤器等操作

(5)、Analyze(分析)菜单栏,显示过滤器,tcp、udp包追踪等功能

(6)、Statistics(统计)栏,数据汇总信息,会话选项,节点统计,IO图,流量图等,做出很多会话报表

(7)、Telephony(电话)支持语音流量功能

(8)、Tools(工具)

(9)、help帮助界面


2.快捷方式菜单

wKiom1ewIRGCQWGtAAA3AhSkJ2c942.png-wh_50

使用工具中的常用按钮,分别有:查看网卡,列出接口选项,启动,停止,重置,打开,着色…等


3.过滤栏

wKioL1ewIZrgewO-AAAN_rWjg-w909.png-wh_50

输入语法过滤出想要的数据包,如过滤基于udp协议的数据包,在filter栏输入udp,回车,列出基于udp的所有数据包


4.数据包列表区

数据包列表区列出了包的时间流、源IP、目的IP、协议、信息


5.数据详细信息区

在列表区选中数据包的时候,数据包的详细信息显示在下方,我们称为详细信息区


6..比特区

数据包字节,十六进制信息,通过比特区看到更详细的字段信息


介绍完基本的界面,开始让wireshark开始工作吧,打开wireshark,选择网卡,start,开启抓包之旅。

让人头痛的是,这么多包,怎么看,从哪看,在上大学时,我们老师向我们介绍wireshark的时候,我同样的头疼,每次抓包都不知道怎样去寻找自己想要的包。后来经过看wireshark和书和视频,学习他们的使用技巧。



三:wireshark抓包技巧

在拿到一个包,我们总是希望它尽量的小,所以抓包时应该尽量只抓必要的部分。

1.只抓包头

 Capture-->Options  双击网卡信息,在Limit each packet to 处输入数值,我在此输入了80 字节,也就是说每个包只抓前 80 字节。如果问题涉及应用层,就应该再加上应用层协议头的长度。如果你像我一样经常忘记不同协议头的长度,可以输入一个大点的值。

wiresherk抓包之旅_第2张图片




2.抓包过滤器

 Capture-->Options下的Capture Files,抓包过滤器,这是wireshark重要的功能,这里可以设置抓取特定流量过滤条件,如果你确定过滤条件的语法,直接在Capture Filter区域输入。在输入错误时,Wireshark通过红色背景区域表明无法处理过滤条件。

wiresherk抓包之旅_第3张图片


点击Capture Filter 按钮查看并选择,wireshark其中自身带一些过滤规则实例

wiresherk抓包之旅_第4张图片



过滤器规语法:

Protocol + Direction +Host(s) +[Value] +[LogicalOperations] +[Other expression_r]

  Protocol(协议): 可能的值ether,fddi,ip,arp,rarp,decnet,lat,sca,moprc,mopdl,tcpandudp. 如果没有特别指明是什么协议,则默认使用所有支持的协议。 

  Direction(方向): 可能的值:src,dst,srcanddst,srcordst。如果没有特别指明来源或目的地,则默认使用"srcordst"作为关键字。

  Host(s):可能的值:net,port,host,portrange。如果没有指定此值,则默认使用"host"关键字。

  LogicalOperations(逻辑运算): 可能的值:not,and,or。否("not")具有最高的优先级。或("or")和与("and")具有相同的优先级,运算时从坐至右

  [Other expression_r]:与逻辑运算连用,其他的过滤语句。




语法实例:

(1)、抓取基于MAC的数据流

ether host 6C-58-67-9B-C7-01:抓取发送到/来自6C-58-67-9B-C7-01的数据流

ether src 6C-58-67-9B-C7-01:抓取来自6C-58-67-9B-C7-01的数据流

ether dst 6C-58-67-9B-C7-01:抓取发到6C-58-67-9B-C7-01的数据流

not ether host 6C-58-67-9B-C7-01:抓取除了发到/来自6C-58-67-9B-C7-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)


(2)、抓取基于IP的数据流

如果你的抓包环境下有很多主机正在通讯,可以考虑使用所观察主机的IP地址来进行过滤。以下为IP地址抓包过滤示例: 

host 192.168.11.183:抓取发到/来自192.168.11.183的数据流

host 2406:da00:ff00::6b16:f02d:抓取发到/来自IPv6地址2406:da00:ff00::6b16:f02d的数据流

not host 192.168.11.183:抓取除了发到/来自192.168.11.183以外的所有数据流

src host 192.168.11.183:抓取来自192.168.11.183的数据流

dst host 192.168.11.183:抓取发到192.168.11.183的数据流

host 192.168.11.183 or 192.168.11.254:抓取发到/来自192.168.11.183以及与通讯的数据流,抓取发到/来自192.168.11.254以及与通讯的所有数据流


(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数据流




(4)、当你需要抓取多个不连续端口号的数据流,将它们通过逻辑符号连接起来。

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)



(5)、抓取基于指定协议的数据流


你可能需要查看基于一个或几个协议的数据流。通过目标应用的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数据流


(6)、联合查询


运用逻辑运算符的联合查询

src host 192.168.11.183 && dst port 80:过滤源地址为192.168.11.183,目的访问80的流量




3.显示过滤器:

通常经过捕捉过滤器过滤后的数据还是很复杂。此时您可以使用显示过滤器进行更加细致的查找。它的功能比捕捉过滤器更为强大,而且在您想修改过滤器条件时,并不需要重新捕捉一次。 


 语法:

Protocol +[strng] +[Comparisonoperators] +Value  +[LogicalOperations] +[Other expression_r]

Protocol(协议):  您可以使用大量位于OSI模型第2至7层的协议。点击"Expression..."按钮后,能看到一系列的表达式。

wiresherk抓包之旅_第5张图片


strng:子协议,输入协议下的子协议,如输入tcp下的子协议,图中下拉出它的子协议,用"."引出,可层层多次包含子协议。

wiresherk抓包之旅_第6张图片




Comparisonoperators(比较运算符) 

英语写法 c语言写法 含义
eq == 等于
ne != 不等于
gt > 大于
It < 小于
ge >= 大于等于
Ie <= 小于等于

Logicalexpression_rs(逻辑运算符):


英语写法 c语言写法 含义
and && 逻辑与
or || 逻辑或
xor ^^ 逻辑异或
not 逻辑非


Other expression_r:同抓包过滤器一样,其他的过滤语句,同逻辑运算符连用。






显示特定数据流实例:

显示过滤器可基于协议,应用,域名,或字符,对大小写敏感。绝大多数简单的显示过滤器由小写字母组成。与捕捉过滤器使用的BPF语法不同,显示过滤器使用的是Wireshark特定的格式。除了某些特例之外,Wireshark显示过滤器和捕捉过滤器有很大的区别。


(1)、基于IP地址或主机报文过滤

对于IPv4数据流,我们使用字段名ip.src,ip.dst,ip.addr;对于IPv6数据流,使用ipv6.src,ipv6.dst,ipv6.host以及ipv6.addr。

ip.addr==192.168.11.183显示在IP源地址字段或IP目的地址字段包含192.168.11.183的帧。

ip.src==192.168.11.183显示所有来自192.168.11.183的数据流。

ip.dst==192.168.11.183显示所有发往192.168.11.183的数据流

!ip.addr==192.168.11.183显示除了在IP源地址字段或IP目的地址字段包含192.168.11.183以外的帧

例如在filter栏输入ip.dst == 192.168.11.183



(2)、基于端口号的过滤

tcp.port == 80过滤tcp的80端口。



(3)、协议过滤器

arp:显示所有包括ARP请求和回复在内的所有ARP数据流。

ip:显示内含IPv4头在内的(如ICMP目的地址不可达报文,在ICMP报文头之后返回到来方向的IPv4头)IP数据流。

ipv6:显示所有IPv6数据流,包括内含IPv6报文头的IPv4报文,如6to4,Teredo,以及ISATAP数据流。

tcp:显示所有基于TCP的数据流。



(4)、字符过滤器:

tcp.analysis.flags:显示所有包含TCP分析标识的所有报文,包括报文丢失,重传,或零窗口标识。

tcp.analysis,zero_window:显示含有表明发送方的接收缓存用完标识的报文

例tcp.flags.syn == 1:过滤三次握手fsyn=1的数据包



  回想之前所说的语法,也能感受到wireshark显示过滤器语法的繁琐,估计wireashark的开发者也意识到了这个,于是乎,就有了一下的功能

Prepare a Filter-->Selected ,就会在 Filter 框中自动生成过滤表达式。

 Apply as Filter-->Selected ,则该过滤表达式生成之后还会自动执行。

wiresherk抓包之旅_第7张图片




4.个性化设置:

我们还可以通过自定义颜色,把更加关心的协议通过 View -->Coloring Rules 来设置颜色。

wiresherk抓包之旅_第8张图片


 曾在论坛看到又来了在咨询:Wireshark 是按照什么过滤出一个 TCP/UDP  Stream 的?

单击 Wireshark 的 Statistics--

>Conversations ,再单击 TCP 或者 UDP 标签就可以看到所有的 Stream

wiresherk抓包之旅_第9张图片

可以看到两端的 IP 加 port 。




四:wireshark高级功能

1.让wireshark自动分析

单击 Wireshark 的 Analyze-->Expert Info ,就可以在不同标签下看到不同级别的提示信息。比如重传的统计、连接的建立和重置统计,等等。在分析网络性能和连接问题时,我们经常需要借助这个功能。

wiresherk抓包之旅_第10张图片



2.搜索功能

 Wireshark 也可以通过 “Ctrl+F” 搜索关键字。假如我们怀疑包里含有 “error” 一词,就可以按下 “Ctrl+F” 之后选中 “String” 单选按钮,然后在 Filter 中输入 “error” 进行搜索,很多应用层的错误都可以靠这个方法锁定问题包。

wiresherk抓包之旅_第11张图片



3.数据流追踪功能

数据流追踪将tcp、udp、ssl等数据流进行重组并完整呈现出来analyze–>follow tcp stream,红色部分通过get包,浏览器,客户端,网址等信息,蓝色代表官网的反馈信息

wiresherk抓包之旅_第12张图片


4.解码能力

HTTP默认的端口是80端口,当我们访问http服务时,访问的端口是不是80端口,wireshark是不会按照HTTP协议去解析数据包,此时,我们就可以指定协议,去解析数据包。analyze–>Decode As...并选择HTTP协议

wiresherk抓包之旅_第13张图片




五、Wireshark统计功能


  Wireshark的一个强大的功能在于他的统计工具,使用Wireshark的时候我们有各种类型的工具可供选择,这里介绍基本网络统计工具。包括:捕捉文件摘要(Summary)、捕捉包层次结构(Protocol Hirarchy)、会话(Conversations)、网络节点(Endpoints)、HTTP


1.捕捉文件摘要

捕捉文件摘要对抓取的数据包进行全局统计,Staristics–>Summary,显示数据包的名称,大小,格式,时间,操作系统,版本,抓包接口说明,显示网卡,平均每秒的包,平均每个包的结构……

wiresherk抓包之旅_第14张图片


这一菜单简单收集所有抓包数据,在定义了过滤条件的时候,将呈现过滤后的数据,当想要知道每秒的平均报文数或字节数时,使用此工具

File:捕捉文件的一般信息,如文件名和路径,长度,等等。

Tme:第一个包和最后一个包的时间戳,以及抓包过程持续时间。

Capure:显示文件捕捉于哪一个接口,以及评论窗口。

Display窗口,展示抓包文件统计信息的摘要,包括:捕捉报文总数与百分比,显示报文数量(加上过滤条件之后),标记报文数量



2.捕捉包层次结构

捕捉包层次结构统计了通信流量中不同协议占用额百分比,通过这个工具可以对全网流量有直观的了解,到底整个网络那些流量占用最多,那些占用最少等等。打开statistics–>protocol hierarchy

wiresherk抓包之旅_第15张图片

图中我们可以看出,Ethernet的流量包括IPv4和IPv6,IPv4包括UDP和TCP,这几个分项的和就是以太网百分百的流量

Protocol:协议名称

% Packets:含有该协议的包数目在捕捉文件所有包所占的比例

Packets:含有该协议的包的数目、Bytes含有该协议的字节数

Mbit/s:抓包时间内的协议带宽、End Packets 该协议中的包的数目(作为文件中的最高协议层)

End Bytes:该协议中的字节数(作为文件中的最高协议层)

End Mbit/s :抓包时间内的协议带宽(作为文件中的最高协议层)

在网络异常的时候,通过分析这些数据包占用的流量我们可以判断网络问题,如图这是一个正常的网络占用百分比,例如网络发生了ARP***,那么ARP在这里的占用也许会显示20%或者30%



3.会话统计

会话统计功能,统计通信会话之间接收和发送的数据包和字节数,通过这个工具可以找出网络中哪个会话(IP地址或端口号)最占用带宽,进一步作出网络策略。打开Statistics–>Conversations

wiresherk抓包之旅_第16张图片


Ethernet以太网统计功能包括:mac通信统计,通信序包数,通信字节数;IPv4统计功能包括:IP通信统计,查看通信包数量,字节数;ipv6统计;tcp统计包括:源IP源端口,目的IP目的端口,查看包数量;udp会话统计包括:源IP源端口,目的IP目的端口,查看包数量

在tcp、udp里还提供了流追踪,图形化A->B,图形化B->A


我们可以通过wireshark会话统计发现很多问题

在以太网回话统计中可以查找以下问题:

(1) 可以看见较轻微的广播风暴;而对于每秒数千甚至数万个报文的严重广播风暴,Wireshark会停止显示数据并且屏幕冻结。只有断开Wireshark连接时才能看见。

(2)如果你看到来自某一MAC地址的大量数据,查看会话第一部分的vendor ID,会给你一些导致问题的线索。即使MAC地址的第一部分标识了vendor,但它并不一定就标识了PC本身。这是由于MAC地址属于PC上安装的以太网芯片厂商,而并不一定属于PC制造商。如果无法识别数据流来源地址,可以ping嫌疑地址并通过ARP获取它的MAC地址,在交换机中查找该地址,如果有操作系统的话直接用find命令来定位。

在IP会话统计中可以查找一下问题:

(1)查看收发大量数据流的IP地址。如果是你知道的服务器(你记得服务器的地址或地址范围),那问题就解决了;但也有可能只是某台设备正在扫描网络,或仅是一台产生过多数据的PC。

(2) 查看扫描模式(scan pattern)。这可能是一次正常的扫描,如SNMP软件发送ping报文以查找网络,但通常扫描都不是好事情。

在tcp/udp会话统计中可以查看以下问题

(1) 查看带有太多TCP连接的设备。每一个PC合理的连接数是10到20个,上百个则是不正常的

(2)尝试查找无法辨识的端口号。它可能是正常的,但也可能是有问题的。




4、网络节点统计

网络节点功能,统计通信会话中每个节点接收和发送的数据包和字节数,通过这个工具可以找出网络中哪个节点(IP地址或端口号)最占用带宽。打开statistics–>Endpoints,终端节点统计是面向IP的,可以查看具体某一个IP发送的流量以及占用带宽

wiresherk抓包之旅_第17张图片



显示按照长度划分的序包。大部分包的正常长度为40~5119。例如,网络中有一种小型帧或巨型帧的***方式,利用发送数据包小于40或大于5119的包进行***,这时候可以在这里查看数据包长度统计观察这些异常包的百分比,找出网络问题

在此窗口中能够看到2,3,4层的endpoints,也就是以太网。IP,tcp或udp,终端节点统计是面向IP的,可以查看具体某一个IP发送的流量以及占用带宽

这一工具列出了Wireshark发现的所有endpoints上的统计信息,可以是一下任意一种情况:


(1.)少量以太网endpoints(MAC地址)与大量IP终端节点(IP地址):可能的情况例如,一个路由器从很多远端设备收发报文,我们会看见路由器的MAC地址以及很多IP地址经由此处。


(2.)少量IP终端节点与大量tco终端节点:可能的情况是每一台主机有很多个tcp连接。可能是有很多连接到额服务器的一个正常操作,也可能是一种网络***(如SYN***)




5、HTTP

从statistic菜单,选择HTTP,将会出现以下窗口


在http子菜单中,可以看到以下信息

wiresherk抓包之旅_第18张图片


Packet Counter:每一个网站的报文数量。帮助识别有多少响应和请求。

Requests:各网站的请求分布

Load Distribution:各网站的负载分布

查看Packet Couter统计信息,显示以下过滤窗口,在此窗口中,可设置过滤条件以查看符合条件的统计信息。信息想要查看整个抓包文件的统计信息,不添加信息就会显示IP层之上的统计信息,也就是所有http报文,点击Create Stat。


要获得指定HTTP主机的统计信息,设置过滤条件http.host contains(host_name)或http.host ==(host_name)通过设置过滤条件http.host contains baidu.com,可以获得站点baidu.com的统计信息,点击Create Stat按钮

wiresherk抓包之旅_第19张图片





6、图表分析-IO Graph

IO Graph对网络中的吞吐量进行实时图形显示。在wireshark抓包过程中打开statistic–>IO Graph

wiresherk抓包之旅_第20张图片

IO图表展示了吞吐量过程,X轴表示时间流,y轴表示数据包,图表默认情况下统计网卡的吞吐量


Craphs默认允许展示五条报表,例如在filter 过滤器中输入http查看http在网络中占用的吞吐量,点击Graph2,显示出一条红色的波线就是http图表的吞吐量。管理员可以根据网络环境,在filter过滤器中添加更多的过滤条件




7、图表分析-Flow Gragh

Flow Gragh 数据流图,将会话通信过程图形可视化出来。打开statistics–>flow graph,选择all对所有的包进行图表分析,displayed packets对过滤出来的包进行图表分析

wiresherk抓包之旅_第21张图片

图表分析界面,扫描时间点,源IP,目的IP,具体包内容都以图形化的方式显示出来


对于wireshark抓完的包想保存下来,以便下次分析,保存时最好保存为pcap格式,因为几乎所有抓包软件兼容。


一般,我对于大量的数据包,我先观察wireshark的统计功能给我统计出来的信息,然后针对相应的协议,自己需要的包,再用显示过滤器给抓取出来。遗憾的是,对于详细的包的内容,也是只能看懂部分,与其说怪自己英语不好,不如说抓的包少了,分析的少了。不过学习毕竟是一步一步慢慢积累沉淀下来的。之后的学习还需多多努力了!

在此,我所了解的wireshark已经全部说完了,可以打开wireshark,开启你的抓包之旅了。由于本人水平有限,文中若有错误,多多包涵,并且欢迎一起交流学习技术。