Aller au contenu principal

Reconnaissance active — Démonstration guidée

Un lab, trois cibles. On enchaîne toutes les couches du scan, on lit chaque sortie, on remonte à un plan d'attaque net à la fin. Rien de destructeur — on veut la carte, pas les cendres.

Rappel du cadre

Tout ce qui suit se passe dans le lab host-only du module 1, étendu à trois machines. Aucune commande n'est légitime en dehors d'un lab que vous possédez ou d'une cible sous RoE.

Ce que vous saurez faire après cette leçon

  • Découvrir les hôtes vivants sans utiliser d'IP connue à l'avance.
  • Cartographier les services et versions en trois passes Nmap logiques.
  • Énumérer un partage SMB sans mot de passe et sortir une liste d'utilisateurs.
  • Repérer un service UDP oublié (SNMP), avec la community string par défaut.
  • Consolider un rapport de reconnaissance de 2 pages.

Le décor étendu

Reprenez le lab de la semaine 1 et ajoutez une troisième VM Linux vulnérable.

MachineRôleIP
KaliAttaquant10.10.10.5
Metasploitable 3 (Windows)Cible 110.10.10.12
Metasploitable 2 (Linux)Cible 210.10.10.20

Metasploitable 2 se télécharge sur SourceForge. Importez-la, mettez-la sur le même host-only network, forcez son IP à 10.10.10.20.

Créez le dossier de mission :

mkdir -p ~/labs/semaine-04/{scans,captures,rapport}
cd ~/labs/semaine-04

Étape 1 — Découverte de couche 2 (ARP)

Une découverte passive dans son bruit : ARP est natif sur le LAN, il n'attire pas les IDS.

sudo arp-scan --interface=eth0 --localnet | tee scans/arp.txt

Sortie :

Interface: eth0, type: EN10MB, MAC: 08:00:27:aa:bb:cc, IPv4: 10.10.10.5
Starting arp-scan 1.9.7 with 256 hosts

10.10.10.1 0a:00:27:00:00:0a VirtualBox
10.10.10.12 08:00:27:c3:5f:1e PCS Systemtechnik GmbH (VirtualBox)
10.10.10.20 08:00:27:aa:12:34 PCS Systemtechnik GmbH (VirtualBox)

3 packets received by filter, 0 packets dropped by kernel

Trois lignes, deux cibles. 10.10.10.1 est l'hôte VirtualBox (à ignorer). Notre parc de test : .12 et .20.


Étape 2 — Découverte par ping (ICMP + TCP)

arp-scan ne marche pas hors du LAN. Pour un scan plus large, nmap -sn combine ICMP echo, TCP SYN sur 443 et 80, et ARP quand c'est possible.

sudo nmap -sn 10.10.10.0/24 -oA scans/hosts
cat scans/hosts.gnmap | grep Up

Sortie :

Host: 10.10.10.12 () Status: Up
Host: 10.10.10.20 () Status: Up

Confirme ce que ARP a dit. Bien.


Étape 3 — Balayage complet des ports TCP

D'un coup, tous les ports, mais une machine à la fois. On enregistre :

sudo nmap -sS -Pn -p- --min-rate 2000 10.10.10.12 -oA scans/12-ports
sudo nmap -sS -Pn -p- --min-rate 2000 10.10.10.20 -oA scans/20-ports

Extrait pour .20 (Metasploitable 2) :

PORT     STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
3632/tcp open distccd
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8009/tcp open ajp13
8180/tcp open unknown

Lecture rapide :

  • telnet (23), rsh/rexec/rlogin (512-514) : protocoles clairs — mines à failles ; ils feraient hurler tout audit.
  • distccd (3632) : distributed compiler — RCE historique.
  • ingreslock (1524) : un backdoor connu de la VM (shell root direct).
  • X11 (6000) : serveur graphique exposé sur le réseau.
  • MySQL et PostgreSQL exposés sans passer par un frontal.

Cette VM a été faite pour être détruite — elle a tout d'ouvert. Sur une cible réelle, une telle liste serait un signal d'infrastructure abandonnée.


Étape 4 — Détection de versions

On ne demande les versions que pour les ports ouverts. Reprenez la liste :

sudo nmap -sV -p 21,22,23,25,53,80,111,139,445,512-514,1099,1524,2049,3306,3632,5432,5900,6000,6667,8009,8180 \
10.10.10.20 -oA scans/20-versions

Extrait :

PORT     STATE SERVICE     VERSION
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp open telnet Linux telnetd
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
3306/tcp open mysql MySQL 5.0.51a-3ubuntu5
8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1

Le mot magique : vsftpd 2.3.4. Cette version précise contient une backdoor publique (le fameux vsftpd 2.3.4 smiley face backdoor, CVE-2011-2523). Il suffit d'envoyer un login qui contient :) pour qu'un shell root ouvre sur le port 6200. On y touchera au module 5.

Idem sur Samba 3.x : historique de failles (usermap script, EternalRed…). Cible confirmée.


Étape 5 — Scan UDP ciblé

nmap -sU -p- est trop long (10 h+). On cible les ports UDP qui portent souvent quelque chose :

sudo nmap -sU --top-ports 20 10.10.10.20 -oA scans/20-udp

Sortie :

PORT     STATE         SERVICE
53/udp open domain
69/udp open|filtered tftp
111/udp open rpcbind
137/udp open netbios-ns
161/udp open snmp
2049/udp open nfs

SNMP (161) ouvert. SNMP en UDP, avec la communauté par défaut public, c'est l'agent qui dévoile l'inventaire complet de la machine.

Vérification :

snmpwalk -v 2c -c public 10.10.10.20 sysDescr
snmpwalk -v 2c -c public 10.10.10.20 hrSWRunName | head

Sortie :

SNMPv2-MIB::sysDescr.0 = STRING: Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686
HOST-RESOURCES-MIB::hrSWRunName.1 = STRING: "init"
HOST-RESOURCES-MIB::hrSWRunName.2 = STRING: "sshd"
HOST-RESOURCES-MIB::hrSWRunName.3 = STRING: "mysqld"
HOST-RESOURCES-MIB::hrSWRunName.4 = STRING: "apache2"
...

Vous connaissez maintenant le noyau exact, la version de la distribution, la liste des processus en cours. Sans authentification. Sans exploit.


Étape 6 — Énumération SMB avec nxc

Sur 10.10.10.12 (Windows) et 10.10.10.20 (Linux avec Samba), même outil :

nxc smb 10.10.10.12 10.10.10.20

Sortie :

SMB  10.10.10.12  445  METASPLOITABLE3  [*] Windows Server 2008 R2 SP1  (name:METASPLOITABLE3) (domain:METASPLOITABLE3) (signing:False) (SMBv1:True)
SMB 10.10.10.20 445 METASPLOITABLE [*] Unix (Samba 3.0.20-Debian) (name:METASPLOITABLE) (domain:WORKGROUP) (signing:False) (SMBv1:True)

Signing:False partout : les attaques SMB relay seront possibles. Notez-le pour le module 10.

Énumérons les partages sans authentification :

nxc smb 10.10.10.12 -u '' -p '' --shares
nxc smb 10.10.10.20 -u '' -p '' --shares

Sortie sur .20 :

SMB  10.10.10.20  445  METASPLOITABLE   [+] METASPLOITABLE\: 
SMB 10.10.10.20 445 METASPLOITABLE [*] Enumerated shares
SMB 10.10.10.20 445 METASPLOITABLE Share Permissions Remark
SMB 10.10.10.20 445 METASPLOITABLE ----- ----------- ------
SMB 10.10.10.20 445 METASPLOITABLE print$ READ Printer Drivers
SMB 10.10.10.20 445 METASPLOITABLE tmp READ,WRITE oh noes!
SMB 10.10.10.20 445 METASPLOITABLE opt READ
SMB 10.10.10.20 445 METASPLOITABLE IPC$ NO ACCESS IPC Service

Partage tmp en READ,WRITE en session nulle. Un attaquant peut y déposer une charge et l'exécuter à distance (voir module 8).

Utilisateurs énumérables ?

enum4linux-ng -U 10.10.10.20

Extrait :

users:
user: games
user: msfadmin
user: postgres
user: user
user: service

msfadmin — le compte administrateur par défaut de la VM. Sur une vraie cible, la liste des utilisateurs par session nulle est une fuite majeure. Ici, on la note et on avance.


Étape 7 — Wireshark pendant qu'on scanne

Ouvrez Wireshark sur Kali, capturez sur eth0, et lancez un scan léger :

sudo nmap -sS -p 22,80,445 10.10.10.20

Dans Wireshark, filtre :

tcp.flags.syn == 1 and tcp.flags.ack == 0 and ip.dst == 10.10.10.20

Vous voyez :

  • Trois SYN de votre IP vers .20:22, .20:80, .20:445.
  • Trois SYN/ACK en retour (ports ouverts) → chaque fois, votre Kali renvoie un RST (typique du SYN scan).

Vous voyez maintenant ce que la cible aurait vu dans ses propres logs — même IP source, même séquence, même fenêtre TCP. C'est votre empreinte. En pentest bruyant, on l'assume ; en red team, on la maquille (voir module 8).


Étape 8 — Scapy en démonstration

Un scan Xmas d'un port unique, à la main :

from scapy.all import IP, TCP, sr1

for port in [22, 445, 3389, 8080]:
reponse = sr1(
IP(dst="10.10.10.12") / TCP(dport=port, flags="FPU"),
timeout=2, verbose=0
)
if reponse is None:
print(f"{port}/tcp open|filtered (pas de réponse)")
elif reponse.haslayer(TCP):
flags = reponse[TCP].flags
if flags == 0x14: # RST+ACK
print(f"{port}/tcp closed (RST reçu)")
else:
print(f"{port}/tcp ? (flags={hex(int(flags))})")

Sortie :

22/tcp  open|filtered  (pas de réponse)
445/tcp open|filtered (pas de réponse)
3389/tcp open|filtered (pas de réponse)
8080/tcp closed (RST reçu)

Interprétation : les ports Windows renvoient RST aux paquets ordinaires, mais Windows en scan Xmas ne répond pas — comportement non conforme à la RFC 793. Utile pour distinguer Windows de Linux, à un niveau très bas. C'est le genre de trick où Scapy dépasse nmap.


Étape 9 — Consolider

Ouvrez ~/labs/semaine-04/rapport/reconnaissance.md et remplissez :

# Rapport de reconnaissance — Lab semaine 4  (2026-04-16)

## 1. Hôtes vivants
- 10.10.10.12 Windows Server 2008 R2 (Metasploitable 3)
- 10.10.10.20 Linux Ubuntu 8.04 (Metasploitable 2)

## 2. Cible 10.10.10.12 — Windows
- Ports ouverts TCP : 22, 80, 135, 139, 445, 3306, 3389, 4848, 8080
- SMB : SMBv1, signing:False, MS17-010 vulnérable (revoir semaine 1)
- Priorité 1 : réexploiter EternalBlue si non patché.

## 3. Cible 10.10.10.20 — Linux
- Ports ouverts TCP : voir scans/20-ports.gnmap (24 ports ouverts)
- Ports UDP notables : 53, 161 (SNMP public), 2049 (NFS)
- Services vulnérables identifiés :
- CRITIQUE : vsftpd 2.3.4 → backdoor CVE-2011-2523
- CRITIQUE : Samba 3.0.20 → usermap script (CVE-2007-2447)
- CRITIQUE : distccd → RCE (CVE-2004-2687)
- CRITIQUE : ingreslock 1524 → backdoor shell root direct
- HAUTE : SNMP community "public" → fuite d'inventaire
- Session nulle SMB : liste des utilisateurs obtenue (msfadmin, user, service…)
- Partage tmp writable en session nulle.

## 4. Plan pour la semaine 5-8
1. Vérifier chacune des 4 CVE de la .20 via NSE ciblés.
2. Confirmer MS17-010 sur .12.
3. Extraire l'inventaire complet SNMP de la .20.
4. Préparer une exploitation vsftpd (semaine 8, Metasploit).

## 5. Artefacts
- scans/*.gnmap, scans/*.xml, scans/*.nmap (12 fichiers)
- captures/wireshark-syn-scan.pcapng
- rapport/reconnaissance.md (ce fichier)

Bilan

En 45 minutes de scan bien mené, sans casser un seul service :

  • Vous avez cartographié deux machines en profondeur.
  • Vous avez isolé cinq vulnérabilités critiques confirmées ou très probables.
  • Vous avez une empreinte de trafic dans Wireshark, que vous pouvez montrer au client (« voici ce que vos IDS auraient dû voir »).
  • Vous avez un plan pour les semaines 5 à 8.

C'est la fin de la reconnaissance. À partir du module 5, on entre dans l'exploitation.