Boîte à outils de test de vulnérabilité (D)DoS hautes performances. Implémente divers vecteurs d'attaque L4/7. L'approche asynchrone de la mise en réseau permet de réduire les besoins en CPU/RAM tout en effectuant des interactions réseau même complexes.
NOTE ? La boîte à outils ne dispose pas des fonctionnalités nécessaires pour tester correctement les performances des serveurs ou des réseaux cibles. L’objectif est de comprendre le niveau de protection, en effectuant des attaques spécialement conçues pour exploiter les pièges courants et contourner les mesures de protection courantes.
AVERTISSEMENT ❗ Ne testez pas l'infrastructure (serveurs, sites Web, périphériques réseau, etc.) sans le consentement du propriétaire. Les paramètres par défaut du package sont ajustés pour éviter un impact involontaire important lors de l’exécution des tests.
Inspiré du projet MHDDoS.
Depuis PyPI :
$ pip install fiberfox
À partir des sources :
$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ python setup.py install
Créer une image Docker :
$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ docker build -t fiberfox .
Exemple:
$ 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
Caractéristiques:
--concurrency
(ou -c
) définit le nombre de coroutines asynchrones à exécuter. La fibre ne crée pas de nouveau thread de système d'exploitation, vous pouvez donc en exécuter un grand nombre avec une surcharge insignifiante. Pour les vecteurs d'attaque TCP, le nombre de fibres correspond à peu près au nombre maximum de connexions TCP ouvertes. Pour les attaques UDP, l’utilisation d’un trop grand nombre de fibres diminue généralement les performances.SLOW
ou CONNECTIONS
), assurez-vous de configurer plus de fibres que vous n'avez de cibles.Plus de documentation sur les drapeaux :
$ 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)
Un vecteur d'attaque est défini par l'option --strategy
lors de l'exécution du script.
Remarque : le package est en cours de développement actif, d'autres méthodes seront bientôt ajoutées.
Les attaques L4 sont conçues pour cibler les couches de transport et sont donc principalement utilisées pour surcharger les capacités du réseau. Nécessite une connaissance minimale de la cible.
Stratégie | Couche | Transport | Conception | Remarques |
---|---|---|---|---|
UDP | L4 | UDP | Inondation simple : envoie des paquets UDP générés aléatoirement à la cible | Limite automatiquement la fibre lors de la réception de NO_BUFFER_AVAILABLE du périphérique réseau. Pour éviter que cela ne se produise, ne configurez pas plus de 2 fibres par cible lors du test d'une attaque par inondation UDP. |
TCP | L4 | TCP | Inondation simple : envoie des paquets TCP RPC générés de manière aléatoire dans une connexion TCP ouverte. | Prend en charge la configuration de la taille d'un seul paquet et du nombre de paquets à envoyer dans chaque connexion ouverte. |
CONNECTION | L4 | TCP | Ouvre les connexions TCP et les maintient actives le plus longtemps possible. | Pour être efficace, ce type d’attaque nécessite un nombre de fibres plus élevé que d’habitude. Notez que les serveurs modernes sont assez efficaces pour gérer les connexions ouvertes et inactives. |
Une classe spéciale d'attaques L4.
UDP est un protocole sans connexion. Il ne valide pas l'adresse IP source à moins qu'un traitement explicite ne soit effectué par la couche application. Cela signifie qu'un attaquant peut facilement falsifier le datagramme pour inclure une adresse IP source arbitraire. Souvent, le protocole d'application est conçu de manière à ce que le paquet généré en réponse soit beaucoup plus volumineux, ce qui crée un effet d'amplification (d'où son nom). En envoyant un tel datagramme à de nombreux serveurs différents (réflecteurs), l'attaquant peut générer un trafic important vers l'appareil cible (victime).
Attaques d'amplification mises en œuvre :
Stratégie | Protocole | Facteur d'amplification | Vulnérabilité |
---|---|---|---|
RDP | Protocole de bureau à distance (RDP) | ||
CLDAP | Protocole d'accès à l'annuaire léger sans connexion (CLDAP) | 56 ans 70 | |
MEM | Memcaché | 10 000 à 50 000 | |
CHAR | Protocole générateur de caractères (CHARGEN) | 358,8 | Demande de génération de caractères |
ARD | Bureau à distance Apple (ARD) | ||
NTP | Protocole de temps réseau (NTP) | 556.9 | TA14-013A |
DNS | Système de noms de domaine (DNS) | 28 à 54 | TA13-088A |
Toutes les attaques par amplification nécessitent la fourniture d’une liste de serveurs de réflexion.
Les attaques L7 sont conçues pour exploiter les faiblesses des protocoles de la couche application ou des détails d'implémentation spécifiques des applications (ou des noyaux du système d'exploitation). Généralement plus puissant mais peut nécessiter une connaissance du fonctionnement du système ciblé.
Stratégie | Couche | Transport | Conception | Remarques |
---|---|---|---|---|
GET | L7 | TCP | Envoie des requêtes HTTP GET générées aléatoirement via une connexion TCP ouverte | Ne nécessite pas de code de réponse HTTP 200 OK (car il ne consomme pas du tout de réponse). Bien que l'attaque effectuée contre l'équilibreur de charge ou le WAF puisse ne pas être efficace (par rapport à l'inondation TCP L4). |
STRESS | L7 | TCP | Envoie une séquence de requêtes HTTP avec un corps volumineux sur une seule connexion TCP ouverte. | Pour optimiser les performances, assurez-vous que l'hôte cible autorise le pipeline (envoi d'une nouvelle requête au sein d'une connexion persistante sans lire la réponse au préalable). Ne nécessite pas de code de réponse HTTP 200 OK (car il ne consomme pas du tout la réponse). Bien que l'attaque effectuée contre l'équilibreur de charge ou le WAF puisse ne pas être efficace (par rapport à l'inondation TCP L4). |
BYPASS | L7 | TCP | Envoie des requêtes HTTP get via une connexion TCP ouverte, lit la réponse. | La lecture fragmentée est effectuée par les octets recv de la connexion, sans analyse dans la réponse HTTP. |
SLOW | L7 | TCP | De la même manière que STRESS, émet des requêtes HTTP et tente de maintenir la connexion utilisée en relisant un seul octet et en envoyant une charge utile supplémentaire avec des délais entre les opérations d'envoi. | Idéalement, le délai doit être configuré correctement pour éviter que la connexion ne soit réinitialisée par le homologue en raison d'un délai de lecture (dépend de la configuration du homologue). |
CFBUAM | L7 | TCP | Envoie un seul HTTP GET, après un long délai, émet plus de requêtes sur la même connexion TCP. | |
AVB | L7 | TCP | Émet des paquets HTTP GET dans une connexion ouverte avec de longs délais entre les opérations d'envoi. Pour éviter que la connexion ne soit réinitialisée par le homologue en raison d'un délai de lecture, le délai maximum est fixé à 1 seconde. |
En configurant un ensemble de serveurs proxy, on peut simuler une attaque distribuée même en exécutant la boîte à outils à partir d'une seule machine. Lorsque des proxys sont disponibles, fiberfox
s'y connecte en premier et établit des connexions vers la cible à partir de ces machines. Ce faisant, le système peut contourner les mesures de protection IP les plus simples. La boîte à outils prend en charge les protocoles HTTP/SOCKS4/SOCS5 et l'authentification utilisateur/mot de passe. Il gère également de manière dynamique un ensemble de proxys fournis pour éviter d'utiliser ceux qui ne répondent pas ou ne répondent pas aux exigences d'attaque.
Lors de l'utilisation de proxys, vous devez garder à l'esprit quelques considérations :
Le succès de l'attaque réalisée dépend désormais en partie de la capacité des serveurs proxy. Par exemple, lors de l'utilisation de proxys publics, le débit du réseau peut être faible car le proxy est surpeuplé. Dans ce cas, envisagez d'utiliser une infrastructure privée ou des clusters payants de serveurs proxy dédiés.
Les serveurs proxy eux-mêmes peuvent atténuer quelques vecteurs d'attaque. Par exemple, lors de l'utilisation de l'approche « connexion lente », le serveur proxy peut être configuré pour limiter ou fermer la connexion. En quelque sorte « protéger » la cible en agissant ainsi. Soyez conscient de la manière dont la configuration du proxy intervient dans les mécanismes d'attaque (réseau, protocoles, etc.).
L'un des objectifs de la boîte à outils est de fournir des informations de surveillance complètes pour guider la recherche de vulnérabilités.
L'outil rapporte le nombre de statistiques pour chaque cible : nombre de paquets, trafic et débit. Pour les attaques basées sur TCP (L4 et L7), il rapporte également un histogramme des paquets envoyés au sein d'une seule session (session signifie ici le trafic envoyé au sein d'une seule connexion ouverte). Idéalement, l’histogramme devrait être incliné vers la gauche. Cela signifie que l'homologue ferme la connexion avant l'envoi des paquets « requêtes par connexion ». Si elle se situe principalement à droite, la cible accepte ce qui devrait être considéré comme un « trafic de déchets ».
Soyez prudent avec l'analyse. Faible débit réseau, fréquence élevée de tentatives de connexion, taux d’erreur élevé, etc. Tous ces signaux peuvent indiquer à la fois que la cible reste forte face à l'attaque et qu'elle est déjà morte. Pour bien comprendre le niveau de protection, vous devez utiliser les informations de surveillance du côté cible (par exemple, la capacité à fonctionner correctement en cas de défi).
Notez que le taux sortant est affiché approximativement. La mesure du temps d'envoi de chaque paquet comprend les délais de planification (pour les fibres) et la sélection/le regroupement. Dans la plupart des cas, ceux-ci sont négligeables. Soyez cependant prudent avec l'analyse lorsque vous utilisez plus de 10 000 fibres.
feature-*
pour commencer à apporter vos modifications. Sortie sous licence MIT. Voir LICENCE pour la licence complète.
████
████▒▒██
████ ▒▒██
██▒▒ ▒▒▒▒▒▒██
██▒▒██ ██
████ ██▒▒██ ██
██▒▒▒▒██████ ██▒▒██ ▒▒ ████
██▒▒▒▒██ ████ ██████▒▒▒▒▒▒██ ▒▒▒▒██████████████
██▒▒ ████▒▒▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒████
██▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████
██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒████▒▒▒▒▒▒▒▒██
████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒████▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
████ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ████▒▒▒▒▒▒▒▒▒▒ ██ ▒▒ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒██
██ ██ ████ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ██▒▒██ ▒▒ ▒▒▒▒▒▒▒▒▒▒██
██████████████████████▒▒▒▒██ ▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒██ ▒▒▒▒██
██▒▒▒▒ ██▒▒▒▒▒▒▒▒████ ▒▒▒▒██
██▒▒▒▒▒▒██▒▒▒▒▒▒██ ██ ██
██████▒▒▒▒▒▒██ ██ ████
██████ ██ ██████
██ ████
██████