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):
- 攻击者构造ARP报文:源IP填为网关IP,源MAC填为攻击者自己的MAC地址。
- 受害者接收到该报文后,更新本地ARP缓存,将网关IP与攻击者的MAC地址绑定。
- 此后,受害者发往外网的所有数据帧,在数据链路层都会被封装上攻击者的MAC地址,从而被物理交换机发送至攻击者主机。
- 攻击者可选择将数据包截获分析后转发给真实网关(形成中间人攻击 MITM),或直接丢弃数据包(导致受害者断网)。
2. ICMP重定向攻击 (ICMP Redirect Attack)
2.1 计算机网络知识
互联网控制报文协议(ICMP,Internet Control Message Protocol) 主要用于在IP主机、路由器之间传递控制消息,如网络通不通、主机是否可达、路由是否可用等。
- ICMP重定向机制:当路由器发现主机发送的数据包可以通过另一条更优的路径(另一个路由器)到达目的地址时,原路由器会向该主机发送一个ICMP重定向报文,通知主机更新其路由表,将后续发往该目的地的流量直接发给更优的路由器。
2.2 攻击原理
核心逻辑:伪装成默认网关,下发虚假的路由优化指令,诱导流量重定向。
- 攻击者通常处于与受害者同一局域网内。攻击者嗅探受害者的网络流量,确定受害者当前的默认网关IP。
- 攻击者伪装成该默认网关的IP地址,向受害者发送ICMP重定向报文(ICMP类型5)。
- 在该报文中,攻击者指定一个“更优的下一跳路由器”IP地址(通常是攻击者自己的IP地址)。
- 受害者主机收到伪造的重定向报文后,若操作系统安全策略未限制该功能,便会修改本地路由表。
- 后续受害者发往外部网络的数据包将全部被路由至攻击者主机,实现流量劫持。
3. SYN Flood攻击
3.1 计算机网络知识
TCP三次握手(Three-way Handshake) 是建立可靠TCP连接的过程:
- SYN:客户端发送SYN包(序列号SEQ=x)到服务器,请求建立连接。
- SYN-ACK:服务器收到后,为该连接分配内存资源(存入半连接队列),并回复SYN-ACK包(SEQ=y, ACK=x+1)。
- ACK:客户端收到后,回复ACK包(ACK=y+1)。服务器收到后,将连接移入全连接队列,连接建立。
3.2 攻击原理
核心逻辑:只发SYN不回ACK,耗尽服务器的半连接队列资源。
- 攻击者利用大量肉鸡(或通过伪造源IP地址)向目标服务器的公开端口高速发送海量的TCP SYN请求包。
- 服务器接收到这些SYN包后,必须响应SYN-ACK,并在内存的半连接队列(SYN Queue)中为每一个请求分配资源,等待最终的ACK。
- 由于源IP是伪造的或攻击者刻意丢弃响应,服务器永远等不到第三次握手的ACK包。
- 大量“半开连接”堆积,迅速填满服务器的半连接队列。当队列满载时,服务器将无法响应新的正常用户的连接请求,从而达成拒绝服务(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通信。
- 攻击者通过网络嗅探(Sniffing),监控受害者A与服务器B之间已建立的TCP会话。
- 攻击者获取该会话的关键信息:源IP、目的IP、源端口、目的端口,以及当前TCP数据流的序列号(SEQ)和确认号(ACK)。
- 攻击者伪造一个源IP为服务器B,目的IP为受害者A的TCP报文(或者反向伪造),并将该报文的TCP标志位设为
RST=1。 - 最关键的一步,攻击者将伪造包的序列号设置为之前嗅探到的合法滑动窗口范围内。
- 受害者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会话劫持是一种高级的中间人攻击,通常包含以下步骤:
- 嗅探与追踪:攻击者监听客户端与服务器之间的TCP通信,等待客户端完成登录/认证,并实时追踪当前的SEQ和ACK值。
- 阻断合法客户端(可选但常见):为了防止合法客户端发送数据干扰劫持(或回复不可预料的ACK导致连接重置),攻击者通常会使用ARP欺骗、TCP RST或DoS攻击让合法客户端暂时瘫痪或断网。
- 构造注入包:攻击者使用监听到的下一个预期序列号(SEQ)和确认号(ACK),构造包含恶意应用层负载(如执行特定命令、转账请求)的TCP数据包。
- 发送与执行:攻击者伪装成合法客户端的IP发送该数据包。服务器收到后,由于四元组和序列号均完全匹配,会将其视为合法客户端发送的数据并执行恶意指令。由于会话已经通过认证,攻击者绕过了登录机制,成功接管(劫持)了整个通信会话。
arp rarp icmp
二、操作流程
2.1 arp欺骗
在开始 ARP 欺骗实验之前,需要先确认靶机、攻击机以及网关之间的网络关系。ARP 欺骗依赖同一局域网内的二层广播机制,因此实验前必须确认相关主机处于可达的网络环境中。
首先分别在 Kali 攻击机和 SEED 靶机上查看路由信息:
ip r

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

图 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

图 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

图 2-1-4 Kali 攻击机终端中使用 arpspoof 持续发送伪造 ARP Reply 报文。
为了验证 ARP 欺骗是否生效,需要在靶机上查看 ARP 缓存表,并与攻击机的真实 MAC 地址进行对比。首先在靶机上执行:
arp -a

图 2-1-5 SEED 靶机中查看 ARP 缓存表,部分 IP 地址对应到相同 MAC 地址。
随后在 Kali 攻击机上查看网卡信息,确认攻击机 eth0 接口的 MAC 地址:
ifconfig

图 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

图 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"

图 2-2-2 Kali 攻击机中使用 netwox 86 构造 ICMP Redirect 报文。
为了触发目标主机的路由选择过程,在 SEED 靶机上执行 ping 命令访问指定目标地址:
ping 192.168.200.4

图 2-2-3 SEED 靶机执行 ping 后终端中出现 ICMP Redirect 提示信息。
从终端输出可以看到,靶机收到来自 192.168.200.1 的重定向提示,并且提示中的新下一跳为 192.168.200.2。这里可以初步判断,伪造的 ICMP Redirect 报文已经影响了靶机对后续流量路径的选择。
为了进一步确认 ICMP 重定向报文的具体内容,使用 Wireshark 抓包并设置过滤器:
icmp

图 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 报文,说明攻击机正在高频率地向目标主机发送连接请求。

图 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

图 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%。在实验过程中,峰值状态还出现过更高的占用情况。

图 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

图 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 连接进行验证,便于观察连接建立、交互过程以及攻击后的断开现象。

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

图 2-4-2 Telnet 会话建立后,客户端与目标主机可以正常进行命令交互。
确认连接正常后,在 Kali 攻击机上利用网络攻击工具对该活动连接发起 TCP RST 攻击。工具会根据监听到的 TCP 会话信息,向通信双方中的一方注入带有 RST 标志位的伪造报文,从而尝试中断当前连接。

图 2-4-3 Kali 攻击机针对已建立的 TCP 会话发送伪造 RST 报文。
攻击执行后,回到原本正常通信的客户端终端,可以看到连接被中断,终端显示连接关闭相关提示。这里可以初步判断,伪造的 TCP RST 报文已经被通信端接收并触发了连接重置。

图 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 图形化工具。

图 2-5-1 Kali 中启动 Ettercap 图形化界面。
进入 Ettercap 后,点击右上角菜单,依次选择 Hosts 和 Hosts list,用于查看当前网络中扫描到的主机列表。

图 2-5-2 Ettercap 中通过菜单进入 Hosts list 主机列表界面。
进入主机列表界面后,可以看到当前主机列表区域。此时需要进一步扫描局域网中的在线主机。

图 2-5-3 Ettercap 显示主机列表界面。
点击 Scan for hosts 后,Ettercap 会扫描当前局域网内的主机,并将扫描结果添加到主机列表中。

图 2-5-4 Ettercap 扫描局域网内在线主机并显示扫描结果。
扫描完成后,将 SEED Ubuntu 设置为 Target 1,将网关设置为 Target 2。这样 Ettercap 后续可以围绕这两个目标执行 ARP 欺骗,使攻击机处于二者通信路径中。

图 2-5-5 Ettercap 中将 SEED Ubuntu 和网关分别加入攻击目标。
随后点击右上角的小地球图标,选择 ARP 投毒功能,使目标主机的流量经过 Kali 攻击机转发。

图 2-5-6 Ettercap 中选择 ARP poisoning 功能。
完成 ARP 投毒后,在 View 菜单下选择连接视图,用于观察当前网络中的连接情况。

图 2-5-7 Ettercap 中进入连接查看界面。
接着,在 SEED Ubuntu 中使用 Telnet 登录 Metasploitable。这里选择 Metasploitable,是因为其默认环境中包含可用于实验的 Telnet 服务,便于建立明文 TCP 会话并观察通信内容。
telnet 192.168.200.4

图 2-5-8 SEED Ubuntu 通过 Telnet 登录 Metasploitable 主机。
此时在 Kali 的 Ettercap 中可以捕获到对应连接,说明攻击机已经能够观察到 SEED Ubuntu 与 Metasploitable 之间的通信流量。

图 2-5-9 Ettercap 中捕获到 SEED Ubuntu 与 Metasploitable 之间的连接流量。
为了进一步从协议层面分析通信过程,使用 Wireshark 对重定向后的流量进行抓包观察。

图 2-5-10 Wireshark 中捕获经过 Kali 攻击机的网络流量。
由于本实验使用 Telnet 服务进行会话劫持验证,因此可以在 Wireshark 中使用 Telnet 相关过滤器,只保留与 Telnet 会话有关的报文,方便后续查看序列号、确认号以及明文交互内容。
telnet

图 2-5-11 Wireshark 中使用 Telnet 过滤器查看 Telnet 会话报文。
在确认能够捕获到目标会话流量后,使用会话劫持工具对当前 TCP 连接进行攻击。攻击工具需要等待一段时间,用于获取当前 TCP 会话的序列号、确认号等信息,并据此构造伪造数据包。

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

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

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

浙公网安备 33010602011771号