WireShark

Veni, vidi, vici! 我来,我见,我征服!
——Julius Caesar恺撒一世

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

​官网下载链接​

简单使用

[工具使用]Wireshark_tcp/ip[工具使用]Wireshark_数据帧_02http:

[工具使用]Wireshark_wireshark_03tcp:

[工具使用]Wireshark_信息安全_04

停止抓包后,我们可以选择抓取到的数据包。

文件—>另存为,然后就会保存为一个pcap格式的文件

pcap文件格式

[工具使用]Wireshark_数据帧_05

1.Pcap Header

文件头,每一个pcap文件只有一个文件头,总共占24(B)字节,以下是总共7个字段的含义。

Magic(4B):标记文件开始,并用来识别文件和字节顺序。值可以为0xa1b2c3d4或者0xd4c3b2a1,如果是0xa1b2c3d4表示是大端模式,按照原来的顺序一个字节一个字节的读,如果是0xd4c3b2a1表示小端模式,下面的字节都要交换顺序。现在的电脑大部分是小端模式。

Major(2B):当前文件的主要版本号,一般为0x0200

Minor(2B):当前文件的次要版本号,一般为0x0400

ThisZone(4B):当地的标准事件,如果用的是GMT则全零,一般全零

SigFigs(4B):时间戳的精度,一般为全零

SnapLen(4B):最大的存储长度,设置所抓获的数据包的最大长度,如果所有数据包都要抓获,将值设置为65535

LinkType(4B):链路类型。解析数据包首先要判断它的LinkType,所以这个值很重要。一般的值为1,即以太网

2.Packet Header

数据包头可以有多个,每个数据包头后面都跟着真正的数据包。以下是Packet Header的4个字段含义

Timestamp(4B):时间戳高位,精确到seconds,这是Unix时间戳。捕获数据包的时间一般是根据这个值

Timestamp(4B):时间戳低位,能够精确到microseconds

Caplen(4B):当前数据区的长度,即抓取到的数据帧长度,由此可以得到下一个数据帧的位置。

Len(4B):离线数据长度,网路中实际数据帧的长度,一般不大于Caplen,多数情况下和Caplen值一样

3.Packet Data

Packet是链路层的数据帧,长度就是Packet Header中定义的Caplen值,所以每个Packet Header后面都跟着Caplen长度的Packet Data。也就是说pcap文件并没有规定捕获的数据帧之间有什么间隔字符串。Packet数据帧部分的格式就是标准的网络协议格式了。

保存的pcap文件用010Editor打开如下图:

[工具使用]Wireshark_网络安全_06

数据包的过滤

当我们选择抓取的网卡后,会抓取通过网卡的全部流量,但是绝大部分对我们的是没有用的,所以我们需要进行过滤,而过滤分为两种抓取时过滤抓取后过滤

抓取时过滤

[工具使用]Wireshark_数据帧_07

如下图是wireshark默认的过滤,我们可以从左下角添加自己需要的过滤

[工具使用]Wireshark_数据帧_08捕获—>选项,下图绿色表示语法没有问题

[工具使用]Wireshark_信息安全_09

抓取后过滤

一般情况是抓完包再过滤的,在上方输入我们的语法

[工具使用]Wireshark_wireshark_10过滤策略:

1、过滤地址

ip.addr192.168.10.10 或 ip.addr eq 192.168.10.10 #过滤地址
ip.src
192.168.10.10 #过滤源地址

ip.dst==192.168.10.10 #过滤目的地址

2、过滤协议,直接输入协议名

icmp

http

tcp

3、过滤协议和端口

tcp.port80
tcp.srcport
80

tcp.dstport80
udp.port
端口号

4、过滤http协议的请求方式

http.request.method==“GET”

http.request.method==“POST”

http.request.uri contains admin #url中包含admin的

http.request.code==404 #http请求状态码的

5、连接符

&&

||

and

or

6、通过连接符可以把上面的命令连接在一起,比如:

ip.src192.168.10.10 and http.request.method"POST"

数据流跟踪

我们的一个完整的数据流一般都是由很多个包组成的,所以,当我们想查看某一条数据包对应数据流时 鼠标右键—>跟踪流,选择TCP、UDP、SSL、HTTP,选择对应的流。

[工具使用]Wireshark_wireshark_11

选择对应的跟踪流之后,会弹出该流的完整数据流,还有这个数据流中包含的数据包。这时wireshark顶部的过滤器就是这条流的过滤规则。

[工具使用]Wireshark_网络安全_12

专业信息说明

作用:可以对数据包中特定的状态进行警告说明

错误(errors)、警告(warnings)、标记(notes)、对话(chats)

[工具使用]Wireshark_网络安全_13[工具使用]Wireshark_信息安全_14

数据包的统计分析

分析选项中,可以对抓取到的数据包进行进一步的分析,具体内容如下图:

[工具使用]Wireshark_数据帧_15

已解析的地址

作用:统计通信流量中已经解析了的地址

[工具使用]Wireshark_wireshark_16

协议分级

作用:统计通信流量中不同协议的占比

[工具使用]Wireshark_信息安全_17

统计摘要说明(文件属性)

作用:对抓取的数据包进行全局统计,导出包的相关信息

[工具使用]Wireshark_网络安全_18

导出对象——>HTTP

作用:查看并且导出HTTP流对象,用于数据包分析很有用

[工具使用]Wireshark_信息安全_19[工具使用]Wireshark_信息安全_20

数据包分析的小技巧

1、大量的404请求:目录扫描

2、大量select *** from:SQL注入

3、连续一个IP的多端口请求或多个IP的几个相同端口:端口扫描

4、爆破账号密码:ip.addr219.239.105.18 and http.request.uri matches “edit|uoload|modify”
5、用菜刀链接的包,post请求 ip.addr
219.239.105.18 and htpp.request.method==POST

希望大家有所收货!