20253902 吴晨宇 2025-2026-2 《网络攻防实践》第四周作业

一、基础知识

实验背景与理论导读:
网络攻击的本质大多是利用底层网络协议设计之初存在的“无状态”、“缺乏身份验证”或“资源分配缺陷”等脆弱性。本节将深入剖析ARP缓存欺骗、ICMP重定向、SYN Flood、TCP RST以及TCP会话劫持五种典型网络攻击机制,涵盖其所依赖的网络协议基础知识及具体的攻击原理。

为了便于对比与宏观理解,首先对这五种攻击方式的协议层级与攻击特征进行归纳:

攻击类型 目标协议 OSI模型层级 核心利用机制 主要危害
ARP缓存欺骗 ARP 数据链路层 ARP协议无认证、接收响应即更新缓存 中间人攻击、流量监听、断网
ICMP重定向 ICMP 网络层 伪造网关发送路由优化建议 流量劫持、非法路由窃听
SYN Flood TCP 传输层 利用TCP三次握手消耗半连接队列资源 拒绝服务(DoS)、服务瘫痪
TCP RST TCP 传输层 伪造RST标志位及合法序列号重置连接 阻断正常通信、强行拆除连接
TCP会话劫持 TCP 传输层 预测/嗅探TCP序列号(SEQ/ACK) 窃取已认证会话、注入恶意指令

1. ARP缓存欺骗攻击 (ARP Spoofing)

1.1 计算机网络知识

地址解析协议(ARP,Address Resolution Protocol) 是用于将网络层IP地址动态映射为数据链路层MAC地址的协议。

  • 工作机制:当主机A需要与主机B通信时,若不知道B的MAC地址,会在局域网内广播ARP Request包(“谁是IP_B?请告诉IP_A”)。主机B收到后,单播返回ARP Reply包(“我是IP_B,我的MAC是MAC_B”)。
  • 协议脆弱性:ARP协议是无状态且缺乏身份验证的。主机在收到ARP Reply时,无论自己之前是否发送过Request,都会无条件信任该响应,并使用其中的信息更新本地的ARP缓存表。

1.2 攻击原理

核心逻辑:利用主机的“盲目信任”,通过伪造ARP响应包篡改受害者的ARP缓存。

攻击者(Attacker)向目标主机(Victim)持续发送伪造的ARP Reply报文。例如,攻击者声称自己是网关(Gateway):

  1. 攻击者构造ARP报文:源IP填为网关IP,源MAC填为攻击者自己的MAC地址。
  2. 受害者接收到该报文后,更新本地ARP缓存,将网关IP与攻击者的MAC地址绑定。
  3. 此后,受害者发往外网的所有数据帧,在数据链路层都会被封装上攻击者的MAC地址,从而被物理交换机发送至攻击者主机。
  4. 攻击者可选择将数据包截获分析后转发给真实网关(形成中间人攻击 MITM),或直接丢弃数据包(导致受害者断网)。

2. ICMP重定向攻击 (ICMP Redirect Attack)

2.1 计算机网络知识

互联网控制报文协议(ICMP,Internet Control Message Protocol) 主要用于在IP主机、路由器之间传递控制消息,如网络通不通、主机是否可达、路由是否可用等。

  • ICMP重定向机制:当路由器发现主机发送的数据包可以通过另一条更优的路径(另一个路由器)到达目的地址时,原路由器会向该主机发送一个ICMP重定向报文,通知主机更新其路由表,将后续发往该目的地的流量直接发给更优的路由器。

2.2 攻击原理

核心逻辑:伪装成默认网关,下发虚假的路由优化指令,诱导流量重定向。

  1. 攻击者通常处于与受害者同一局域网内。攻击者嗅探受害者的网络流量,确定受害者当前的默认网关IP。
  2. 攻击者伪装成该默认网关的IP地址,向受害者发送ICMP重定向报文(ICMP类型5)。
  3. 在该报文中,攻击者指定一个“更优的下一跳路由器”IP地址(通常是攻击者自己的IP地址)。
  4. 受害者主机收到伪造的重定向报文后,若操作系统安全策略未限制该功能,便会修改本地路由表。
  5. 后续受害者发往外部网络的数据包将全部被路由至攻击者主机,实现流量劫持。

3. SYN Flood攻击

3.1 计算机网络知识

TCP三次握手(Three-way Handshake) 是建立可靠TCP连接的过程:

  1. SYN:客户端发送SYN包(序列号SEQ=x)到服务器,请求建立连接。
  2. SYN-ACK:服务器收到后,为该连接分配内存资源(存入半连接队列),并回复SYN-ACK包(SEQ=y, ACK=x+1)。
  3. ACK:客户端收到后,回复ACK包(ACK=y+1)。服务器收到后,将连接移入全连接队列,连接建立。

3.2 攻击原理

核心逻辑:只发SYN不回ACK,耗尽服务器的半连接队列资源。

  1. 攻击者利用大量肉鸡(或通过伪造源IP地址)向目标服务器的公开端口高速发送海量的TCP SYN请求包。
  2. 服务器接收到这些SYN包后,必须响应SYN-ACK,并在内存的半连接队列(SYN Queue)中为每一个请求分配资源,等待最终的ACK。
  3. 由于源IP是伪造的或攻击者刻意丢弃响应,服务器永远等不到第三次握手的ACK包。
  4. 大量“半开连接”堆积,迅速填满服务器的半连接队列。当队列满载时,服务器将无法响应新的正常用户的连接请求,从而达成拒绝服务(DoS)的攻击效果。

4. TCP RST攻击 (TCP Reset Attack)

4.1 计算机网络知识

TCP报文头中的RST标志位(Reset) 用于异常关闭连接。

  • 在正常情况下,TCP连接的释放需要四次挥手(FIN)。但在某些特殊场景(如主机崩溃后重启、请求访问不存在的端口等),通信一方可以发送带有RST标志位的TCP包。
  • 接收方一旦收到合法的RST包,会立刻无条件丢弃该连接缓冲区中的数据,并强制拆除连接,不需要任何确认(ACK)。“合法”的前提是该RST包的序列号(Sequence Number)必须落在接收方期望的滑动窗口内。

4.2 攻击原理

核心逻辑:伪造带有正确序列号的RST报文,强行切断他人的TCP通信。

  1. 攻击者通过网络嗅探(Sniffing),监控受害者A与服务器B之间已建立的TCP会话。
  2. 攻击者获取该会话的关键信息:源IP、目的IP、源端口、目的端口,以及当前TCP数据流的序列号(SEQ)和确认号(ACK)。
  3. 攻击者伪造一个源IP为服务器B,目的IP为受害者A的TCP报文(或者反向伪造),并将该报文的TCP标志位设为RST=1。
  4. 最关键的一步,攻击者将伪造包的序列号设置为之前嗅探到的合法滑动窗口范围内。
  5. 受害者A收到该RST包后,误以为是服务器B要求断开连接,从而立刻终止当前会话,导致通信中断。

5. TCP会话劫持攻击 (TCP Session Hijacking)

5.1 计算机网络知识

TCP会话状态的维护:TCP是一个面向连接的协议,通过四元组(源IP、目的IP、源端口、目的端口)唯一标识一个连接,并通过序列号(SEQ)和确认号(ACK)来保证数据包的顺序、完整性及信任关系。

  • 只要TCP数据包的IP、端口匹配,且SEQ和ACK数字正确,接收方就会认为这是来自合法通信对端的有效数据。
  • TCP建立连接后的身份验证通常在应用层(如Cookie、Token、Session ID)完成,底层TCP不进行持续的加密身份核实。

5.2 攻击原理

核心逻辑:在连接建立并完成身份认证后,抢占合法客户端的序列号,冒名顶替发送恶意指令。

TCP会话劫持是一种高级的中间人攻击,通常包含以下步骤:

  1. 嗅探与追踪:攻击者监听客户端与服务器之间的TCP通信,等待客户端完成登录/认证,并实时追踪当前的SEQ和ACK值。
  2. 阻断合法客户端(可选但常见):为了防止合法客户端发送数据干扰劫持(或回复不可预料的ACK导致连接重置),攻击者通常会使用ARP欺骗、TCP RST或DoS攻击让合法客户端暂时瘫痪或断网。
  3. 构造注入包:攻击者使用监听到的下一个预期序列号(SEQ)和确认号(ACK),构造包含恶意应用层负载(如执行特定命令、转账请求)的TCP数据包。
  4. 发送与执行:攻击者伪装成合法客户端的IP发送该数据包。服务器收到后,由于四元组和序列号均完全匹配,会将其视为合法客户端发送的数据并执行恶意指令。由于会话已经通过认证,攻击者绕过了登录机制,成功接管(劫持)了整个通信会话。
    arp rarp icmp

二、操作流程

2.1 arp欺骗

在开始 ARP 欺骗实验之前,需要先确认靶机、攻击机以及网关之间的网络关系。ARP 欺骗依赖同一局域网内的二层广播机制,因此实验前必须确认相关主机处于可达的网络环境中。

首先分别在 Kali 攻击机和 SEED 靶机上查看路由信息:

ip r

Kali 路由信息

图 2-1-1 Kali 攻击机终端中执行 ip r 查看路由条目。

SEED 靶机路由信息

图 2-1-2 SEED 靶机终端中执行 ip r 查看本地网段与默认网关。

从 SEED 靶机的路由表可以看到,靶机所在网段为 192.168.200.0/25,默认网关为 192.168.200.1。在后续攻击命令中,Kali 攻击机使用 eth0 接口并以 192.168.200.2 作为攻击相关地址开展实验。

ARP 欺骗实验的前提是攻击机能够在二层网络中向靶机发送伪造 ARP 报文。如果攻击机、靶机和网关不在同一广播域内,ARP 缓存投毒一般无法正常生效。

为了避免靶机流量被攻击机截获后直接中断,需要在 Kali 攻击机上开启 IPv4 转发,使攻击机具备转发数据包的能力:

echo 1 > /proc/sys/net/ipv4/ip_forward

开启 IPv4 转发

图 2-1-3 Kali 攻击机通过修改 ip_forward 开启 IPv4 数据包转发。

完成网络状态确认后,开始实施 ARP 欺骗。攻击机持续向目标主机发送伪造的 ARP Reply 报文,使目标主机将某个 IP 地址错误地映射到攻击机的 MAC 地址上。实验中使用 arpspoof 发送伪造 ARP 响应报文:

arpspoof -i eth0 -c host -t 192.168.200.7 192.168.200.1
arpspoof -i eth0 -t 192.168.200.1 192.168.200.2

执行 arpspoof

图 2-1-4 Kali 攻击机终端中使用 arpspoof 持续发送伪造 ARP Reply 报文。

为了验证 ARP 欺骗是否生效,需要在靶机上查看 ARP 缓存表,并与攻击机的真实 MAC 地址进行对比。首先在靶机上执行:

arp -a

靶机 ARP 缓存

图 2-1-5 SEED 靶机中查看 ARP 缓存表,部分 IP 地址对应到相同 MAC 地址。

随后在 Kali 攻击机上查看网卡信息,确认攻击机 eth0 接口的 MAC 地址:

ifconfig

Kali 网卡信息

图 2-1-6 Kali 攻击机中通过 ifconfig 查看 eth0 接口的 IP 地址和 MAC 地址。

对比图 2-1-5 和图 2-1-6 可以初步判断,靶机 ARP 缓存中部分 IP 地址已经被映射到了 Kali 攻击机的 MAC 地址 00:0c:29:f9:df:3f。这说明靶机在发送相关数据包时,会根据被污染的 ARP 表将流量发往攻击机,从而为后续中间人分析提供条件。

为了从协议层面进一步观察攻击过程,可以使用 Wireshark 抓取 ARP 报文,并设置过滤器:

arp

Wireshark 抓取 ARP 报文

图 2-1-7 Wireshark 中使用 arp 过滤器查看连续出现的 ARP Reply 报文。

从抓包结果可以看到,网络中持续出现 ARP Reply 报文,并且 Wireshark 对部分报文给出了重复 IP 地址使用的提示。结合前面对靶机 ARP 缓存和攻击机 MAC 地址的对比,这里可以进一步判断 ARP 缓存投毒已经对靶机的二层地址解析过程产生影响。

实验阶段 操作内容 观察现象 分析说明
网络确认 查看攻击机和靶机路由信息 靶机存在默认网关 192.168.200.1 说明靶机具备通过网关访问外部网络的路由条件
开启转发 修改 ip_forward 攻击机开启 IPv4 转发 避免被劫持流量在攻击机处中断
ARP 投毒 使用 arpspoof 发送伪造 ARP Reply 靶机 ARP 表中出现异常 MAC 映射 说明靶机的 ARP 缓存可能被污染
抓包分析 Wireshark 过滤 ARP 报文 大量 ARP Reply 报文持续出现 说明攻击机正在持续覆盖目标主机的 ARP 缓存

2.2 icmp 重定向攻击

ICMP 重定向(ICMP Redirect)原本用于路由优化:当网关发现主机访问某个目标时存在更合适的下一跳,它可以向主机发送 ICMP Redirect 报文,建议主机更新后续报文的转发路径。在攻击场景中,攻击者可以伪造这类报文,诱导目标主机将流量交给攻击机转发,从而实现流量劫持或中间人攻击。

在实施 ICMP 重定向攻击前,先查看 SEED 靶机当前路由表,确认默认网关和本地网段信息:

route -n

靶机路由表

图 2-2-1 SEED 靶机中使用 route -n 查看当前内核路由表。

从路由表可以看到,靶机默认网关为 192.168.200.1,后续 ICMP Redirect 报文需要伪装成来自该网关,才能更容易影响靶机的路由判断。

随后在 Kali 攻击机上使用 netwox 构造并发送伪造的 ICMP Redirect 报文。命令中指定了被影响的通信条件、重定向后的下一跳地址以及伪装的网关地址:

netwox 86 -f "host 192.168.200.5" -g "192.168.200.2" -i "192.168.200.1"

执行 netwox ICMP 重定向攻击

图 2-2-2 Kali 攻击机中使用 netwox 86 构造 ICMP Redirect 报文。

为了触发目标主机的路由选择过程,在 SEED 靶机上执行 ping 命令访问指定目标地址:

ping 192.168.200.4

靶机 ping 触发重定向

图 2-2-3 SEED 靶机执行 ping 后终端中出现 ICMP Redirect 提示信息。

从终端输出可以看到,靶机收到来自 192.168.200.1 的重定向提示,并且提示中的新下一跳为 192.168.200.2。这里可以初步判断,伪造的 ICMP Redirect 报文已经影响了靶机对后续流量路径的选择。

为了进一步确认 ICMP 重定向报文的具体内容,使用 Wireshark 抓包并设置过滤器:

icmp

Wireshark 抓取 ICMP Redirect

图 2-2-4 Wireshark 中使用 icmp 过滤器查看 ICMP Redirect 报文。

在抓包结果中可以看到,ICMP 报文类型为 Redirect,报文中显示的 Gateway Address 为 192.168.200.2。同时,报文内部还携带了被重定向数据包的原始 IP 头部信息,用于说明该重定向建议针对哪一类通信流量。结合靶机终端中的 Redirect 提示,可以进一步说明攻击机通过伪造 ICMP Redirect 报文,诱导靶机将相关流量转向攻击机指定的下一跳。

实验阶段 操作内容 观察现象 分析说明
路由确认 查看靶机路由表 默认网关为 192.168.200.1 攻击报文需要伪装成来自默认网关
报文构造 使用 netwox 86 发送 ICMP Redirect 攻击机指定新下一跳 192.168.200.2 试图诱导靶机修改后续转发路径
流量触发 靶机执行 ping 终端出现 Redirect 提示 说明靶机接收到了重定向报文
协议分析 Wireshark 过滤 ICMP 报文 抓到 Redirect for host 报文 报文内容展示了伪造网关和新下一跳信息

通过本实验可以看到,ARP 欺骗主要影响的是局域网内的二层地址解析过程,而 ICMP 重定向攻击主要影响的是主机对下一跳路由的选择。二者虽然作用层次不同,但最终目的都是改变目标主机的正常流量路径,为中间人攻击、流量监听或后续协议分析创造条件。

2.3 SYN Flood攻击

原理简述:SYN Flood 攻击利用 TCP 三次握手过程中服务端需要维护半连接状态这一特点。攻击者向目标主机持续发送大量 SYN 连接请求,目标主机收到后会分配资源并返回 SYN+ACK 报文,然后等待客户端返回最后的 ACK。若攻击流量中存在大量伪造源地址,目标主机就无法正常完成握手,半连接队列会被不断占用,最终可能导致正常用户无法建立连接,形成拒绝服务效果。

本实验在受控局域网环境中完成,攻击机向靶机的指定服务端口发送大量 SYN 报文,并通过靶机页面访问状态、Wireshark 抓包结果以及 Windows 资源管理器观察攻击影响。

首先,在未发起攻击前,从 SEED Ubuntu 中访问靶机的 Web 服务。此时页面能够正常打开,说明靶机服务处于可访问状态。

正常访问靶机页面

图 2-3-1 未发起 SYN Flood 攻击前,SEED Ubuntu 可以正常访问靶机页面。

随后在攻击机上使用网络测试工具对靶机发起 SYN Flood 攻击。攻击开始后,在 Wireshark 中可以观察到短时间内出现大量 TCP SYN 报文,说明攻击机正在高频率地向目标主机发送连接请求。

Wireshark 抓取 SYN Flood 流量

图 2-3-2 Wireshark 中捕获到大量连续出现的 TCP SYN 报文。

从抓包现象可以看到,网络中短时间内出现密集的 TCP 请求流量。结合 SYN Flood 的攻击原理,这里可以初步判断目标主机正在接收大量半连接请求,服务端需要不断为这些请求维护连接状态。

当攻击持续进行后,再次刷新靶机页面,可以发现页面长时间处于加载状态,无法像正常状态下快速完成访问。

攻击后页面无法正常加载

图 2-3-3 SYN Flood 攻击进行时,访问靶机页面出现长时间 Loading 现象。

这一现象说明,攻击流量已经对靶机服务的正常响应造成影响。由于 SYN Flood 主要通过消耗半连接队列、网络处理能力和系统资源来影响服务可用性,因此后续进一步通过 Windows 资源管理器观察系统资源占用变化。

为了选择合适的测试端口,先使用 nmap 对 Windows 10 靶机进行端口扫描,查看当前主机开放的服务端口。扫描结果中可以看到 5357 端口处于开放状态,因此后续选择该端口作为实验观察对象。

nmap 192.168.200.6

nmap 扫描端口

图 2-3-4 使用 nmap 扫描 Windows 10 靶机开放端口。

在未发起攻击时,Windows 10 靶机的 CPU 占用率较低,系统整体处于较为空闲的状态。

正常状态下资源占用

图 2-3-5 未发起攻击前,Windows 10 靶机资源占用较低。

随后在攻击机上使用 hping3 构造 SYN 报文,对 Windows 10 靶机的 5357 端口发起高频请求:

hping3 -c 100000 -d 120 -S -w 64 -p 5357 --flood --rand-source 192.168.200.6

各参数含义如下:

参数 作用说明
-c 100000 指定发送数据包数量为 100000。
-d 120 设置每个数据包的数据负载大小为 120 字节,不包含 TCP/IP 头部。
-S 设置 TCP SYN 标志位,用于模拟 TCP 三次握手的第一次连接请求。
-w 64 设置 TCP 窗口大小为 64。
-p 5357 指定目标端口为 5357。
--flood 以尽可能快的速度发送数据包,不等待目标主机回复。
--rand-source 随机伪造源 IP 地址,使目标主机难以完成正常三次握手。
192.168.200.6 指定攻击测试的目标主机 IP 地址。

攻击运行后,观察 Windows 10 靶机的资源管理器,可以看到 CPU 占用明显升高,图中资源占用已达到约 50%。在实验过程中,峰值状态还出现过更高的占用情况。

攻击后 CPU 占用升高

图 2-3-6 执行 SYN Flood 攻击后,Windows 10 靶机 CPU 占用明显上升。

为了继续观察攻击强度变化对靶机资源占用的影响,在受控实验环境中将发送数量调整为更大的数值:

hping3 -c 999999999 -d 120 -S -w 64 -p 5357 --flood --rand-source 192.168.200.6

加大 SYN Flood 攻击强度

图 2-3-7 攻击机中将 hping3 的发送数量设置为更大值进行持续测试。

加大攻击强度后,再次观察 Windows 10 靶机资源占用情况。此时 CPU 占用接近满载,系统操作也出现明显卡顿现象。

高强度攻击下资源占用接近满载

图 2-3-8 高强度 SYN Flood 攻击下,Windows 10 靶机 CPU 占用接近满载。

综合页面访问、抓包结果和系统资源占用变化,可以看出 SYN Flood 攻击并不是依靠完成正常 TCP 连接来消耗目标资源,而是通过持续制造大量未完成的连接请求,使目标系统不断处理 SYN 报文、维护连接状态并消耗 CPU 与网络处理资源。

实验阶段 操作内容 观察现象 分析说明
正常访问 从 SEED Ubuntu 访问靶机页面 页面可以正常打开 靶机服务在攻击前处于可用状态
抓包观察 使用 Wireshark 查看 TCP 流量 出现大量连续 SYN 报文 攻击机正在持续发送连接请求
页面验证 攻击过程中刷新靶机页面 页面长时间 Loading 服务响应受到 SYN Flood 流量影响
端口确认 使用 nmap 扫描 Windows 10 发现 5357 端口开放 为后续端口攻击测试提供依据
资源分析 查看 Windows 资源管理器 CPU 占用明显升高 说明攻击流量增加了系统处理负担
强度提升 增大发包数量继续测试 CPU 接近满载,系统卡顿 高强度 SYN 请求进一步消耗系统资源

通过本实验可以初步判断,SYN Flood 攻击能够明显影响目标主机的服务可用性。其核心原因在于大量 SYN 请求占用了目标主机处理连接请求的资源,使正常连接难以及时建立。实验中页面无法加载、Wireshark 中 SYN 报文密集出现以及 Windows CPU 占用升高,均从不同角度体现了这一攻击过程。

2.4 TCP RST 攻击

原理简述:TCP RST 攻击的目标是恶意中断两个端点之间已经建立的 TCP 连接。攻击者需要获取或推测目标 TCP 会话的四元组信息,即源 IP、目的 IP、源端口和目的端口,同时还需要尽可能匹配当前会话中的序列号。随后,攻击者伪装成通信双方中的一方,向另一方发送带有 RST 标志位的伪造 TCP 报文。接收方收到该报文后,会误认为对端主动要求重置连接,从而释放连接资源并断开当前会话。

在实施攻击之前,首先需要在客户端与靶机之间建立一条正常的 TCP 会话。本实验中使用 Telnet 连接进行验证,便于观察连接建立、交互过程以及攻击后的断开现象。

Telnet 连接建立

图 2-4-1 客户端通过 Telnet 与目标主机建立连接。

连接建立后,可以在终端中进行正常交互,说明当前 TCP 会话处于可用状态。此时攻击机如果能够监听到该通信流量,就可以根据会话信息构造伪造的 TCP RST 报文。

Telnet 正常交互

图 2-4-2 Telnet 会话建立后,客户端与目标主机可以正常进行命令交互。

确认连接正常后,在 Kali 攻击机上利用网络攻击工具对该活动连接发起 TCP RST 攻击。工具会根据监听到的 TCP 会话信息,向通信双方中的一方注入带有 RST 标志位的伪造报文,从而尝试中断当前连接。

Kali 发起 TCP RST 攻击

图 2-4-3 Kali 攻击机针对已建立的 TCP 会话发送伪造 RST 报文。

攻击执行后,回到原本正常通信的客户端终端,可以看到连接被中断,终端显示连接关闭相关提示。这里可以初步判断,伪造的 TCP RST 报文已经被通信端接收并触发了连接重置。

Telnet 连接被关闭

图 2-4-4 TCP RST 攻击后,原 Telnet 会话出现连接关闭提示。

从实验现象可以看出,TCP RST 攻击并不需要重新建立完整连接,而是利用 TCP 协议对 RST 报文的处理机制,强制终止已经存在的连接。只要伪造报文中的会话标识和序列号能够被接收方接受,当前通信就可能被异常中断。

实验阶段 操作内容 观察现象 分析说明
建立连接 使用 Telnet 与目标主机建立 TCP 会话 客户端可以正常登录并交互 说明攻击前连接状态正常
会话确认 观察 Telnet 终端交互 命令输入和回显正常 当前 TCP 会话可被用于攻击验证
发起攻击 Kali 向会话注入 RST 报文 攻击工具开始发送伪造数据包 伪造报文尝试触发连接重置
结果验证 回到客户端查看连接状态 Telnet 会话被关闭 可以初步判断 RST 报文影响了原有连接

TCP RST 攻击体现了 TCP 会话对控制标志位和序列号的依赖。一旦攻击者能够获得足够准确的会话信息,就可能通过伪造 RST 报文破坏正常通信。

2.5 TCP 会话劫持攻击

原理简述:TCP 会话劫持的核心在于攻击者伪装成已建立连接中的合法通信方。攻击者通过嗅探网络流量,获取客户端与服务器之间的 TCP 会话信息,包括源 IP、目的 IP、源端口、目的端口、序列号以及确认号。随后,攻击者利用这些信息构造伪造数据包并注入到已有会话中。如果注入成功,服务器可能会接受攻击者伪造的数据,而真实客户端与服务器之间的序列号会出现不同步,导致原客户端连接卡死或失去响应。

本实验先通过 Ettercap 进行局域网中间人流量转发,使 Kali 攻击机能够观察 SEED Ubuntu 与 Metasploitable 之间的 Telnet 通信流量。随后结合 Wireshark 抓包和会话劫持工具,观察 TCP 会话被注入伪造数据后的表现。

首先,在 Kali 中打开 Ettercap 图形化工具。

打开 Ettercap

图 2-5-1 Kali 中启动 Ettercap 图形化界面。

进入 Ettercap 后,点击右上角菜单,依次选择 Hosts 和 Hosts list,用于查看当前网络中扫描到的主机列表。

打开 Hosts list

图 2-5-2 Ettercap 中通过菜单进入 Hosts list 主机列表界面。

进入主机列表界面后,可以看到当前主机列表区域。此时需要进一步扫描局域网中的在线主机。

Ettercap 主机列表界面

图 2-5-3 Ettercap 显示主机列表界面。

点击 Scan for hosts 后,Ettercap 会扫描当前局域网内的主机,并将扫描结果添加到主机列表中。

扫描局域网主机

图 2-5-4 Ettercap 扫描局域网内在线主机并显示扫描结果。

扫描完成后,将 SEED Ubuntu 设置为 Target 1,将网关设置为 Target 2。这样 Ettercap 后续可以围绕这两个目标执行 ARP 欺骗,使攻击机处于二者通信路径中。

设置 Ettercap 目标

图 2-5-5 Ettercap 中将 SEED Ubuntu 和网关分别加入攻击目标。

随后点击右上角的小地球图标,选择 ARP 投毒功能,使目标主机的流量经过 Kali 攻击机转发。

开启 ARP 投毒

图 2-5-6 Ettercap 中选择 ARP poisoning 功能。

完成 ARP 投毒后,在 View 菜单下选择连接视图,用于观察当前网络中的连接情况。

查看连接列表

图 2-5-7 Ettercap 中进入连接查看界面。

接着,在 SEED Ubuntu 中使用 Telnet 登录 Metasploitable。这里选择 Metasploitable,是因为其默认环境中包含可用于实验的 Telnet 服务,便于建立明文 TCP 会话并观察通信内容。

telnet 192.168.200.4

SEED Ubuntu 登录 Telnet

图 2-5-8 SEED Ubuntu 通过 Telnet 登录 Metasploitable 主机。

此时在 Kali 的 Ettercap 中可以捕获到对应连接,说明攻击机已经能够观察到 SEED Ubuntu 与 Metasploitable 之间的通信流量。

Ettercap 捕获 Telnet 流量

图 2-5-9 Ettercap 中捕获到 SEED Ubuntu 与 Metasploitable 之间的连接流量。

为了进一步从协议层面分析通信过程,使用 Wireshark 对重定向后的流量进行抓包观察。

Wireshark 抓取重定向流量

图 2-5-10 Wireshark 中捕获经过 Kali 攻击机的网络流量。

由于本实验使用 Telnet 服务进行会话劫持验证,因此可以在 Wireshark 中使用 Telnet 相关过滤器,只保留与 Telnet 会话有关的报文,方便后续查看序列号、确认号以及明文交互内容。

telnet

过滤 Telnet 流量

图 2-5-11 Wireshark 中使用 Telnet 过滤器查看 Telnet 会话报文。

在确认能够捕获到目标会话流量后,使用会话劫持工具对当前 TCP 连接进行攻击。攻击工具需要等待一段时间,用于获取当前 TCP 会话的序列号、确认号等信息,并据此构造伪造数据包。

发起 TCP 会话劫持

图 2-5-12 Kali 中使用会话劫持工具等待并捕获当前 TCP 会话信息。

等待工具完成会话信息匹配后,回到 SEED Ubuntu 的远程连接界面,可以发现原本的 Telnet 会话已经无法正常响应。与此同时,在 Kali 中输入的数据可以通过 Wireshark 观察到对应流量,说明攻击机已经能够向该 TCP 会话中注入数据。

SEED 会话失去响应

图 2-5-13 会话劫持攻击后,SEED Ubuntu 中原 Telnet 连接出现无法响应现象。

最后,通过 Wireshark 继续观察攻击后的流量,可以看到会话中出现了攻击机注入的数据报文。结合 SEED Ubuntu 端连接失去响应的现象,这里可以初步判断,原客户端与服务器之间的 TCP 序列号已经发生不同步,当前会话受到了劫持影响。

Wireshark 观察注入流量

图 2-5-14 Wireshark 中观察 TCP 会话劫持过程中产生的相关流量。

TCP 会话劫持的重点不只是“抓到流量”,而是攻击者能够根据已有会话状态构造被服务器接受的 TCP 数据包。一旦伪造数据被服务器接收,真实客户端与服务器之间的序列号预期就可能产生偏移,从而导致原连接卡死、失去响应或被攻击者接管。

实验阶段 操作内容 观察现象 分析说明
启动工具 打开 Ettercap 进入图形化嗅探界面 为后续 ARP 投毒和流量监听做准备
扫描主机 使用 Scan for hosts 局域网主机出现在列表中 可以选择 SEED Ubuntu、网关等目标
设置目标 设置 Target 1 和 Target 2 两个目标被加入攻击对象 明确需要被中间人转发的通信双方
ARP 投毒 开启 ARP poisoning 攻击机开始处于通信路径中 Kali 可以观察目标主机流量
建立会话 SEED Ubuntu 登录 Metasploitable Telnet 形成明文 TCP 会话 为会话劫持提供可观察连接
抓包分析 Wireshark 过滤 Telnet 能看到 Telnet 相关报文 可用于分析序列号和确认号变化
发起劫持 使用会话劫持工具注入数据 SEED 端连接无法正常响应 可以初步判断会话出现不同步
结果验证 Wireshark 查看攻击后流量 出现注入相关通信内容 说明攻击机对会话产生了影响

通过本实验可以看出,TCP RST 攻击和 TCP 会话劫持都依赖对 TCP 会话状态的掌握。前者主要通过伪造 RST 报文强制中断连接,后者则尝试利用合法的序列号和确认号向已有连接中注入数据。两者都说明,在缺乏加密和认证保护的明文 TCP 会话中,攻击者一旦进入通信路径,就可能对连接的完整性和可用性造成严重影响。

三、遇到的问题

3.1 win10在遭受SYN Flood攻击时,演示效果不明显

在 Windows 10 环境下模拟或演示 SYN Flood 攻击时,攻击效果往往不够明显,主要原因在于当前主机的 CPU 性能较强,能够高效处理大量半连接请求,从而缓解了攻击带来的压力。为了更直观地展示 SYN Flood 的攻击效果,可以适当降低目标主机的 CPU 资源(这里我从24个处理器,降低到22个)可以更加直观的演示

四、心得体会

通过本次网络攻防实践,我不再只是从功能角度理解 ARP、ICMP 和 TCP 等基础协议,而是进一步认识到:网络协议的可靠运行建立在一系列“信任假设”之上,而攻击往往正是从这些假设的薄弱处切入。ARP 欺骗、ICMP 重定向、SYN Flood、TCP RST 以及 TCP 会话劫持等实验,使我更清晰地看到,协议本身如果缺少身份认证、状态校验和资源约束机制,就可能被攻击者利用,进而影响主机通信路径、连接状态和服务可用性。

在实验过程中,我重点关注的不只是攻击命令是否能够执行成功,而是攻击流量如何改变系统行为。ARP 欺骗让我认识到局域网内部同样存在信任边界,主机对地址解析结果的默认信任可能导致流量被劫持;ICMP 重定向说明网络路径优化机制如果缺少校验,也可能被用于误导路由选择;SYN Flood 则体现了资源耗尽型攻击的本质,即攻击者通过制造大量异常状态消耗目标系统资源,破坏正常服务能力;而 TCP RST 和会话劫持进一步说明,连接一旦建立并不等于通信过程始终可信,序列号、确认号和会话状态同样需要被保护。

这次实践也让我形成了更明确的安全认识:网络安全不能只依赖单点防护,而应当围绕“最小信任、持续验证、分层防御和可观测性”展开。面对协议层攻击,既要理解攻击原理,也要具备通过抓包、日志和系统状态进行分析判断的能力。实验中出现攻击效果不明显的情况,也提醒我安全测试结果会受到系统资源、网络环境和目标配置等因素影响,不能简单以表面现象下结论。今后在学习和实践中,我会更加重视从协议机制、攻击路径和防御策略三个层面进行分析,在合法授权的环境中提升自己的网络安全理解和实践能力。

五、参考文献

SeedLabs中关于TCP攻击的中文教材章节

CTF-流量分析笔记 - 博客园

CTF-流量分析总结 - 腾讯云开发者社区

CTF视角的Wireshark基础

posted @ 2026-04-11 10:26  20253902吴晨宇  阅读(72)  评论(0)    收藏  举报