📖 Documentation du lab Zero-Trust OT

Ce guide te montre pas à pas comment mener les attaques dans les deux terminaux du lab, et te donne des indices à chaque blocage. Garde cette page ouverte à côté du lab (retour au lab).

⚠️ Cadre pédagogique. Tout se passe dans un laboratoire simulé et isolé. Les « attaques » sont de simples requêtes HTTP vers des services qui imitent une usine. Ne réutilise jamais ces gestes sur un système réel sans autorisation écrite.
Sommaire

1. Démarrer & se connecter

  1. Le lab doit tourner : make up dans un terminal de la machine.
  2. Ouvre http://localhost:8088/ (recharge sans cache : Ctrl+Shift+R).
  3. Connecte-toi : saisis ton nom, e-mail et groupe (pas de mot de passe — c'est juste pour enregistrer ta note, transmise au formateur).

Un bandeau affiche ta note /100 et ta progression. Le bouton Objectifs liste ce que tu dois accomplir ; Soumettre ma note envoie ton résultat.

2. Les deux terminaux

Les mêmes commandes, deux mondes. Le bouton Réseau plat / Zero-Trust en haut met en avant l'un ou l'autre.

① Réseau plat (château-fort)

Aucune sécurité, aucun mot de passe : tout réussit, les données fuient. Il montre l'ampleur des dégâts sans Zero-Trust.

② Zero-Trust (protégé)

Un garde (la passerelle PEP/PDP) vérifie identité, rôle, zone, appareil et exige la MFA. C'est ici que se fait l'exercice noté.

Comment taper : clique dans la zone noire, écris la commande, Entrée. Avant chaque action, une ligne ℹ bleue explique ce que fait la commande.

Couleurs : vert = autorisé · rouge = refusé · jaune 🔐 = MFA · violet # = indice · rose = butin volé.

3. Terminal ① Réseau plat — attaque pas à pas

Travaille dans le terminal de gauche (bordure rouge). Tape une commande à la fois, appuie sur Entrée, lis la réponse, puis passe à la suivante. Ici il n'y a aucun garde : chaque commande réussit.

1
Lire la mission

👉 Tape :

mission

🖥️ Tu verras le scénario : tu es sur le même réseau que l'usine, sans aucun obstacle.

💡 Pourquoi : comprendre ton objectif avant d'agir.

2
Reconnaître le réseau

👉 Tape :

scan

🖥️ Résultat : plc … ATTEIGNABLE EN DIRECT, scada … ATTEIGNABLE EN DIRECT.

💡 Pourquoi : sur un réseau plat, aucune segmentation : l'usine est à portée directe.

3
(Facultatif) Constater que les jetons sont inutiles

👉 Tape :

whoami
use tok-admin-it

🖥️ « Aucune authentification requise » / « Jeton ignoré ».

💡 Pourquoi : sans politique, l'identité ne sert à rien — n'importe qui fait n'importe quoi.

4
Attaque physique : ouvrir la vanne

👉 Tape :

open valve

🖥️ ALLOW (aucun contrôle) — « VANNE V-101 OUVERTE, procédé impacté ».

💡 Pourquoi : l'attaquant commande directement la machine physique. C'est le pire scénario.

5
Voler les recettes (secret industriel)

👉 Tape :

export recipes

🖥️ BUTIN — RECETTES DE FABRICATION VOLÉES (liste des produits).

💡 Pourquoi : espionnage industriel : la propriété intellectuelle part sans résistance.

6
Voler le programme de l'automate

👉 Tape :

read program

🖥️ BUTIN — PROGRAMME AUTOMATE VOLÉ (la logique de sécurité).

💡 Pourquoi : connaître le programme permet de préparer une attaque ciblée (type Stuxnet).

7
Récupérer la télémétrie & saboter

👉 Tape :

read sensors
stop line

🖥️ Les valeurs des capteurs, puis « LIGNE ARRÊTÉE ».

💡 Pourquoi : tu lis tout et tu peux interrompre la production. L'usine est à ta merci.

Constat : une fois « à l'intérieur » du château-fort, plus aucun obstacle. Un seul poste compromis = toute l'usine tombe. Refais exactement les mêmes commandes dans le terminal Zero-Trust (ci-dessous) pour voir la différence.

4. Terminal ② Zero-Trust — attaque pas à pas + indices

Travaille dans le terminal de droite (bordure verte). Refais la même attaque, une commande à la fois. Tu pars d'un jeton IT volé (compte de j.durand, rôle admin_it). À chaque refus, lis le principe violé et applique l'indice.

1
Lire la mission

👉 Tape :

mission

🖥️ Tu verras ton objectif : atteindre le procédé et voir ce que tu peux exfiltrer.

💡 Pourquoi : comprendre le but avant d'agir.

2
Qui es-tu ? (identité du jeton volé)

👉 Tape :

whoami

🖥️ j.durand · rôle admin_it · [valide].

💡 Pourquoi : tu as un compte IT — puissant au bureau, mais pas prévu pour l'usine.

3
Reconnaître le réseau

👉 Tape :

scan

🖥️ gateway … ATTEIGNABLE mais plc / scada … INJOIGNABLES.

💡 1ʳᵉ défense — segmentation : depuis le bureau, l'usine « n'existe pas ». Tu es obligé de passer par la passerelle (le garde).
4
Tenter l'action physique (et échouer)

👉 Tape :

open valve

🖥️ DENY · Moindre privilège — le rôle admin_it n'a pas ce droit.

# Indice : ce compte IT n'a que des droits de bureau. Essaie un compte industriel : use tok-operator-ot.
5
Escalader : endosser un compte OT

👉 Tape :

use tok-operator-ot
🔐 Une MFA t'est réclamée — le compte industriel exige un second facteur (code d'application), en plus du badge. Le terminal affiche un code de démo.

💡 Pourquoi : principe « vérifier explicitement » — un mot de passe volé ne suffit pas.

6
Valider la MFA

👉 Tape :

mfa 135790

🖥️ ✓ MFA validée. Sans elle, aucune action n'est acceptée.

💡 Pourquoi : en vrai ce code change toutes les 30 s — non volable avec le simple mot de passe.

7
Réessayer l'ouverture de la vanne

👉 Tape :

open valve

🖥️ DENY · Supposer la compromission — une commande ne peut pas venir de la zone it.

# Indice : change de zone d'origine : set zone ot_supervision.
8
Changer de zone, puis réessayer

👉 Tape :

set zone ot_supervision
open valve

🖥️ DENY · Vérifier explicitement — ton poste est unmanaged (non maîtrisé).

# Indice : présente un poste maîtrisé : set posture managed.
9
Poste maîtrisé → succès

👉 Tape :

set posture managed
open valve
🖥️ ✓ ALLOW — la vanne s'ouvre, le schéma vire au rouge. 💡 Tu n'as réussi qu'en réunissant jeton valide + MFA + rôle + zone + posture. Rate une seule condition → refus. C'est ça, le Zero-Trust.
10
Ce que tu peux voler…

👉 Tape :

read sensors

🖥️ BUTIN : télémétrie réelle des capteurs (LT-101, TT-102…).

💡 Pourquoi la lecture RÉUSSIT en Zero-Trust ?
Ce n'est pas une faille — c'est voulu. Le Zero-Trust n'interdit pas tout : il applique le moindre privilège. Le rôle que tu as endossé (operator_ot, et même admin_it) a légitimement le droit de LIRE la télémétrie de supervision (READ_SENSORS, READ_METRICS sont dans ses droits de lecture).

Le Zero-Trust ne rend donc pas le jeton volé inutile : il le confine exactement à ce que son rôle a le droit de faire. Résultat : tu obtiens de la lecture (peu sensible), mais jamais le contrôle du procédé sans réunir toutes les conditions, ni les secrets d'ingénierie (voir étape 11). C'est la différence entre « lire une mesure » et « prendre la main sur l'usine ».
11
…et ce que tu NE peux pas voler

👉 Tape :

export recipes

🖥️ DENY — secret industriel protégé pour TOUS les rôles.

Leçon finale : même après une escalade complète, les données d'ingénierie (recettes, programme) ne fuient jamais par le conduit distant. Compare avec le terminal ① où elles partaient sans résistance.

5. Tableau des indices — quel refus, que faire

Message de refusPrincipe Zero-TrustQue faire
Jeton absent/invalideVérifier explicitementuse tok-admin-it
Jeton expiréVérifier en continuprendre un jeton non expiré
MFA requiseVérifier explicitementmfa 135790
Le rôle n'a pas ce droitMoindre privilègeuse tok-operator-ot
Commande interdite depuis cette zoneSupposer la compromissionset zone ot_supervision
Posture insuffisanteVérifier explicitementset posture managed
Donnée d'ingénierie refusée à tousMoindre privilègeimpossible à distance (c'est voulu)

6. Aide-mémoire des commandes

CommandeEffet
help · mission · tokensaide, scénario, badges volés
whoami · scanidentité du jeton · sonde réseau
use <jeton>endosser un badge (admin-it, operator-ot, maintenance, expire)
mfa <code>valider l'authentification forte (démo : 135790)
set zone <zone>it · dmz · ot_supervision · ot_terrain
set posture <p>managed · unmanaged
read metrics|sensors|state|programtenter une lecture
export recipes · read topologytenter une exfiltration
open/close valve · stop/start lineagir sur le procédé
set setpoint <C>changer la consigne de chauffe
status · clear · resetsession · nettoyer · recommencer
historyrappeler les commandes déjà tapées
nmap · ping · curloutils réseau : montrent la segmentation (OT filtré en Zero-Trust, ouvert en réseau plat)
ls · pwd · cat <fichier> · id · uname · netstatcommandes système du poste compromis (simulées)
# Astuce : commence toujours par la reconnaissance — nmap usine puis curl plc : tu verras la différence entre les deux mondes (tout ouvert en réseau plat, tout filtré en Zero-Trust). Sur le schéma, survole chaque équipement pour savoir ce que c'est et comment l'attaquer ; dans le panneau Objectifs, survole chaque ligne pour l'explication et l'indice.

7. Ce qu'il faut retenir

← Retour au lab pour pratiquer