20253912 2025-2026-2 《网络攻防实践》实践四 TCP/IP网络协议攻击

20253912 2025-2026-2 《网络攻防实践》实践四 实验报告

1. 知识点梳理与总结

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

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

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

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

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

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

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

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

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 本次实验涉及的五类攻击与作用

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

  1. ARP 缓存欺骗:解决“如何让流量先经过攻击者”这一问题;
  2. ICMP 重定向:解决“如何影响主机路由决策与下一跳选择”这一问题;
  3. SYN Flood:体现基于协议状态资源占用的拒绝服务思想;
  4. TCP RST:体现对现有连接的破坏与中断;
  5. 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-20260423125106374


2. 实践过程

本次实验在虚拟网络环境中进行,主要角色如下:

虚拟机角色 操作系统 IP 地址 核心作用
攻击机(Attacker) Kali Linux 192.168.5.2 / 192.168.5.3(以实验截图实际环境为准) 发起伪造报文、监听与会话攻击
靶机(Target) Metasploitable 192.168.5.7 / 192.168.5.133(以实验截图实际环境为准) 提供 Telnet 等服务,作为被攻击对象
受害客户机(Victim) SEEDUbuntu / Win2K 192.168.5.4 / 192.168.5.134 与靶机正常通信,被篡改路由或缓存
网关 虚拟网络默认网关 192.168.5.1 提供正常默认路由

说明:由于不同版本实验记录中个别 IP 标注存在差异,增强版报告以截图中出现的主机角色关系为主进行分析,重点不在绝对 IP 数字,而在角色定位与协议行为变化

2.1 ARP 缓存欺骗攻击(ARP Spoofing)

2.1.1 实验目的与原理说明

ARP 欺骗的目标,是让受害主机错误地把“目标 IP 地址”映射为“攻击机的 MAC 地址”,从而使原本应直接发往靶机的数据先到达攻击机。其本质是 ARP Cache Poisoning(ARP 缓存投毒)

由于 ARP 协议默认接受新的应答报文,并用最新映射覆盖旧记录,因此攻击者只要持续发送伪造 ARP Reply,就有可能让受害主机维持错误缓存。

2.1.2 正常通信与攻击前状态验证

image-20260330140940461

图示解释: 上图展示了靶机与受害主机在攻击前进行正常 ping 通信的状态。这个步骤的意义不只是“看能不能 ping 通”,更是在建立一次真实的正常通信基线(Normal Communication Baseline)。只有先证明双方链路连通、ARP 缓存已经自然建立,后续对缓存篡改造成的差异才有可比性。

image-20260330141121772

图示解释: 该图对应受害机执行 arp -a 后的结果,可以看到攻击前目标 IP 地址所对应的是其真实 MAC 地址。这一步属于 Pre-Attack State Verification(攻击前状态确认)。从实验写作角度讲,这张图非常关键,因为它给出了“未被攻击时,映射关系是什么样”的证据基线。

2.1.3 发起 ARP 欺骗与攻击结果验证

image-20260330141645705

图示解释: 上图展示了 Kali 持续发送伪造 ARP 应答的过程。无论使用 arpspoof 还是 netwox 80,它们完成的核心动作都是:不断声明“目标 IP 的 MAC 地址其实是攻击机的 MAC”。这一步从专业术语上属于 Forged ARP Reply Injection(伪造 ARP 应答注入)。高频重复发送的原因,是为了压制网络中的真实 ARP 映射更新,让错误映射保持在受害机缓存中。

image-20260330142706883

图示解释: 该图显示受害机再次执行 arp -a 后,目标 IP 对应的 MAC 已经被替换为攻击机的 MAC。这表明 ARP 表项已经被污染。这个现象是 ARP 欺骗攻击成功的最直接证据,也是后续能够开展中间人监听或会话篡改的前提。

image-20260408104009905

图示解释: Wireshark 抓包结果显示,尽管网络层中的目的 IP 仍然是靶机 IP,但数据链路层中的目的 MAC 却已经变成了攻击机的 MAC。这个现象非常具有教学意义,因为它直观展示了:

  • IP 层目标没有变
  • 二层转发对象已经被改写
  • 攻击者正是通过篡改 IP 与 MAC 的映射关系,完成了“流量重定向到自己”的效果。

这说明 ARP 欺骗本质上不是修改网络层逻辑,而是劫持链路层交付路径。

2.1.4 结果分析

ARP 欺骗实验说明,链路层地址解析机制一旦被伪造,攻击者就具备了两个重要能力:

  1. 拒绝服务能力:不转发流量,直接造成通信中断;
  2. 中间人能力:开启转发后,既能让受害者维持表面正常通信,又能在中间监听与篡改数据。

从攻击链角度看,ARP 欺骗更像是“前置条件型攻击”,它为后续嗅探、口令窃取、TCP 劫持等更复杂攻击铺平了道路。

2.2 ICMP 重定向攻击(ICMP Redirect)

2.2.1 实验目的与原理说明

ICMP 重定向攻击的本质,是通过伪造控制报文篡改受害主机的下一跳选择,使其把原本应该发给默认网关的数据转交给攻击机。这属于 Route Manipulation via Control Messages(通过控制报文操控路由)

2.2.2 攻击前默认路由状态

image-20260330143354729

图示解释: 受害主机通过 route -n 显示当前默认路由表,可以看到默认网关原本指向正常网关节点。这一步的作用,与前面 ARP 实验中的 arp -a 类似,都是为了先确认“正常状态下系统如何转发数据”,便于后续对比路由污染结果。

2.2.3 发起重定向与结果验证

image-20260330144003612

图示解释: Kali 通过 netwox 86 持续发送伪造的 ICMP Redirect 报文,核心是伪装成“来自默认网关的优化建议”。从主机视角看,它会误以为网关在告诉自己:“以后去某些目标时可以改走攻击机这个新下一跳。”这一步体现了 ICMP Redirect Forgery(ICMP 重定向伪造) 的核心思想。

image-20260330143917648

图示解释: 结果图中可以看到,相关流量的下一跳已经被改变,说明主机接受了伪造的控制信息并修改了自己的路径选择。这类现象说明:ICMP 不只是“诊断协议”,其中某些控制功能如果缺乏认证,就会对主机路由决策造成直接影响。

2.2.4 结果分析

ICMP 重定向攻击表明,攻击者即使不在原有物理路径上,也能通过控制报文间接改变受害者的通信方向。它和 ARP 欺骗的差别在于:

  • ARP 欺骗 更偏向链路层邻居关系篡改;
  • ICMP 重定向 更偏向网络层路径选择篡改。

两者都能导致流量绕经攻击者,但操控层次不同。

2.3 SYN Flood 攻击(拒绝服务)

2.3.1 实验目的与原理说明

SYN Flood 攻击利用的是 TCP 三次握手中的“半连接状态维护机制”。当服务器收到 SYN 报文后,会分配一定资源并回复 SYN+ACK,等待对端最后的 ACK。若攻击者持续发送大量 SYN 而不完成握手,服务器就会保留大量未完成连接,从而导致资源压力上升。

这属于典型的 State Exhaustion Attack(状态资源耗尽攻击)

2.3.2 攻击前基准状态

image-20260330145604263
image-20260330145812038

图示解释: 这两张图展示了攻击前 Telnet 服务处于正常可用状态,受害主机可以快速进入靶机交互界面。这里建立的是 Service Availability Baseline(服务可用性基线)。没有这个基线,后续就无法证明 Telnet 连接卡顿或异常确实是由 SYN Flood 导致的。

2.3.3 泛洪攻击与抓包现象

image-20260330150313425

图示解释: Wireshark 中出现大量高频 TCP SYN 报文,且源地址可能不断变化。这种现象正是 SYN Flood 的典型流量特征。它说明攻击者并不关注建立真实连接,而是在尽可能快速地制造大量半连接请求,让服务端一直处于“准备握手但等不到 ACK”的状态。这里最值得写入报告的专业表述是:

  • 大量 SYN 请求形成半连接积压
  • 服务端 SYN backlog 队列持续承压
  • 正常用户连接被延迟甚至拒绝

2.3.4 结果分析

从实验现象看,本次 SYN Flood 已经成功构造并观察到对 Telnet 服务的持续半连接压力。它说明:即使没有利用应用漏洞,只依赖 TCP 本身的状态保持机制,也足以对服务可用性构成严重威胁。

2.4 TCP RST 攻击(TCP Reset)

2.4.1 实验目的与原理说明

TCP RST 攻击的核心是:向现有会话伪造一个看似合法的复位报文,使接收方立即释放连接资源并终止会话。前提通常是攻击者能够观察到该连接,或者至少掌握正确的四元组与状态信息。

2.4.2 正常会话建立

image-20260330150957321

图示解释: 该图展示了攻击机针对靶机正在进行的 Telnet 连接实施 TCP RST 注入前的准备状态。从实验角度,这一步说明攻击对象不是“任意一个端口”,而是“已经建立好的一个具体会话”。这也是 RST 攻击区别于 SYN Flood 的地方:前者针对既有会话,后者针对连接建立阶段。

2.4.3 攻击结果验证

image-20260330151038115

图示解释: Seed 主机终端突然提示 Connection closed by foreign host,说明现有 Telnet 会话已被异常终止。这个结果表明,目标主机接受了伪造的 RST 报文,并将其解释为合法连接重置请求。该现象直观说明:如果攻击者处于合适网络位置并掌握连接状态,就可以利用 RST 报文破坏现有业务连接。

2.4.4 结果分析

RST 攻击体现的不是资源耗尽,而是 Connection Disruption(连接中断)。它的特点是:

  • 成本较低;
  • 影响立竿见影;
  • 对长连接、远程管理会话、明文交互协议尤其敏感。

在真实场景中,这类攻击常用于干扰管理会话、切断终端连接或作为更复杂攻击的辅助步骤。

2.5 TCP 会话劫持攻击

2.5.1 实验目的

本部分实验的目标,是在已经建立中间人位置的前提下,验证攻击者是否能够对现有的明文 TCP 会话进行监听、状态分析与受控注入,并据此理解会话劫持对通信机密性、完整性与控制权的影响。与前面的 ARP 欺骗、TCP RST 攻击相比,本实验更强调“在不中断原有通信的情况下,对既有会话施加主动影响”这一特点。

2.5.2 实验原理

TCP 会话劫持的本质,是攻击者在掌握合法连接状态信息的基础上,伪造属于连接一方的数据报文,将其插入到现有会话中,使服务端或客户端把这些伪造数据误认为来自合法通信对端。若条件满足,攻击者不仅可以被动观察会话内容,还可能进一步影响会话过程,甚至间接取得更高层次的交互控制能力。

该攻击通常依赖以下几个前提条件:

  1. 攻击者能够进入通信路径中间。
    在本实验环境中,这一步是通过 ARP 欺骗实现的。攻击机将自己置于 SEEDUbuntu 与 Metasploitable 之间,使二者之间的流量先经过攻击机。只有获得中间人位置,攻击者才可能持续观察连接状态并进行后续干预。

  2. 攻击者能够正确理解当前连接状态。
    TCP 会话并不是“发一个伪造包过去就能成功”。伪造报文必须与当前连接的四元组、序列号、确认号、窗口状态保持一致,否则接收方不会将其视为合法会话数据,严重时还可能触发 ACK 风暴。

  3. 应用层协议本身缺乏加密与认证保护。
    本实验中使用的是 Telnet。由于 Telnet 采用明文传输,攻击者不仅能够直接看到用户名、口令和命令回显,还可以依据当前会话上下文判断更适合插入什么内容,因此比在加密协议场景下更容易实施会话劫持。

因此,从攻击链条上看,本实验并不是孤立的一步,而是“ARP 欺骗建立中间人位置 → 明文会话监听 → TCP 状态同步分析 → 数据注入验证”这一连续过程的综合体现。

2.5.3 实验步骤

(1)建立中间人位置并实施会话监听

首先,在攻击机上启动局域网监听工具,对当前网段中的主机进行扫描,识别出 SEEDUbuntu 与 Metasploitable 两台目标主机;随后将二者设置为通信两端,并启用基于 ARP 欺骗的中间人模式,使攻击机位于两台主机之间。此时的重点不是“立即控制会话”,而是先确保数据流已经稳定经过攻击机,从而为后续会话分析提供前提。

image-20260408112251733
image-20260408112321523
image-20260408112358419
image-20260408112455387
image-20260408112625206
image-20260408112814710
image-20260408112833010

图示解释: 这一组图反映的是中间人建立过程。图中可以看到攻击机完成主机发现、目标选取以及中间人模式启用等操作。虽然界面上只是若干菜单步骤,但从协议层意义上看,这意味着原本应直接在 SEEDUbuntu 与 Metasploitable 之间传输的数据,已经被重定向到攻击机路径上。此时攻击机获得的是“会话可见性”,而不是“会话控制权”。

中间人位置建立后,由 SEEDUbuntu 正常发起到 Metasploitable 的 Telnet 登录。在攻击机的连接视图中,可以观察到与 Telnet 会话对应的 TCP 连接;进一步查看其交互内容后,可以识别出登录用户名、口令以及后续输入的命令和回显结果。

image-20260408113022715
image-20260408113044331
image-20260408113110910
image-20260408113327251

图示解释: 这里的截图重点应放在“连接视图”和“明文回显”两个层面来写。前者说明 TCP 会话已经被攻击机完整观察到,后者说明 Telnet 的应用层内容没有经过加密保护。也就是说,在这一阶段,攻击者虽然还没有主动篡改会话,但已经可以获取会话中的敏感信息,这本身就构成了严重的机密性风险。

(2)分析连接状态并进行受控注入验证

在完成监听之后,下一步不是盲目插入数据,而是先对当前 Telnet 会话进行状态提取。通过抓包工具定位该会话最近的数据包,可以读取当前连接的关键参数,包括源/目的 IP、源/目的端口、当前有效的序列号与确认号,以及窗口相关信息。只有这些状态与当前 TCP 会话严格同步,后续的伪造报文才有可能被目标主机接受。

image-20260408190826528

图示解释: 抓包图在报告中不宜只写成“找到最后一个包”,更规范的表述应是:通过定位会话最近一次合法交互,提取当前连接状态,用于构造后续验证报文。这里体现的不是单纯的工具操作,而是 TCP 状态同步分析 的过程。若序列号、确认号选取错误,接收端就会将报文视为无效数据。

在状态分析完成后,可进一步开展“受控注入验证”。实验中先后尝试了目录查询、文件读取等低风险验证性内容,其目的并不是追求复杂利用,而是确认一个事实:攻击者是否已经能够把“伪造的应用层输入”送入现有 Telnet 会话,并被服务端当作合法输入处理。实验现象表明,在参数同步正确、输入格式符合应用层交互习惯时,注入内容能够被目标端接收并产生对应回显。

image-20260408191423158
image-20260408191440079
image-20260408191454538
image-20260408191706978
image-20260408191750188
image-20260408191817886
image-20260408193249083
image-20260408193403671
image-20260408193420956
image-20260408193435031
image-20260408193536546
image-20260408194510829

图示解释: 这几张图对应的重点,不是具体命令本身,而是“伪造输入被会话接受”这一现象。报告中可以写成:当注入内容与当前连接状态保持一致,且数据结尾符合 Telnet 交互要求时,目标端会给出相应回显,说明攻击者已经从单纯的监听者转变为能够影响会话内容的主动干预者。这里体现的是 基于劫持会话的应用层注入

(3)会话接管效果验证

在低风险注入验证成功之后,实验进一步尝试了更高控制级别的效果验证。过程中并非一次成功,而是经历了多轮失败与修正:包括不同载荷形式的兼容性问题、回显缺失、命令执行成功但未形成稳定交互等。最终,通过更适配目标环境的方式,成功实现了由目标主机主动回连攻击机的效果,表明实验已经从“会话监听 + 注入验证”发展到了“会话接管”。

image-20260408201001219
image-20260408201257582
image-20260408201513632
image-20260408202851526
image-20260408203109835
image-20260408203212628
image-20260408203408513
image-20260408203447521
image-20260408203914720
image-20260408203418099

图示解释: 这一阶段的截图不应只强调“终于成功”,而更适合写成:多次尝试表明,TCP 会话劫持是否能够进一步演化为稳定控制,除了取决于传输层状态同步外,还受到目标主机解释环境、命令兼容性和应用层交互机制的共同影响。最终形成回连或交互式控制结果,说明攻击者已不仅能影响会话内容,还能进一步扩展为执行环境接管。

2.5.4 实验结果分析

从实验结果看,本次 TCP 会话劫持并不是单一的“发一个伪造包”这么简单,而是一个由多层条件共同支撑的攻击链。

首先,ARP 欺骗解决的是位置问题。没有中间人位置,就无法稳定获取会话状态信息。其次,Telnet 明文传输暴露的是内容问题。攻击者能够直接看到认证信息和交互上下文。再次,TCP 状态同步解决的是合法性问题。只有与当前序列号、确认号、窗口状态匹配的伪造报文,才可能被接受。最后,应用层输入格式决定执行效果。数据结尾、交互时机、目标环境兼容性都会影响最终结果。

因此,本实验至少验证了三个层次的能力提升:

  • 会话监听成功:能够看到 Telnet 的明文账号、密码和命令内容;
  • 会话注入成功:能够让目标会话接受伪造输入并产生回显;
  • 会话接管成功:能够进一步使目标环境进入受攻击者控制的执行状态。

这说明,当链路层可被 ARP 欺骗、传输层连接缺乏额外认证、应用层又采用明文协议时,攻击者完全可能从“被动监听”逐步升级到“主动控制”。其危害已同时覆盖:

  • 机密性破坏:会话内容与认证信息泄露;
  • 完整性破坏:合法会话被插入伪造数据;
  • 控制权风险:原有终端不再是唯一控制入口。

2.5.5 防御启示

该实验对防御方的启示非常直接。首先,在二层网络中,应尽量减少 ARP 欺骗成立的条件,例如采用更严格的交换网络安全机制。其次,在远程管理场景中,应避免继续使用 Telnet 等明文协议,优先使用具备加密和认证能力的 SSH。再次,在流量监测中,应关注异常 ARP 更新、异常 TCP 状态变化以及不符合正常业务节奏的数据注入现象。最后,在安全设计上,不能把“协议能通信”误认为“协议天然安全”,而应把身份认证、完整性保护与加密传输作为基础要求。

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

3.1 问题一:ARP 欺骗后通信异常,说明“劫持流量”与“维持可用”是两回事

在实施 ARP 欺骗时,一个很容易忽视的问题是:把流量劫持到自己这里,并不等于流量就会自然继续转发。 如果攻击机未开启 IP 转发,那么受害机的数据包虽然已经按照错误 ARP 表项送到了攻击机,但攻击机会像“黑洞”一样直接丢包,导致受害主机看起来像是“突然断网”。

这个问题的本质,在于 ARP 欺骗只是改变了二层交付对象,而没有自动完成三层转发。只有攻击机同时具备中间转发能力,它才能既维持业务表面正常,又在暗中监听和篡改。

解决思路是:

  • 先确认受害机 ARP 表是否真的被篡改;
  • 再确认攻击机是否开启 ip_forward
  • 最后抓包验证数据是否确实经由攻击机继续发往真实目标。

这个问题让我很直观地理解到:中间人攻击不是“抢到流量就行”,还必须让通信链路在逻辑上继续成立。

3.2 问题二:Wireshark 默认显示相对序列号,导致伪造 TCP 报文时参数取值错误

在进行 TCP 会话注入时,我最初直接参考了 Wireshark 界面中显示的序列号和确认号,随后把这些数值写入 netwox 40 的参数中。但报文发出后并没有得到预期回显,说明连接状态并未真正同步。

后续排查才发现,Wireshark 默认使用的是 Relative Sequence Numbers(相对序列号显示),也就是说界面上看到的是经过处理后的相对值,而不是报文头部中的真实绝对序列号。如果直接把这个显示值拿去伪造 TCP 报文,就会导致状态不匹配,目标端自然不会把注入内容当作合法数据处理。

这个问题表面上像是“工具显示细节”,但本质上体现了协议分析中一个非常重要的原则:抓包工具给你的,不一定就是原始报文字段的直接值。 只有理解显示机制,才能避免把“分析界面的便利性”误当成“协议字段的真实性”。

3.3 问题三:命令注入失败,说明“能发包”不等于“应用层会接受”

在最初尝试注入 pwdls 等命令时,我把命令本身转换成十六进制字节后直接写入 --tcp-data,以为只要四元组和序列号正确,服务端就会执行。但实际结果并不理想,有时没有任何回显,有时只能带出前一条命令的延迟结果。

后来通过与正常 Telnet 输入的流量进行比对,我才意识到:问题并不只在 TCP 层,也在应用层输入格式上。对于交互式协议来说,命令通常不是“几个 ASCII 字节”就结束了,还需要补齐回车、换行或其他控制字符,接收方才会把它当作一条完整输入处理。

这个问题让我认识到:会话劫持中的数据注入,是“传输层状态同步 + 应用层语义兼容”两个条件共同成立的结果。 只看 TCP 而忽视应用层格式,注入就很容易失败。

3.4 问题四:反向连接载荷多次失败,说明“命令执行成功”与“控制权完全建立”之间还有距离

在完成基本命令注入后,我尝试进一步注入 bash、nc 等反向连接命令,希望直接拿到交互式 shell。但多次尝试并没有立即成功,一度让我怀疑是不是整个会话劫持过程都没有真正建立。

后来冷静分析后发现,问题不一定出在 TCP 劫持本身,更可能出在:

  • 目标环境是否支持 /dev/tcp
  • nc 版本是否支持特定参数;
  • 当前 shell 是否能够正确解释载荷;
  • 载荷格式与实验环境是否完全匹配。

最后切换到 Python 方式后成功建立回连,这说明前面的失败并不是“劫持没成功”,而是“载荷与目标环境不兼容”。这段经历让我很受启发:安全实验中应把“劫持链条成立”与“最终接管形式是否理想”分开判断。 只要能带出命令执行结果,说明攻击链条已基本打通;至于是否能稳定拿到 shell,还要看后续载荷设计。


4. 学习感悟与思考

做完这次实验后,我最大的感受是:以前课本里比较抽象的 ARP、ICMP、TCP 协议,这次突然变得很具体了。以前只是知道它们各自负责什么,但真正做了 ARP 欺骗、ICMP 重定向、SYN Flood、RST 和会话劫持之后,才明白很多攻击并不是凭空发生的,而是利用了协议本身默认“网络环境可信”的特点。

其中让我印象最深的是 ARP 欺骗和 Telnet 会话劫持。ARP 欺骗表面上只是改了 IP 和 MAC 的对应关系,但一旦流量经过攻击机,后面的监听、断连、插入命令就都有了可能。Telnet 更直观,用户名、密码和命令都是明文传输,只要链路被控制,几乎等于把操作过程直接暴露出去。

这次实验也让我意识到,几个小实验其实是能串起来的:先把流量引过来,再干扰连接,最后尝试控制会话。真正费时间的也不是敲命令,而是排错和分析抓包。总的来说,这次实验让我不只是会用工具,而是开始理解攻击为什么能成功,也更明白协议安全和网络路径控制的重要性。

posted @ 2026-03-30 16:46  Haut_XXS  阅读(42)  评论(0)    收藏  举报