← retour aux outils back to tools

# 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/GoldenEye

## Overview

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