原因:网络上的协议使用了不同标准时,wireshark解析错误,这时我们需要更改wireshark协议解析方式!
解决方法:根据包里的数据判断该数据包应该是使用什么协议,然后对该数据包设置使用正确的协议的解析器来解析。
如:查看SSL数据包中Packet Bytes面板
分析: Packet Bytes中的ASCLL码值出现明文数据流量如password,可以判断wireshark解析错误,因为真正的SSL数据包中我们是获取不了有用信息的,更不会看见以明文传送的密码。根据信息可知该数据包应该是FTP数据包!
解析错误原因:可能是FTP数据包使用了443端口,这个端口原本是HTTPS专用端口,而HTTPS是基于SSL的HTTP协议。
解决方法:强制wireshark使用FTP协议的解析器来解析这些数据包。找到要转换解析的数据包,单击——鼠标右键
——Decode As——Tranaport——下拉菜单选择destination(443)并且在右边列表找到FPT——Apply——OK
实现了wireshark对所有443端口用FPT协议解析!
查看解析器修改记录:Decode As——Show Current
因为wireshark是一款开源的软件,所以我们也可以分析wireshark软件的源代码来找出协议解析错误的原因哟~
协议解析器程序源代码位置:先在官方软件下载该软件源代码——epan文件夹——dissectors文件夹
点击容易TCP数据包——右键——follow tcp stream
在该框不仅能查看两个主机通信过程还能实现文本搜索、保存文件、打印等功能。
通过一个捕获文件中数据包的长度情况来对流量进行分析,是对一个文件概览的很好方法,如果发现了很多大的数据包则很可能是进行了大量数据传输,如果绝大部分的数据包都很小可以认为这里面有很多的控制命令不存在大量数据传输。
选择菜单栏的统计——数据包长度——Create Stat
分析:
- 首先关注数据包长度最大且占比最多的区段,因为比较大的数据包这很有可能用于数据的传输,较小的数据包用来保存协议的控制序列。占比最多说明这里包含一个或者多个的数据传输流量,可能是HTTP的下载、FTP的上传
- 其次看占比第二多的区段,这明显是TCP控制的数据包。
因为整个网络中TCP信息都会被wireshark中的专家信息所记录,如丢包、网络阻塞等等,针对每个协议的解析器都会有专家信息,我们可以通过专家信息窗口查看使用该协议的数据包中的特定状态错误、警告以及提示等信息。这些状态可以分为四类:
对话(Chat): 关于正常通信的基本信息
注意(Note):正常通信时的异常数据包
警告(Warn):不是正常通信中的异常数据包(个人理解为:非正常的通信产生的数据包)
错误(Error):数据包中的错误,或者解析器解析时的错误
专家信息窗口:点击Analyze——Export InfoComposite
专家信息窗口出现的常见提示如下:
对话消息(Chat)
窗口更新(window update):由接收者发送,用来通知发送者TCP接收窗口的大小已经发生变化。
注意消息(Note)
retransmission(TCP重传):数据包丢失的结果。发生在收到重传的ACK,或者数据包的重传计时器超时的时候。
Duplicate ACK(重复ACK):当一台主机没有收到下一个期望序列号的数据包时,会生成最近一次收到的数据的重复ACK。
零窗口探查:在一个零窗口包被发送出去后,用来监视TCP接收窗口的状态。
保活ACK(ACK to Tcp keep-alive):用来响应保活数据包
零窗口探查ACK:用来响应零窗口探查数据包。
窗口已满:用来通知传输主机接受者的TCP窗口已满。
警告信息(Warn)
上一段丢失:指明数据包丢失。发生在当数据流中一个期望序列号被跳过时。
收到丢失数据包的ACK:发生在当一个数据包被确认丢失但在之后收到了这个已经被确认丢失的数据包的ACK数据包。
保活:当一个连接的保活数据出现时触发。
零窗口:当接收方已经达到TCP接收窗口大小时,发出一个零窗口通知,要求发送方停止传输数据。
乱序:当数据包被乱序接收时,会利用序列号进行检测。
错误信息(Error)
Packet size limited during capture:说明被标记的那个数据包没有抓全。
在实际的分析中,为了得到精准的分析结果,往往需要通过编写脚本程序来实现我们的目的。在 Wireshark 程序目录中,包含两个命令行捕获工具。这两个工具分别是 Dumpcap 和 Tshark。当不能以图形界面方式捕获数据时,可以在命令行使用 dumpcap 或 tshark 程序实施捕获。
使用命令行优势
1、可以使用诸如awk或者grep这样的工具来辅助分析。
awk可以将文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。而grep可以用于字符串的查找。
2、编辑好的命令之后可以反复使用,甚至可以写成一个程序供以后使用。
3、tshark输出的分析文本大多可以直接写入分析报告里,而wireshark是无法生成这样的报告的
4、命令行比图形界面快得多
环境:虚拟机,如kali
功能:tshark.exe和dumpcap命令行工具就能用来引入相关脚本程序
位置:在安装wireshark目录下会有tshark.exe、dumpcap.exe工具以及两款工具的帮助信息
运行tshark.exe或dumpcap.exe:
方法一:cmd进入控制台——然后命令行进入wireshark安装目录——然后通过相关命令使用
方法二:直接将tshark或dumpcap.exe加入环境变量就可以直接使用。
常用操作如下:
1、在kali的终端
2、切换到 Wireshark 目录,执行 tshark -D
命令,查看可用的接口
3、开始捕获数据。
如:文件路径为e:\file\Wireshark\,文件名为mytshark.pcapng,指定捕获4号接口,捕获3个文件后自动停止,10秒后捕获下一个文件。tshark -i4 -a files:3 -b duration:10 -w e:\file\Wireshark\mytshark.pcapng
4、查看生成的捕获文件
dir e:\file\Wireshark\mytshark*
其中文件路径为e:\file\Wireshark\,文件名为mytshark.pcapng
5、查找含某个字符串的数据包
在kali的控制台中输入命令行tshark -r 文件路径/文件名称 | grep -e 查找的字符
,回车
如:
常用操作如下:
进入控制台再命令进入Dumpcap.exe文件目录下
1、查看参数详情dumpcap -h
2、查看本机可用的接口dumpcap -D
3、捕获数据,可以使用-c 或 -a选项指定停止捕获数据包的条件。
如:捕获第2个接口上的数据,并且当捕获文件达到100KB时自动停止捕获,文件路径为e:\file\Wireshark\,文件名为mytshark.pcapng,命令dumpcap -i 2 -a filesize:100 -w e:\file\Wireshark\myshark.pcapng
4、查看生成捕获文件 myshark.pcapng 的大小。dir e:\file\Wireshark\myshark.pcapng
进行性能调优主要是对Summary(概述信息)、Service Response Time(服务响应时间)以及Expert Info Composite(专家信息整合)的内容进行分析
打开终端——cd进入wireshark目录——输入
命令capinfos 所分析文件路径\分析文件名称
——回车
比如对于NFS(网络文件系统)协议可以cd进入wireshark目录使用以下命令:
tshark -n -q -r 所分析文件路径\分析文件名称 -z "rpc,program"
- 上述命令中的-n表示禁止所有地址名字解析(默认为允许所有);-q设置为标准输出(常用于统计);-z表示设置统计参数。
对于CIFS协议,只要把上述命令中的双引号里面的内容改为“smb,srt”即可
tshark输出的分析文本大多可以直接写入分析报告里面,而Wireshark却无法生成这样的报告。
比如,我想统计每一秒里面CIFS操作的Service Response Time,那么可以执行以下命令:tshark -n -q -r 所分析文件路径\分析文件名称 -z "io,stat,1.00,AVG
smb.time"
如果将这个结果导入到Excel里面,就可以生成各种报表。
和其它软件一样,命令行往往比图形界面快得多。
比如现在有一个捕获文件,里面有众多的数据包,但是我只对IP地址为74.125.23.102的数据包感兴趣。
如果使用Wireshark操作的话,需要首先打开捕获文件,再利用ip.addr==74.125.23.102进行筛选,最后保存结果。其实这三个步骤还是比较费时的。
可是如果使用tshark就只需要以下一条命令就可以了:tshark -r 所分析文件路径\分析文件名称 -Y “ip.addr==74.125.23.102” -w 所要生成文件完整路径
这样,生成的Lab5-4.pcapng文件中就会只包含有IP地址为74.125.23.102的数据包了。
统计重传的状况:使用tcp.analysis.retransmission命令:
tshark -n -q -r 所分析文件路径\分析文件名称 -z "io,stat,0,tcp.analysis.retransmission"
如果想查看乱序的情况,使用命令:
tshark -n -q -r 所分析文件路径\分析文件名称 -z "io,stat,0,tcp.analysis.out_of_order"
查看会话信息:利用”conv,xxx”就可以做到。其中的xxx可以是tcp、udp或者ip。比如查看TCP的会话信息:
tshark -n -q -r 所分析文件路径\分析文件名称 -z "conv,tcp"
最后,如果我们遇到了一个非常大的捕获文件,使用tshark无法打开该怎么办?
那么此时就需要将该文件切分成多个,可以利用editcap来实现:
editcap 所分析文件路径\分析文件名称 output.pcapng –i 4
,以文件4秒为间隔进行拆分
以上是我整理wireshark知识的第二份笔记,记录下来温故知新,希望也能帮助到你~