20252904 2025-2026-2 《网络攻防实践》第4周作业
20252904 2025-2026-2 《网络攻防实践》第4周作业
1.实验相关内容
1.1 ARP 缓存欺骗攻击
1.1.1 原理
ARP 协议的核心作用是将局域网内主机的 IP 地址解析为对应的 MAC 地址,主机通过本地 ARP 缓存表存储 IP 与 MAC 的映射关系,用于二层数据帧的转发。ARP 是无状态协议,主机无论是否主动发送 ARP 请求,只要收到 ARP 应答报文,就会无条件更新本地 ARP 缓存表;同时 ARP 报文无任何身份校验机制,攻击者可轻易伪造报文。
攻击者向目标主机 / 网关伪造 ARP 应答报文,将目标 IP 对应的 MAC 地址替换为攻击者的 MAC 地址,使目标主机的流量全部转发至攻击者主机,实现流量劫持。
1.1.3 攻击执行流程
- 攻击者扫描局域网段,获取目标主机、网关的 IP 地址与 MAC 地址信息;
- 伪造双向 ARP 应答报文:向目标主机发送 “网关 IP 对应 MAC 为攻击者 MAC” 的应答,向网关发送 “目标主机 IP 对应 MAC 为攻击者 MAC” 的应答;
- 目标主机与网关的 ARP 缓存被篡改,二者的双向流量均转发至攻击者主机;
- 攻击者可选择转发流量(实现透明中间人攻击)、篡改流量、丢弃流量(导致目标主机断网)。
1.2 ICMP 重定向攻击
1.2.1 原理
当主机向非本网段的目标发送数据时,会将报文转发至默认网关;若网关发现存在更优的同网段下一跳路由,会向主机发送 ICMP 重定向报文,通知主机更新路由表,后续报文直接转发至更优的下一跳地址,用于优化网络路由路径。ICMP 重定向报文无任何身份认证机制,绝大多数操作系统默认接收并处理来自网关的重定向报文,攻击者可轻易伪造源 IP 为网关的重定向报文,篡改主机路由。
攻击者冒充网关向目标主机发送伪造的 ICMP 重定向报文,谎称到达目标网络的最优下一跳为攻击者 IP,使目标主机更新路由表,将对应流量全部转发至攻击者主机。
1.2.3 攻击执行流程
- 攻击者与目标主机处于同一局域网,获取目标主机 IP、默认网关 IP、目标访问网段等信息;
- 攻击者伪造源 IP 为默认网关 IP 的 ICMP 重定向报文,目标地址为受害主机;
- 报文中指定 “到达目标网络的最优下一跳 IP 为攻击者 IP”;
- 受害主机操作系统接收报文后,自动更新本地路由表;
- 受害主机访问目标网络的流量全部转发至攻击者,攻击者可实现流量监听、篡改或丢弃。
1.3 SYN Flood 攻击
1.3.1 原理
SYN Flood 攻击是利用 TCP 协议三次握手机制的缺陷,通过伪造大量源 IP 地址不存在的 SYN 报文,持续向目标服务器发送;服务器为每个请求创建半连接并占用资源,而虚假源 IP 永远不会回复 ACK 报文,导致半连接不断堆积,最终占满服务器的 SYN 半连接队列,耗尽系统内存、CPU 资源,正常客户端的连接请求无法被处理。
1.3.3 攻击执行流程
- 攻击者控制肉鸡 / 僵尸网络,锁定目标服务器的开放 TCP 端口;
- 攻击者伪造大量随机虚假源 IP 地址,持续向目标服务器发送 SYN 报文;
- 服务器为每个 SYN 请求分配系统资源,创建半连接条目,回复 SYN+ACK 报文;
- 虚假源 IP 无对应的 ACK 回复,服务器持续进行超时重传,半连接条目长期占用资源;
- 服务器 SYN 半连接队列被占满,系统内存、CPU 资源耗尽,无法处理正常客户端的连接请求,业务服务瘫痪。
1.4 TCP RST 攻击
1.4.1 原理
TCP 头部的 RST(重置)标志位,正常作用是处理异常 TCP 连接:当主机收到一个不属于本机任何已建立 TCP 连接的报文时,会回复 RST 报文,强制关闭无效连接;当连接出现异常时,也可通过 RST 报文直接释放连接,无需等待四次挥手流程。
TCP RST 攻击利用 TCP 协议 RST 标志位的机制缺陷,伪造合法的 RST 报文,强制中断通信双方的正常 TCP 连接,导致业务通信异常中断。
1.4.3 攻击执行流程
- 攻击者通过 ARP 欺骗等手段实现流量嗅探,获取目标 TCP 连接的四元组(源 IP、目的 IP、源端口、目的端口),以及当前的 SEQ 号、滑动窗口范围;
- 攻击者伪造 TCP 报文,设置 RST 标志位为 1,将 SEQ 号设置为接收方的滑动窗口范围内,源 / 目的 IP 与端口匹配目标连接的四元组;
- 将伪造的 RST 报文发送给通信的一方或双方;
- 接收方收到报文后,判定为合法的重置请求,立即关闭对应的 TCP 连接,终止正常通信;
- 攻击者可重复发起攻击,持续阻断目标的 TCP 通信。
1.5 TCP 会话劫持攻击
1.5.1 原理
绝大多数应用层协议的身份认证仅在 TCP 连接建立初期完成,后续会话过程不再重复校验身份;攻击者只要获取会话的四元组与正确的 SEQ/ACK 号,即可冒充通信一方发送伪造报文,接收方会将其判定为合法会话数据。
TCP 会话劫持攻击(又称 TCP 劫持),先通过嗅探获取目标 TCP 会话的完整信息,等待会话完成身份认证后,伪造符合 SEQ/ACK 规则的 TCP 数据报文,冒充合法客户端向服务器发送恶意指令,甚至完全接管整个会话,实现未授权访问。
1.5.3 攻击执行流程
- 攻击者通过 ARP 欺骗实现流量中间人嗅探,获取目标 TCP 会话的四元组、实时 SEQ/ACK 号、滑动窗口信息;
- 等待目标会话完成身份认证(如用户登录网站、SSH 登录服务器、数据库登录),进入已授权的会话状态;
- 攻击者发送伪造的 RST 报文给合法客户端,断开客户端与服务器的连接(沉默客户端),避免客户端的报文干扰序列号同步;
- 攻击者冒充合法客户端,使用匹配的 SEQ/ACK 号,向服务器发送包含恶意指令的伪造 TCP 数据报文;
- 服务器接收报文后,判定为合法客户端的请求,执行对应的恶意指令,并返回响应数据;
- 攻击者持续维护 SEQ/ACK 号的同步,完全接管整个 TCP 会话,实现长期未授权访问。
1.6 五类攻击核心信息对比表
| 攻击类型 | 协议栈层级 | 核心利用缺陷 | 核心攻击目标 | 攻击类型分类 |
|---|---|---|---|---|
| ARP 缓存欺骗攻击 | 数据链路层 | ARP 协议无状态、无身份认证 | 局域网 IP-MAC 映射篡改、流量劫持 | 中间人攻击 / 嗅探攻击 |
| ICMP 重定向攻击 | 网络层 | ICMP 重定向报文无认证、主机默认信任 | 主机路由表篡改、流量劫持 | 路由劫持 / 中间人攻击 |
| SYN Flood 攻击 | 传输层 | TCP 三次握手半连接资源分配机制 | 服务器系统 / 带宽资源耗尽、服务瘫痪 | DDoS / 拒绝服务攻击 |
| TCP RST 攻击 | 传输层 | TCP RST 报文校验机制薄弱、无强认证 | 正常 TCP 会话强制中断、通信阻断 | 中断攻击 / 拒绝服务攻击 |
| TCP 会话劫持攻击 | 传输层 | TCP 会话无强身份认证、仅靠 SEQ/ACK 校验 | 已认证会话接管、未授权访问 | 会话劫持 / 权限绕过攻击 |
实验环境
| 名称 | IP地址 | MAC地址 |
|---|---|---|
| kali(攻击机) | 192.168.200.6 | 00:0c:29:9f:63:60 |
| seedubuntu | 192.168.200.9 | 00:0c:29:62:1c:68 |
| kali(靶机) | 192.168.200.10 | 00:0c:29:59:ef:85 |
2.实践过程
2.1 arp缓存欺骗攻击
首先使用nmap扫描靶机相应地址段,扫描靶机是否存活
nmap -sP 192.168.200.0/25
发现主机存活,尝试对主机链接
ping 192.168.200.4
发现能Ping通,通过arp观察其arp缓存
arp -a

安装netwox工具。
sudo apt update
sudo apt install netwox
Netwox是一款开源命令行网络工具箱,内置 200 + 实用网络工具,主打快速构造、发送、伪造网络数据包,常用于网络排查、扫描、欺骗与安全测试。


输入
netwox
证明安装成功

sudo netwox 80 -e 00:0c:29:9f:63:60 -i 192.168.200.1 -E 00:0c:29:59:ef:85 -I 192.168.200.10
冒充网关(192.168.200.1),向目标主机(192.168.200.10)发送伪造 ARP 响应
-e:伪造的源 MAC(冒充网关 MAC)-i:伪造的源 IP(网关 IP)-E:目标主机 MAC-I:目标主机 IP

在攻击机攻击之前,可以观察到靶机物理地址为00:50:56:e5:b4:5a。攻击后,攻击机将靶机arp缓存表的网卡物理地址改成00:0c:29:9f:63:60,说明当靶机传输数据包信息都会发往攻击机。
已经修改网卡物理地址变成kali(攻击机)的MAC地址。

2.2 ICMP 重定向攻击
sudo sysctl net.ipv4.ip_forward=1
开启 Linux 内核的 IP 转发功能,让攻击机能像路由器一样转发数据包。
net.ipv4.ip_forwardLinux 内核参数,0关闭,1开启。sysctl临时修改内核参数,重启后失效。sudo需要管理员权限。
sudo netwox 86 -g 192.168.200.6 -f "host 192.168.200.10"
netwox 86持续进行 ARP 欺骗,同时抓取经过本机的流量。
-g 192.168.200.6 冒充网关,欺骗目标设备把流量下一跳发给你。
-f "host 192.168.200.10"只对 192.168.200.10 靶机发动攻击,并只抓取该主机的流量。

ping192.168.200.9
发现下一跳时192.168.200.6。说明刚才重定向攻击成功。

在运行一个终端,输入以下命令,验证攻击是否生效
sudo tcpdump -i eth0 -n -v icmp and icmp[0] == 5
-v:显示详细输出,看清包里的具体内容。icmp:只抓取 ICMP 协议的包(Ping 和路由控制都属于这个协议)。and icmp[0] == 5:它直接去检查 ICMP 数据包头部的 Type 字段。
抓取后可看到,靶机发送的数据信息直接发送给攻击机,说明也说明靶机下一跳是攻击机IP。
192.168.200.6 > 192.168.200.9: ICMP redirect 192.168.200.10 to host 192.168.200.6, length 36
信息说明192.168.200.6 向 192.168.200.9 发送了一条ICMP 重定向报文,通知主机 192.168.200.9,它前往目标主机 192.168.200.10 的流量不需要按照原有路由转发,直接发送给 192.168.200.6 这台主机即可,整个数据包长度为 36 字节。成功伪造路由信息,实现流量劫持或中间人监听。

2.3 SYN Flood攻击
首先打开wireshark抓包,登录bbs网站(这里随意找一个就可以)
luit -encoding gbk telnet bbs.newsmth.net
登陆后可以发现,数据包的传输情况。

攻击机端输入:
netwox 76 -i 192.168.200.9 -p 23
netwox 76 向目标主机发送 TCP SYN 包,执行半开放端口探测的工具。 netwox 76 -i 192.168.200.9 -p 23就是向 IP 为 192.168.200.9 的靶机的 23 号端口发送 TCP 连接请求包,以此来扫描目标主机的 23 端口是否开放,23 端口默认对应 Telnet 服务,通过对方是否回应 SYN+ACK 报文,就能判断该端口是否处于监听状态。

在攻击机持续发送数据包时,seed机明显感觉到卡顿,并且收到大量的请求包导致电脑无法正常运行,从而成功的实现了SYN Flood攻击。

2.4 TCP RST 攻击
依旧登录水木社区。
luit -encoding gbk telnet bbs.newsmth.net

sudo netwox 78
sudo netwox 78 是 netwox 工具集中的 TCP RST 洪水攻击(TCP Reset Flood)工具,用于向目标发送大量伪造的 TCP RST 包,强制中断目标的 TCP 连接。

在攻击机攻击后,可发现,自己正在登陆的水木社区强制断开连接,并且尝试多次都是无法连接社区。

正常网络场景中,RST 报文用于处理异常连接:当主机收到指向未监听端口的 SYN 请求、连接超时或进程异常崩溃时,会发送 RST 报文以快速释放资源、终止无效连接。其工作原理依赖 TCP 连接的唯一标识 “四元组”(源 IP、源端口、目的 IP、目的端口),只要收到的 RST 报文四元组匹配现有连接,操作系统内核就会直接删除该连接的控制块、释放资源并关闭连接,无需额外确认。在网络攻击场景中,攻击者可通过 netwox 78 等工具构造大量伪造的 RST 报文,向目标主机持续发送,强制中断其所有正在运行的 TCP 连接(如 HTTP、SSH、Telnet 等服务),实现拒绝服务攻击。

当关闭攻击后,成功新登录发现恢复正常连接。

2.5 TCP 会话劫持攻击
在 SEEDUbuntu 上启动 Telnet 服务等待被连。
sudo /etc/init.d/openbsd-inetd restart
重启 OpenBSD-inetd 服务,inetd 常被称作 “超级服务器”,负责统一监听系统里多个轻量网络服务(如 telnet、ftp、echo 等)的端口,当有外部连接请求时,再启动对应的服务程序来处理

telnet 192.168.200.9
Telnet 默认使用 23 端口,连接成功后会要求输入账号和密码,登录后就可以像在本地一样操作这台远程主机。

sudo tcpdump -i eth0 -n -S host 192.168.200.9 and host 192.168.200.10
实时抓取并显示 192.168.200.9 和 192.168.200.10 这两台主机之间互相传输的所有网络数据包

通过靶机kali远程控制seed登录水木社区。

攻击机可观察到,靶机端口为33600,序列号为seq770489363,确认号ack2064381843。可通过这些信息,伪造假数据包传输到seed客户端中,实现攻击。

创建文件的命令是touch /tmp/HACKER\n,使用在线网站把ASCII转化为HEX十六进制数。

sudo netwox 40 -l 192.168.200.10 -m 192.168.200.9 -o 33600 -p 23 -q 770489363 -r 2064381843 -z -A -H "746f756368202f746d702f4841434b45520a"
命令中-l指定伪造源 IP,-m指定目标 IP,-o/-p匹配通信端口,-q/-r严格填入合法序列号与确认号,-A设置 ACK 标识保证数据包被靶机认可,-H后跟随十六进制编码的恶意指令touch /tmp/HACKER,最终将伪造的合法数据包注入已建立的 Telnet 连接,让靶机在无感知的情况下执行创建文件的操作,完成无交互的远程命令执行。

查看seed中touch /tmp文件夹,发现hacker文件夹已经被创建。seed机被攻击。

3.学习中遇到的问题及解决
1.权限不足

原因:
当前以普通用户 kali 身份运行 netwox 76 命令,而 netwox 76 是一个SYN Flood 攻击工具,需要通过原始套接字伪造 TCP SYN 包,这类操作必须拥有 root 权限才能执行。Linux 系统为了安全,严格限制非 root 用户使用原始套接字,防止恶意用户发起网络攻击、嗅探流量或伪造数据包。
解决方法:
使用root用户即可
4.学习感想和体会
本次 TCP/IP 网络协议攻防实践,让我对网络安全有了更深刻的认知与体悟。实践初期,面对复杂的协议原理与攻击流程,我一度难以跟上参考视频的节奏,只能通过查阅资料、拆解原理,才逐步理清各类网络攻击的逻辑与操作。
最具挑战的是 SYN Flood 攻击与原始套接字操作环节,起初因权限不足导致命令执行失败,报错信息让我手足无措。在排查问题的过程中,我深入理解了 Linux 系统原始套接字的权限限制,也掌握了从报错溯源、定位问题根源的方法。同时,在抓包分析、协议构造的过程中,我真切感受到 IPv4、TCP 等早期协议在设计时重效率、轻安全的局限,也明白了网络攻防的核心从来不是工具的堆砌,而是对底层协议的透彻理解。
整个实践过程充满了试错与突破,从报错排查到原理吃透,从工具使用到逻辑贯通,不仅锻炼了我的问题解决能力,更让我深刻认识到:真正的网络安全能力,根植于对网络底层逻辑的掌握。
浙公网安备 33010602011771号