GoldenEye
Outil de test de déni de service HTTP couche 7 qui inonde une cible de requêtes keep-alive sans cache pour épuiser les pools de connexions. HTTP Layer 7 denial-of-service testing tool that floods a target with keep-alive, no-cache requests to exhaust connection pools.
↗ https://github.com/jseidl/GoldenEyeOverview
GoldenEye is a Python-based HTTP DoS testing tool that opens a large number of connections and keeps them alive with randomized headers and Cache-Control: no-cache requests, aiming to exhaust a web server’s or load balancer’s available worker threads/connections. It’s used in authorized load/resilience testing to validate that rate limiting, WAF, or connection-limiting defenses actually hold under an L7 flood.
Common Usage
Basic flood against a target URL
python3 goldeneye.py http://<target>
Specify number of worker threads
python3 goldeneye.py http://<target> -w 50
Specify number of concurrent sockets per worker
python3 goldeneye.py http://<target> -s 30
Use a specific HTTP method
python3 goldeneye.py http://<target> -m random
Run for a fixed duration then stop
python3 goldeneye.py http://<target> -w 50 -s 30 -d 300
Tips
- Only ever run against systems you are explicitly authorized to load-test — an L7 flood can and will take a service down
- Coordinate with the blue team / infra owner beforehand; goldeneye traffic is easy to mistake for a real attack in SIEM/alerting
- Watch server-side connection counts (
ss -s, load balancer dashboards) during the test to correlate observed impact with request volume - Compare results against a WAF/rate-limiter-enabled vs disabled run to demonstrate the control’s actual effectiveness
Help / Man page
usage: goldeneye.py [-h] [-u USERAGENTS] [-w WORKERS] [-s SOCKETS]
[-m METHOD] [-d DEBUG] url
positional arguments:
url URL to attack, e.g. http://target/
optional arguments:
-h, --help show this help message and exit
-u USERAGENTS Path to file containing user-agent strings
-w WORKERS Number of concurrent worker threads (default: 10)
-s SOCKETS Number of concurrent sockets per worker (default: 30)
-m METHOD HTTP method: get, post, random (default: get)
-d DEBUG Enable debug output
Vue d’ensemble
GoldenEye est un outil de test de DoS HTTP écrit en Python qui ouvre un grand nombre de connexions et les maintient actives avec des headers aléatoires et des requêtes Cache-Control: no-cache, dans le but d’épuiser les threads de travail/connexions disponibles d’un serveur web ou d’un load balancer. Il est utilisé dans des tests de charge/résilience autorisés pour valider que le rate limiting, le WAF ou les défenses de limitation de connexions tiennent réellement sous une inondation L7.
Utilisation courante
# Inondation basique contre une URL cible
python3 goldeneye.py http://<target>
# Spécifier le nombre de threads de travail
python3 goldeneye.py http://<target> -w 50
# Spécifier le nombre de sockets concurrents par worker
python3 goldeneye.py http://<target> -s 30
# Utiliser une méthode HTTP spécifique
python3 goldeneye.py http://<target> -m random
# Lancer pour une durée fixe puis s'arrêter
python3 goldeneye.py http://<target> -w 50 -s 30 -d 300
Conseils
- Ne lancer que contre des systèmes pour lesquels une autorisation explicite de test de charge a été donnée : une inondation L7 peut et va faire tomber un service
- Coordonner avec la blue team / le propriétaire de l’infra au préalable ; le trafic goldeneye est facile à confondre avec une vraie attaque dans un SIEM/système d’alerte
- Surveiller le nombre de connexions côté serveur (
ss -s, tableaux de bord du load balancer) pendant le test pour corréler l’impact observé avec le volume de requêtes - Comparer les résultats entre un run avec WAF/rate-limiter activé et un run sans, pour démontrer l’efficacité réelle du contrôle
Aide / Page de manuel
usage: goldeneye.py [-h] [-u USERAGENTS] [-w WORKERS] [-s SOCKETS]
[-m METHOD] [-d DEBUG] url
positional arguments:
url URL to attack, e.g. http://target/
optional arguments:
-h, --help show this help message and exit
-u USERAGENTS Path to file containing user-agent strings
-w WORKERS Number of concurrent worker threads (default: 10)
-s SOCKETS Number of concurrent sockets per worker (default: 30)
-m METHOD HTTP method: get, post, random (default: get)
-d DEBUG Enable debug output