# Environment Enumeration

L’énumération de l’environnement est une étape clé dans l’escalade de privilèges. Comprendre le système sur lequel on a obtenu un premier accès est essentiel pour identifier des failles potentielles, des erreurs de configuration ou des vecteurs d’attaque exploitables.

Des scripts automatisés comme [**LinPEAS**](https://app.gitbook.com/u/fxe4A8xdxIe0x9H1CkUYsvQ39NC2) ou [**LinEnum**](https://github.com/rebootuser/LinEnum) existent et permettent d’accélérer cette phase, mais il est tout aussi important de savoir mener cette énumération **manuellement** pour garder la maîtrise de ce que l’on recherche.

***

### 🏷️ Informations essentielles à collecter

#### 🔹 Version du système d’exploitation

* Identifier la distribution (Ubuntu, Debian, CentOS, Fedora, FreeBSD, etc.)
* Vérifier la version exacte, afin de déterminer si elle est vulnérable à des exploits publics connus.

Commande utile :

```bash
cat /etc/os-release
```

#### 🔹 Version du noyau (Kernel)

* Certaines versions de noyau Linux sont affectées par des vulnérabilités critiques.
* Exploiter un kernel vulnérable peut donner un accès root, mais cela peut aussi provoquer une instabilité système.

Commande utile :

```bash
uname -a
```

#### 🔹 Services en cours d’exécution

* Identifier les services actifs, en particulier ceux lancés avec des privilèges élevés (root).
* Certains services mal configurés (Nagios, Exim, Samba, ProFTPd, etc.) possèdent des **PoC d’exploits publics**.

#### 🔹 Informations sur l’utilisateur courant

* Qui sommes-nous sur la machine ?
* À quels groupes appartenons-nous ?
* Avons-nous déjà des privilèges sudo ?

Commandes utiles :

```bash
whoami
id
sudo -l
```

***

### 🧭 Acquisition de Connaissances (Situational Awareness)

Après avoir obtenu un premier shell (ex. via un **reverse shell**), il convient de collecter :

* l’OS en place (ex. Ubuntu, CentOS, FreeBSD, etc.) ;
* les chemins par défaut et variables d’environnement (`$PATH`, `env`) ;
* la version du noyau (`uname -a`) ;
* les informations CPU et matérielles (`lscpu`).

Exemple :

```bash
whoami      # Utilisateur actuel
id          # Groupes associés
hostname    # Nom de la machine
ip a        # Interfaces réseau
sudo -l     # Droits sudo disponibles
```

Ces informations doivent être notées, et idéalement accompagnées de captures dans un rapport client pour prouver l’accès et le contexte.

***

### 🛡️ Sécurité et Défenses Actives

Points à vérifier :

* **SELinux**, **AppArmor**, **iptables**, **Fail2ban**, **Snort**, **ufw**, etc.\
  Connaître leur présence permet d’éviter de perdre du temps sur des attaques vouées à l’échec.

Voici une liste non exaustive de ces éléments :&#x20;

* [Exec Shield](https://en.wikipedia.org/wiki/Exec_Shield)
* [iptables](https://linux.die.net/man/8/iptables)
* [AppArmor](https://apparmor.net/)
* [SELinux](https://www.redhat.com/en/topics/linux/what-is-selinux)
* [Fail2ban](https://github.com/fail2ban/fail2ban)
* [Snort](https://www.snort.org/faq/what-is-snort)
* [Uncomplicated Firewall (ufw)](https://wiki.ubuntu.com/UncomplicatedFirewall)

***

### 💾 Systèmes de Fichiers et Périphériques

* **`lsblk`**: identifier les disques, partitions et volumes logiques.
* **`/etc/fstab`** : rechercher des informations sensibles (ex. identifiants dans les montages).
* **`df -h`** : examiner les systèmes de fichiers montés.
* Rechercher d’éventuels systèmes non montés ou temporaires contenant des données utiles.

***

### 👤 Utilisateurs et Groupes

* **/etc/passwd** : lister les utilisateurs existants.
* **/etc/group** : identifier les groupes privilégiés (ex. `sudo`, `adm`).
* Vérifier les **shells disponibles** (`/etc/shells`).
* Contrôler les répertoires personnels (`/home/`) et fichiers intéressants :
  * `.bash_history`
  * `.ssh/` (clés privées)
  * `.config/` (fichiers de configuration)

💡 Les **clés SSH** et les **mots de passe en clair** sont des points critiques pour l’escalade de privilèges ou la persistance.

***

### 📡 Réseau et Communication

* **`route`**` ``/`` `**`netstat -rn`** : table de routage.
* **`arp -a`** : adresses des hôtes récemment contactés.
* **`/etc/resolv.conf`** : configuration DNS, souvent révélatrice d’un environnement Active Directory.

***

### 🗂️ Recherche de Fichiers Sensibles

* Chercher dans les fichiers **.conf**, **.config**, et autres extensions susceptibles de contenir des identifiants.
* Explorer les fichiers et dossiers **cachés** (`find / -type f -name ".*"`).
* Examiner les répertoires temporaires `/tmp`, `/var/tmp`, `/dev/shm`.

***

### 📝 Conclusion

L’énumération manuelle de l’environnement permet de :

* collecter des informations précieuses pour l’escalade de privilèges ;
* identifier des failles de configuration ou de sécurité ;
* préparer des attaques ciblées.

Même si des outils comme **LinPEAS** permettent de tout automatiser, une compréhension profonde des étapes et des commandes utilisées est indispensable pour être efficace dans n’importe quel environnement.

***

### 📚 Ressources Utiles

* [HackTricks – Linux Privilege Escalation Checklist](https://book.hacktricks.xyz/linux-hardening/privilege-escalation)
* [GTFOBins](https://gtfobins.github.io/)
* [Linux Privilege Escalation Awesome Scripts](https://github.com/carlospolop/PEASS-ng)

***

{% hint style="info" %}
&#x20;SSH to 10.129.203.104 (ACADEMY-LLPE-SUDO) with user "htb-student" and password "HTB\_@cademy\_stdnt!"
{% endhint %}

> Enumerate the Linux environment and look for interesting files that might contain sensitive data. Submit the flag as the answer.

Afin d'effectuer l'énumération du système, nous allons utiliser `grep` qui va nous permettre de retrouver notre flag dans l'ensemble du système :&#x20;

```bash
$ grep -r "HTB{" /
/usr/lib/int-check.sh:HTB{1nt3rn4l_5cr1p7_l34k}
```

&#x20;Nous pouvons ainsi relever le flag présent dans le fichier ***/usr/lib/int-check.sh*** :&#x20;

```
HTB{1nt3rn4l_5cr1p7_l34k}
```

***
