# Crash Test — installer les outils gratuits et commencer les tests web

Vérification documentaire : **28 octobre 2026**. Ce guide concerne les **sites web des mairies**. Les outils Active Directory sont documentés séparément parce qu’ils figuraient dans la demande ; ils ne sont pas nécessaires pour tester un site public.

**Statut : procédures vérifiées, outils à installer sur la machine choisie.** Un lien dans Crash Test ou un fichier de configuration ne signifie pas qu’un moteur est installé, démarré ou qu’un audit a été réalisé. Les procédures ci-dessous n’ont lancé aucun test contre une mairie et aucune collecte Active Directory.

## 1. Choisir la pile utile

Pour un premier essai, utiliser **ZAP pour les observations de sécurité web et k6 pour une mesure de performance limitée**. JMeter peut remplacer k6 si une interface de conception des scénarios est préférable. Ajouter ensuite **Dradis CE ou Faraday Community** pour regrouper les résultats ; il n’est pas nécessaire de déployer les deux pour commencer.

Le lanceur local du projet se trouve dans `audit-lab/lab.py`. Son [guide d’exécution](../audit-lab/README.md) précise les dépendances et les rapports produits. Depuis le dossier `audit-lab`, le parcours prévu est :

```sh
python3 lab.py start
python3 lab.py demo
python3 lab.py stop
```

`demo` cible le laboratoire du pack : analyse ZAP passive, puis k6 avec **1 utilisateur virtuel pendant 20 secondes**. Le mode `active-demo` est séparé et vise une cible de laboratoire figée. Pour un site autorisé, l’interface du lanceur est `python3 lab.py website-baseline URL --authorized` ; remplacer `URL` par le périmètre effectivement approuvé. Le drapeau `--authorized` atteste l’accord de l’opérateur ; il ne crée pas une autorisation à lui seul. Le README fait foi pour l’état et les limites de cette version du pack.

| Outil / édition | Utilité réelle | Gratuité et licence | Statut de ce guide |
|---|---|---|---|
| ZAP | Proxy d’analyse et scanner web ; rapports | Libre, Apache-2.0 | À installer ; priorité web |
| Grafana k6 local | Mesures de temps de réponse, erreurs et charge | Libre, AGPL-3.0 ; le service Grafana Cloud est une offre distincte | À installer ; premier choix pour la performance |
| Apache JMeter | Scénarios de performance HTTP et rapports HTML | Libre, Apache-2.0 | À installer si choisi à la place de k6 |
| Greenbone Community Edition / OpenVAS | Recherche de vulnérabilités sur les services et systèmes d’un serveur | Composants sous licences libres ; édition et flux communautaires distincts des offres Enterprise | À installer ; complément d’infrastructure |
| Dradis Community Edition | Organisation des constats, preuves et rapports | Libre, GPLv2 ; capacités Pro distinctes | À installer si nécessaire |
| Faraday Community | Centralisation et suivi des résultats de différents outils | Libre, GPLv3 pour le dépôt Community ; offres commerciales distinctes | À installer si nécessaire |
| BloodHound Community Edition | Analyse des relations de droits et chemins d’attaque d’un environnement d’identité | Libre, Apache-2.0 pour le dépôt CE, sauf composants signalés autrement | À installer uniquement pour un besoin interne distinct |
| PingCastle Community | Évaluation de configuration Active Directory / Entra ID | Gratuité conditionnelle ; source sous Non-Profit OSL 3.0, restrictions de prestation commerciale et expiration du binaire | À installer uniquement pour un besoin interne distinct |

Licences et périmètres : [ZAP](https://github.com/zaproxy/zaproxy), [k6](https://github.com/grafana/k6), [JMeter](https://jmeter.apache.org/), [Greenbone](https://greenbone.github.io/docs/latest/background.html), [Dradis CE](https://dradis.com/ce/), [Faraday LICENSE](https://github.com/infobyte/faraday/blob/master/LICENSE), [BloodHound](https://github.com/SpecterOps/BloodHound), [PingCastle](https://pingcastle.com/download/).

## 2. Machine et coûts à prévoir

Les moteurs fonctionnent sur un poste, une machine virtuelle ou un serveur. **Une page web statique hébergée ne peut pas faire tourner ces applications et leurs bases de données.** Le navigateur peut afficher leur interface ou leurs rapports lorsque les services correspondants existent.

Pour une pile sans abonnement Docker Desktop, choisir **Linux avec Docker Engine et le plugin Compose**. Docker précise que **Docker Desktop exige un abonnement pour les entités publiques**. La gratuité des outils d’audit ne rend donc pas automatiquement tout leur environnement gratuit. [Conditions Docker Desktop](https://docs.docker.com/subscription-billing/desktop-license) · [Installation officielle Docker Engine sous Ubuntu](https://docs.docker.com/engine/install/ubuntu/).

| Outil | Prérequis vérifiés | RAM et disque publiés dans les sources consultées |
|---|---|---|
| ZAP | Application Windows/Linux/macOS ; Java 17+ sous Windows/Linux, Java inclus dans le paquet macOS ; image Docker disponible | Pas de minimum universel RAM/disque dans la page de téléchargement ; les besoins dépendent du parcours et des données conservées |
| k6 | Binaire Linux/macOS/Windows ou conteneur ; aucun compte Cloud nécessaire pour le binaire local | Pas de minimum universel dans le guide d’installation ; dépend du scénario, des utilisateurs virtuels et des réponses |
| JMeter | Java 8+ selon le manuel ; choisir un Java encore maintenu et compatible avec la version téléchargée | Tas Java par défaut : 1 Go ; ce n’est pas une recommandation de RAM totale de la machine |
| Greenbone Community | Linux, Docker/Compose, connaissances d’administration | Minimum : 2 cœurs, 4 Go RAM, 20 Go libres ; recommandé : 4 cœurs, 8 Go RAM, 60 Go libres |
| BloodHound CE | Conteneurs et bases de données ; CLI officielle pour l’installation | Minimum : 4 cœurs, 8 Go RAM, 10 Go disque ; beaucoup plus pour de grands annuaires |
| PingCastle Community | Binaire autonome ; depuis 3.5, runtime .NET 8 embarqué ; système compatible ; un compte AD et un accès réseau sont nécessaires pour une collecte AD | Aucun minimum RAM/disque chiffré dans le guide consulté |
| Dradis CE | Image Docker officielle ou environnement Ruby pour une installation depuis Git | Pas de minimum CE chiffré trouvé dans les pages CE consultées ; ne pas lui attribuer les prérequis de Dradis Pro |
| Faraday Community | Linux 64 bits amd64 ; Docker Engine 20.10+ et Compose v2 ; PostgreSQL/Redis inclus dans la pile Docker | Minimum : 4 cœurs à 2 GHz, 4 Go RAM, 40 Go disque ; recommandé : 8 Go RAM, 80 Go disque |

Sources : [ZAP téléchargement](https://www.zaproxy.org/download/), [installation k6](https://grafana.com/docs/k6/latest/set-up/install-k6/), [manuel JMeter](https://jmeter.apache.org/usermanual/get-started.html), [Greenbone conteneurs](https://greenbone.github.io/docs/latest/22.4/container/), [BloodHound prérequis](https://bloodhound.specterops.io/get-started/custom-installation), [PingCastle 4.0](https://docs.netwrix.com/docs/pingcastle/4_0), [Dradis CE](https://dradis.com/ce/), [Faraday prérequis](https://docs.faradaysec.com/requirements/).

Les chiffres de plusieurs applications ne constituent pas le dimensionnement d’une machine qui les exécuterait simultanément. Le stockage des images, bases, preuves et rapports augmente avec l’usage. L’hébergement, les sauvegardes et le travail d’analyse restent à prévoir.

## 3. ZAP : commencer par les observations web

Installer le paquet de son système depuis [la page officielle](https://www.zaproxy.org/download/) ou préparer l’image officielle :

```sh
docker pull ghcr.io/zaproxy/zaproxy:stable
docker run --rm ghcr.io/zaproxy/zaproxy:stable zap-baseline.py -h
```

Ces commandes téléchargent le moteur et affichent son aide ; elles ne désignent aucune cible.

Dans l’application graphique, commencer par **Manual Explore** sur une application locale de test ou une préproduction autorisée. Parcourir les pages représentatives, attendre l’analyse passive, puis consulter les alertes. Le bouton de test automatique peut déclencher une analyse active : il ne correspond pas au même niveau d’intervention. [Fonctionnement du démarrage ZAP](https://www.zaproxy.org/docs/desktop/start/).

Le mode **Baseline** explore le site et analyse passivement les réponses. Il produit notamment des rapports HTML et JSON. Il envoie néanmoins des requêtes de navigation : « passif » décrit les règles d’analyse, pas une absence de trafic. Une alerte doit être vérifiée avant de conclure à une vulnérabilité exploitable. [Documentation Baseline](https://www.zaproxy.org/docs/docker/baseline-scan/).

## 4. k6 ou JMeter : mesurer les performances

### k6 — choix initial conseillé

Utiliser [l’installateur officiel ou les binaires publiés](https://grafana.com/docs/k6/latest/set-up/install-k6/), ou le conteneur :

```sh
docker pull grafana/k6
docker run --rm grafana/k6 version
```

Pour un binaire natif, vérifier avec `k6 version`. Sous macOS, le guide propose `brew install k6` ; sous Windows, `winget install k6 --source winget`. Sous Debian/Ubuntu, suivre les instructions officielles d’ajout du dépôt signé.

Le premier scénario devrait contenir **un utilisateur virtuel, une seule itération et une requête GET** vers la cible de laboratoire définie dans le pack. Vérifier l’URL et la réponse avant d’augmenter quoi que ce soit. Mesurer les durées et erreurs ; une seule requête ne mesure pas la capacité d’accueil. Une montée en charge constitue un essai séparé, avec limites convenues et suivi du serveur.

### JMeter — alternative

Télécharger l’archive binaire depuis [Apache JMeter](https://jmeter.apache.org/download_jmeter.cgi), vérifier son empreinte publiée, extraire, puis lancer `bin/jmeter` sous Linux/macOS ou `bin/jmeter.bat` sous Windows. La commande `bin/jmeter -v` vérifie le lancement sans lancer de scénario.

Construire un plan minimal avec **1 thread, 1 boucle et 1 requête HTTP GET** vers le laboratoire. L’interface sert à créer et vérifier le plan. Pour les essais de charge, utiliser le mode en ligne de commande ; les résultats peuvent être conservés en CSV et transformés en rapport HTML. [Manuel JMeter](https://jmeter.apache.org/usermanual/get-started.html).

**k6 et JMeter mesurent des comportements et performances ; un résultat rapide ne prouve pas que le site résiste à une intrusion.** Pour le premier essai, choisir l’un des deux évite de doubler la configuration.

## 5. Greenbone Community : complément sur le serveur

La pile officielle utilise plusieurs conteneurs et les données du flux communautaire. Prévoir le temps de téléchargement et d’import avant de considérer l’installation prête. Le guide Greenbone de conteneurisation est destiné à la découverte et aux essais, pas à un déploiement de production sans adaptation.

Dans un répertoire dédié, avec Docker Engine/Compose déjà fonctionnels :

```sh
mkdir -p greenbone-community
cd greenbone-community
curl -fL https://greenbone.github.io/docs/latest/_static/compose.yaml -o compose.yaml
docker compose pull
docker compose up -d
```

Suivre ensuite les sections officielles de création du compte administrateur et de chargement des flux. La documentation actuelle ouvre GSA sur `https://127.0.0.1`. Vérifier l’état des services et des données avant toute définition de cible. [Procédure officielle complète](https://greenbone.github.io/docs/latest/22.4/container/).

Pour un site municipal chez un hébergeur mutualisé, l’autorisation portant sur un domaine ne couvre pas automatiquement tous les services de l’adresse IP partagée. Greenbone reste donc une étape d’infrastructure à cadrer avec l’exploitant. Il ne remplace pas l’analyse des parcours applicatifs avec ZAP.

## 6. Dradis CE : assembler les constats et rapports

Pour une prise en main locale avec l’image indiquée par l’éditeur :

```sh
docker pull dradis/dradis-ce:latest
docker run -it --name crash-test-dradis -p 127.0.0.1:3000:3000 dradis/dradis-ce:latest
```

Ouvrir `http://127.0.0.1:3000`. Le conteneur nommé est conservé ; ne pas le supprimer en pensant que les données sont automatiquement sauvegardées. Prévoir la sauvegarde et la persistance avant un usage régulier. [Image et démarrage officiels](https://discover.dradis.com/thank-you-ce) · [Installation depuis Git](https://dradis.com/ce/documentation/).

CE est gratuite sous GPLv2 et permet d’importer les sorties d’outils, d’ajouter les preuves et de produire des rapports standards. L’éditeur indique un fonctionnement sur un projet à la fois et des modèles non personnalisés à la marque ; les fonctions avancées de Pro sont distinctes. [Périmètre CE](https://dradis.com/ce/).

Premier contrôle utile : importer un rapport de laboratoire, vérifier ses constats, ajouter une preuve puis produire un rapport. Dradis organise les résultats ; il ne démontre pas lui-même l’exploitation d’une faille.

## 7. Faraday Community : centraliser et suivre les résultats

La méthode officielle recommandée est Docker Compose :

```sh
mkdir -p faraday-community
cd faraday-community
curl -fL https://raw.githubusercontent.com/infobyte/faraday/master/docker-compose.yaml -o docker-compose.yaml
```

Pour ce poste de travail local, examiner les ports publiés dans le fichier avant de démarrer : limiter le port applicatif à `127.0.0.1:5985:5985` et conserver les bases de données sur le réseau interne des conteneurs. Puis :

```sh
docker compose up -d
docker compose ps
```

Ouvrir `http://127.0.0.1:5985`. La procédure officielle explique comment récupérer localement le mot de passe initial généré pour `faraday` ; ne pas le copier dans les rapports. La pile inclut PostgreSQL, Redis et les services de traitement. [Installation Community](https://docs.faradaysec.com/Install-guide-community/) · [Guide Compose](https://docs.faradaysec.com/Install-guide-Docker/).

Importer d’abord un résultat de laboratoire, vérifier sa normalisation et son rattachement au bon espace de travail. L’existence d’un connecteur n’implique pas qu’un scan s’est exécuté. Le dépôt Community est sous GPLv3 ; les fonctions des éditions commerciales ne sont pas promises dans cette installation. [Dépôt et licence](https://github.com/infobyte/faraday).

## 8. BloodHound CE et PingCastle : usage interne distinct

### BloodHound CE

BloodHound représente les relations de droits d’un environnement d’identité. **Le nom de domaine du site public ne fournit pas les données de l’annuaire interne.**

Télécharger la CLI correspondant à son architecture depuis [les versions officielles](https://github.com/SpecterOps/bloodhound-cli/releases). Après extraction, sur la machine destinée aux conteneurs :

```sh
./bloodhound-cli install
```

La CLI initialise les services. Le guide indique `http://localhost:8080/ui/login` et un mot de passe initial généré. Pour vérifier l’installation sans interroger un réseau, utiliser uniquement les données d’exemple officielles, clairement identifiées comme données de laboratoire. Aucune collecte SharpHound/AzureHound n’est incluse dans ce guide. [Installation et données d’exemple](https://bloodhound.specterops.io/get-started/quickstart/community-edition-quickstart).

### PingCastle Community

Télécharger depuis [la page officielle, désormais reliée à Netwrix](https://pingcastle.com/download/), extraire l’archive, vérifier la signature du binaire puis afficher son aide :

```powershell
.\PingCastle.exe --help
```

Le runtime .NET 8 est embarqué depuis la version 3.5. Une véritable évaluation AD nécessite un compte et l’accès à l’annuaire ; cette préparation ne les utilise pas. [Guide officiel 4.0](https://docs.netwrix.com/docs/pingcastle/4_0).

**Limite de gratuité :** l’éditeur permet à une organisation d’évaluer gratuitement ses propres systèmes. Une prestation d’audit d’autres organisations exige une licence adaptée. Le code source sous Non-Profit OSL 3.0 n’offre pas les mêmes libertés commerciales que les autres licences libres du tableau. [Conditions de téléchargement](https://pingcastle.com/download/) · [Éditions](https://pingcastle.com/editions/).

Le guide 4.0 indique également une date d’expiration intégrée au binaire, affichée comme fin de support, et des licences payantes pour continuer après expiration. Vérifier la version effectivement téléchargée : **ne pas promettre un usage gratuit illimité dans le temps**. [Licence et expiration](https://docs.netwrix.com/docs/pingcastle/4_0).

## 9. Déroulement du premier essai web

1. Vérifier les versions des moteurs retenus et le démarrage du laboratoire local fourni avec le pack. Garder la cible locale pendant la validation de l’installation.
2. Exécuter le parcours d’observation ZAP prévu par le pack, conserver le rapport et les URL réellement parcourues.
3. Vérifier une seule requête avec k6 **ou** JMeter. Conserver le statut HTTP, la durée et les erreurs éventuelles.
4. Relire les constats : distinguer anomalie observée, alerte à confirmer et vulnérabilité effectivement démontrée. Un scan sans alerte ne garantit pas l’absence de faille.
5. Pour passer au site municipal, fixer avec son responsable et son hébergeur le domaine exact, les parcours, le créneau, les limites de trafic et les conditions d’arrêt. Commencer par la préproduction lorsqu’elle existe.
6. Exporter un rapport qui précise la date, la cible, les versions, les contrôles réellement effectués, leurs limites, les preuves et les corrections proposées. Rejouer les contrôles concernés après correction.

L’interface Crash Test doit conserver des états distincts : **à installer**, **installé et vérifié**, **test en cours**, **rapport disponible**. Elle ne doit afficher « testé » que lorsqu’un résultat réel, daté et rattaché à la bonne cible a été reçu.
