stethoscopeLinux Services & Internals Enumeration

Maintenant que nous avons explorĂ© l’environnement, pris la mesure du systĂšme et rĂ©cupĂ©rĂ© autant d’informations que possible sur les permissions des utilisateurs et des groupes en lien avec les fichiers, scripts, binaires, rĂ©pertoires, etc., nous allons aller plus loin et examiner en profondeur les internes du systĂšme d’exploitation hĂŽte. Dans cette phase, nous allons Ă©numĂ©rer les Ă©lĂ©ments suivants :

  • Quels services et applications sont installĂ©s ?

  • Quels services sont en cours d’exĂ©cution ?

  • Quelles sockets sont utilisĂ©es ?

  • Quels utilisateurs, administrateurs et groupes existent sur le systĂšme ?

  • Qui est actuellement connectĂ© ? Quels utilisateurs se sont rĂ©cemment connectĂ©s ?

  • Quelles politiques de mot de passe, le cas Ă©chĂ©ant, sont appliquĂ©es sur l’hĂŽte ?

  • L’hĂŽte est-il joint Ă  un domaine Active Directory ?

  • Quel type d’informations intĂ©ressantes pouvons‑nous trouver dans les fichiers d’historique, de logs et de sauvegarde ?

  • Quels fichiers ont Ă©tĂ© modifiĂ©s rĂ©cemment et Ă  quelle frĂ©quence ? Y a‑t‑il des motifs indiquant un job cron que nous pourrions dĂ©tourner ?

  • Informations IP courantes

  • Y a‑t‑il quelque chose d’intĂ©ressant dans le fichier /etc/hosts ?

  • Existe‑t‑il des connexions rĂ©seau intĂ©ressantes vers d’autres systĂšmes du rĂ©seau interne ou mĂȘme Ă  l’extĂ©rieur ?

  • Quels outils sont installĂ©s sur le systĂšme que nous pourrions exploiter (netcat, perl, python, ruby, nmap, tcpdump, gcc, etc.) ?

  • Pouvons‑nous accĂ©der au fichier bash_history d’un utilisateur et y dĂ©couvrir des mots de passe ou autres informations sensibles ?

  • Des Cron jobs sont‑ils configurĂ©s sur le systĂšme et peuvent‑ils ĂȘtre dĂ©tournĂ©s ?

À prĂ©sent, nous souhaitons aussi collecter un maximum d’informations rĂ©seau. Quelle est notre adresse IP actuelle ? Le systĂšme a‑t‑il d’autres interfaces et, par consĂ©quent, pourrait‑il servir de pivot vers un autre sous‑rĂ©seau qui Ă©tait auparavant inaccessible depuis notre poste d’attaque ? Nous obtenons ces informations avec ip a ou ifconfig (ce dernier peut manquer si le paquet net‑tools n’est pas prĂ©sent).


🌐 Internes — DĂ©finition

Quand nous parlons des internes, nous faisons référence à la configuration interne et à la façon de fonctionner du systÚme, y compris les processus intégrés conçus pour accomplir des tùches spécifiques. Nous commençons donc par les interfaces par lesquelles notre systÚme cible peut communiquer.

⚙ Interfaces rĂ©seau — Commandes utiles

Conseil pĂ©dagogique : exĂ©cuter ip a permet de repĂ©rer rapidement les interfaces actives, adresses IPv4/IPv6 et potentiels alias. Cela sert aussi Ă  identifier des interfaces susceptibles d’ĂȘtre utilisĂ©es pour pivoter.


🌐 VĂ©rifier le fichier /etc/hosts

Le fichier /etc/hosts peut contenir des entrĂ©es statiques indiquant des noms d’hĂŽtes internes ou des rĂ©solutions qui n’apparaissent pas immĂ©diatement via DNS. Il est utile de l’examiner pour dĂ©couvrir des services internes ou des noms de domaines locaux.

⚙ Commande :


🌐 Derniùres connexions des utilisateurs

Consulter lastlog aide Ă  comprendre quand les comptes ont Ă©tĂ© utilisĂ©s pour la derniĂšre fois — ceci donne une idĂ©e de la frĂ©quence d’utilisation de la machine et peut indiquer des comptes dormants ou non surveillĂ©s.

⚙ Commande :


🌐 Utilisateurs actuellement connectĂ©s

Pour savoir qui est connectĂ© en ce moment et ce qu’ils font, les commandes w, who et Ă©ventuellement finger (si disponible) sont trĂšs pratiques.

⚙ Commandes :


🌐 Historique des commandes (bash_history)

L’historique d’un utilisateur peut contenir des mots de passe passĂ©s en argument, des chaĂźnes de connexion SSH, des chemins de scripts, ou des commandes d’administration utiles. Chercher les fichiers d’historique personnalisĂ©s peut rĂ©vĂ©ler des traces supplĂ©mentaires.

⚙ Commandes :

Ne jamais modifier l’historique si l’objectif est une analyse non destructive — limitez‑vous à la lecture.


🌐 Fichiers d’historique spĂ©ciaux

Certains programmes ou scripts conservent leurs propres historiques. Une recherche globale des fichiers contenant « _hist » ou « _history » peut les révéler.

⚙ Commande :


🌐 Cron jobs et planificateurs

Les tĂąches cron (ou systemd timers) sont des cibles frĂ©quentes pour l’escalade de privilĂšges : si un script exĂ©cutĂ© par cron a des permissions faibles ou utilise des chemins relatifs, il peut ĂȘtre dĂ©tournĂ©.

⚙ Commandes :


🌐 Le systùme de fichiers /proc (procfs)

Le systĂšme proc fournit une vue dynamique de l’état des processus et des paramĂštres du noyau : file descriptors, lignes de commande utilisĂ©es pour lancer des processus, sockets ouvertes, etc. Il est utile pour repĂ©rer des processus intĂ©ressants exĂ©cutĂ©s par des utilisateurs privilĂ©giĂ©s.

⚙ Commandes :


🌐 Services installĂ©s et packages

Lister les packages installĂ©s nous aide Ă  rechercher des versions vulnĂ©rables ou des composants susceptibles d’exposer des vecteurs d’attaque.

⚙ Commandes (exemples pour Debian/Ubuntu et RPM) :


🌐 Version de sudo

VĂ©rifier la version de sudo peut indiquer la prĂ©sence de vulnĂ©rabilitĂ©s connues pouvant ĂȘtre exploitĂ©es pour l’escalade de privilĂšges.

⚙ Commande :


🌐 Binaires prĂ©sents

MĂȘme si aucun package vulnĂ©rable n’est installĂ©, des binaires compilĂ©s directement peuvent exister et ĂȘtre exploitables. Lister les binaires courants et leurs permissions est une Ă©tape importante.

⚙ Commandes :


🌐 GTFObins — Binaries intĂ©ressants

GTFObins recense des binaires exploitables pour l’escalade de privilĂšges. Comparer les binaires installĂ©s au catalogue GTFObins permet de dresser une liste de candidats Ă  investiguer.

⚙ Commande (exemple) :


🌐 Traçage des appels systùme (strace)

strace permet d’observer les appels systĂšme effectuĂ©s par un binaire — utile pour comprendre les fichiers consultĂ©s, les connexions rĂ©seau initiĂ©es ou les bibliothĂšques chargĂ©es.

⚙ Exemple de commande :


🌐 Fichiers de configuration et scripts

Les fichiers de configuration (*.conf, *.config) et les scripts (*.sh) peuvent contenir des secrets, des chemins vers des clĂ©s, ou indiquer des opĂ©rations automatisĂ©es. MĂȘme s’ils sont lisibles par tous, ils peuvent divulguer des informations critiques.

⚙ Commandes :


🌐 Processus en cours par utilisateur

Lister les processus et l’utilisateur qui les exĂ©cute permet d’identifier des services tournant avec des privilĂšges Ă©levĂ©s ou des scripts lancĂ©s avec des permissions faibles.

⚙ Commandes :


🌐 Connexions rĂ©seau actives

Identifier les sockets ouvertes et les connexions rĂ©seau actives donne une vue sur les communications Ă©tablies et sur d’éventuelles relations avec d’autres machines du rĂ©seau.

⚙ Commandes :


🌐 RĂ©sumĂ© et prochaines Ă©tapes

Ce panorama fournit une base solide pour orienter des investigations plus pointues : recherche de binaires SUID, analyse des scripts exĂ©cutĂ©s par cron, examen des historiques d’utilisateurs, et vĂ©rification des versions logicielles vulnĂ©rables. À partir de ces Ă©lĂ©ments, on dĂ©terminera des vecteurs d’élĂ©vation de privilĂšges ou des possibilitĂ©s de pivot.


📚 Ressources utiles


circle-info

SSH to 10.129.63.18 (ACADEMY-LLPE-SUDO) with user "htb-student" and password "HTB_@cademy_stdnt!"

What is the latest Python version that is installed on the target?

Nous utilisons la commande suivantes afin de relever la derniÚre version de Python installée sur notre cible :

Nous pouvons alors observer que la derniÚre version de python installée sur le systÚme est python 3.11.


Last updated