Élévation de privilèges — Atelier pratique
Trois élévations, trois chemins différents, trois fiches complètes. Une chaîne AD idéalement (Kerberoast → escalade). Vous produisez le livrable qui distingue un pentester d'un scanner.
Compter : 3 h.
Livrable : ~/labs/semaine-09/rapport/elevations.md avec 3 fiches structurées + preuves/ avec traces + bonus : un rapport BloodHound.
Prérequis
- Lab existant :
10.10.10.5(Kali),10.10.10.12(Windows),10.10.10.20(Linux). - Un accès utilisateur standard obtenu par les modules précédents :
- Linux : shell
msfadminouwww-datasur Metasploitable 2. - Windows : session Meterpreter
vagrantsur Metasploitable 3.
- Linux : shell
- Optionnel : GOAD lab AD pour la partie Kerberoasting (voir github.com/Orange-Cyberdefense/GOAD).
- Outils sur Kali :
sudo apt install -y hashcat impacket-scripts bloodhound-python neo4j
# WinPEAS et LinPEAS : dans /usr/share/peass/ ou depuis GitHub
Créez :
mkdir -p ~/labs/semaine-09/{preuves,rapport}
Étape 1 — Choisir 3 chemins (10 min)
Ne prenez pas ceux de la démo. Suggestions à couvrir :
Linux (choisir 1 à 2) :
- SUID sur un binaire GTFOBins autre que nmap (find, less, awk, perl, python).
- Écriture dans un dossier qui appartient à root avec bit sticky (bit S ou T).
- Capabilities offensives (
cap_setuid,cap_dac_read_search). - Exploit noyau (seulement en lab, jamais en prod).
- Docker socket accessible sans sudo (
docker.sockmonté sur le host). - Container escape depuis un container privilégié.
Windows (choisir 1 à 2) :
- Unquoted Service Path.
- Modifiable service binary.
- Modifiable registry
HKLM\SYSTEM\CurrentControlSet\Services\.... - DLL hijacking.
- AlwaysInstallElevated (les MSI installés en SYSTEM par tout utilisateur).
AD (choisir 0 ou 1) :
- Kerberoasting.
- AS-REP roasting (comptes avec DoesNotRequirePreAuth).
- Password spraying interne avec
nxc. - ACL abuse (un utilisateur peut modifier un groupe privilégié).
Notez vos 3 choix en tête de rapport/elevations.md avec 1 phrase de justification.
Étape 2 — Élévation 1 (45 min)
Suivez la structure de la démonstration. Fiche complète :
## Élévation 1 — <titre court>
### Contexte
- Cible : <IP + nom machine>
- Compte de départ : <user>
- Objectif : <root / SYSTEM / DA>
### Découverte
- Commande(s) utilisée(s) :
```bash
...
```
- Sortie révélatrice :
```
...
```
### Exploitation
- Payload / commande d'exploitation :
```
...
```
- Confirmation :
```
whoami / id / getuid
```
### Impact
- <une à trois lignes fortes>
### Recommandation
- Immédiate :
- De fond :
### Preuves
- preuves/01-*.log, preuves/01-*.txt, ...
Enregistrez toutes les commandes et sorties dans preuves/01-*.
Étape 3 — Élévation 2 (45 min)
Autre cible ou autre chemin. Même structure.
Étape 4 — Élévation 3 (45 min)
Même règle.
Si vous avez fait le GOAD lab AD, tentez le Kerberoasting :
impacket-GetUserSPNs -request -dc-ip 10.10.10.100 \
acme.local/<user>:<pass> \
-outputfile preuves/03-tgs.txt
hashcat -m 13100 preuves/03-tgs.txt /usr/share/wordlists/rockyou.txt \
-r /usr/share/hashcat/rules/best64.rule \
--potfile-path preuves/03-hashcat.potfile
Documenez le temps de cassage et le mot de passe trouvé.
Étape 5 — Bonus : cartographie BloodHound (30 min)
Si vous avez un AD lab :
sudo neo4j start
# Web UI : http://localhost:7474 (neo4j/neo4j puis changer)
bloodhound-python -u <user> -p <pass> -d acme.local -ns 10.10.10.100 \
-c All -o preuves/bloodhound/
# Ouvrir BloodHound GUI
bloodhound
# Drag & drop les .json dans l'UI
Dans BloodHound, exécutez la requête pré-faite « Shortest Paths from Owned Users to Domain Admins ». Capturez le graphe.
Ajoutez au rapport :
## Bonus — Cartographie BloodHound
Le chemin le plus court depuis <compte> vers Domain Admin passe par :
<node1> → <node2> → <node3> → DA.
Le graphe complet est dans preuves/bloodhound/graph-<date>.png.
Ce graphe vaut plus que le reste du rapport pour un RSSI qui découvre son AD.
Étape 6 — Le rapport global (30 min)
Ajoutez, avant les 3 fiches, une synthèse :
# Rapport d'élévation de privilèges — <date>
## Résumé exécutif (5 lignes)
Trois chemins d'élévation identifiés et exploités. Deux mènent à root/SYSTEM
sur les machines respectives, un mène à la compromission complète du domaine
Active Directory <acme.local>. Aucun exploit noyau n'a été utilisé — toutes
les élévations reposent sur des erreurs de configuration.
## Tableau
| # | Cible | Départ | Arrivée | Type d'attaque |
| - | ----- | ------ | ------- | --------------- |
| 1 | ... | ... | ... | ... |
| 2 | ... | ... | ... | ... |
| 3 | ... | ... | ... | ... |
## Fiches détaillées
(les 3 fiches ci-dessus)
## Bonus — BloodHound
(le graphe)
## Recommandations globales
1. Auditer sudoers et retirer les NOPASSWD trop généraux.
2. Retirer les SUID non essentiels.
3. Passer les comptes de service en Managed Service Accounts.
4. Mots de passe des comptes avec SPN >= 25 caractères.
5. Surveillance : alerter sur toute création de service Windows, tout
token impersonation, toute requête TGS massive.
Grille d'auto-évaluation
- Trois élévations différentes, chemins différents (pas 3 SUID).
- Chaque fiche : contexte + découverte + exploitation + impact + recommandation + preuves.
- Preuves complètes dans
preuves/(au moins 3 fichiers par élévation). - Aucune fiche ne se limite à une capture d'écran d'un
whoami. - Recommandations concrètes (pas « corriger la configuration » seul).
- Bonus BloodHound tenté (si AD lab disponible).
- Rapport de synthèse de 1 page en tête.
- Aucun exploit noyau exécuté en dehors d'une VM que vous acceptez de perdre.
Extension optionnelle — Écrire un bash-persist.sh
Une fois root sur Linux, comment un attaquant reste ? Écrivez bash-persist.sh qui installe trois mécanismes de persistance :
- Une clé SSH ajoutée dans
/root/.ssh/authorized_keys. - Un cron
@rebootqui rappelle chez vous. - Un binaire SUID caché dans
/tmp/.X11-lock.
Documentez chaque mécanisme, et la commande pour le supprimer proprement en fin de mission. Un pentester qui oublie un backdoor n'est plus un pentester.
Ce qui bloque en général
| Symptôme | Cause | Correction |
|---|---|---|
LinPEAS bloqué par noexec /tmp | Montage restrictif | Écrivez dans ~/ ou /dev/shm. |
Bash SUID = bash-3.2$ sans être root | Bash abandonne SUID au démarrage | Utilisez bash -p (privileged mode). |
| Meterpreter meurt en migrant | Cible instable | Migrer vers explorer.exe plutôt qu'un service. |
| Kerberoast ne trouve aucun SPN | Lab AD sans compte de service | Ajoutez svc_sql et attribuez-lui un SPN. |
| Hashcat n'a rien cassé | Mot de passe fort | Documentez comme mesure de sécurité correcte. |
| BloodHound n'a aucune donnée | Neo4j vide | Rechargez les .json via le bouton Upload. |
Ce que vous emportez de cet atelier
- Trois chemins d'élévation effectivement exploités.
- Un vocabulaire précis (SUID, cap_setuid, Kerberoast, ACL abuse).
- Un graphe BloodHound (bonus mais transformateur).
- Un rapport de 3-5 pages présentable à un client.
- La capacité de faire cette semaine, seul(e), en 3 h, sur toute future mission.
Prochaine étape : le quiz. Puis on passe au mouvement latéral — comment on sort d'une machine compromise pour en compromettre 20 autres.