Leistungsstarkes (D)DoS-Schwachstellentest-Toolkit. Implementiert verschiedene L4/7-Angriffsvektoren. Der asynchrone Netzwerkansatz trägt dazu bei, die CPU-/RAM-Anforderungen zu senken und gleichzeitig selbst komplexe Netzwerkinteraktionen durchzuführen.
NOTIZ ? Das Toolkit verfügt nicht über die erforderlichen Funktionen für ordnungsgemäße Leistungstests der Zielserver oder Netzwerke. Ziel ist es, das Schutzniveau zu verstehen, indem Angriffe durchgeführt werden, die speziell darauf ausgelegt sind, häufige Fallstricke auszunutzen und gängige Schutzmaßnahmen zu umgehen.
WARNUNG ❗ Testen Sie die Infrastruktur (Server, Websites, Netzwerkgeräte usw.) nicht ohne die Zustimmung des Eigentümers. Die Standardeinstellungen des Pakets werden optimiert, um große unbeabsichtigte Auswirkungen beim Ausführen von Tests zu vermeiden.
Inspiriert vom MHDDoS-Projekt.
Von PyPI:
$ pip install fiberfox
Aus Quellen:
$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ python setup.py install
Docker-Image erstellen:
$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ docker build -t fiberfox .
Beispiel:
$ 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
Merkmale:
--concurrency
(oder -c
) definiert die Anzahl der auszuführenden asynchronen Coroutinen. Fiber erstellt keinen neuen Betriebssystem-Thread, sodass Sie viele davon mit unbedeutendem Overhead ausführen können. Bei TCP-Angriffsvektoren entspricht die Anzahl der Fasern ungefähr der maximalen Anzahl offener TCP-Verbindungen. Bei UDP-Angriffen führt der Betrieb zu vieler Glasfasern typischerweise zu einer Leistungsverschlechterung.SLOW
oder CONNECTIONS
verwendet werden), stellen Sie sicher, dass Sie mehr Fibers einrichten, als Sie Ziele haben.Weitere Dokumentation zu Flags:
$ 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)
Ein Angriffsvektor wird durch die Option --strategy
beim Ausführen des Skripts definiert.
Hinweis: Das Paket befindet sich in der aktiven Entwicklung, weitere Methoden werden in Kürze hinzugefügt.
L4-Angriffe zielen auf Transportschichten ab und werden daher hauptsächlich zur Überlastung von Netzwerkkapazitäten eingesetzt. Erfordert minimale Kenntnisse des Ziels.
Strategie | Schicht | Transport | Design | Notizen |
---|---|---|---|---|
UDP | L4 | UDP | Einfache Flut: Sendet zufällig generierte UDP-Pakete an das Ziel | Drosselt Glasfaser automatisch, wenn NO_BUFFER_AVAILABLE vom Netzwerkgerät empfangen wird. Um dies zu verhindern, konfigurieren Sie beim Testen des UDP-Flood-Angriffs nicht mehr als 2 Glasfasern pro Ziel. |
TCP | L4 | TCP | Einfache Flut: Sendet zufällig generierte RPC-TCP-Pakete in eine offene TCP-Verbindung. | Unterstützt die Konfiguration der Größe eines einzelnen Pakets und der Anzahl der Pakete, die in jede offene Verbindung gesendet werden sollen. |
CONNECTION | L4 | TCP | Öffnet TCP-Verbindungen und hält sie so lange wie möglich aufrecht. | Um wirksam zu sein, erfordert diese Angriffsart eine höhere Anzahl an Fasern als üblich. Beachten Sie, dass moderne Server ziemlich gut mit offenen inaktiven Verbindungen umgehen können. |
Eine besondere Klasse von L4-Angriffen.
UDP ist ein verbindungsloses Protokoll. Die Quell-IP-Adresse wird nicht validiert, es sei denn, die Anwendungsschicht führt eine explizite Verarbeitung durch. Dies bedeutet, dass ein Angreifer das Datagramm leicht so fälschen kann, dass es eine beliebige Quell-IP-Adresse enthält. Häufig ist das Anwendungsprotokoll so konzipiert, dass das als Antwort generierte Paket viel größer ist, was einen Verstärkungseffekt erzeugt (daher der Name). Durch das Senden eines solchen Datagramms an viele verschiedene Server (Reflektoren) kann der Angreifer erheblichen Datenverkehr zum Zielgerät (Opfer) erzeugen.
Amplification-Angriffe implementiert:
Strategie | Protokoll | Verstärkungsfaktor | Verletzlichkeit |
---|---|---|---|
RDP | Remotedesktopprotokoll (RDP) | ||
CLDAP | Verbindungsloses Lightweight Directory Access Protocol (CLDAP) | 56 Jahre 70 | |
MEM | Im Speicher gespeichert | 10.000 bis 50.000 | |
CHAR | Zeichengeneratorprotokoll (CHARGEN) | 358,8 | Anfrage zur Zeichengenerierung |
ARD | Apple Remote Desktop (ARD) | ||
NTP | Network Time Protocol (NTP) | 556,9 | TA14-013A |
DNS | Domain Name System (DNS) | 28 bis 54 | TA13-088A |
Für alle Amplification-Angriffe muss eine Liste von Reflection-Servern bereitgestellt werden.
L7-Angriffe zielen darauf ab, Schwachstellen in Protokollen der Anwendungsschicht oder bestimmte Implementierungsdetails von Anwendungen (oder Betriebssystemkernen) auszunutzen. Im Allgemeinen leistungsfähiger, erfordert jedoch möglicherweise Kenntnisse über die Funktionsweise des Zielsystems.
Strategie | Schicht | Transport | Design | Notizen |
---|---|---|---|---|
GET | L7 | TCP | Sendet zufällig generierte HTTP-GET-Anfragen über eine offene TCP-Verbindung | Erfordert keinen HTTP-Antwortcode 200 OK (da er überhaupt keine Antwort verbraucht). Allerdings ist ein Angriff gegen Load Balancer oder WAF möglicherweise nicht effektiv (im Vergleich zu L4 TCP Flood). |
STRESS | L7 | TCP | Sendet eine Folge von HTTP-Anfragen mit großem Textkörper über eine einzelne offene TCP-Verbindung. | Um die Leistung zu maximieren, stellen Sie sicher, dass der Zielhost Pipelining zulässt (Senden einer neuen Anfrage innerhalb einer dauerhaften Verbindung, ohne vorher die Antwort zu lesen). Erfordert keinen HTTP-Antwortcode 200 OK (da die Antwort überhaupt nicht verbraucht wird). Allerdings ist ein Angriff gegen Load Balancer oder WAF möglicherweise nicht effektiv (im Vergleich zu L4 TCP Flood). |
BYPASS | L7 | TCP | Sendet HTTP-Get-Anfragen über eine offene TCP-Verbindung und liest die Antwort zurück. | Das geblockte Lesen erfolgt durch recv -Bytes aus der Verbindung, ohne in eine HTTP-Antwort analysiert zu werden. |
SLOW | L7 | TCP | Ähnlich wie bei STRESS werden HTTP-Anfragen ausgegeben und versucht, die Verbindung aufrechtzuerhalten, indem ein einzelnes Byte zurückgelesen und zusätzliche Nutzdaten mit Zeitverzögerungen zwischen den Sendevorgängen gesendet werden. | Idealerweise sollte die Zeitverzögerung richtig eingerichtet werden, um zu verhindern, dass die Verbindung aufgrund einer Lesezeitüberschreitung vom Peer zurückgesetzt wird (abhängig von der Peer-Einrichtung). |
CFBUAM | L7 | TCP | Sendet ein einzelnes HTTP-GET und sendet nach einer langen Verzögerung weitere Anfragen über dieselbe TCP-Verbindung. | |
AVB | L7 | TCP | Gibt HTTP-GET-Pakete in eine offene Verbindung mit langen Verzögerungen zwischen den Sendevorgängen aus. Um zu verhindern, dass die Verbindung aufgrund eines Lese-Timeouts vom Peer zurückgesetzt wird, ist die maximale Verzögerung auf 1 Sekunde eingestellt. |
Durch die Konfiguration einer Reihe von Proxyservern können verteilte Angriffe simuliert werden, selbst wenn das Toolkit auf einem einzelnen Computer ausgeführt wird. Wenn Proxys verfügbar sind, stellt fiberfox
zuerst eine Verbindung zu ihnen her und stellt von diesen Maschinen aus Verbindungen zum Ziel her. Auf diese Weise kann das System die einfachsten IP-Blocking-Schutzmaßnahmen umgehen. Das Toolkit unterstützt die Protokolle HTTP/SOCKS4/SOCS5 und Benutzer-/Passwort-Authentifizierung. Es verwaltet außerdem dynamisch eine Reihe bereitgestellter Proxys, um die Verwendung solcher Proxys zu vermeiden, die nicht reagieren oder die Angriffsanforderungen nicht erfüllen.
Bei der Verwendung von Proxys müssen Sie einige Überlegungen beachten:
Der Erfolg des durchgeführten Angriffs hängt nun teilweise von der Kapazität der Proxyserver ab. Wenn beispielsweise öffentliche Proxys verwendet werden, kann die Netzwerkrate niedrig sein, weil der Proxy überfüllt ist. Erwägen Sie in diesem Fall die Nutzung einer privaten Infrastruktur oder kostenpflichtiger Cluster dedizierter Proxyserver.
Proxyserver selbst könnten einige Angriffsvektoren abschwächen. Wenn Sie beispielsweise den Ansatz „langsame Verbindung“ verwenden, könnte der Proxyserver so konfiguriert werden, dass er die Verbindung drosselt oder schließt. Dadurch wird gewissermaßen das Ziel „geschützt“. Bedenken Sie, wie die Proxy-Einrichtung in die Angriffsmechanismen (Netzwerk, Protokolle usw.) eingreift.
Eines der Ziele des Toolkits ist die Bereitstellung umfassender Überwachungsinformationen als Leitfaden für die Suche nach Schwachstellen.
Das Tool meldet die Anzahl der Statistiken für jedes Ziel: Anzahl der Pakete, Datenverkehr und Rate. Bei TCP-basierten Angriffen (sowohl L4 als auch L7) wird außerdem ein Histogramm der innerhalb einer einzelnen Sitzung gesendeten Pakete gemeldet (Sitzung bedeutet hier Datenverkehr, der innerhalb einer einzelnen offenen Verbindung gesendet wird). Idealerweise sollte das Histogramm nach links geneigt sein. Dies bedeutet, dass der Peer die Verbindung schließt, bevor Pakete mit der Bezeichnung „Anfragen pro Verbindung“ gesendet wurden. Wenn es hauptsächlich auf der rechten Seite ist, akzeptiert das Ziel etwas, das als „Müllverkehr“ betrachtet werden sollte.
Seien Sie vorsichtig bei der Analyse. Niedrige Netzwerkrate, hohe Häufigkeit von Verbindungsversuchen, hohe Fehlerrate und mehr. Alle diese Signale könnten sowohl darauf hinweisen, dass das Ziel dem Angriff standhaft bleibt, als auch darauf, dass es bereits tot ist. Um ein vollständiges Verständnis des Schutzniveaus zu erhalten, sollten Sie Überwachungsinformationen auf der Zielseite verwenden (z. B. die Fähigkeit, bei Herausforderungen ordnungsgemäß zu funktionieren).
Beachten Sie, dass die ausgehende Rate ungefähr angezeigt wird. Die Zeitmessung für das Senden jedes Pakets umfasst Planungsverzögerungen (für Glasfasern) und Auswahl/Pooling. In den meisten Fällen sind diese vernachlässigbar. Seien Sie jedoch bei der Analyse vorsichtig, wenn Sie mehr als 10.000 Fasern verwenden.
feature-*
Zweig, um mit der Durchführung Ihrer Änderungen zu beginnen. Veröffentlichung unter der MIT-Lizenz. Die vollständige Lizenz finden Sie unter LIZENZ.
████
████▒▒██
████ ▒▒██
██▒▒ ▒▒▒▒▒▒██
██▒▒██ ██
████ ██▒▒██ ██
██▒▒▒▒██████ ██▒▒██ ▒▒ ████
██▒▒▒▒██ ████ ██████▒▒▒▒▒▒██ ▒▒▒▒██████████████
██▒▒ ████▒▒▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒████
██▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████
██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒████▒▒▒▒▒▒▒▒██
████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒████▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
████ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ████▒▒▒▒▒▒▒▒▒▒ ██ ▒▒ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒██
██ ██ ████ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ██▒▒██ ▒▒ ▒▒▒▒▒▒▒▒▒▒██
██████████████████████▒▒▒▒██ ▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒██ ▒▒▒▒██
██▒▒▒▒ ██▒▒▒▒▒▒▒▒████ ▒▒▒▒██
██▒▒▒▒▒▒██▒▒▒▒▒▒██ ██ ██
██████▒▒▒▒▒▒██ ██ ████
██████ ██ ██████
██ ████
██████