ITSkillsCenter
Cybersécurité

Énumération réseau pour l’OSCP : Nmap, Gobuster, enum4linux et Nikto — tutoriel pas-à-pas

12 min de lecture



L’énumération est l’étape la plus déterminante d’un test d’intrusion. Quatre-vingt pour cent des vecteurs d’attaque découverts lors de l’examen OSCP proviennent d’une énumération rigoureuse — un port ignoré, un vhost non scanné ou un partage SMB non exploré suffisent à bloquer une machine entière. Ce tutoriel présente la méthodologie d’énumération complète utilisée en conditions d’examen réelles, avec les commandes exactes et leur justification.

Ce tutoriel fait partie d’une série sur la préparation à la certification OSCP. Toutes les techniques décrites sont à utiliser uniquement sur des systèmes pour lesquels vous disposez d’une autorisation écrite.

1. Méthodologie générale : du général au particulier

L’erreur classique du candidat OSCP débutant est de lancer un outil en profondeur sur un seul service sans avoir d’abord une vue d’ensemble. La bonne séquence est :

  1. Scan TCP rapide — identifier les ports ouverts (toute la plage 1-65535)
  2. Scan de service — versions et scripts NSE sur les ports trouvés
  3. Scan UDP — top 100-200 ports (SNMP, DNS, NFS, TFTP…)
  4. Énumération spécifique par service — Gobuster web, enum4linux SMB, etc.
  5. Recherche de vulnérabilités — SearchSploit, scripts NSE vuln

Ne passez jamais à l’étape suivante avant de documenter les résultats de l’étape en cours. La prise de notes en temps réel est obligatoire à l’examen.

2. Nmap — l’outil central

Étape 1 — Scan TCP rapide (découverte de ports)

Pour scan TCP rapide (découverte de ports), voici les commandes :

# Scan de tous les ports TCP, sortie dans 3 formats (nmap, greppable, XML)
nmap -p- --min-rate 5000 -oA scans/tcp_full 10.10.10.x

# Variante avec timing agressif (à éviter si IDS détecté)
nmap -p- -T4 -oA scans/tcp_full 10.10.10.x

Options clés :

  • -p- : scanner tous les 65535 ports TCP
  • --min-rate 5000 : forcer un minimum de 5000 paquets/seconde (bien plus rapide que le défaut)
  • -oA : sortie simultanée en 3 formats (nmap, gnmap, xml) — indispensable pour garder une trace

Extrait de sortie typique :

PORT      STATE SERVICE
22/tcp    open  ssh
80/tcp    open  http
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
8080/tcp  open  http-proxy

Étape 2 — Scan de service et version

Pour scan de service et version, voici les commandes :

# Sur les ports identifiés à l'étape 1
nmap -p 22,80,139,445,8080 -sV -sC -oA scans/service_scan 10.10.10.x

Options clés :

  • -sV : détection de version des services
  • -sC : exécution des scripts NSE par défaut (équivaut à --script=default)
  • La combinaison -sV -sC est parfois notée -A mais cette dernière active aussi la détection d’OS et le traceroute — souvent trop bruyant

Sortie annotée (extrait) :

22/tcp  open  ssh     OpenSSH 7.9p1 Debian 10 (protocol 2.0)
| ssh-hostkey:
|   2048 aa:bb:cc:dd:ee:ff (RSA)
|_  256 ff:ee:dd:cc:bb (ECDSA)
80/tcp  open  http    Apache httpd 2.4.38 ((Debian))
| http-methods:
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-title: Company Intranet - Login
445/tcp open  microsoft-ds Samba smbd 4.x
| smb-security-mode:
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled

Ce qu’il faut noter : version Apache (2.4.38 → chercher CVEs), titre de la page HTTP, SMB signing disabled (vecteur relay attack potentiel), version OpenSSH.

Étape 3 — Scan UDP (à ne pas négliger)

Pour scan UDP (à ne pas négliger), voici les commandes :

# UDP top 100 (plus rapide)
sudo nmap -sU --top-ports 100 -oA scans/udp_top100 10.10.10.x

# UDP ciblé sur les ports courants à risque
sudo nmap -sU -p 53,69,111,123,161,162,500,514,623,1900 -sV -oA scans/udp_ciblé 10.10.10.x

Ports UDP à ne jamais ignorer :

  • 161 (SNMP) : souvent mal configuré, community string « public » → info disclosure massive
  • 111 (RPC/portmapper) : peut révéler des services NFS montables
  • 53 (DNS) : transfert de zone si mal configuré
  • 623 (IPMI) : hash BMC → crack offline

Scripts NSE spécialisés par service

Concrètement, pour sMB — vulnérabilités et énumération :

# SMB — vulnérabilités et énumération
nmap -p 445 --script=smb-vuln-ms17-010,smb-vuln-ms08-067,smb-enum-shares,smb-enum-users,smb2-security-mode -oA scans/smb 10.10.10.x

# HTTP — énumération headers et méthodes
nmap -p 80,443,8080 --script=http-methods,http-title,http-headers,http-auth-finder -oA scans/http 10.10.10.x

# FTP — accès anonyme et fichiers
nmap -p 21 --script=ftp-anon,ftp-bounce,ftp-syst -oA scans/ftp 10.10.10.x

# SMTP — énumération utilisateurs
nmap -p 25,465,587 --script=smtp-enum-users,smtp-commands -oA scans/smtp 10.10.10.x

3. Gobuster — énumération web

Gobuster est l’outil d’énumération web privilégié à l’OSCP pour sa rapidité et sa flexibilité. Il supporte trois modes principaux : répertoires/fichiers (dir), sous-domaines DNS (dns) et virtual hosts (vhost).

Mode dir — énumération de répertoires et fichiers

Concrètement, pour énumération de base :

# Énumération de base
gobuster dir \
  -u http://10.10.10.x \
  -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt \
  -x php,txt,html,bak,old,zip,sql \
  -t 40 \
  -o scans/gobuster_dir.txt

# Avec authentification HTTP Basic
gobuster dir \
  -u http://10.10.10.x/admin \
  -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt \
  -U admin -P admin123 \
  -x php,asp,aspx \
  -t 30 \
  -o scans/gobuster_admin.txt

# Sur HTTPS (ignorer les erreurs de certificat)
gobuster dir \
  -u https://10.10.10.x \
  -w /usr/share/wordlists/seclists/Discovery/Web-Content/raft-medium-files.txt \
  -k -t 40 \
  -o scans/gobuster_https.txt

Options essentielles :

  • -x : extensions à tester (toujours inclure les extensions du stack web identifié par Nmap)
  • -t : nombre de threads (40-60 est raisonnable)
  • -b : codes HTTP à ignorer (ex: -b 403,404)
  • -s : codes HTTP à accepter (ex: -s 200,204,301,302)

Mode dns — sous-domaines

Concrètement, pour énumération de sous-domaines DNS :

# Énumération de sous-domaines DNS
gobuster dns \
  -d target.htb \
  -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-5000.txt \
  -t 30 \
  --resolver 10.10.10.x \
  -o scans/gobuster_dns.txt

Important : ajouter le domaine cible dans /etc/hosts avant d’énumérer les sous-domaines :

echo "10.10.10.x target.htb" >> /etc/hosts

Mode vhost — virtual hosts

Concrètement, pour énumération de virtual hosts :

# Énumération de virtual hosts
gobuster vhost \
  -u http://10.10.10.x \
  -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-5000.txt \
  --append-domain \
  -t 30 \
  -o scans/gobuster_vhost.txt

Le mode vhost est crucial pour les machines OSCP hébergeant plusieurs applications web sur la même IP. Un vhost non découvert peut cacher le vecteur d’exploitation principal.

Wordlists recommandées (dans l’ordre de priorité)

  1. /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt (4700 entrées, rapide)
  2. /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt (220 000 entrées)
  3. /usr/share/wordlists/seclists/Discovery/Web-Content/raft-medium-files.txt
  4. /usr/share/wordlists/seclists/Discovery/Web-Content/raft-large-directories.txt

4. enum4linux-ng — énumération SMB/NetBIOS

enum4linux-ng est la version modernisée d’enum4linux, réécrite en Python 3. Elle énumère les partages SMB, les utilisateurs, les groupes, les politiques de mots de passe et le domain SID.

# Installation (si non présent dans Kali)
pip3 install enum4linux-ng
# ou
git clone https://github.com/cddmp/enum4linux-ng && cd enum4linux-ng && pip3 install -r requirements.txt

# Énumération complète
enum4linux-ng -A 10.10.10.x

# Énumération avec credentials
enum4linux-ng -A -u 'utilisateur' -p 'motdepasse' 10.10.10.x

# Options individuelles
enum4linux-ng -S 10.10.10.x  # Partages uniquement
enum4linux-ng -U 10.10.10.x  # Utilisateurs uniquement
enum4linux-ng -G 10.10.10.x  # Groupes uniquement
enum4linux-ng -P 10.10.10.x  # Politique de mots de passe

Sortie clé à surveiller :

Users via RPC:
  - Administrator (SID: S-1-5-21-xxx-500)
  - john.doe (SID: S-1-5-21-xxx-1001)

Shares:
  - IPC$ (IPC Service)
  - Data (Read, Write) ← ACCÈS EN ÉCRITURE = VECTEUR CRITIQUE
  - Backup (Read)

Password Policy:
  Minimum password length: 0  ← MOTS DE PASSE COURTS POSSIBLES
  Lockout threshold: None     ← BRUTEFORCE POSSIBLE SANS LOCKOUT

Accès aux partages avec smbclient

Concrètement, pour lister les partages disponibles :

# Lister les partages disponibles
smbclient -L //10.10.10.x -N               # sans auth (session null)
smbclient -L //10.10.10.x -U 'user%pass'  # avec credentials

# Se connecter à un partage
smbclient //10.10.10.x/Data -N
smb: \> ls                 # lister
smb: \> get fichier.txt    # télécharger
smb: \> put exploit.php    # uploader (si accès en écriture)
smb: \> recurse; mget *    # télécharger tout récursivement

# Monter un partage SMB localement
sudo mount -t cifs //10.10.10.x/Data /mnt/share -o 'username=guest,password='

5. Nikto — scan de vulnérabilités web

Nikto effectue un scan rapide de l’application web pour identifier les vulnérabilités connues, les fichiers sensibles exposés et les mauvaises configurations.

# Scan de base
nikto -h http://10.10.10.x -output scans/nikto.txt

# Sur HTTPS
nikto -h https://10.10.10.x -ssl -output scans/nikto_ssl.txt

# Sur un port spécifique
nikto -h 10.10.10.x -port 8080 -output scans/nikto_8080.txt

# Avec authentification
nikto -h http://10.10.10.x -id admin:password -output scans/nikto_auth.txt

Ce que Nikto trouve régulièrement à l’OSCP :

  • Fichiers de configuration exposés (.git/HEAD, config.php.bak)
  • Répertoires d’upload non protégés
  • Headers manquants (X-Frame-Options, X-Content-Type-Options)
  • Versions obsolètes de CMS (WordPress, Joomla, Drupal)
  • Pages de phpinfo() exposées (disclosure d’informations critiques)

6. Énumération par service — référence rapide

FTP (port 21)

Concrètement, pour connexion anonyme :

# Connexion anonyme
ftp 10.10.10.x
# Login: anonymous, Password: anonymous (ou vide)
ftp> ls -la
ftp> binary          # mode binaire pour les fichiers non-texte
ftp> get fichier.txt

# Avec wget
wget -m --no-passive-ftp ftp://anonymous:anonymous@10.10.10.x/

SSH (port 22)

Concrètement, pour identifier la version et les algorithmes supportés :

# Identifier la version et les algorithmes supportés
ssh -v 10.10.10.x 2>&1 | grep -E "Remote protocol|Server host key|kex_algorithms"
nmap -p 22 --script=ssh-auth-methods,ssh-hostkey 10.10.10.x

# Bruteforce (avec permissions explicites sur lab uniquement)
hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://10.10.10.x -t 4

SMTP (port 25)

Concrètement, pour connexion manuelle et énumération de commandes :

# Connexion manuelle et énumération de commandes
nc -nv 10.10.10.x 25
EHLO test.local
# Énumération d'utilisateurs via VRFY et EXPN
VRFY root
VRFY john
EXPN postmaster

# Script automatisé
smtp-user-enum -M VRFY -U /usr/share/wordlists/seclists/Usernames/top-usernames-shortlist.txt -t 10.10.10.x

DNS (port 53)

Concrètement, pour requête basique :

# Requête basique
dig @10.10.10.x any target.htb

# Tentative de transfert de zone (zone transfer)
dig @10.10.10.x axfr target.htb
# Si succès → tous les enregistrements DNS du domaine exposés

# Résolution inverse
dig @10.10.10.x -x 10.10.10.x

# Avec dnsrecon
dnsrecon -d target.htb -t axfr
dnsrecon -d target.htb -t std

SNMP (port 161 UDP)

Concrètement, pour scan SNMP :

# Scan SNMP
sudo nmap -sU -p 161 --script=snmp-info,snmp-sysdescr,snmp-processes 10.10.10.x

# Avec snmpwalk (community string public ou private)
snmpwalk -c public -v1 10.10.10.x
snmpwalk -c public -v2c 10.10.10.x 1.3.6.1.4.1.77.1.2.25  # Utilisateurs Windows

# Bruteforce de community strings
onesixtyone -c /usr/share/wordlists/seclists/Discovery/SNMP/common-snmp-community-strings.txt 10.10.10.x

NFS (ports 111, 2049)

Concrètement, pour lister les exports :

# Lister les exports
showmount -e 10.10.10.x

# Sortie typique
/opt/backup  *            ← montable sans auth par n'importe qui
/home/user   10.10.10.0/24

# Monter le partage
sudo mkdir /mnt/nfs
sudo mount -t nfs 10.10.10.x:/opt/backup /mnt/nfs -o nolock
ls -la /mnt/nfs

# Piège NFS : uid mapping → écrire une clé SSH publique dans .ssh/authorized_keys

LDAP (ports 389, 636)

Concrètement, pour énumération anonyme :

# Énumération anonyme
ldapsearch -x -H ldap://10.10.10.x -b "dc=target,dc=local" "(objectClass=*)"

# Recherche d'utilisateurs
ldapsearch -x -H ldap://10.10.10.x -b "dc=target,dc=local" "(objectClass=person)" sAMAccountName

# Avec credentials
ldapsearch -x -H ldap://10.10.10.x -D "cn=user,dc=target,dc=local" -w password -b "dc=target,dc=local"

RDP (port 3389)

Concrètement, pour identifier la version et les paramètres :

# Identifier la version et les paramètres
nmap -p 3389 --script=rdp-enum-encryption,rdp-vuln-ms12-020 10.10.10.x

# Connexion (si credentials obtenus)
xfreerdp /v:10.10.10.x /u:admin /p:password /cert:ignore +clipboard /dynamic-resolution
rdesktop -u admin -p password 10.10.10.x

7. Automatisation avec AutoRecon

AutoRecon est un outil de reconnaissance multi-thread qui lance automatiquement Nmap, Gobuster, enum4linux et d’autres scanners en parallèle. Il est autorisé à l’examen OSCP.

# Installation
pip3 install git+https://github.com/Tib3rius/AutoRecon.git

# Lancement sur une cible
autorecon 10.10.10.x

# Sur plusieurs cibles
autorecon 10.10.10.1 10.10.10.2 10.10.10.3

# Avec personnalisation
autorecon 10.10.10.x --only-scans-dir ./scans --max-scans 5

AutoRecon génère une arborescence organisée par cible et par service. Utile en début d’examen pour lancer les scans passifs sur toutes les machines pendant que vous lisez le document PDF d’instructions.

8. Checklist d’énumération OSCP (à cocher pour chaque machine)

  • ☐ Scan TCP complet (tous les ports)
  • ☐ Scan de service/version sur les ports ouverts
  • ☐ Scan UDP top 100
  • ☐ Pour HTTP/HTTPS : Gobuster dir + vhost, Nikto
  • ☐ Pour SMB : enum4linux-ng, smbclient (lister + accéder aux partages)
  • ☐ Pour FTP : test accès anonyme, récupération de tous les fichiers
  • ☐ Pour SMTP : VRFY/EXPN pour énumération d’utilisateurs
  • ☐ Pour DNS : tentative de zone transfer
  • ☐ Pour SNMP : walk avec community string « public »
  • ☐ Pour NFS : showmount -e, montage et lecture du contenu
  • ☐ Pour LDAP : recherche anonyme
  • ☐ SearchSploit sur toutes les versions de services identifiées
  • ☐ Google des CVEs pour les versions trouvées
  • ☐ Documentation complète dans le fichier de notes

9. SearchSploit — recherche d’exploits publics

# Recherche par service/version
searchsploit apache 2.4.38
searchsploit "openssh 7.9"
searchsploit samba 4.x

# Copier un exploit dans le répertoire courant
searchsploit -m 42031.py  # -m = mirror (copie l'exploit)

# Mettre à jour la base
searchsploit -u

# Recherche avec filtre
searchsploit --exclude="Dos" apache   # exclure les PoC DoS
searchsploit -t "Remote Code Execution" php  # -t = titre uniquement

Toujours lire l’exploit avant de l’exécuter : vérifier l’IP cible, le port, les éventuels paramètres à modifier. Un exploit mal configuré peut faire planter le service cible et invalider la machine pour plusieurs minutes.

10. Prochaines étapes

Une fois l’énumération complète, vous disposez d’une liste de vecteurs d’attaque potentiels. Les étapes suivantes dépendent de ce que vous avez trouvé :

Références

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité