目录
1.1 WireShark简介
一、WireShark概述
1.1 WireShark简介
WireShark是一个网络封包分析软件。其功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。WireShark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
1.2 WireShark应用
- 网络管理员用来检测网络问题。
- 网络安全工程师用来检查资讯安全相关问题。
- 开发者用来为新的通讯协议排错。
- 普通使用者用来学习网络协议的相关知识。
- 黑客用来寻找一些敏感信息。
二、WireShark抓包及快速定位数据包技巧
2.1使用WireShark进行抓包
1.启动WireShark:
也可以在kali终端命令行键入wireshark启动。
2.选择kali的网卡,双击网卡之后就会自动进行抓包:
3.开启混杂模式:
混杂模式就是接收所有经过网卡的数据包(包括不是发给本机的包),即不验证MAC地址。普通模式下网卡只接受发给本机的包(包括广播包),将其传递给上层程序,其它的包一律丢弃。
开启之前停止抓包:
捕获--选项--“在所有接口上使用混杂模式”前打上对勾--开始
2.2WireShark的过滤器使用
1.按照上一小节的要领打开混杂模式。
2.打开浏览器,访问百度。
3.访问完成后,点击停止抓包。
4.使用过滤器,根据条件筛选自己想要的数据包(在过滤器的搜索框中搜索):
- tcp
- arp
- udp
- http
- dns
筛选条件技巧:
- 使用“tcp.flags.标识”可以指定具有筛选出具有某个标识的数据包
- 使用ip.src_host和ip.dst_host:
ip.src_host表示源ip,ip.dst_host表示目的ip。连接词or表示或者(或),and表示并且(与)。
- 使用ip.addr表示筛选出源ip或者目的ip与ip.addr相同的数据包。
注意:
- 筛选条件大小写都可以。
- 输入udp筛选条件后会出现多种协议,是因为这些协议都是基于udp的传输层之上的协议。
三、使用WireShark对常用协议抓包并分析原理
首先关闭混杂模式,避免一些干扰的数据包存在。
3.1ARP协议
广播请求,单播响应。
1.nmap基于ARP协议对网关进行扫描
2.停止当前抓包
3.分析ARP请求包
4.分析ARP响应包
响应包补全自己(网关)的MAC地址。此时响应包的源IP地址正是请求包的目的IP地址。
3.2ICMP协议分析
1.清空之前的数据包然后筛选ICMP的数据包
2.给百度发送一个ping包
3.分析ICMP请求包
4.分析ICMP响应包
3.3TCP协议分析
3.3.1TCP的三次握手
1.清空之前的数据包然后筛选TCP的数据包
2.XShell连接kali
3.分析TCP三次握手中的第一个数据包SYN
- 打开标志位的详细信息:
4.分析TCP三次握手中的第一个数据包SYN/ACK
- 打开标志位的详细信息:
- 打开SEQ/ACK分析:
5.分析TCP三次握手中的第三个数据包ACK
- 打开标志位的详细信息:
- 打开SEQ/ACK分析:
6.生成图标观察数据交换的过程
- 打开流量表
- 流类型选TCP Flows
- 左下角可以观察数据包对应的序列号
3.3.2TCP的四次挥手
1.XShell窗口中输入exit
2.打开流量表
注:我们在终端输入 EXIT 实际上是在我们 Kali 上执行的命令,表示我们 SSHD 的 Server 端向客户端发起关闭链接请求。
第一次挥手:服务端发送一个[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 状态并关闭本端的会话接口,释放相应资源。
3.4HTTP协议分析
我们抓取tcp协议的数据包(因为http是基于tcp的上层协议)
1.使用curl发送http请求(-I表示返回百度的头部信息)
2.分析HTTP请求、HTTP响应、TCP三次握手、TCP四次挥手的数据包
四、WireShark抓包解决服务器被黑上不了网的问题
场景:服务器被黑上不了网,可以ping通网关,但是不能上网。
模拟场景:
修改主机TTL的值为1
TTL
- 表示数据报文的生命周期。每经过一个路由节点,TTL值减1。当TTL值为0时,说明目标地址不可达并返回:Time to live exceeded(超过生存时间)。
- TTL值可以用来判断数据包从起点到终点经历了多少个路由节点。
- TTL值作用:防止数据包无限在公网中转发。
- 默认Linux操作系统的TTL值为64。
实战
1.筛选icmp准备抓包
2.给xuegod发送一个ping请求
3.分析数据包
- ping请求包:源ip是kali,目的ip是xuegod
- kali没有收到xuegod的应答包,而是收到了有网关发来的数据包,提示超过生存时间,数据包被丢弃。
4.修改TTL值为2
5.恢复TTL
5.MTR的使用
MTR 可以检测我们到达目标网络之间的所有网络设备的网络质量,默认系统是没有安装 MTR 工具的我们手动安装一下。