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欺骗
在开始攻击实验之前,我们需要先确认靶机与攻击机的网络配置,确保它们处于同一局域网内且能够正常通信。分别在 SEED 靶机和 Kali 攻击机的终端中执行 ip r 命令,查看当前系统的路由信息。
由下方输出结果可以确认:靶机的默认网关为 192.168.200.1,并且靶机与攻击机均位于 192.168.200.0/25 网段,网络连通状态正常。



网络确认无误后,正式开始实施攻击。我们利用 Kali 攻击机向 SEED 靶机发起单向 ARP 欺骗。通过不断向靶机发送伪造的 ARP 响应报文,将网关的 IP 地址恶意映射到攻击机的 MAC 地址上。


为了验证攻击是否成功,我们需要在靶机上查看其被投毒后的 ARP 缓存表,并将其与 Kali 攻击机的真实 MAC 地址进行核对。
经过对比可以明显看到,此时靶机 ARP 缓存中,网关 IP 对应的 MAC 地址已经被成功篡改为 Kali 攻击机的 MAC 地址。这意味着靶机原本打算发往网关的流量,现在都会被错误地发送至攻击机。

除了直接查看系统的 ARP 缓存,我们还可以借助 Wireshark 等网络抓包工具进行进一步的协议层分析,从而更直观地理解攻击原理。
在抓包记录中可以清晰地观察到:网络中存在大量由攻击机持续发送给靶机的伪造 ARP Reply 报文。正是通过这些高频的恶意报文,攻击机实现了对靶机 ARP 缓存的持续覆盖和污染。

2.2 icmp 重定向攻击
原理简述:ICMP 重定向(ICMP Redirect)通常是由网关发送给主机,用来建议主机将后续发往某个目的地的报文发送给网络中的另一个路由器,以此优化路由路径。而在攻击场景中,攻击者伪装成默认网关,恶意发送伪造的 ICMP 重定向报文,诱使目标主机修改本地路由表,从而实现对目标流量的劫持或中间人攻击。
首先,在 Kali 攻击机上利用相关网络工具(如 netwox 等)向 SEED 靶机发送伪造的 ICMP 重定向报文。此举的目的是告诉靶机:“为了获得更好的路由路径,请将发往目标 IP 的数据包交由我(攻击机)来转发”。

为了触发路由选择,我们在靶机上执行 ping 命令去请求外部网络。从终端输出可以看出,流量的走向已经受到了影响,甚至可能出现了重定向的提示信息。

随后,在靶机上再次查看当前的路由表(如通过 ip route get 或查看路由缓存)。可以明显观察到,针对特定目标 IP 的下一跳(Next Hop)地址已经被恶意篡改为攻击机指定的 IP 地址。这意味着靶机的路由表已被成功“投毒”。

为了从底层协议层面确认攻击的运作机制,我们使用 Wireshark 进行抓包分析。
从下方抓包记录中可以清晰地捕获到伪造的 ICMP Redirect 报文。报文内容中包含了原始的 IP 头部信息以及攻击机指定的新网关地址,直观地展示了攻击者是如何“指导”靶机更改路由路径的。

2.3 SYN Flood攻击
原理简述:TCP SYN 泛洪攻击利用了 TCP 协议的三次握手缺陷。攻击者伪造大量带有不同源 IP 地址的 SYN 连接请求发送给目标主机,目标主机会为这些请求分配资源并回复 SYN+ACK 报文,随后等待客户端的 ACK 确认。由于源 IP 是伪造的,目标主机永远等不到最后的 ACK,导致其半连接队列(Half-open queue)被迅速耗尽。最终,目标系统将无法处理正常用户的合法连接请求,造成拒绝服务(DoS)。
首先在攻击机上,使用网络攻击工具(例如 netwox 或 hping3)针对靶机的特定服务端口(如 Telnet 等)发起高频的伪造 SYN 请求包。攻击发起后,我们在靶机上查看网络状态,可以直观地发现系统中堆积了大量状态为 SYN_RECV 的半连接。这表明靶机的内核半连接队列正在遭受恶意填充。
借助 Wireshark 抓包工具,我们能从网络层面上清晰地看到攻击:短时间内密集的深色条目代表着海量的 TCP SYN 报文涌入靶机。这些报文的源 IP 地址通常是随机伪造的,并且网络中不存在对应这些 SYN 请求的 ACK 确认包。

我们在seedubuntu中访问靶机的ip,在正常状态下可以直接打开

但是开启攻击以后刷新,会发现一直在loading,无法正常加载页面

由于SYN 泛洪攻击的主要目标是占用计算资源,因此我想到通过win10的资源管理器分析,首先用namp查看win10开启的端口,可以看到5357可以利用。

正常状态下,win10的cpu占用非常少

我们利用hping3命令进行攻击,hping3 -c 100000-d 120 -S -w 64 -p 5357 --flood --rand-source 192.168.200.6
| 参数 | 作用说明 |
|---|---|
-c 1000000 |
count:发送数据包的数量。后续可以设置为极大值(约10^13),实际攻击中常表示“无限发送”直到手动终止。 |
-d 120 |
data:每个数据包的 数据负载大小 为 120 字节(不含 TCP/IP 头部)。 |
-S |
SYN:设置 TCP 标志位中的 SYN 标志。用于发起 TCP 三次握手的第一个包(连接请求)。 |
-w 64 |
window:设置 TCP 窗口大小为 64。较小的窗口值可能用于避免触发某些防御机制。 |
-p 5357 |
port:目标端口号为 5357(常用于 Windows 的 wsd 服务或某些测试服务)。 |
--flood |
洪水模式:以最快速度发送数据包,不等待回复。会尽可能快地消耗网络带宽和系统资源。 |
--rand-source |
随机源地址:伪造每个数据包的源 IP 地址,使追踪和过滤变得更加困难。 |
192.168.200.6 |
目标 IP:攻击的目标主机地址。 |
可以看到win10的资源占用达到50%左右,巅峰状态达到百分之八九十。

加大攻击强度,设置为-c 999999999,加大攻击强度

可以看到资源占用非常大,几乎100%,此时win10操作也变得非常卡顿

2.4 TCP RST 攻击
原理简述:TCP RST 攻击旨在恶意中断两个端点之间已经建立的正常 TCP 连接。攻击者通过网络监听获取(或猜测)目标 TCP 会话的四元组(源 IP、目的 IP、源端口、目的端口)以及当前正确的序列号(Sequence Number)。随后,攻击者伪装成通信的一方,向另一方发送带有
RST(Reset,重置)标志位的伪造数据包。接收方收到该包后,会误以为对方要求终止通信,从而强制释放资源并断开连接。
在实施攻击之前,首先需要在客户端与靶机之间建立一个正常的 TCP 会话(例如 Telnet 或 SSH)。从截图中可以看出,此时双方的连接已成功建立,可以正常进行指令交互。


确认连接正常后,在 Kali 攻击机上利用网络攻击工具(如 netwox )针对该条活动连接发起攻击。工具会自动嗅探流量并注入带有合法序列号的伪造 RST 数据包。

回到此前正常通信的客户端终端,我们可以直观地看到攻击的破坏效果:原本畅通的会话被瞬间掐断,终端提示连接已关闭(如 “Connection closed”)。这表明靶机轻信了伪造的 RST 报文,单方面终止了服务。

2.5 TCP 会话劫持攻击
原理简述:TCP 会话劫持的核心在于“鸠占鹊巢”。攻击者通过网络嗅探,获取到目标客户端与服务器之间已经建立的 TCP 连接信息(包括源/目的 IP、端口,以及至关重要的 Sequence Number (序列号) 和 Acknowledgment Number (确认号))。随后,攻击者利用这些合法的序号,伪装成客户端向服务器发送恶意数据包(如注入系统命令)。服务器接收后会更新自身的序号预期,导致真实的客户端与服务器之间的序号发生去同步 (Desynchronization),最终真实客户端的连接会“卡死”,而攻击者成功劫持了该会话。
首先,我们需要打开kali自带的工具ettercap

点击右上角的三个点、选择Hosts 选择Hosts list

可以看到如下界面

通过Scan for hosts可以查看所有主机

将target1设置为SeedUbuntu,target2设置为网关

点击右上角的小地球,然后选择arp投毒

然后在view下选择连接

在seedUbuntu中利用telnet登陆msf,这里选择msf是因为msf自带telnet服务,如果选择windows或者其它linux虚拟机,可能需要重新配置

在kali中可以捕获到相应的流量

进一步,利用之前的知识,我们重定向流量后用wireshark抓包

过滤相应的telnet服务

利用shijack攻击进行攻击,发送伪造流量包, 发起攻击后有一段等待实践,攻击正在获取当前tcp会话的序列号等信息。

等待完成后,打开seed可以发现,远程连接界面已经无法响应,在kail中输入命令,可以在wireshark中监听到相关信息。说明当前seed到meta的会话已经被成功劫持。

通过wireshark可以看到流量

三、遇到的问题
3.1 win10在遭受SYN Flood攻击时,演示效果不明显
在 Windows 10 环境下模拟或演示 SYN Flood 攻击时,攻击效果往往不够明显,主要原因在于当前主机的 CPU 性能较强,能够高效处理大量半连接请求,从而缓解了攻击带来的压力。为了更直观地展示 SYN Flood 的攻击效果,可以适当降低目标主机的 CPU 资源(这里我从24个处理器,降低到22个)可以更加直观的演示
3.2 win10在遭受SYN Flood攻击时,演示效果不明显
四、心得体会
本次实验围绕 ARP 欺骗、ICMP 重定向、SYN Flood、TCP RST 和 TCP 会话劫持等攻击方式展开,清晰指出这些攻击之所以能够成立,本质上是因为底层协议在设计时存在“无状态”“缺乏身份验证”或“资源分配缺陷”等先天脆弱性。
这让我意识到,学习网络攻防不能只停留在工具使用层面,更重要的是理解协议为什么会被利用、攻击者是如何抓住信任机制中的漏洞来实现控制与破坏的。比如博客中提到,ARP 欺骗利用主机对 ARP 响应的盲目信任,从而实现中间人攻击;SYN Flood 则抓住 TCP 三次握手中半连接队列的资源消耗问题,最终导致拒绝服务。 这些内容让我更加明白,很多安全问题并非偶然,而是系统设计与现实对抗之间长期博弈的结果。
五、参考文献
[1] 诸嘉捷伟. 《网络攻防实践》电子教材第2章[M]. 清华大学, 2010.
[2] 诸嘉捷伟. 课程2讲义:基于第三代蜜网的VNet网络攻防实验环境构建[R]. The Artemis Project/狩猎女神项目组, 2010.
[3] Offensive Security. Kali Linux: Penetration Testing and Ethical Hacking Linux Distribution[EB/OL]. https://www.kali.org/, 2025.
[4] 封亚鹏, 关键. 基于 Docker 容器技术的网络攻防实验平台设计与实现[J]. 实验技术与管理, 2021, 38(02): 146-150.
[5] [美] 彼得·金. 《红队渗透测试实战:红队战术演练指南》[M]. 机械工业出版社, 2021.
[6] 国家互联网应急中心. GB/T 20984-2022 信息安全技术 信息安全管理体系认证要求[S]. 北京: 中国标准出版社, 2022.

浙公网安备 33010602011771号