飞道的博客

(1)WireShark

346人阅读  评论(0)

1.工具简介


(1)定义

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

(2)嗅探器工作原理

  • 收集:从网络线缆上收集原始二进制数据,一般通过选定网卡设置为混杂模式,然后抓取网段所有通信流量而不是发往它的数据包。

  • 转换:将二进制转换成可读形式,以一种非常基础解析方法显示,而大部分分析工作留给用户。

  • 分析:嗅探器以捕获网络数据作为输入,识别和验证它们的协议,然后开始分析每个协议的特定属性。

(3)使用技巧

确定WireShark物理位置(在网络线路哪个节点上)。若没有正确位置,启动后会花很长时间捕获一些与自己无关的数据。

选择捕获接口。一般是选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据。

使用捕获过滤器。设置过滤器可以避免产生大量无关数据

使用显示过滤器。进一步过滤分析。

使用着色规则。通过使用显示过滤器过滤后的数据,都是有用的数据包。如果想更加突出的显示某个会话,可以使用着色规则高亮显示。

构建图表。可视化分析

重组数据。当传输较大文件时,需要将信息分布在多个数据包中。此时需要使用重组数据方法抓取完整数据。WireShark可以重组一个会话中不同数据包的信息,或者是重组一个完整的文件。

(4)使用场景——交换式环境

不同于集线器网络中广播传递,交换式网络捕获流量基本方法有:①端口镜像、②集线器接出(hubbing out)、③使用网络分流器、④ARP欺骗攻击。

2.功能使用


(1)混杂模式

①概述

接受所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址。普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其他的包一律丢弃。

一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。

②开启和关闭

(2)过滤器应用

①筛选 TCP 的数据包

②筛选源地址是 192.168.1.53 或目的地址是 192.168.1.1

③查看源地址或目标地址均为192.168.1.53 → ip.addr==192.168.1.53

3.协议


(1)定义

又称网络语言,协议栈是一组协同工作的网络协议的逻辑组合。帮助我们定义如何路由数据包,如何发起连接,以及如何确认收到数据。协议共同问题

  • 发起连接:由客户端还是服务器发起?在真正通信前必须交换哪些信息?

  • 协商连接参数:通信需要进行协议加密吗?加密密钥如何在通信双方之间传输?

  • 数据格式:通信数据在数据包中如何排列?数据到达设备时以什么顺序处理?

  • 错误检测与校正:当数据包花太长时间到达目的地如何处理?当客户端暂时无法和服务器建立通信连接,如何恢复?

  • 连接终止:一台主机如何通知另一台主机通信结束?终止链接应该发送什么最终信息?

(2)ARP协议分析

定义:通过解析网络层IP地址来找寻数据链路层的MAC地址

①查看 Address Resolution Protocol (request) ARP 请求包内容


   
  1. Address Resolution Protocol (request) #ARP 地址解析协议 request 表示请求包
  2. Hardware type: Ethernet (1) #硬件类型
  3. Protocol type: IPv4 ( 0x0800 ) #协议类型
  4. Hardware size: 6 #硬件地址
  5. Protocol size: 4 #协议长度
  6. Opcode:_ request ( 1 ) #操作码,该值为 1 表示 ARP 请求包
  7. Sender MAC address: Vmware_ 96:67:52 (00:0c:29:8b:2b:b8) #源 MAC 地址
  8. Sender IP address: 192.168.1.53 . #源 IP 地址
  9. Target MAC address: 00:00:00_ 00: 00:00 (00: 00: 00 :00: 00:00) #目标 MAC 地址
  10. Target IP address: 192.168.1.1 #目标 IP 地址

②ARP应答/第二个数据包内容


   
  1. Address Resolution Protocol (reply) #ARP 地址解析协议 reply 表示回复包
  2. Hardware type: Ethernet (1) #硬件类型
  3. Protocol type: IPv4 ( 0x0800 ) #协议类型
  4. Hardware size: 6 #硬件地址
  5. Protocol size: 4 #协议长度
  6. Opcode:_ reply ( 2 ) #操作码,该值为 2 表示 ARP 回复包
  7. Sender MAC address: XXXXXXXXXXXX (a4:56:02:3b:4b:03) #源 MAC 地址
  8. Sender IP address: 192.168.1.1 . #源 IP 地址
  9. Target MAC address: 00:00:00_ 00: 00:00 (00:0c:29:8b:2b:b8) #目标 MAC 地址
  10. Target IP address: 192.168.1.53 #目标 IP 地址

总结:可以看到到应答包补全了自己的 MAC 地址,目的地址和源地址做了替换

③ARP info内过程

192.168.1.53广播询问:谁有 192.168.1.1 的 MAC 地址?

192.168.1.1 单播应答:192.168.1.1 的 MAC 地址是 xxxxxxxxxxx

(3)ICMP协议分析

工作过程:

  • 本机发送一个 ICMP Echo Request 的包

  • 接受方返回一个 ICMP Echo Reply,包含了接受到数据拷贝和一些其他指令

①ICMP请求包

②ICMP响应包

(4)TCP协议分析——三次握手

①第一次握手,53209端口主动申请连接22端口(SYN)

②第二次握手,53209端口主动申请连接22端口(SYN+ACK)

SYN=1,ACK=1

表示回应第一个 SYN 数据包 134号帧。

③第三次握手,53209端口主动申请连接22端口(ACK)

ACK=1

表示回应第二个 SYN 数据包 135号帧

【可视化分析】

统计→流量图→过滤TCP类型

(5)TCP协议分析——四次挥手

过程解释:

  • 第一次挥手:服务端发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入FIN_WAIT_1 状态

  • 第二次挥手:客户端收到 FIN 后,知道不会再有数据从服务端传来,发送ACK进行确认,确认序号为收到序号+1(与 SYN 相同,一个 FIN 占用一个序号),客户端进入 CLOSE_WAIT 状态。

  • 第三次挥手:客户端发送[FIN+ACK]给对方,表示自己没有数据要发送了,客户端进入LAST_ACK 状态,然后直接断开 TCP 会话的连接,释放相应的资源。

  • 第四次挥手:服务户端收到了客户端的 FIN 信令后,进入 TIMED_WAIT 状态,并发送ACK确认消息。服务端在 TIMED_WAIT 状态下,等待一段时间,没有数据到来,就认为对面已经收到了自己发送的ACK 并正确关闭了进入 CLOSE 状态,自己也断开了 TCP 连接,释放所有资源。当客户端收到服务端的ACK 回应后,会进入 CLOSE 状态并关闭本端的会话接口,释放相应资源。

(6)HTTP协议分析(一次curl请求)

curl -I baidu.com

第一步:我们我们发送了一个HTTP 的 HEAD请求

第二步:服务器收到我们的请求返回了一个Seq/ACK进行确认

第三步:服务器将 HTTP 的头部信息返回给我们客户端 状态码为 200表示页面正常

第四步:客户端收到服务器返回的头部信息向服务器发送 Seq/ACK 进行确认

发送完成之后客户端就会发送 FIN/ACK 来进行关闭链接的请求。

(7)实战:WireShark 抓包解决服务器被黑上不了网

①场景:服务器被黑上不了网,可以 ping 通网关,但是不能上网

②模拟场景:修改主机 TTL 值为 1,下面的方式是我们临时修改内核参数。

  • root@xuegod53:~# echo "1" > /proc/sys/net/ipv4/ip_default_ttl

  • 【TTL介绍】

  • TTL : 数据报文的生存周期。

  • 默认 linux 操作系统值:64,每经过一个路由节点,TTL 值减 1。TTL 值为 0 时,说明目标地址不可达并返回:Time to live exceeded

  • 作用:防止数据包,无限制在公网中转发

  • ping 192.168.1.1 -c 1

我们判断和目标之间经过多少个网络设备是根据目标返回给我们的 TTL 值来判断的,因为我们发送的数据包是看不到的。

③数据包分析

  • 开启抓包,过滤 icmp 协议:ping xuegod.cn -c 1

  • 然后回到 WireShark 中查看数据包。我们可以看到第一个包是发送了一个 ping 请求包 ttl=1然后呢我们收到了 192.168.1.1 返回给我们的数据包告诉我们超过数据包生存时间,数据包被丢弃。

  • 然后把 TTL 值修改成 2 观察效果:

  • echo "2" > /proc/sys/net/ipv4/ip_default_ttl

  • 我们对比数据包发现返回我们数据包被丢弃的源地址变成了 112.103.140.1,这证明了数据包在网络中已经到达了下一个网络设备才被丢弃,由此我们还判断出我们的运营商网关地址为 112.103.140.1但是我们并没有到达目标主机。

  • 现在恢复系统内核参数

  • echo "64" > /proc/sys/net/ipv4/ip_default_ttl

  • 目标返回给我们的 TTL 值为 52,这表示我们的 TTL 值需要大于 64-52=12才可以访问 xuegod.cn

  • MTR 可以检测我们到达目标网络之间的所有网络设备的网络质量,首先安装MTR

  • apt install -y mtr

  • 检测到达 xuegod.cn 所有节点的通信质量,我们可以看到从我当前主机到目标主机之间经过 12 跳。


转载:https://blog.csdn.net/qq_35494772/article/details/128671450
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场