高效能 (D)DoS 漏洞測試工具包。實作各種 L4/7 攻擊向量。非同步網路方法有助於降低 CPU/RAM 需求,同時執行複雜的網路互動。
筆記?此工具包不具備對目標伺服器或網路進行正確效能測試所需的功能。目標是透過執行專門設計用於濫用常見陷阱並繞過常見保護措施的攻擊來了解保護等級。
警告❗ 未經所有者同意,請勿測試基礎設施(伺服器、網站、網路設備等)。套件預設設定經過調整,以避免執行測試時產生巨大的意外影響。
受到 MHDDoS 計畫的啟發。
來自 PyPI:
$ pip install fiberfox
來源:
$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ python setup.py install
建置 Docker 映像:
$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ docker build -t fiberfox .
例子:
$ fiberfox
--targets tcp://127.0.0.1:8080 http://127.0.0.1:8081
--concurrency 512
--rpc 1024
--strategy STRESS
--duration-seconds 3600
--proxies-config ./proxies.txt
特徵:
--concurrency
(或-c
)定義要運行的非同步協程的數量。 Fiber 不會建立新的作業系統線程,因此您可以以微不足道的開銷運行大量線程。對於 TCP 攻擊向量,光纖數量大致對應於開啟的 TCP 連線的最大數量。對於 UDP 攻擊,運行過多的纖程通常會使效能變差。SLOW
或CONNECTIONS
等攻擊向量時),請確保設定的光纖數量多於目標數量。有關標誌的更多文件:
$ python fiberfox --help
usage: fiberfox [-h] [--targets [TARGETS ...]] [--targets-config TARGETS_CONFIG] [-c CONCURRENCY] [-s {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB,GET}] [--rpc RPC] [--packet-size PACKET_SIZE]
[-d DURATION_SECONDS] [--proxies [PROXIES ...]] [--proxies-config PROXIES_CONFIG] [--proxy-providers-config PROXY_PROVIDERS_CONFIG] [--log-level {DEBUG,INFO,ERROR,WARN}]
[--connection-timeout-seconds CONNECTION_TIMEOUT_SECONDS]
options:
-h, --help show this help message and exit
--targets [TARGETS ...]
List of targets, separated by spaces (if many)
--targets-config TARGETS_CONFIG
File with the list of targets (target per line). Both local and remote files are supported.
-c CONCURRENCY, --concurrency CONCURRENCY
Total number of fibers (for TCP attacks means max number of open connections)
-s {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB,GET}, --strategy {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB,GET}
Flood strategy to utilize
--rpc RPC Number of requests to be sent to each connection
--packet-size PACKET_SIZE
Packet size (in bytes)
-d DURATION_SECONDS, --duration-seconds DURATION_SECONDS
How long to keep sending packets, in seconds
--proxies [PROXIES ...]
List of proxy servers, separated by spaces (if many)
--proxies-config PROXIES_CONFIG
File with a list of proxy servers (newline-delimited). Both local and remote files are supported.
--proxy-providers-config PROXY_PROVIDERS_CONFIG
Configuration file with proxy providers (following MHDDoS configuration file format). Both local and remote files are supported.
--reflectors-config REFLECTORS_CONFIG
File with the list of reflector servers (IP per line). Only required for amplification attacks. Both local and remote files are supported.
--log-level {DEBUG,INFO,ERROR,WARN}
Log level (defaults to INFO)
--connection-timeout-seconds CONNECTION_TIMEOUT_SECONDS
Proxy connection timeout in seconds (default: 10s)
執行腳本時,攻擊向量由--strategy
選項定義。
注意:該套件正在積極開發中,很快就會添加更多方法。
L4 攻擊旨在針對傳輸層,因此主要用於使網路容量過載。需要對目標有最少的了解。
策略 | 層 | 運輸 | 設計 | 筆記 |
---|---|---|---|---|
UDP | L4 | UDP協定 | 簡單洪水:向目標發送隨機產生的UDP資料包 | 從網路設備接收到NO_BUFFER_AVAILABLE 時自動限制光纖。為了防止這種情況發生,在測試 UDP 洪水攻擊時,每個目標不要配置超過 2 個光纖。 |
TCP | L4 | 傳輸控制協定 | 簡單洪水:將 RPC 隨機產生的 TCP 封包傳送到開啟的 TCP 連線。 | 支援配置單一資料包的大小以及要傳送到每個開啟連線的資料包數量。 |
CONNECTION | L4 | 傳輸控制協定 | 打開 TCP 連線並儘可能長時間地保持它們的活動狀態。 | 為了有效,這種類型的攻擊需要比平常更多的光纖。請注意,現代伺服器非常擅長處理開啟的非活動連線。 |
一類特殊的 L4 攻擊。
UDP 是一種無連線協定。除非應用層進行明確處理,否則它不會驗證來源 IP 位址。這意味著攻擊者可以輕鬆偽造資料封包以包含任意來源 IP 位址。通常,應用程式協定的設計方式是使回應中產生的資料包大得多,從而產生放大效應(因此得名)。透過將此類資料封包傳送到許多不同的伺服器(反射器),攻擊者可以為目標(受害者)設備產生大量流量。
實施的放大攻擊:
策略 | 協定 | 放大係數 | 漏洞 |
---|---|---|---|
RDP | 遠端桌面協定 (RDP) | ||
CLDAP | 無連線輕量級目錄存取協定 (CLDAP) | 56歲70歲 | |
MEM | 記憶體快取 | 10,000 至 50,000 | |
CHAR | 字元產生器協定 (CHARGEN) | 358.8 | 字元產生請求 |
ARD | 蘋果遠端桌面 (ARD) | ||
NTP | 網路時間協定 (NTP) | 556.9 | TA14-013A |
DNS | 域名系統 (DNS) | 28 至 54 | TA13-088A |
所有放大攻擊都需要提供反射伺服器清單。
L7 攻擊旨在利用應用程式層協定中的弱點或應用程式(或作業系統核心)的特定實作細節。通常更強大,但可能需要了解目標系統的工作原理。
策略 | 層 | 運輸 | 設計 | 筆記 |
---|---|---|---|---|
GET | L7 | 傳輸控制協定 | 透過開放的 TCP 連線發送隨機產生的 HTTP GET 請求 | 不需要 200 OK HTTP 回應代碼(因為它根本不消耗回應)。儘管針對負載平衡器或 WAF 執行的攻擊可能無效(與 L4 TCP 洪水相比)。 |
STRESS | L7 | 傳輸控制協定 | 透過單一開啟的 TCP 連線發送一系列具有大型正文的 HTTP 請求。 | 為了最大限度地提高效能,請確保目標主機允許管道傳輸(在持久連接中發送新請求,而不先讀取回應)。不需要 200 OK HTTP 回應代碼(因為它根本不消耗回應)。儘管針對負載平衡器或 WAF 執行的攻擊可能無效(與 L4 TCP 洪水相比)。 |
BYPASS | L7 | 傳輸控制協定 | 透過開放的 TCP 連線發送 HTTP get 請求,讀迴響應。 | 分塊讀取是透過連接中的recv 位元組執行的,而不解析為 HTTP 回應。 |
SLOW | L7 | 傳輸控制協定 | 與 STRESS 類似,發出 HTTP 請求並嘗試透過讀回單一位元組並發送附加負載(在發送操作之間存在時間延遲)來保持連接的利用。 | 理想情況下,應正確設定時間延遲,以避免因讀取逾時而被對等方重置連接(取決於對等方設定)。 |
CFBUAM | L7 | 傳輸控制協定 | 傳送單一 HTTP GET,在長時間延遲後透過相同 TCP 連線發出更多請求。 | |
AVB | L7 | 傳輸控制協定 | 將 HTTP GET 封包傳送到開放連線中,傳送操作之間存在較長的延遲。為了避免連線因讀取逾時而被對方重置,最大延遲設定為1秒。 |
透過配置一組代理伺服器,即使從單一電腦執行該工具包,也可以模擬分散式攻擊。當代理可用時, fiberfox
首先連接到它們,並從這些機器建立到目標的連線。透過這樣做,系統可以繞過最簡單的 IP 封鎖保護措施。該工具包支援 HTTP/SOCKS4/SOCS5 協定以及使用者/密碼身份驗證。它還動態管理提供的一組代理,以避免使用那些不回應或不滿足攻擊要求的代理。
使用代理商時必須牢記以下幾點:
現在攻擊的成功部分取決於代理伺服器的容量。例如,當使用公共代理時,網路速率可能會很低,因為代理過於擁擠。在這種情況下,請考慮使用私有基礎架構或付費的專用代理伺服器叢集。
代理伺服器本身可能會減輕一些攻擊媒介。例如,當使用「慢速連線」方法時,代理伺服器可以配置為限製或關閉連線。透過這樣做在某種程度上「保護」目標。請注意代理設定如何介入攻擊機制(網路、協定等)。
該工具包的目標之一是提供全面的監控資訊來指導漏洞查找。
此工具報告每個目標的統計資料:資料包數、流量和速率。對於基於 TCP 的攻擊(L4 和 L7),它還會報告單一會話中傳送的封包的直方圖(此處的會話是指單一開放連線中傳送的流量)。理想情況下,直方圖應向左側傾斜。這表示對等方在發送「每個連線的請求」資料包之前關閉連線。如果主要位於右側,則目標接受應被視為「垃圾流量」的內容。
分析時要小心。網路速率低、嘗試連線頻率高、錯誤率高等。所有這些信號都可能表明目標在面對攻擊時仍然堅強,而且它已經死亡。為了充分了解保護級別,您應該使用目標端的監控資訊(例如,在受到挑戰時正確工作的能力)。
請注意,出站率顯示為大約值。發送每個資料包的時間測量包括調度延遲(對於光纖)和選擇/池化。在大多數情況下,這些可以忽略不計。但運行 10k+ 光纖時要小心分析。
feature-*
分支以開始進行更改。 根據 MIT 許可發布。請參閱許可證以取得完整許可證。
████
████▒▒██
████ ▒▒██
██▒▒ ▒▒▒▒▒▒██
██▒▒██ ██
████ ██▒▒██ ██
██▒▒▒▒██████ ██▒▒██ ▒▒ ████
██▒▒▒▒██ ████ ██████▒▒▒▒▒▒██ ▒▒▒▒██████████████
██▒▒ ████▒▒▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒████
██▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████
██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒████▒▒▒▒▒▒▒▒██
████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒████▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
████ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ████▒▒▒▒▒▒▒▒▒▒ ██ ▒▒ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒██
██ ██ ████ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ██▒▒██ ▒▒ ▒▒▒▒▒▒▒▒▒▒██
██████████████████████▒▒▒▒██ ▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒██ ▒▒▒▒██
██▒▒▒▒ ██▒▒▒▒▒▒▒▒████ ▒▒▒▒██
██▒▒▒▒▒▒██▒▒▒▒▒▒██ ██ ██
██████▒▒▒▒▒▒██ ██ ████
██████ ██ ██████
██ ████
██████