20253907 2025-2026-2《网络攻防实践》第4周作业

1. 实践内容总结

本次实验围绕TCP/IP协议栈中的典型安全缺陷与攻击利用机制展开,核心内容不再停留于“看见流量”或“识别漏洞”,而是进一步进入“主动构造报文、干扰通信路径、破坏连接状态并尝试接管会话”的层面。若把整个课程前几次实验串联起来看,本次实验可以被理解为:在已经具备实验环境、资产认知与流量分析能力的基础上,进一步验证协议本身为什么会被利用、攻击为什么能够成功、攻击链条是如何逐步展开的

从知识结构上看,本次实验主要涉及三个层面的内容:

  • 链路层与网络层的路径操控:如ARP欺骗、ICMP重定向;
  • 传输层的连接破坏与资源消耗:如SYN Flood、TCP RST;
  • 基于状态同步的主动会话接管:如TCP会话劫持与命令注入。

也就是说,本次实验不仅是在“攻击某个服务”,更是在验证:当协议缺乏身份认证、完整性校验或状态保护时,攻击者如何从底层逐步控制通信路径与会话内容


1.1 TCP/IP协议栈安全问题的基本认识

TCP/IP协议簇最初的设计目标更偏向于“互联互通、鲁棒传输、容错恢复”,而不是“默认安全”。这就导致在很多早期协议设计中,系统默认相信网络中的其他节点是“基本可信”的,或者至少不会主动伪造关键控制信息。正因为这种设计背景,攻击者往往可以利用以下几类缺陷:

  • 缺乏身份认证:主机默认接受ARP应答、ICMP控制报文等,不验证来源是否合法;
  • 缺乏完整性保护:报文在链路中被伪造或篡改后,接收方难以识别其真实性;
  • 连接状态可被利用:TCP的三次握手、序列号和确认号机制一旦被攻击者掌握,就可能被用于会话破坏或注入;
  • 应用层明文传输放大风险:如果上层协议本身不加密(如Telnet、FTP),那么下层一旦被劫持,攻击面会进一步扩大。

因此,本次实验的关键收获不是记住几个工具名称,而是理解:协议功能与协议脆弱性往往是一体两面的。一个为了提高效率而设计的机制,如果缺少验证,就可能反过来成为攻击入口。


1.2 ARP、ICMP与TCP的安全意义

(1)ARP协议与链路层信任问题

ARP(Address Resolution Protocol)负责在局域网中完成IP地址到MAC地址的映射。它的安全问题在于:

  • ARP本身是无状态协议,不维护请求-应答的对应关系;
  • 主机通常会无条件接受未经请求的ARP应答;
  • 收到新的ARP Reply后,会直接覆盖本地ARP缓存中的已有条目。

这意味着,攻击者不需要真正拥有某个IP地址,只需要向局域网中的其他主机发送伪造应答,就可以让对方误以为“某个合法IP对应的MAC是攻击者自己的MAC”。从攻防角度看,这相当于在链路层篡改了“通信对象是谁”这一最基础的事实

(2)ICMP协议与路由控制问题

ICMP(Internet Control Message Protocol)除了用于ping、差错报告,还承担了诸如ICMP Redirect这类控制功能。ICMP Redirect的本意是让网关通知主机:“你去某个目标时可以走一个更优的下一跳。”

但若攻击者伪造该类报文,就可能让受害主机误以为:

  • 新的网关更优;
  • 原默认路由不再是最佳路径;
  • 某些流量应该先交给攻击者转发。

于是,攻击者就能在不改变物理网络拓扑的情况下,间接控制受害主机的通信路径。这个问题说明:控制类报文一旦缺少来源认证,就可能导致主机的路由决策被操控

(3)TCP协议与状态同步问题

TCP的可靠性来自它的连接状态管理机制,包括:

  • 三次握手建立连接;
  • 序列号(Sequence Number)与确认号(Acknowledgment Number)维持有序传输;
  • 窗口机制保证流量控制;
  • RST标志位允许异常终止连接。

这些机制为正常通信提供了基础,但也带来了几个典型攻击点:

  • SYN Flood:滥用半连接状态,消耗服务端资源;
  • TCP RST:伪造复位报文,强制断开合法会话;
  • TCP Session Hijacking:在掌握会话状态后注入伪造数据,冒充合法一方执行命令。

换句话说,TCP的安全问题并不在于“它不可靠”,恰恰相反,正因为它非常依赖状态同步与报文合法性假设,所以一旦攻击者能够观察并伪造这些状态信息,破坏力就会很强。


1.3 本次实验涉及的五类攻击与作用

本次实验包含五类典型攻击,它们从链路层到传输层构成了一条较清晰的逻辑链路:

攻击类型 核心目标 攻击层面
ARP缓存欺骗 解决“如何让流量先经过攻击者” 链路层
ICMP重定向 解决“如何影响主机路由决策与下一跳选择” 网络层
SYN Flood 基于协议状态资源占用的拒绝服务 传输层
TCP RST 对现有连接的破坏与中断 传输层
TCP会话劫持 从监听、状态同步到命令注入、会话接管 传输层/应用层

如果从安全目标角度理解:

  • ARP欺骗、ICMP重定向主要影响机密性与完整性
  • SYN Flood、TCP RST主要影响可用性
  • TCP会话劫持则同时影响机密性、完整性与控制权

这也是本次实验的一个重要意义:它不是单点攻击演示,而是让我们看到CIA三元组在真实协议利用中的具体体现


1.4 与第二次作业、第三次作业之间的联系

(1)与第二次作业的联系:从“识别攻击面”到“利用协议面”

第二次作业的重点是网络信息收集、资产识别、主机服务探测和漏洞评估,主要回答的问题包括:

  • 目标有哪些主机与服务;
  • 开放了哪些TCP/UDP端口;
  • 运行了哪些组件;
  • 哪些端口和服务存在潜在安全风险。

换句话说,第二次作业更偏向攻击面发现(Attack Surface Discovery)风险定位(Risk Identification)。而本次第四次实验则是在此基础上,进一步回答:

  • 当目标服务和协议已经暴露后,攻击者如何从协议层实施干扰和利用;
  • 某些风险为什么不仅存在于“应用漏洞”,也存在于“协议机制本身”;
  • 即使没有Web漏洞,是否仍然可以通过链路层和传输层手段破坏或控制通信。

因此,第二次作业解决的是“目标有什么面”,第四次实验解决的是“这些面为什么能被用来发起主动攻击”

(2)与第三次作业的联系:从“被动取证”到“主动构造”

第三次作业主要围绕网络嗅探、协议分析与流量取证展开,重点在于:

  • 用tcpdump和Wireshark看清通信过程;
  • 理解TCP、HTTP、TELNET、ICMP、UDP等协议行为;
  • 从pcap文件中识别攻击源、目标、扫描方法与系统特征。

也就是说,第三次作业更偏向被动观察(Passive Observation)取证还原(Traffic Forensics)。而本次第四次实验则更进一步,转向:

  • 主动伪造ARP、ICMP、TCP报文;
  • 主动破坏现有通信状态;
  • 主动插入和构造会话数据;
  • 从“看见攻击”变成“理解并复现攻击”。

如果说第三次作业是在流量层面回答“攻击者做了什么”,那么第四次实验就是在实验环境中回答“这些攻击具体是怎么做到的”

(3)三次作业的连续实践链路

将第二次、第三次与本次第四次实验连起来,可以形成一条较完整的课程实践脉络:

作业次序 核心主题 能力层次
第二次 信息收集与漏洞评估 发现目标与风险
第三次 网络嗅探、协议分析与流量取证 观察流量与证据
第四次 协议缺陷利用、连接破坏与会话接管 理解并复现攻击机制

对应的能力层次可以概括为:

先发现目标与风险 → 再观察流量与证据 → 最后理解攻击为何能够成功

这说明课程的训练路径是在逐步向底层深入:从“知道目标有什么”,到“看清网络里发生了什么”,再到“理解攻击为什么能成功”。


1.5 知识拓扑图

下图对本次实验涉及的知识体系进行了结构化整理,梳理了从基础协议到攻击类型再到防御措施的映射关系:
image

1.6 本次实验的定位与价值

综合来看,本次实验在课程体系中的定位可以概括为:

从“观察者”到“参与者”的转折点。

前三次实验帮助我们建立了环境、学会了搜集信息和观察流量,而第四次实验则第一次要求我们亲自构造攻击报文、亲自改变通信路径、亲自接管会话控制权。这种从被动到主动的转变,让我们对协议安全的脆弱性有了更真切的体会。

最终,本次实验让我们认识到一个核心事实:网络协议的安全不是一个“有或无”的问题,而是一个“认证与信任”的平衡问题。当协议设计时对信任的假设过于宽泛,攻击者就可以通过构造合法格式的恶意报文,在不触发告警的情况下完成攻击。这也解释了为什么在真实的网络安全工作中,协议层面的防护往往比应用层面的修复更困难、也更根本

2. 实践过程

2.1 ARP 缓存欺骗攻击

攻击目标:使同一网段内的受害主机(SEED Ubuntu,192.168.200.7)错误地将网关 IP 对应到 Kali 的 MAC 地址,实现中间人攻击。

操作步骤

  1. 在 Kali 中启用 IP 转发:

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

    image

  2. 我们可以查看网关 IP(VMnet8 的 NAT 网关为 192.168.200.1)。

  3. 使用 arpspoof 工具进行 ARP 欺骗,欺骗 SEED 虚拟机:

    # 欺骗 SEED,告诉它网关的 MAC 是 Kali 的 MAC
    arpspoof -i eth0 -t 192.168.200.7 192.168.200.1
    

    image

  4. 这个时候,再另开一个终端,欺骗网关,告诉它 SEED 的 MAC 是 Kali 的 MAC:

    arpspoof -i eth0 -t 192.168.200.1 192.168.200.7
    

    image

  5. 保持两个终端运行,在 SEED 上查看 ARP 缓存:

    arp -n
    

    可以看到网关 IP 对应的 MAC 地址变成了 Kali 的 MAC(00:0c:29:e2:8e:48)。
    image

  6. 此时从 SEED ping 外部,流量先经过 Kali,再由 Kali 转发,Kali 可以使用 tcpdump 监控流量:

    sudo tcpdump -i eth0 icmp
    

    image

攻击原理:ARP 协议没有身份验证机制,任何主机都可以发送 ARP 响应。攻击者伪造网关的 ARP 响应发送给受害主机,使受害主机更新其 ARP 表,将网关 IP 映射到攻击者的 MAC。同时攻击者也欺骗网关,实现双向拦截。

2.3 ICMP 重定向攻击

2.3 ICMP 重定向攻击(使用 netwox)

实验环境

虚拟机 角色 IP 地址
Kali 攻击机 192.168.200.6
SEED Ubuntu 受害机 192.168.200.7
网关 VMnet8 NAT 网关 192.168.200.1

步骤1:在 SEED 上查看初始路由表

在 SEED Ubuntu 中执行:

route -n

image

记录初始路由表,特别是默认网关 192.168.200.1

步骤2:在 SEED 上开启接受 ICMP 重定向(重要)

Linux 默认忽略 ICMP 重定向,需要手动开启:

sudo sysctl -w net.ipv4.conf.all.accept_redirects=1
sudo sysctl -w net.ipv4.conf.eth6.accept_redirects=1

image

步骤3:在 Kali 上执行 netwox 86 命令

netwox 86 是 netwox 工具包中用于发送 ICMP 重定向报文的命令。

在 Kali 中执行:

sudo netwox 86 -f "host 192.168.200.7" -g 192.168.200.6 -i 192.168.200.1

步骤4:在 SEED 上触发重定向

让 SEED 对外发送一个数据包,触发 ICMP 重定向。例如:

ping baidu.com

image

攻击原理:ICMP 重定向报文用于告诉主机使用更优的路由路径。攻击者伪造网关发送的重定向报文,使受害主机将发往特定目标的数据包转向攻击者指定的路由,从而实现流量劫持。


2.4 SYN Flood 攻击

攻击目标:向 Metasploitable 靶机(192.168.200.130)发送大量 SYN 请求,耗尽半连接队列。

操作步骤

  1. 使用 hping3 工具发起 SYN Flood 攻击:

    sudo hping3 -S -p 80 --flood 192.168.200.130
    

    image

  2. 在攻击期间,在Metasploitable 另开终端用 netstat 查看靶机半连接状态(需要在靶机上执行):

    sudo netstat -ant | grep SYN | wc -l
    

    可以看到半连接数不断增加,并且一开始没有攻击的时候是0。
    image

  3. 在 Kali 上尝试正常访问靶机的 HTTP 服务,可能响应缓慢:

    curl -m 5 http://192.168.200.130
    

攻击原理:TCP 三次握手中,服务器收到 SYN 后会分配资源并回复 SYN+ACK,等待客户端的 ACK。攻击者发送大量伪造源 IP 的 SYN 包,使服务器不断等待,耗尽半连接队列资源,导致无法接受新的正常连接。


2.5 TCP RST 攻击


虚拟机 角色 IP 地址
Kali 攻击机 192.168.200.6
Metasploitable 靶机 192.168.200.130

步骤1:从 Kali 连接 Metasploitable 的 Telnet

先在 Kali 上正常连接靶机,确认服务可用:

telnet 192.168.200.130

image

步骤2:使用 netwox 78 发起 TCP RST 攻击

在 Kali 的新终端中执行

sudo netwox 78 -i 192.168.200.130

image

步骤3:测试攻击效果

再次尝试连接 Metasploitable 的 Telnet

在 Kali 上另开一个终端(或关闭之前的连接重新连):

telnet 192.168.200.130

image
连接失败

步骤4:抓包验证 RST 包

在 Kali 上启动 Wireshark 抓包(另开一个终端):

sudo wireshark &

选择网卡:选择 eth0(VMnet8)

过滤器:输入 host 192.168.200.130

开始抓包后,在另一个终端尝试 telnet 192.168.200.130
image

在 Wireshark 中过滤 RST 包

tcp.flags.reset == 1

image

  1. 发送后,原 telnet 会话立即断开,显示连接被重置。

攻击原理:TCP 协议规定,收到 RST 标志位的包后应立即关闭连接。攻击者通过伪造目标连接中一方 IP 和端口的 RST 包,并填入正确的序列号,可以强制中断合法的 TCP 连接。


2.6 TCP 会话劫持攻击

操作步骤

  1. 首先在 Kali 命令行中输入 ettercap -G,以图形化方式打开工具。
    image

  2. 点击右上角对勾开启捕获:
    image

  3. 扫描 hosts 后选择其他两个靶机(seed和winxp)作为 Target1 和 Target2:
    image

  4. 启动 ARP 投毒攻击
    点击菜单栏 MITM → ARP poisoning。

在弹出的窗口中:勾选 “Sniff remote connections”(嗅探远程连接)

此时 Ettercap 开始对 Target1 和 Target2 进行 ARP 欺骗,两者的流量都会经过 Kali。
image
image

  1. 在 WinXPattacker 上发起 Telnet 连接
    telnet 192.168.200.7
    image

  2. 在 Ettercap 中查看捕获的数据
    回到 Kali 的 Ettercap 界面,点击 View → Connections
    image

在kali里面可以看到自己输入的内容
image
7. 使用 Wireshark 验证
image

攻击原理:TCP 会话劫持的关键在于预测或获取正确的序列号。如果攻击者能够得知通信双方的序列号,就可以伪造数据包注入到会话中,使接收方误以为是合法数据。在明文的 telnet 连接中,攻击者可以轻易获取序列号,从而执行任意命令。

3. 学习中遇到的问题及解决

  • 问题1:在seed上输入arp -n,找不到被篡改的ARP表
    解决方案:清空 ARP 缓存再查看即可成功。
    image

  • 问题2:在 WinXPattacker 上发起 Telnet 连接失败
    解决方案:在SEED上开启telnet服务,sudo service openbsd-inetd start

4. 学习感悟

如果说前面的实验都是对网络攻防基础知识的补充,那么这次实验才是真正的网络攻防实验,让我真正学习到了真正的网络攻防当中常见的攻击的几种方式,并且每种方式都有自己的特点,在不同情况下采取不同的攻击往往才是攻击成功的关键,这些攻击都是利用 TCP/IP 协议设计时没考虑安全性的缺陷。
同时这次实验也激发自主学习的兴趣,了解并尝试了land攻击以及小丑攻击。

当然,通过本次实验,我主要对 TCP/IP 协议栈的安全漏洞有了更深刻的理解,有以下三点:

1、ARP 缓存欺骗让我认识到 ARP 协议的设计缺陷,任何主机都可以随意伪造 ARP 响应。这种攻击在局域网中非常隐蔽,防御需要静态 ARP 表或 ARP 检测工具。

2、ICMP 重定向攻击揭示了 ICMP 协议的潜在风险,虽然现代操作系统默认限制了重定向功能,但在配置不当的环境中仍然存在威胁。

3、TCP 会话劫持攻击让我直观感受到明文网络通信的危险性。使用 telnet、ftp 等明文协议时,攻击者可以轻易截获并注入任意数据。这也是为什么 SSH、HTTPS 等加密协议成为主流的原因。

posted @ 2026-04-07 16:33  navada  阅读(33)  评论(0)    收藏  举报