神器wireshark
Wireshark 是一款功能强大的开源网络协议分析工具,广泛应用于网络故障排查、安全分析、协议开发及教学等领域
1. 主要功能
- 实时抓包与离线分析:捕获网络接口上的数据包,并支持对已保存的抓包文件进行深入分析。
- 协议解码:支持数千种网络协议的解码,包括常见的 HTTP、TCP、UDP、DNS、SSL/TLS 等,以及工业控制协议、物联网协议等。
- 流量过滤:通过强大的显示过滤器(Display Filter)和捕获过滤器(Capture Filter),用户可以精准筛选感兴趣的数据包。
- 统计分析:提供协议分布图、会话统计、流量图表等可视化工具,帮助用户快速定位网络问题。
- 数据重组:支持对 TCP 会话中的数据流进行重组,方便查看完整的文件传输或应用层数据。
- 自定义功能:通过 Lua 脚本扩展功能,用户可以编写自定义的解码器、过滤器或工具。
2,基本使用方法
打开wirehark
可以看到需要选择网卡,我这里选择WLAN,随便制造点流量,比如说ping 一下百度之类的
WireShark 主要分为这几个界面
1. Display Filter(显示过滤器), 用于过滤
2. Packet List Pane(包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表
3. Packet Details Pane(包详情), 显示封包中的字段
4. Dissector Pane(16进制数据)
5. Miscellanous(地址栏,杂项)
过滤器语法:
其显示过滤器(Display Filter)用于筛选和显示符合特定条件的数据包。以下是 Wireshark 显示过滤器的一些基本语法和常见用法:
类别 | 字段/操作符 | 说明 | 示例 |
---|---|---|---|
基本逻辑 | && | 逻辑与(AND) | ip.addr == 192.168.1.1 && tcp.port == 80 |
` | ` | ||
! | 逻辑非(NOT) | !http | |
IP 地址 | ip.src | 源 IP 地址 | ip.src == 192.168.1.100 |
ip.dst | 目标 IP 地址 | ip.dst == 192.168.1.1 | |
ip.addr | 源或目标 IP 地址 | ip.addr == 192.168.1.1 | |
端口 | tcp.srcport | TCP 源端口 | tcp.srcport == 80 |
tcp.dstport | TCP 目标端口 | tcp.dstport == 443 | |
tcp.port | TCP 源或目标端口 | tcp.port == 22 | |
协议 | 协议名 | 直接使用协议名称作为过滤条件 | http , tcp , udp , dns |
数据包长度 | frame.len | 数据包总长度 | frame.len > 1500 |
时间 | frame.time_epoch | 时间戳(秒) | frame.time_epoch > 1696000000 |
HTTP | http.request.method | HTTP 请求方法 | http.request.method == "GET" |
http.response.code | HTTP 响应状态码 | http.response.code == 200 | |
http.host | HTTP 请求的主机名 | http.host contains "example.com" | |
DNS | dns.qry.name | DNS 查询名称 | dns.qry.name contains "google" |
字符串匹配 | contains | 字符串包含 | http.user_agent contains "Chrome" |
matches | 正则表达式匹配 | http.user_agent matches "Chrome.*Safari" | |
endswith | 字符串以指定后缀结尾 | http.host endswith ".com" | |
范围匹配 | .. | 范围匹配 | tcp.port > 1023 && tcp.port < 65535 |
组合条件 | () | 明确优先级 | `(ip.src == 192.168.1.1 |
排除特定条件 | ! | 排除特定条件 | !dns (排除所有 DNS 流量) |
比如我要查找本机送给外面的http流量
ip.src == 192.168.1.5 && http
其中包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。 你可以看到不同的协议用了不同的颜色显示。
- No.:数据包的编号。
- Time:数据包捕获的时间戳。
- Source:源IP地址(192.168.1.5)。
- Destination:目的IP地址(112.90.80.96)。
- Protocol:协议类型(HTTP)。
- Length:数据包的长度。
- Info:数据包的简要描述信息,例如“Continuation”。
同时你也可以修改这些显示颜色的规则,在菜单点击视图 --> 着色器规则
混杂模式
模式是网络接口卡(NIC)的一种工作模式,允许网卡接收所有经过该网络接口的数据包,而不仅仅是发送给本机的数据包。
- 默认模式(非混杂模式):网卡仅接收目标MAC地址与自身匹配的数据包。
- 混杂模式:网卡接收所有数据包,无论目标MAC地址是否匹配。
简单来说开启了混杂模式无论是不是自己需要接受发送的数据包,只要在这台机器网卡上经过了都捕捉过来
混杂模式开启路径 菜单-捕获-选项-混杂
混杂模式的典型应用场景
场景 | 工具/技术 | 示例 |
---|---|---|
网络协议分析 | Wireshark、tcpdump | 捕获HTTP、DNS等协议的流量,分析通信过程。 |
入侵检测系统 (IDS) | Snort、Suricata | 监控网络中的恶意流量(如SQL注入、端口扫描)。 |
网络性能优化 | iPerf、Nagios | 测量带宽利用率,定位网络瓶颈。 |
无线网络安全 | Aircrack-ng | 捕获Wi-Fi流量,分析加密协议或破解密码(需配合无线网卡)。 |
包详情信息
封包详细信息 (Packet Details Pane) 是核心分析区域,用于展示选中数据包的分层协议解析结果。它通过树状结构将数据包按协议栈逐层展开,直观呈现协议字段的详细信息。
这个面板是我们最重要的,用来查看协议中的每一个字段。
各行信息分别为
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
3,协议分析
1. 数据包层级解析
- Wireshark 将数据包按层级展开,通常包括:
- 链路层:以太网帧头、源 MAC 地址、目的 MAC 地址等。
- 网络层:IP 头、源 IP、目的 IP、TTL 等。
- 传输层:TCP/UDP 头、源端口、目的端口、序列号等。
- 应用层:HTTP、DNS、SSH 等协议的具体内容。
2. 常用协议分析
- HTTP/HTTPS:
- 查看请求方法(GET/POST)、URL、响应状态码、头信息等。
- 解码 HTTPS 流量需配置 SSLKEYLOGFILE 环境变量或使用中间人代理(如 mitmproxy)。
- DNS:
- 查看域名解析过程,包括查询类型(A/AAAA/MX 等)、响应结果等。
- TCP:
- 分析三次握手、重传、乱序、窗口缩放等。
- 使用
Follow TCP Stream
查看完整会话。
- UDP:
- 查看实时流量(如 VoIP、视频流)的丢包情况。
4,常见协议包分析
1 ,ARP 协议
ARP(Address Resolution Protocol,地址解析协议) 是一种用于将网络层的 IP 地址 解析为数据链路层的 MAC 地址 的通信协议。它在局域网(LAN)中起着关键作用,确保数据包能够在物理网络上正确传输
ARP 协议的工作原理
- 需求触发:
- 当一台主机需要向同一局域网内的另一台主机发送数据时,它需要知道目标主机的 MAC 地址。
- 如果目标主机的 MAC 地址不在发送方的 ARP 缓存 中,发送方会发起一个 ARP 请求。
- ARP 请求:
- 发送方构造一个 ARP 请求广播包,包含:
- 发送方的 IP 地址和 MAC 地址。
- 目标主机的 IP 地址。
- 目标 MAC 地址字段为空(因为发送方不知道目标 MAC 地址)。
- 该广播包被发送到局域网内的所有设备。
- 发送方构造一个 ARP 请求广播包,包含:
- ARP 响应:
- 局域网内的所有设备都会接收到 ARP 请求广播包。
- 只有目标主机(其 IP 地址与请求中的目标 IP 地址匹配)会处理该请求。
- 目标主机构造一个 ARP 响应包,包含:
- 目标主机的 IP 地址和 MAC 地址。
- 发送方的 IP 地址和 MAC 地址(从请求包中获取)。
- 响应包以单播形式发送回发送方。
- ARP 缓存更新:
- 发送方接收到 ARP 响应后,将目标主机的 IP 地址和 MAC 地址的映射关系存储到本地的 ARP 缓存中。
- 后续发送数据时,发送方可以直接从 ARP 缓存中查询目标 MAC 地址,而无需再次发起 ARP 请求
ARP协议的报文格式
ARP报文分为请求报文和响应报文,其基本结构如下:
字段 | 长度 | 描述 |
---|---|---|
硬件类型 | 2字节 | 硬件地址类型(如1表示以太网) |
协议类型 | 2字节 | 协议地址类型(如0x0800表示IPv4) |
硬件地址长度 | 1字节 | 硬件地址长度(如6字节) |
协议地址长度 | 1字节 | 协议地址长度(如4字节) |
操作码 | 2字节 | 1表示请求,2表示响应 |
发送方MAC地址 | 6字节 | 发送方的硬件地址 |
发送方IP地址 | 4字节 | 发送方的协议地址 |
目标MAC地址 | 6字节 | 目标方的硬件地址(请求时全0) |
目标IP地址 | 4字节 | 目标方的协议地址 |
ARP协议的应用场景
ARP协议的安全风险
ARP协议的防御措施
ARP协议的扩展与替代
- 局域网通信
- 在同一子网内,主机通过ARP协议获取目标主机的MAC地址,实现直接通信。
- 跨网段通信
- 当主机需要与不同子网的主机通信时,会将数据包发送给默认网关。此时,ARP协议用于解析网关的MAC地址。
- 网络管理
- 网络管理员可通过ARP缓存表查看网络中的主机状态,排查网络故障。
- ARP欺骗攻击
- 攻击者通过伪造ARP响应包,将自己的MAC地址冒充为目标主机的MAC地址,导致数据包被转发到攻击者设备,从而实现中间人攻击或网络中断。
- ARP缓存溢出攻击
- 攻击者发送大量伪造的ARP请求包,耗尽目标主机的ARP缓存资源,导致合法请求无法处理。
- ARP广播风暴
- 网络中存在错误配置或恶意设备时,可能导致ARP广播包泛滥,占用网络带宽,影响正常通信。
- 静态ARP绑定
- 在关键设备(如服务器、路由器)上手动配置静态ARP表项,防止ARP欺骗。
- 动态ARP检测(DAI)
- 在交换机上启用DAI功能,验证ARP报文的合法性,丢弃伪造的ARP请求或响应。
- 使用VLAN隔离
- 将不同安全级别的设备划分到不同VLAN,限制ARP广播的传播范围。
- 部署ARP防火墙
- 使用专门的ARP防火墙设备,监控和过滤异常的ARP流量。
- 启用加密协议
- 在网络层以上使用加密协议(如IPsec、SSL/TLS),即使ARP欺骗成功,攻击者也无法解密数据。
- 代理ARP
- 路由器或交换机可配置代理ARP功能,代替无法直接通信的主机响应ARP请求,实现跨网段通信。
- 免费ARP
- 主机启动或更换网络接口时,主动发送免费ARP包,通知网络中的其他主机更新ARP缓存表。
- NDP协议(IPv6)
- 在IPv6中,ARP协议被邻居发现协议(NDP)取代,NDP不仅提供地址解析功能,还支持路由器发现、重复地址检测等扩展功能。
抓包方法:
- 过滤器:
arp
。 - 操作:在局域网中发起 ping 操作,触发 ARP 请求/响应。
协议解释:
- ARP 请求:主机询问“谁的 IP 是 X.X.X.X?请告诉我你的 MAC 地址。”
- ARP 响应:目标主机回复“我的 MAC 地址是 XX:XX:XX:XX:XX:XX。”
数据包详情如下
192.168.1.1发送请求包
Frame 1676: 42 bytes on wire (336 bits),42 bytes captured (336 bits) on interface (Device\NPF_{80839945-9E42-42FC-AFE6-FA29F300151F}), id 0 # 帧编号为1676,总长度42字节(336位),在指定接口上捕获,工具内部ID为0
Interface name:\Device\NPF_{80839945-9E42-42FC-AFE6-FA29F300151F} # 接口名称
Interface description: WLAN # 接口描述,表明这是通过 WLAN(无线局域网)接口捕获的流量
Encapsulation type: Ethernet (1) # 封装类型,以太网协议,值为1表示以太网
Arrival Time:Apr 23,2025 16:37:16.950250000中国标准时间 # 到达时间,使用中国标准时间(CST)
UTC Arrival Time: Apr 23,2025 08:37:16.950250000 UTC # 到达时间(UTC时间)
Epoch Arrival Time: 1745397436.950250000 # 到达时间的时间戳(自1970年1月1日以来的秒数)
[Time shift for this packet: 0.0oooooo0 seconds] # 时间偏移量(此包的时间偏移)
[Time delta from previous captured frame: 0.038357000 seconds] # 与上一个捕获帧的时间间隔
[Time delta from previous displayed frame: 0.0ooooooo seconds] # 与上一个显示帧的时间间隔
[Time since reference or first frame: 21.2788560o0 seconds] # 自参考帧或第一帧以来的时间
Frame Number:1675 # 帧编号
Frame Length: 42 bytes (336 bits) # 帧长度,42字节(336位)
Capture Length: 42 bytes (336 bits) # 捕获长度,42字节(336位)
[Frame is marked: False] # 帧是否被标记
[Frame is ignored: False] # 帧是否被忽略
[Protocols in frame: eth:ethertype:arp] # 帧中包含的协议,以太网、以太网类型、ARP
[Coloring Rule Name: ARP] # 颜色规则名称,用于在Wireshark中标识ARP流量
[Coloring Rule String: arp] # 颜色规则字符串
Ethernet II,Src: SichuanT_17:4a:68 (14:69:a2:17:4a:68),Dst: IntelCor_86:44:08 (68:54:5a:86:44:08) # 以太网II帧头,源MAC地址和目标MAC地址
v Destination: IntelCor_86:44:08 (68:54:5a:86:44:08) # 目标MAC地址
..0. # LG位:全局唯一地址(出厂默认)
.0 # IG位:单播地址
= LG bit: Globally unique address (factory default) # LG位解释
= IG bit: Individual address (unicast) # IG位解释
v Source: SichuanT_17:4a:68 (14:69:a2:17:4a:68) # 源MAC地址
.0. # LG位:全局唯一地址(出厂默认)
.0 # IG位:单播地址
= LG bit: Globally unique address (factory default) # LG位解释
= IG bit: Individual address (unicast) # IG位解释
Type: ARP (Ox0806) # 帧类型,ARP协议,值为0x0806
[Stream index: 0] # 流索引
Address Resolution Protocol (request) # 地址解析协议(请求)
Hardware type: Ethernet (1) # 硬件类型,以太网,值为1
Protocol type: IPv4 (Ox0800) # 协议类型,IPv4,值为0x0800
Hardware size: 6 # 硬件地址长度,6字节(MAC地址长度)
Protocol size: 4 # 协议地址长度,4字节(IPv4地址长度)
Opcode: request (1) # 操作码,请求,值为1
Sender MAC address: SichuanT_17:4a:68 (14:69:a2:17:4a:68) # 发送方MAC地址
Sender IP address: 192.168.1.1 # 发送方IP地址
Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00) # 目标MAC地址,ARP请求中通常为全0
Target IP address: 192.168.1.5 # 目标IP地址
注意事项:
- 目标MAC地址在ARP请求中通常为全0(
00:00:00:00:00:00
),表示广播请求。 - 发送方MAC地址和IP地址是发起ARP请求的主机的地址。
- 目标IP地址是请求解析的目标主机的IP地址。
- Address Resolution Protocol (request) 和Opcode: request (1) 为arp请求包
- Address Resolution Protocol (reply)和 Opcode: request (2) 为arp回复包
192.168.1.5发送回应包
Frame 1676: 42 bytes on wire (336 bits),42 bytes captured (336 bits) on interface (Device\NPF_{80839945-9E42-42FC-AFE6-FA29F300151F}), id 0 # 帧编号为1676,总长度42字节(336位),在指定接口上捕获,工具内部ID为0
Section number: 1 # 分段编号为1
√Interface id: 0 (VDevice\NPF_{80839945-9E42-42FC-AFE6-FA29F300151F}) # 接口ID为0,接口名称为指定值
Interface name: Device\NPF_{80839945-9E42-42FC-AFE6-FA29F300151F} # 接口名称
Interface description: WLAN # 接口描述为无线局域网(WLAN)
Encapsulation type: Ethernet (1) # 封装类型为以太网(协议类型值1)
Arrival Time:Apr 23,2025 16:37:16.950266000 中国标准时间 # 到达时间(中国标准时间)
UTC Arrival Time: Apr 23,2025 08:37:16.950266000 UTC # 到达时间(UTC时间)
Epoch Arrival Time: 1745397436.950266000 # 到达时间(自1970年1月1日以来的秒数)
[Time shift for this packet: 0.000000 seconds] # 此数据包的时间偏移为0秒
[Time delta from previous captured frame: 0.000016000 seconds] # 与上一个捕获帧的时间间隔为0.000016秒
[Time delta from previous displayed frame: 0.000016000 seconds] # 与上一个显示帧的时间间隔为0.000016秒
[Time since reference or first frame: 21.278872000 seconds] # 与参考帧或第一个帧的时间间隔为21.278872秒
Frame Number: 1676 # 帧编号为1676
Frame Length: 42 bytes (336 bits) # 帧长度为42字节(336位)
Capture Length: 42 bytes (336 bits) # 捕获长度为42字节(336位)
[Frame is marked: False] # 此帧未被标记
[Frame is ignored: False] # 此帧未被忽略
[Protocols in frame: eth:ethertype:arp] # 帧中包含的协议栈:以太网 -> 以太网类型 -> ARP
[Coloring Rule Name: ARP] # 使用的着色规则名称为ARP
[Coloring Rule String: arp] # 使用的着色规则字符串为arp
√Ethernet II,Src: IntelCor_86:44:08 (68:54:5a:86:44:08),Dst:SichuanT_17:4a:68 (14:69:a2:17:4a:68) # 以太网II帧,源MAC地址为IntelCor_86:44:08,目标MAC地址为SichuanT_17:4a:68
v Destination: SichuanT_17:4a:68 (14:69:a2:17:4a:68) # 目标MAC地址
...…………….-LG bit: Globally unique address (factory default) # LG位:全局唯一地址(出厂默认)
….. ....... G bit: Individual address (unicast) # G位:单播地址
vSource: IntelCor_86:44:08 (68:54:5a:86:44:08) # 源MAC地址
……0.
· ........... ...= LG bit: Globally unique address (factory default) # LG位:全局唯一地址(出厂默认)
……..…….
……………=IG bit: Individual address (unicast) # G位:单播地址
Type: ARP (0x0806) # 以太网类型字段为ARP(0x0806)
[Stream index: 0] # 流索引为0
Address Resolution Protocol (reply) # 地址解析协议(回复)
Hardware type: Ethernet (1) # 硬件类型为以太网(1)
Protocol type: IPv4 (0x0800) # 协议类型为IPv4(0x0800)
Hardware size: 6 # 硬件地址长度为6字节
Protocol size: 4 # 协议地址长度为4字节
Opcode: reply (2) # 操作码为回复(2)
Sender MAC address: IntelCor_86:44:08 (68:54:5a:86:44:08) # 发送方MAC地址
Sender IP address: 192.168.1.5 # 发送方IP地址
Target MAC address: SichuanT_17:4a:68 (14:69:a2:17:4a:68) # 目标MAC地址
Target IP address: 192.168.1.1 # 目标IP地址
总结
Address Resolution Protocol (request) #ARP地址解析协议request请求包
Hardware type: Ethernet (1) #硬件类型
Protocol type: IPv4(Ox0800) #协议类型。
Hardware size: 6 #硬件长度
Protocol size:4 #协议长度
Opcode:_request(1) #操作码,值为1即表示ARP请求包
Sender MAC address: #源MAC地址
Sender IP address:192.168.1.102 #源IP地址
Target MAC address: #目标 MAC 地址
Target IP address: 192.168.1.1 #目标IP地址
2,ICMP 协议
ICMP(Internet Control Message Protocol,互联网控制消息协议)是TCP/IP协议族中的一个核心协议,主要用于在IP网络中传递控制消息,提供有关网络通信的错误报告、诊断信息和网络状态反馈。ICMP协议不直接传输用户数据,而是作为IP协议的辅助工具,帮助网络设备(如路由器、主机)进行错误处理、网络诊断和流量控制
ICMP协议的功能与作用
- 错误报告:
- 当IP数据包在传输过程中遇到错误(如目标不可达、超时等),中间路由器或目标主机将生成ICMP错误消息,并发送回源主机。
- 示例:目标主机不可达时,路由器会发送“目标不可达”ICMP消息。
- 网络诊断:
- ICMP提供了多种诊断工具,如Ping和Traceroute,用于测试网络连通性和路径。
- Ping:通过发送ICMP Echo Request消息,测试目标主机是否可达,并测量往返时间。
- Traceroute:通过发送带有不同TTL(生存时间)值的ICMP消息,追踪数据包在网络中的路径。
- 流量控制:
- 在某些情况下,ICMP可用于控制网络流量,如源抑制(Source Quench)消息,用于通知源主机降低发送速率。
ICMP消息类型
ICMP消息分为两大类:查询消息和差错报告消息。
- 查询消息:
- 用于主动查询网络状态,常见的查询消息包括:
- Echo Request(回声请求)和Echo Reply(回声应答):用于Ping测试。
- Timestamp Request(时间戳请求)和Timestamp Reply(时间戳应答):用于测量网络延迟。
- Address Mask Request(地址掩码请求)和Address Mask Reply(地址掩码应答):用于获取子网掩码信息。
- 用于主动查询网络状态,常见的查询消息包括:
- 差错报告消息:
- 用于报告网络错误,常见的差错报告消息包括:
- Destination Unreachable(目标不可达):目标主机或网络不可达。
- Time Exceeded(超时):数据包在网络中存活时间超过TTL值。
- Parameter Problem(参数问题):IP头部的字段错误。
- Redirect(重定向):通知源主机更优的下一跳地址。
- 用于报告网络错误,常见的差错报告消息包括:
ICMP消息格式
ICMP消息的格式如下:
- 类型(Type):1字节,标识ICMP消息的类型。
- 代码(Code):1字节,进一步标识消息的子类型。
- 校验和(Checksum):2字节,用于验证消息的完整性。
- 数据部分:根据消息类型不同,数据部分的长度和内容也不同。
ICMP协议的安全性
ICMP协议本身不提供加密或认证机制,因此可能受到攻击:
- ICMP Flood攻击:通过发送大量ICMP Echo Request消息,耗尽目标主机的资源。
- ICMP隧道攻击:利用ICMP消息传输恶意数据,绕过防火墙限制。
防护措施:
- 配置防火墙规则,限制ICMP消息的流量和类型。
- 使用入侵检测系统(IDS)监控异常的ICMP流量。
ICMP协议的应用场景
- 网络连通性测试:
- 使用Ping命令发送ICMP Echo Request消息,测试目标主机的可达性。
- 网络路径追踪:
- 使用Traceroute工具发送TTL递增的ICMP消息,追踪数据包在网络中的路径。
- 网络故障诊断:
- 通过分析ICMP差错报告消息,诊断网络故障的原因。
ICMP协议与IP协议的关系
- ICMP是IP协议的辅助协议:ICMP消息封装在IP数据包中传输,使用IP协议的源和目的IP地址。
- ICMP不保证消息的可靠性:ICMP消息可能丢失或延迟,网络设备不重传ICMP消息。
消息类型 | 类型值 | 功能描述 |
---|---|---|
Echo Request | 8 | 用于Ping测试,请求目标主机回应 |
Echo Reply | 0 | 响应Echo Request,证明主机可达 |
Destination Unreachable | 3 | 报告目标主机或网络不可达 |
Time Exceeded | 11 | 报告数据包存活时间超过TTL值 |
Redirect | 5 | 通知源主机更优的下一跳地址 |
抓包方法:
- 过滤器:
icmp
。 - 操作:使用
ping
命令触发 ICMP 流量。
协议解释:
- 类型字段:
- 8:Echo Request(ping 请求)。
- 0:Echo Reply(ping 响应)。
- 代码字段:指示错误类型(如 0 表示无错误)。
- 校验和:确保数据完整性。
数据包详情如下
192.168.1.5发送请求包
Frame 131: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface (DeviceINPF_{80839945-9E42-42FC-AFE6-FA29F30151F}, id 0
Section number: 1
Interface id: 0 (VDevice\NPF_{80839945-9E42-42FC-AFE6-FA29F300151F})
Interface name:(Device(NPF_{80839945-9E42-42FC-AFE6-FA29F300151F})
Interface description: WLAN
Encapsulation type: Ethernet (1)
Arrival Time:Apr 23,2025 20:49:51.071108000中国标准时间
UTC Arrival Time:Apr 23,2025 12:49:51.071108000 UTC
Epoch Arrival Time: 1745412591.071108000
[Time shift for this packet: 0.000000 seconds]
[Time delta from previous captured frame: 0.005271000 seconds]
[Time delta from previous displayed frame: 0.000000000 seconds] # 时间间隔修正为0
[Time since reference or first frame: 10.867772000 seconds]
Frame Number: 131
Frame Length: 74 bytes (592 bits)
Capture Length: 74 bytes (592 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:ethertype:ip:icmp:data] # 包含的协议栈
[Coloring Rule Name: ICMP]
[Coloring Rule String: icmp Il icmpv6]
Ethernet II,Src: IntelCor_86:44:08 (68:54:5a:86:44:08),Dst: SichuanT_17:4a:68 (14:69:a2:17:4a:68) # 以太网帧头
Destination: SichuanT_17:4a:68 (14:69:a2:17:4a:68) # 目的MAC地址
..0. = LG bit: Globally unique address (factory default) # 全球唯一地址
..0 ...= IG bit: Individual address (unicast) # 单播地址
Source: IntelCor_86:44:08 (68:54:5a:86:44:08) # 源MAC地址
.0. , = LG bit: Globally unique address (factory default)
.….0… .. = IG bit: Individual address (unicast)
Type: IPv4 (0x0800) # 上层协议为IPv4
[Stream index: 0]
Internet Protocol Version 4,Src: 192.168.1.5,Dst: 110.242.69.21 # IPv4头部
0100 .... = Version: 4 # IPv4版本
....0101 = Header Length: 20 bytes (5) # 头部长度
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) # 服务类型字段
0000 00.. = Differentiated Services Codepoint: Default (0) # 差分服务码点
. ..0 - Explicit Congestion Notification: Not ECN-Capable Transport (0) # 显式拥塞通知
Total Length: 60 # 总长度(包含头部和数据)
Identification: 0x1cba (7354) # 标识符
000. .... = Flags: 0x00 # 标志位
0... ....= Reserved bit: Not set # 保留位未设置
.0.. = Don't fragment: Not set # 不允许分片
..0. .... = More fragments: Not set # 无更多分片
...0 0000 0000 0000 = Fragment Offset: 0 # 分片偏移
Time to Live: 64 # 生存时间
Protocol: ICMP (1) # 上层协议为ICMP
Header Checksum: 0x0000 [validation disabled] # 头部校验和(未验证)
[Header checksum status: Unverified]
Source Address: 192.168.1.5 # 源IP地址
Destination Address: 110.242.69.21 # 目的IP地址
[Stream index: 17]
Internet Control Message Protocol # ICMP头部
Type: 8 (Echo (ping) request) # ICMP类型:回显请求
Code: 0 # 代码:0
Checksum: 0x4891 [correct] # 校验和正确
[Checksum Status: Good]
Identifier (BE): 1 (0x0001) # 标识符(大端序)
Identifier (LE): 256 (0x0100) # 标识符(小端序)
Sequence Number (BE): 1226 (0x04ca) # 序列号(大端序)
Sequence Number (LE): 51716 (0xca04) # 序列号(小端序)
[Response frame: 132] # 对应的响应帧
Data (32 bytes) # ICMP数据部分
Data: 6162636465666768696a6b6c6d6e6f7071727374757677616263646566676869 # ASCII字符:abcdefghijklmnopqrstuvwabcdefghi
[Length: 32] # 数据长度
该数据包是一个ICMP回显请求(ping请求),由源主机192.168.1.5
发送到目的主机110.242.69.21
,用于测试网络连通性。数据部分包含32字节的ASCII字符abcdefghijklmnopqrstuvwabcdefghi
。类型为8(回显请求)
110.242.69.21返回回应包
Frame 132: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface (Device\NPF_{80839945-9E42-42FC-AFE6-FA29F300151F}, id 0 # 帧132,物理网络字节数74,捕获字节数74,接口信息
Section number: 1 # 分段编号
Interface id: 0 (VDevice\NPF_{80839945-9E42-42FC-AFE6-FA29F300151F}) # 接口ID
Interface name:(Device(NPF_{80839945-9E42-42FC-AFE6-FA29F300151F} # 接口名称(可能有格式问题)
Interface description: WLAN # 接口描述为WLAN
Encapsulation type: Ethernet (1) # 封装类型为以太网
Arrival Time:Apr 23,2025 20:49:51.097681000 中国标准时间 # 到达时间(中国标准时间)
UTC Arrival Time: Apr 23,2025 12:49:51.097681000 UTC # 到达时间(UTC时间)
Epoch Arrival Time: 1745412591.097681000 # 到达时间(Unix时间戳)
[Time shift for this packet: 0.0000oo0 seconds] # 时间偏移(可能格式问题)
[Time delta from previous captured frame: 0.026573000 seconds] # 与上一捕获帧的时间差
[Time delta from previous displayed frame: 0.026573000 seconds] # 与上一显示帧的时间差
[Time since reference or first frame: 10.894345000 seconds] # 与参考帧或首帧的时间差
Frame Number: 132 # 帧编号
Frame Length: 74 bytes (592 bits) # 帧长度
Capture Length: 74 bytes (592 bits) # 捕获长度
[Frame is marked: False] # 帧未标记
[Frame is ignored: False] # 帧未忽略
[Protocols in frame: eth:ethertype:ip:icmp:data] # 帧中包含的协议
[Coloring Rule Name: ICMP] # 着色规则名称
[Coloring Rule String: icmp II icmpv6] # 着色规则字符串
Ethernet II,Src: SichuanT_17:4a:68 (14:69:a2:17:4a:68),Dst: IntelCor_86:44:08 (68:54:5a:86:44:08) # 以太网帧,源和目的MAC地址
Destination: Inte1Cor_86:44:08 (68:54:5a:86:44:08) # 目的MAC地址(可能格式问题)
..0.
= LG bit: Globally unique address (factory default) # LG位:全局唯一地址
.0
= IG bit: Individual address (unicast) # IG位:单播地址
Source: SichuanT_17:4a:68 (14:69:a2:17:4a:68) # 源MAC地址
..0.
= LG bit: Globally unique address (factory default) # LG位:全局唯一地址
= IG bit: Individual address (unicast) # IG位:单播地址
...
..0
Type: IPv4 (Ox0800) # 类型:IPv4
[Stream index: 0] # 流索引
Internet Protocol Version 4,Src: 110.242.69.21,Dst: 192.168.1.5 # IPv4协议,源和目的IP地址
0100
=
=Version: 4 # 版本:4
0101
1 = Header Length: 20 bytes (5) # 头部长度:20字节
Differentiated Services Field: OxO0 (DSCP: CSO, ECN: Not-ECT) # 服务类型字段
0000 00..
. = Differentiated Services Codepoint: Default (0) # 服务类型代码点:默认
..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0) # 显式拥塞通知:不支持ECN
....
Total Length: 60 # 总长度
Identification: Ox1cba (7354) # 标识符
000.
, = Flags: 0x0 # 标志
0...
= Reserved bit: Not set.0.. # 保留位:未设置
= Don't fragment: Not set # 不分片:未设置
..0.
. = More fragments: Not set # 更多分片:未设置
...0 0000 0000 0000 = Fragment Offset:0 # 分片偏移:0
Time to Live:54 # 生存时间
Protocol: ICMP (1) # 协议:ICMP
Header Checksum: Oxf252 [validation disabled] # 头部校验和(验证已禁用)
[Header checksum status: Unverified] # 头部校验和状态:未验证
Source Address:110.242.69.21 # 源地址
Destination Address: 192.168.1.5 # 目的地址
[Stream index: 17] # 流索引
Internet Control Message Protocol # 互联网控制消息协议
Type: 0 (Echo (ping) reply) # 类型:0(回显应答)
Code:0 # 代码:0
Checksum: Ox5091[correct] # 校验和:正确
[Checksum Status: Good] # 校验和状态:良好
Identifier (BE): 1 (Ox0001) # 标识符(大端序)
Identifier (LE): 256 (Ox0100) # 标识符(小端序)
Sequence Number (BE): 1226 (Ox04ca) # 序列号(大端序)
Sequence Number (LE): 51716 (Oxca04) # 序列号(小端序)
[Request frame: 131] # 请求帧:131
[Response time: 26.573 ms] # 响应时间:26.573毫秒
Data (32 bytes) # 数据(32字节)
Data: 6162636465666768696a6b6c6d6e6f7071727374757677616263646566676869 # 数据内容(十六进制)
[Length: 32] # 长度:32
总结
- 帧信息:帧编号为132,长度为74字节。
- 接口信息:通过WLAN接口捕获。
- 以太网帧:源MAC地址为
14:69:a2:17:4a:68
,目的MAC地址为68:54:5a:86:44:08
。 - IPv4协议:源IP地址为
110.242.69.21
,目的IP地址为192.168.1.5
。 - ICMP协议:类型为0(回显应答),代码为0,标识符和序列号与请求帧匹配。(多次强调!!!)
- 响应时间:从请求帧到回应帧的时间差为26.573毫秒。
- 数据部分:包含32字节的数据,内容为
abcdefghijklmnopqrstuvwxyz
(十六进制表示)
3,tcp协议
tcp 协议:传输控制协议(英語:Transmission Control Protocol)是一种面向连接的、可靠
的、基于字节流的传输层通信协议,由IETF的RFC793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。
协议解释:
- 三次握手:
- SYN:客户端请求建立连接。
- SYN-ACK:服务器确认并请求连接。
- ACK:客户端确认连接建立。
- 四次挥手:
- FIN:一方请求关闭连接。
- ACK:另一方确认关闭请求。
- FIN:另一方也请求关闭连接。
- ACK:最终确认关闭。
抓包方法:
选中一个http记录,右键—>追踪—>tcp流,即可看到一个完整的tcp三次握手。
包重点字段:
- 源端口(Source Port):
- 描述:标识发送方的应用程序端口号。
- 示例值:48653
- 作用:用于区分同一主机上的不同应用程序。
- 目标端口(Destination Port):
- 描述:标识接收方的应用程序端口号。
- 示例值:80
- 作用:用于将数据包路由到正确的应用程序,如HTTP服务。
- 序列号(Sequence Number):
- 描述:TCP段中的第一个字节的序列号。
- 示例值:0(相对序列号),17536461(原始序列号)
- 作用:用于数据包的排序和重组,确保数据的完整性。
- 确认号(Acknowledgment Number):
- 描述:接收方期望接收的下一个字节的序列号。
- 示例值:0
- 作用:用于确认已成功接收的数据,并请求发送下一个数据包。
- 头部长度(Header Length):
- 描述:TCP头部的长度,以32位字为单位。
- 示例值:40 bytes (10)
- 作用:指示TCP头部的大小,以便正确解析数据包。
- 标志位(Flags):
- 描述:TCP头部中的控制位,用于指示数据包的状态和类型。
- 示例值:0x0802 (SYN)
- 作用:SYN标志位表示这是一个连接建立请求。
- 窗口大小(Window):
- 描述:接收方能够接收的最大数据量,以字节为单位。
- 示例值:65535
- 作用:用于流量控制,防止发送方发送过多数据导致接收方缓冲区溢出。
- 校验和(Checksum):
- 描述:用于验证TCP头部和数据部分的完整性。
- 示例值:0x7707 [unverified]
- 作用:确保数据包在传输过程中未被篡改。
- 紧急指针(Urgent Pointer):
- 描述:指示紧急数据在TCP段中的位置。
- 示例值:0
- 作用:用于处理紧急数据,如中断连接请求。
- 选项(Options):
- 描述:TCP头部中的可选字段,用于提供额外的功能或信息。
- 示例:最大报文段大小(Maximum segment size)、无操作(NOP)、窗口缩放(Window scale)、SACK允许(SACK permitted)、时间戳(Timestamps)
- 作用:增强TCP协议的功能和灵活性。
第一次握手包,SYN:客户端请求建立连接。因为太长,我这边只解释应用层包
// 捕获并分析一个网络数据包
// 数据包基本信息
Frame: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) // 帧在链路层上的长度为74字节,捕获到的也是74字节
on interface \Device\NPF_{00833945-3E42-43FC-AFF6-FA29F5001515}, id 0 // 数据包捕获的接口和ID
// 以太网II层信息
Ethernet II,
Src: IntelCor_68:44:08 (88:54:3c:68:44:08), // 源MAC地址
Dst: Schuart_17:4a:68 (14:69:e2:17:4a:68) // 目标MAC地址
// IP层信息
Internet Protocol Version 4,
Src: 192.168.1.5, // 源IP地址
Dst: 110.242.70.57 // 目标IP地址
// 传输控制协议 (TCP) 信息
Transmission Control Protocol,
Src Port: 48653, // 源端口号,标识发送方的应用程序
Dst Port: 80, // 目的端口号,标识接收方的应用程序,这里是HTTP服务的标准端口
Seq: 0, Len: 0 // 序列号从0开始,TCP段长度为0,表示这是一个控制报文
[Stream index: 8] // 表示此TCP流在捕获过程中的唯一标识
[Stream Packet Number: 1] // 表示此数据包在当前TCP流中的编号
// 会话完整性信息
[Conversation completeness: Complete, WITH_DATA (s3)] // 会话完整性为完整,带有数据(尽管此处的数据长度为0)
[TCP Segment Len: 0] // TCP段长度为0
Sequence Number: 0 (relative sequence number) // 相对序列号为0
Sequence Number (raw): 17536461 // 原始序列号
[Next Sequence Number: 1 (relative sequence number)] // 下一个相对序列号为1
Acknowledgment Number: 0 // 确认号为0,表示尚未收到任何数据
Acknowledgment number (raw): 0
1010 .... = Header Length: 40 bytes (10) // TCP头部长度为40字节
// 标志位信息
Flags: 0x0802 (SYN) // 标志位为SYN,表示这是一个连接建立请求
Window: 65535 // 窗口大小为65535,表示接收方能够接收的最大数据量
[Calculated window size: 65535] // 计算出的窗口大小也为65535
Checksum: 0x7707 [unverified] // 校验和为0x7707,但未经验证
[Checksum Status: Unverified]
Urgent Pointer: 0 // 紧急指针为0,表示没有紧急数据
// 选项信息
Options: (20 bytes), Maximum segment size, No-Operation (NOP), Window scale, SACK permitted, Timestamps
// 选项包括最大报文段大小、无操作、窗口缩放、SACK允许、时间戳等
第二次握手 SYN-ACK:服务器确认并请求连接。
三次握手 ACK:客户端确认连接建立。
四次挥手如出一辙
这里就不再过多解释
4,udp协议:
I nternet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User
DatagramProtocol)UDP为应用程序提供了一种无需建立连接就可以发送封装的IP数据报的方法。
抓包方法:
- 过滤器:
udp
。 - 操作:捕获常见应用(如 DNS、DHCP、SNMP)的 UDP 流量。
协议解释:
- 无连接特性:UDP 不保证数据包顺序和可靠性。
- 应用层负载:结合端口号识别具体应用(如 53 端口为 DNS)。
- 可靠性问题:观察是否有丢包或重复数据包。
总结,udp协议没啥好讲的,就是一个面向无连接的协议,我只管给你发,你收没收到不管我事,就像你跟你女朋友求婚,我管你同不同意,直接抱你回家。
5,dns协议:
域名系统(DomainName System,缩写:DNS)是互联网的一项服务。它作为将
域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址);一句话就是用来解析域名。
抓包方法:
- 过滤器:
dns
。 - 操作:使用
ping
命令触发 DNS 查询,或直接访问域名。
协议解释:
- 查询类型:
A
:IPv4地址映射。AAAA
:IPv6地址映射。CNAME
:域名别名。NS
:权威服务器地址。MX
:邮件服务器。
- 响应码:
- 0:无错误。
- 3:域名不存在。
以下为nds回应包
总结
1. 状态与结果字段
字段名 | 作用 | 典型值示例 | 分析价值 |
---|---|---|---|
Flags(标志位) | 返回响应状态和附加信息。 | 0x8180 (成功,递归可用) | - RCODE :响应码(如0 =成功,3 =域名不存在,5 =服务器拒绝)。- RA :服务器是否支持递归。- AA :是否为权威应答(非权威可能被篡改)。 |
Answers | 返回的解析结果(如IP、CNAME等)。 | www.example.com (A=93.184.216.34, TTL=300) | - TTL值:若过小(如5 秒),可能增加DNS查询频率。- CNAME链:若查询 A 记录但返回CNAME ,需检查是否配置错误。 |
Authority | 权威域名服务器列表(用于迭代查询)。 | ns1.example.com (A=192.0.2.1) | 排查递归查询失败时,确认权威服务器是否可达。 |
Additional | 附加信息(如权威服务器的IP,避免额外查询)。 |
|
-
报文正文
- Queries(问题部分):查询域名、类型(如
A
)、类(通常为IN
,即Internet)。 - Answers(回答部分):返回的记录(如IP地址、TTL生存时间)。
- Authority(授权部分):权威服务器信息。
- Additional(附加部分):额外信息(如权威服务器的IP地址)。
- Queries(问题部分):查询域名、类型(如
6,http协议:
HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的协议之一,用于传输超文本(如HTML、图片、视频等)。它是客户端(如浏览器)与服务器之间通信的基础,是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用默认使用TCP的80端口(或HTTPS的443端口)。
核心特性
- 无状态性:HTTP本身不保存会话状态,每次请求独立。但通过Cookie、Session、Token等机制可实现状态管理。
- 无连接性:HTTP/1.1默认启用长连接(Keep-Alive),减少TCP连接开销。
- 灵活的数据传输:支持任意格式数据,通过
Content-Type
头指定类型(如application/json
、multipart/form-data
)。 - 可扩展性:通过自定义请求头(如
X-Custom-Header
)实现功能扩展。
抓包方法
- 过滤器:
http
或tcp.port == 80
(HTTP),ssl
或tcp.port == 443
(HTTPS)。 - 操作:在浏览器中访问网页,停止抓包后查看 HTTP 请求/响应。
以下为get参数包
协议解释:
- 请求行:包含方法(GET/POST)、URL、HTTP 版本。
- 响应行:状态码(如 200、404)和原因短语。
- 头部字段:
Host
:目标主机。User-Agent
:客户端信息。Content-Type
:数据类型。
- HTTPS:基于 TLS/SSL 加密,需解密后查看内容。
7,wireshark实战!!!
此为某公司遭受到的远程代码执行数据包而回应包状态未知,推测可能被IPS,防火墙拦截,或者已经被渗透到内网!!(需上机排查)
风险程度:高危
一、URL与参数解析
- 目标路径
/php-cgi/php-cgi.exe
- 明确指向目标服务器的PHP-CGI接口(通常用于处理PHP脚本的CGI模式调用)。
- 路径中的
.exe
后缀可能暗示服务器运行在Windows环境(但需结合实际服务器配置确认)。
- 参数内容
%ADd allow_url_include=1
%ADd
是URL编码后的畸形字符(%AD
为无效的ISO-8859-1字符,可能用于绕过WAF/IDS的规则匹配)。allow_url_include=1
试图启用PHP的allow_url_include
选项,允许通过URL动态包含远程文件(高危配置,默认关闭)。
%ADd auto_prepend_file=php://input
- 同样使用畸形编码,试图将
php://input
(PHP的输入流,可读取原始POST数据)设置为自动前置文件。 - 若成功,后续所有PHP脚本执行前都会自动包含POST请求中的内容,可能导致代码注入。
- 同样使用畸形编码,试图将
二、攻击场景推测
- 漏洞利用目标
- PHP-CGI参数注入漏洞:历史上存在PHP-CGI未正确过滤查询参数的漏洞(如CVE-2012-1823),攻击者可直接修改PHP配置。
- 远程代码执行(RCE):通过组合
allow_url_include=1
和auto_prepend_file=php://input
,攻击者可能构造恶意POST请求,使服务器执行任意PHP代码。
三,对与防御建议
1. 服务器端防御
- 禁用PHP-CGI模式
- 改用更安全的FastCGI(如PHP-FPM)或直接通过Web服务器(如Nginx/Apache)内置模块解析PHP。
- 严格限制PHP配置
- 确保
php.ini
中以下选项为Off
:allow_url_include = Off allow_url_fopen = Off ; 限制URL文件包含
- 确保
- 输入过滤与WAF规则
- 部署Web应用防火墙(WAF),拦截包含
allow_url_include
、auto_prepend_file
等敏感参数的请求。 - 对URL解码后的参数进行正则匹配,过滤畸形字符(如
%AD
)。
- 部署Web应用防火墙(WAF),拦截包含
- 最小化权限
- PHP进程以非特权用户运行,避免直接访问系统关键目录。
2. 漏洞修复与检测
- 补丁更新
- 确保PHP版本为最新稳定版(如PHP 8.x),修复已知CGI漏洞。
- 日志监控
- 检查Web服务器日志(如Apache的
access.log
、error.log
),搜索可疑的PHP-CGI请求。
- 检查Web服务器日志(如Apache的
- 渗透测试
- 定期进行安全审计,模拟攻击验证防护有效性。
3. 应急响应
- 隔离与取证
- 若发现异常访问,立即隔离受影响服务器,保存完整日志用于溯源。
- 漏洞通报
- 向国家信息安全漏洞共享平台(CNVD)或相关监管部门报告,协同处置。
完结撒花~