前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据抓包分析基础

数据抓包分析基础

作者头像
Mirror王宇阳
发布2020-11-13 10:56:21
9000
发布2020-11-13 10:56:21
举报

数据包分析基础

数据包分析

  • 数据包嗅探或协议分析:指捕获和解析网络上在线传输数据的过程,为了能更好的了解网络上正在发生的事情。 目的 软件:Tcpdump、Omnipeek、Wireshark

监听网络线路

集线器嗅探方式

流经集线器的所有网络数据包都会被发送到每一个集线器连接的端口。

交换机嗅探方式

端口镜像、集线器输出、使用网络分流器、ARP欺骗方式等四种方式

  1. 端口镜像

设置连接的交换机的端口镜像功能,将交换机其他一个或多个端口的经过的数据包复制一份到嗅探器连接的端口上。

  1. 集线器输出

目标设备和交换机间插接一个集线器,嗅探器也接在集线器上;在交换机不支持端口镜像的时候可以使用这个方法,这个类似于,将两者之间的数据包“共享”给集线器上其他的端口。

  1. 网络分流器

有聚合的和非聚合的两种类型,都是安置在两个设备间来嗅探所有流经的网络通信,聚合的是三个接口,非聚合的是四个端口。

  1. ARP欺骗

通过发送包含虚假MAC地址的ARP欺骗信息,劫持其他计算机流量的过程;它是在交换式的网络中进行高级技术。

使用Cain&Abel 软件进行ARP进行欺骗

当ARP劫持开始后,即可通过Wireshark软件进行抓包分析。

路由器嗅探方式

在处理涉及多个网段与路由器问题的同时,需要将嗅探器移动到不同位置上;由此才可以获得一个完整的网络拓扑。


Wireshark 软件使用

查找:Ctrl+F

Ctrl+F:查找(过滤)

搜索类型

例子

Display filter (表达式筛选)

Not ipip.addr=xxx.xxx.xxx.xxxArp

Hex Value (十六进制值筛选)

00:ffFf:ff00:a1:b2:f0

String (字符串筛选)

WorkstationlUserBDomain

标记:Ctrl+M 或 右击菜单

1559623980229
1559623980229

标记了之后,数据包的显示会加深。

时间显示格式

相对时间:Ctrl+T

捕获选项:Ctrl+K

名字解析:

  • 类型:
    • MAC地址解析:MAC地址转为IP地址
    • 网络层名字解析:IP转为DNS名称(网址)
    • 传输层名字解析:将端口转为协议
    • 使用外部网络名称解析器
  • 弊端: 解析可能失败;打开文件都要重新解析一遍;解析DNS名字会产生额外流量;解析过程占用系统资源。

协议解析:

过滤器

  • 过滤器BPF语法:

BPF限定词

说明

例子

Type

名字或数字代表的意义

Host,net,port

Dir

指明数据来源和目的

src,dst

Proto

限定使用的协议

Ether,ip,tcp,udp,http,ftp

逻辑运算符: 与 && 或 || 非 !

表达式

说明

src 192.168.1.11 && port 80

捕获源地址是192.168.1.11 和源端口或目标端口是80的流量

Host xxx.xxx.xxx.xxx

捕获某个IP地址的计算机流量

Host testserver2

捕获某个主机名的计算机流量

Ether host xxx.xx.xx.xx

捕获某个MAC地址的计算机流量

Src host xx.xxx.xxx.x

捕获来自某个计算机的流量

Dst host xx.x.x.x

捕获前往某个计算机的流量

Port xxxx

捕获指定端口的流量

!port xxx

捕获除指定端口以外的所有流量

Icmp[0] == 3

捕获偏移量为0值为3(目标不可达)的Icmp数据包流量

Icmp[0] == 8 or icmp[0] == 0

捕捉代表 echo 请求 或 echo恢复的ICMP数据包流量

Icmp[0:2] == 0x0301

捕捉以类型 3 代码 1表示的目标不可达、主机不可达的ICMP数据包流量

Tcp[13] & 1==1

捕捉设置了FIN位的TCP数据包

Tcp[13] & 2==2

捕捉设置了SYN位的TCP数据包

Tcp[13] & 4==4

捕捉设置了RST位的TCP数据包

Tcp[13] & 8==8

捕捉设置了PSH位的TCP数据包

Tcp[13] & 16==16

捕捉设置了ACK位的TCP数据包

Tcp[13] & 32==32

捕捉设置了URG位的TCP数据包

Tcp[13] == 18

捕捉TCP SYN-ACK数据包

Ether host 00:00:00:00:00

捕捉流入或流出mac地址的流量

!Ether host 00:00:00:00:00

捕捉流入或流出mac地址以外的所有的流量

Broadcast

捕捉广播流量

Udp

捕获UDP流量

  • 显示过滤器

使用自带的过滤表达式来过滤显示数据:

  • 比较操作符
  • 逻辑操作符
  • 过滤器举例

过滤器表达式

说明

! tcp.port == 3389

排除RDP流量

Tcp.flags.syn == 1

具有SYN标志位的TCP数据包

Tcp.flags.rst == 1

具有RST标志位的TCP数据包

! arp

排除ARP流量

http

所有HTTP流量

Tcp.port == 23 || tcp.port ==21

文本管理流量

Smtp || pop || imap

文本email流量

Ip.addr == xxx.xx.xx.xx

指定IP的流量

Frame.len <= xxx

长度小于xxx字节的数据包


流量分析和图形化功能

网络端点

统计每个端点的地址、发送或收到的数据包的数量和字节数

每一个IP就是一个网络端点

网络会话

统计A和B端点间会话的发送或收到的数据包的数量和字节数

协议分层

可以查看各种协议的分布统计情况

数据包长度分析
跟踪TCP数据流

ps:【Wireshark软件无法实现tcp码流跟踪】

图形展示
  • 查看 IO 图

通过x轴(数据包间隔时间)、Y轴(数据包数量上限)来调整显示的IO图形,通过图像过滤器可以将不同的流量以不同的颜色显示IO图像对比。

  • 双向时间图

基于两个端口间TCP连接对话,确认数据包已被成功接收所需的时间,可与会话统计配合使用。

  • 数据流图

对于连接可视化以及将一段时间中的数据流显示出来,配合对话统计使用,可以查看两端点之间的数据流。

【统计—FlowGraph…】

数据包标记
  • 警告信息【不正常通信中的异常数据包】

  • 丢失:上一段数据包丢失时
  • 延收:已确认丢失的数据包,又收到其他ACK包时
  • 保活:当一个连接的保活数据包出现时
  • 零窗:接收方达到窗口大小,发出一个零窗口通知时
  • 乱序:当数据包被乱序接收时
  • 重传:一次重传会在收到一个重复ACK的20ms内进行
  • 注意信息【正常通信中的异常数据包】

  • 重传:收到重复的ACK或重传计时器超时
  • 重复ACK:当主机没有收到下一个期望序列号的数据包是,会发生数据重复的ACK
  • ACK【】

  • 零窗探查:零窗口通知包发出后,用来监视TCP接收窗口的状态
  • 保活ACK:用来响应保活数据包
  • 零窗ACK:用来响应零窗口探查数据包
  • 窗口已满:通知传输主机其接收者的TCP接收已满
  • 对话信息【通信的基本信息】

  • 窗口更新:接收者发出,通知发送者TCP接收窗口大小被改变
数据包分析

通用底层网络协议

地址解析协议ARP

ARP头

偏移位

0~7

8~15

0

硬件类型

~

16

协议类型

~

32

硬件地址长度

协议地址长度

48

操作

~

64

发送方的MAC1

~

80

发送方的MAC2

~

96

发送方的MAC3

~

112

发送方的协议地址1

~

144

目标的MAC1

~

160

目标的MAC2

~

176

目标的MAC3

~

192

目标的协议地址1

~

208

目标的协议地址2

~

数据包分析

上述的均为:request(请求包),下图为(reply)响应包

无偿的ARP

当IP地址发生改变后,网络主机中缓存的IP和MAC映射就失效了,为了防止通信错误,无偿ARP请求被发送到网络中,强制所有收到它的设备更新ARP映射缓存。

IP协议

IP头
1559645755707
1559645755707

  • 服务类型[级别]:优先级标志位和服务类型标志位,用来进行QoS
  • 标识符:识别一耳光数据包或被分片数据包的次序;唯一
  • 标记符:标记数据包是否为一组分片数据包的一部分
  • 分片偏移:该数据包是个分片,数据包按分片偏移值顺序重组
  • 生存时间:TTL —— 超时TTL时间,数据包被丢弃
数据包分析
IP分片

将一个数据流分为更小的片段,是IP用于解决跨越不同类型网络时可靠传输的一个特性。基于数据链路层所使用的最大传输单元MTU的大小,默认是1500字节(不包含14字节的以太网头本身),当数据包大小大于MTU时会被分片。

传输控制协议TCP

TCP头

  • 序号:表示一个TCP片段。
  • 确认序号:希望从另一个设备得到的下一个数据包序号
  • 紧急指针:如果设置了URG位,紧急指针将告诉CPU从数据包的哪里开始读取数据
TCP端口
  • 1~1023:标准端口组;特定服务会用到标准端口
  • 1024~65535:临时端口组;操作系统会随机地选择一个端口让某个通信单独使用 下面为TCP建立连接时的三次握手包的数据包
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据包分析基础
    • 数据包分析
      • 监听网络线路
        • 集线器嗅探方式
        • 交换机嗅探方式
        • 路由器嗅探方式
      • Wireshark 软件使用
        • 查找:Ctrl+F
        • 标记:Ctrl+M 或 右击菜单
        • 时间显示格式
        • 相对时间:Ctrl+T
        • 捕获选项:Ctrl+K
        • 名字解析:
        • 协议解析:
        • 过滤器
      • 流量分析和图形化功能
        • 通用底层网络协议
          • 地址解析协议ARP
          • IP协议
          • 传输控制协议TCP
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档