1、数据包分析 简介WireShark目 录 Contents第 1章 Linux上抓包与分析第 2章 Windows抓包方法第 3章 Wireshark进行数据包分析TCPdump命令介绍顾名思义, tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供 and、 or、not等逻辑语句来帮助你去掉无用的信息。常用选项介绍-c :在收到指定的数量的分组后, tcpdump就会停止 ;-f :将外部的 Internet地址以数字的形式打印出来 ;-i :指定监听的网络接口 ;-n :不把网络地址转换成名字 ;-nn:不进行端口名称
2、的转换 ;-s:从每个分组中读取最开始的 snaplen个字节,而不是默认的 68个字节 ;-w:直接将分组写入文件中,而不是不分析并打印出来 ;-v:输出一个稍微详细的信息,例如在 ip包中可以包括 ttl和服务类型的信息 ;-vv:输出详细的报文信息 ;-x:可以列出十六进制 (hex) 以及 ASCII 的封包内容,对于监听封包内容很有用 ;TCPdump表达式介绍常用表达式介绍第一种是关于类型的关键字,主要包括 host, net, port,例如 host 210.27.48.2, 指明 210.27.48.2是一台主机, net 202.0.0.0指明 202.0.0.0是一个网络
3、地址, port 23 指明端口号是 23。如果没有指定类型,缺省的类型是 host。第二种是确定传输方向的关键字,主要包括 src, dst, dst or src, dst and src, 这些关键字指明了传输的方向。举例说明, src 210.27.48.2 ,指明 ip包中源地址是 210.27.48.2 ,dst net 202.0.0.0 指明目的网络地址是 202.0.0.0。如果没有指明 方向关键字,则缺省是 srcor dst关键字。第三种是协议的关键字,主要包括 fddi, ip, arp, rarp, tcp, udp等类型。 Fddi指明是在 FDDI (分布式光纤数
4、据接口网络 )上的特定的网络协议,实际上它是” ether”的别名, fddi和 ether 具有类似的源地址和目的地址,所以可以将 fddi协议包当作 ether的包进行处理和分析。 其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump 将会 监听所有协议的信息包。除了这三种类型的关键字之外,其他重要的关键字如下: gateway, broadcast, less,greater, 还有三种逻辑运算,取非运算是 not ! , 与运算是 and, 或运算是 or , ; 这些关键字可以组合起来构成强大的组合条件来满足人们的需要。TCPdump应用举例在应用中往
5、往需要截获整个包的长度,避免域名解析后的结果不直观,保存抓包文件但同时在过程中也想知道实时状态,因此下面的例子都以这个条件为前提。1.截获 10.0.2.6收到和发出的数据包。tcpdump -i any -xns0 host 10.0.2.6 -w myhost.cap -vv2. 截获 8080端口的数据包。tcpdump -i any -xns0 port 8080 -w myhost.cap -vv3. 截获 10.0.2.6和 10.0.5.227之间的数据包。tcpdump -i any -xns0 host 10.0.2.6 and 10.0.5.227 -w hosts.cap
6、 -vv4. 截获 10.0.2.0/24这个网段的数据包tcpdump -i any -xns0 net 10.0.2.0/24 -w mynet.cap -vv5. 截获 10.0.2.6发给 10.0.5.227的数据包tcpdump -i any -xns0 src 10.0.2.6 and dst 10.0.5.227 -w request.cap -vvTCPdump应用举例6. 截获 10.0.2.6发给 10.0.5.227的 8080端口的数据包tcpdump -i any -xns0 src 10.0.2.6 and dst 10.0.5.227 and port 8080
7、 -w request.cap -vv7.截获 10.0.2.6发的 100个数据包tcpdump -i any -xns0 -c 100 src 10.0.2.6 -w request100.cap -vv8.截获 10.0.2.6发来的 icmp包tcpdump -i any -xns0 src 10.0.2.6 and icmp -w ping.cap -vv9.截获主机 10.0.5.227 与 10.0.5.231和 10.0.5.234之间的数据包tcpdump -i any xns0 host 10.0.5.227 and 10.0.5.231 or 10.0.5.234 -w
8、2.cap -vv在 linux上查看抓包文件一般情况,都会将文件下载到 Windows电脑上进行分析查看,但是有时候只需要获取其中一点需要的信息,也可以在 linux上查看。一般 http协议的包查看比较方便。比如 8080.cap就是抓的访问 antispam的数据包,可以如下查看:strings 8080.cap目 录 Contents第 1章 Linux上抓包与分析第 2章 Windows上抓包的方法第 3章 Wireshark进行数据包分析在 windows上使用 wireshark抓包开始抓包在 windows上使用 wireshark抓包高级选项设置目 录 Contents第 1
9、章 Linux上抓包与分析第 3章 Wireshark进行数据包分析第 2章 Windows上抓包的方法分析数据包的基本步骤1 进行数据包筛选2 进行数据包简略分析3 对照协议进行精确分析进行数据包筛选数据包筛选就是根据不同的需要,设置不同的条件进行数据包筛选,从而快速定位。按照协议筛选进行数据包筛选按照协议字段进行更精确的筛选进行数据包筛选按照源地址和目的地址筛选进行数据包筛选按照端口进行筛选进行数据包筛选按照目的端口进行筛选进行数据包筛选按照协议和 IP地址筛选进行数据包简略分析wireshark能对一些常用的协议进行解码,因此当获取到需要的包之后,就能够进行简要地分析。从下图中的数据中可
10、以看出主叫,被叫,消息内容进行数据包简略分析因为大部分的业务数据都是通过 TCP协议传输的,因此也可以采用 wireshark自带的 Follow TCP Stream来显示数据,更容易观察。进行数据包简略分析smpp协议的数据包 Follow TCP Stream后显示的数据就比较直观些。进行数据包简略分析http协议的数据包 Follow TCP Stream后显示的数据就非常明确了。进行数据包简略分析通过设置 Set Time References来快速查看数据包直接的时差。如下图选择一个数据包 Set Time Reference后,就以该数据包为开始时刻,从而很容易看出后面数据包的时
11、间间隔。进行数据包简略分析设置数据包时间显示格式。按照不同需要设置时间显示方式,这样就更容易进行分析判定。进行数据包简略分析设置数据包时间显示格式。按照前面的时间格式设置后,显示如下,就比较符合我们的习惯。对照协议进行精确分析当通过初略分析无法定位问题的时候就需要进行精确分析了。精确分析的最终目的就是将抓到的数据包解析成我们能够看懂的信息。精确分析 http协议包就以 M+和 CRM之间的消息为例。1. 首先将数据包用 wireshark打开,然后 Follow TCP Stream。精确分析 http协议包2. 将得到的字符串复制到 UltraEdit中 。3. 然后按照 xml格式进行着色和格式化,就能得到容易查看的数据。精确分析 diameter协议包就以 M+和 CBS之间的计费消息为例。1. 首先将数据包用 wireshark打开,然后 Follow TCP Stream。2. 然后选择 Hex Dump以 16进制展示。精确分析 diameter协议包3. 将需要的数据信息复制到文本文件中,去掉多余的信息得到干净的数据块 。