Featured image of post ICMP重定向与中间人攻击

ICMP重定向与中间人攻击

实验环境

以下为gpt写的框架

本实验在 Ubuntu 环境下,通过 Docker 复现 ICMP Redirect 攻击过程,并在此基础上完成中间人攻击,实现对 TCP 负载的拦截与篡改。

核心思路并不复杂:利用 ICMP 重定向修改受害者的路由缓存,将流量引导至攻击者控制的节点,再在该节点上对通信数据进行处理。


实验环境

实验基于本地 Ubuntu 搭建,使用 Docker 进行网络拓扑隔离。相比课程默认环境,这种方式更容易控制变量,出现异常可以直接销毁重建。

启动实验前,对容器环境进行清理,避免历史网络配置干扰:

1
2
docker stop $(docker ps -a -q) 2>/dev/null
docker rm $(docker ps -a -q) 2>/dev/null

进入实验目录并启动拓扑:

1
2
cd seed-labs-master/category-network/ICMP_Redirect/Labsetup
docker-compose up -d

容器全部启动后,网络结构包括受害者、攻击者、真实网关、恶意路由器以及目标主机。


ICMP 重定向机制

ICMP Redirect 用于在局域网内优化路径选择。当主机将数据包发送给网关时,如果网关发现存在更优路径,会返回一个重定向报文,引导主机更新路由缓存。

该机制依赖信任模型,缺乏认证过程,只要报文结构合法且来源看似可信,就有可能被内核接受。这为伪造重定向提供了空间。


ICMP 重定向攻击

攻击目标是修改受害者的路由缓存,使其将发往目标主机的流量转发至恶意路由器。

在受害者节点持续产生流量:

1
2
docker exec -it victim-10.9.0.5 bash
ping 192.168.60.5

保持通信状态是触发内核接受重定向的前提。

攻击者节点发送伪造的 ICMP Redirect 报文:

1
2
3
docker exec -it attacker-10.9.0.105 bash
cd /volumes
python3 icmp_redirect.py

该脚本伪造来自网关的 Type 5 报文,并指定新的下一跳地址为恶意路由器。

攻击成功后,在受害者节点查看路由缓存:

1
ip route show

若出现如下条目:

1
192.168.60.5 via 10.9.0.111 dev eth0 cache <redirected>

说明路由已被修改,目标流量开始经过攻击者控制的节点。


中间人攻击(MITM)

在路由被重定向后,攻击者已经处于通信路径中间,但默认情况下数据仍然是透明转发的,需要进一步介入数据处理流程。

实验中直接在恶意路由器上对数据进行拦截和修改。

在目标主机上开启监听:

1
2
docker exec -it host-192.168.60.5 bash
nc -lp 9090

受害者发起连接:

1
nc 192.168.60.5 9090

通信建立后,在恶意路由器上关闭内核转发:

1
2
docker exec -it malicious-router-10.9.0.111 bash
sysctl net.ipv4.ip_forward=0

关闭转发的目的是避免数据包直接由内核转发,从而使用户态脚本能够接管数据路径。

随后运行中间人脚本:

1
2
cd /volumes
python3 mitm_nc.py

脚本通过嗅探并重构 TCP 数据,实现对通信内容的修改。

在受害者端发送特定字符串,例如:

1
seedlabs

目标主机接收到的内容被替换为:

1
AAAAAAAA

说明数据已在传输过程中被修改,中间人攻击成立。


实验中的关键点

ICMP 重定向并不是无条件生效,需要存在对应的通信流量,否则内核可能直接忽略报文。

路由缓存存在时间限制,实验操作需要在有效期内完成,否则需要重新触发攻击。

中间人阶段如果不关闭内核转发,数据包会绕过用户态脚本,导致无法修改内容。

MAC 地址配置错误容易导致网络异常甚至形成循环转发,需要保证脚本中的目标地址准确。


知识小结

ICMP 重定向本质是对主机路由缓存的动态修改机制,在缺乏认证的情况下可以被伪造利用。

攻击的核心不在于重定向本身,而在于借此进入通信路径,实现对流量的控制。

中间人攻击依赖对数据路径的完全接管,单纯的流量转发无法达到篡改效果,需要在内核转发与用户态处理之间做切换。

从实现上看,攻击链条可以拆分为路径劫持与数据处理两个阶段,两者缺一不可。

Like 0
本站已不稳定运行 小时 分钟
共发表文章 23 篇 ,总计 73.63 k 字
本站总访问量:
使用 Hugo 构建
主题 StackJimmy 设计