**Objectif :** L'énumération sur un système Linux après un accès initial est cruciale pour comprendre l'environnement, identifier les mauvaises configurations, trouver des informations sensibles et découvrir des vecteurs potentiels d'escalade de privilèges (PrivEsc). --- ### ℹ️ **Informations Système et OS** * **Objectif :** Comprendre la nature du système (distribution, version, architecture, kernel). Utile pour rechercher des exploits spécifiques au kernel ou à la distribution. ```bash # Nom d'hôte hostname # Informations sur la distribution cat /etc/issue cat /etc/*-release lsb_release -a # Informations sur le Kernel uname -a uname -r # Version du kernel seule cat /proc/version # Informations CPU lscpu # Informations sur les périphériques bloc (disques, partitions) lsblk # Systèmes de fichiers montés et espace disque df -h mount cat /etc/fstab # Configuration statique des points de montage ```` ### 👤 **Informations Utilisateur et Groupe** - **Objectif :** Identifier l'utilisateur actuel, ses privilèges, les autres utilisateurs présents, et les groupes existants. ``` # Qui suis-je ? (utilisateur actuel) whoami id # Utilisateurs actuellement connectés w who # Dernières connexions utilisateur last # Groupes de l'utilisateur actuel groups # Lister tous les utilisateurs locaux cat /etc/passwd | cut -d: -f1 ls /home # Lister tous les groupes locaux cat /etc/group | cut -d: -f1 # Historique des commandes (peut contenir des mots de passe !) history cat ~/.bash_history cat ~/.zsh_history cat ~/.ash_history # etc. ``` ### 🌐 **Informations Réseau** - **Objectif :** Comprendre la configuration réseau de la machine, les services en écoute, et les connexions établies. ``` # Configuration des interfaces réseau (IP, MAC) ip a ifconfig # Ancien, peut ne pas être installé # Table de routage ip r route -n # Ancien # Connexions réseau actives (TCP, UDP), services en écoute # ss est plus moderne que netstat ss -tulpn netstat -tulpn # Peut nécessiter l'installation de net-tools # Informations DNS cat /etc/resolv.conf # Fichier hosts (peut révéler d'autres machines sur le réseau) cat /etc/hosts ``` ### ⚙️ **Processus et Services en Cours** - **Objectif :** Identifier les processus actifs, les services qui tournent, et les utilisateurs qui les exécutent. Peut révéler des services personnalisés ou mal configurés. ``` # Lister tous les processus (différents formats) ps aux ps auxf # Avec arborescence ps -ef # Visualiser les processus en temps réel (utilisation CPU/Mémoire) top htop # Plus interactif, peut nécessiter une installation # Lister les services (Systemd) systemctl list-units --type=service --state=running # Lister les services (Ancien init.d) service --status-all # Fonctionne sur certains systèmes ls -l /etc/init.d/ ``` ### ⏰ **Tâches Planifiées (Cron Jobs & Timers)** - **Objectif :** Trouver des scripts ou commandes exécutés automatiquement à intervalles réguliers, potentiellement avec des privilèges élevés ou via des scripts modifiables. ``` # Tâches cron de l'utilisateur actuel crontab -l # Tâches cron système cat /etc/crontab ls -l /etc/cron.* # Vérifier les dossiers cron.d, cron.hourly, etc. # Tâches cron des autres utilisateurs (nécessite des privilèges) cat /var/spool/cron/crontabs/* # Timers Systemd (alternative moderne à cron) systemctl list-timers --all ``` ### 🔑 **Permissions et Vecteurs de PrivEsc Potentiels** - **Objectif :** Identifier les failles de configuration classiques permettant une élévation de privilèges. ``` # Vérifier les droits sudo de l'utilisateur actuel sudo -l # Rechercher les binaires avec le bit SUID (s'exécutent en tant que propriétaire, souvent root) # Attention: peut être long et générer beaucoup de logs/charge find / -type f -perm -4000 -ls 2>/dev/null # Rechercher les binaires avec le bit SGID (s'exécutent avec les droits du groupe propriétaire) find / -type f -perm -2000 -ls 2>/dev/null # Rechercher les "capabilities" (mécanisme de privilèges fins sous Linux) getcap -r / 2>/dev/null # Rechercher les dossiers/fichiers modifiables par l'utilisateur actuel (World-writable ou appartenant à l'utilisateur/groupe) # Attention: peut être très long find / -writable -type d 2>/dev/null # Dossiers modifiables find / -perm -o+w -type d 2>/dev/null # Dossiers world-writable find / -perm -o+w -type f 2>/dev/null # Fichiers world-writable # Vérifier si des chemins dans $PATH sont modifiables echo $PATH | tr ':' '\n' | while read path; do ls -ld $path; done # Lister les paquets installés (pour rechercher des versions vulnérables) dpkg -l # Debian/Ubuntu rpm -qa # CentOS/Fedora/RHEL ``` > [!Astuce] > > Croisez les résultats des SUID/SGID/Capabilities avec GTFOBins pour voir s'ils peuvent être abusés pour obtenir un shell ou élever les privilèges. ### 📂 **Recherche de Fichiers et Données Sensibles** - **Objectif :** Trouver des fichiers de configuration, des scripts, des clés, des mots de passe codés en dur, ou d'autres informations utiles. ``` # Rechercher des fichiers de configuration courants find /etc -name "*.conf" 2>/dev/null find / -name "*config*" -type f 2>/dev/null # Rechercher des fichiers modifiés récemment (ex: les 10 derniers jours) find / -mtime -10 2>/dev/null # Rechercher des mots-clés sensibles (password, secret, key, api_key, etc.) dans des fichiers # Attention: commandes potentiellement très longues et gourmandes grep -RiE '(password|secret|key)' /etc 2>/dev/null grep -RiE '(password|secret|key)' /var/www 2>/dev/null # Si un serveur web est présent grep -RiE '(password|secret|key)' /home 2>/dev/null # Rechercher des clés SSH privées find / -name "id_rsa" 2>/dev/null ls -la ~/.ssh/ # Rechercher des scripts (.sh, .py, .pl, etc.) find / -name "*.sh" 2>/dev/null find / -name "*.py" 2>/dev/null # Vérifier les logs (peuvent contenir des erreurs révélatrices ou des infos sensibles) ls -l /var/log/ ``` ### 🤖 **Scripts d'Énumération Automatisée** - **Objectif :** Utiliser des scripts pré-faits pour automatiser une grande partie de l'énumération. Très utiles pour gagner du temps et couvrir un large spectre de vérifications rapidement. - **LinEnum.sh:** [https://github.com/rebootuser/LinEnum](https://github.com/rebootuser/LinEnum "null") ``` # Télécharger et exécuter wget [https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh](https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh) -O /tmp/linenum.sh chmod +x /tmp/linenum.sh /tmp/linenum.sh -t # Option -t pour inclure les tests plus poussés (thorough) ``` - **Description :** Un script shell classique et fiable qui effectue une série de vérifications système, réseau, utilisateur, et permissions. Moins "agressif" que LinPEAS mais couvre bien les bases. L'option `-t` ajoute des recherches plus approfondies (ex: SUID/SGID). - **LinPEAS:** [https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS "null") ``` # Télécharger et exécuter wget [https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh](https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh) -O /tmp/linpeas.sh chmod +x /tmp/linpeas.sh /tmp/linpeas.sh > /tmp/linpeas_output.txt # Rediriger la sortie vers un fichier pour analyse # Alternativement, pour une exécution moins bruyante sur le disque : # curl [https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh](https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh) | sh ``` - **Description :** LinPEAS (Linux Privilege Escalation Awesome Script) est l'un des scripts d'énumération les plus populaires et complets. Il effectue une multitude de vérifications pour identifier rapidement les informations système, les configurations potentiellement faibles, et surtout les vecteurs d'escalade de privilèges. - **Fonctionnalités Clés :** Il est particulièrement reconnu pour sa sortie colorée qui met en évidence les informations jugées intéressantes ou critiques (souvent en jaune/rouge), facilitant l'identification rapide des points d'intérêt. LinPEAS vérifie en profondeur les permissions SUID/SGID (en les croisant avec GTFOBins), les capabilities, les tâches cron, les services systemd, les fichiers/dossiers inscriptibles, les informations réseau, les secrets potentiels dans les fichiers de configuration ou l'historique, les informations sur les conteneurs (Docker, LXC), les vulnérabilités connues du kernel, et bien plus encore. - **Interprétation & OPSEC :** En raison de son exhaustivité, LinPEAS génère une sortie très volumineuse. Il est fortement recommandé de rediriger cette sortie vers un fichier (`> /tmp/linpeas_output.txt`) pour pouvoir l'analyser tranquillement avec des outils comme `less` ou `grep`. Soyez conscient que son exécution peut être gourmande en ressources et que sa signature est bien connue des outils de détection (EDR/AV), bien que des versions obfusquées existent. Notez qu'il existe également une version pour Windows, WinPEAS, tout aussi complète. - **LES (Linux Exploit Suggester):** [https://github.com/mzet-/linux-exploit-suggester](https://github.com/mzet-/linux-exploit-suggester "null") ``` # Télécharger et exécuter wget [https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh](https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh) -O /tmp/les.sh chmod +x /tmp/les.sh /tmp/les.sh ``` - **Description :** Ce script se concentre spécifiquement sur l'identification d'exploits potentiels pour le kernel Linux en se basant sur la version du kernel (`uname -r`). Il compare la version détectée avec une base de données d'exploits connus. Utile pour une vérification rapide des vulnérabilités du noyau. > [!Attention] > > Les scripts automatisés sont excellents mais peuvent générer beaucoup de "bruit" et de faux positifs.