#ipv4 #udp #tcp-udp #tcp #api-bindings

ip-spoofing

库,用于发送伪造的IPv4头部和UDP/TCP-SYN数据包以执行L3/L4攻击

1个不稳定版本

0.1.0 2023年1月31日

#49 in #ipv4

Download history 2/week @ 2024-03-08 2/week @ 2024-03-15 14/week @ 2024-03-29 5/week @ 2024-04-05 2/week @ 2024-05-17

每月 187次下载

MIT许可证

11KB
177

ip-spoofing

Build Status Latest Version Documentation

asciicast

库,用于发送伪造的IPv4头部和UDP/TCP-SYN数据包以执行L3/L4攻击

简而言之,此库允许您在网络中伪造IP地址。为了更好地理解,建议阅读cloudflare的文章: 大型DDoS的真实原因 - IP伪造

可以在OSI模型的L3(网络层)上执行

今天,并非所有ISP都检查IPv4头部的完整性。因此,在实际网络中,有2种伪造IP地址的选项

  1. 网络层IP伪造

    例如,您有一台地址为 195.174.232.102 的服务器,而提供商拥有IP范围 195.174.224.0 - 195.174.239.255,这意味着您可以使用该范围内的任何地址

  2. 无限IP伪造

    这允许您伪造任何IP地址,您可以假装拥有地址 8.8.8.8 (谷歌公共DNS)

伪造的唯一限制是您可以发送数据包,但无法从服务器接收响应。

您可以在本地网络上检查此库是否工作。要攻击真实网络,您需要特定的提供商,允许两种伪造选项之一。

代码示例

您可以在examples/ 目录中看到其他代码示例。

use ip_spoofing::{self, RawSocket, ReusablePacketWriter};

/// This example shows how to generate fake UDP packet
/// that delivers `b"hey"` bytes from "8.8.8.8:1234" to "127.0.0.1:5678".
///
/// I.e. the attacker changes its IPv4 address to 8.8.8.8 (Google Public DNS)
fn main() -> ip_spoofing::Result<()> {
    let socket = RawSocket::new()?;
    let mut writer = ReusablePacketWriter::new();

    socket.send_fake_udp_packet(
        &mut writer,
        [8, 8, 8, 8],   //source IPv4 address
        1234,           //source port
        [127, 0, 0, 1], //destination IPv4 address
        5678,           //destination port
        b"hey",         //data
        64,             //TTL on most Linux machines is 64
    )?;

    Ok(())
}

依赖关系

~5MB
~109K SLoC