# Targets

Dans Metasploit, les **cibles (targets)** représentent des identifiants uniques liés aux systèmes d’exploitation vulnérables. Chaque cible correspond à une version spécifique d’un OS ou d’un logiciel, permettant d’adapter le module d’exploitation choisi pour qu’il fonctionne correctement sur cette version particulière.

La commande `show targets`, utilisée au sein d’un module d’exploitation, affiche toutes les cibles vulnérables disponibles pour cet exploit. Si elle est utilisée depuis le menu principal (sans module sélectionné), Metasploit retournera un message demandant de sélectionner d’abord un exploit.

***

### 🔎 Affichage des cibles disponibles

#### Exemple 1 : sans exploit sélectionné

```bash
msf6 > show targets

[-] No exploit module selected.
```

#### Exemple 2 : avec un exploit sélectionné

```bash
msf6 exploit(windows/smb/ms17_010_psexec) > show targets

Exploit target:

   Id  Name
   --  ----
   0   Automatic
```

Dans ce cas, une seule cible est proposée : l’option **Automatique**.

***

### ⚙️ Sélection d’une cible

Certains exploits ne nécessitent qu’une cible générique (*Automatic*), tandis que d’autres disposent de plusieurs cibles précises correspondant à des combinaisons OS/version/navigateur.

#### Exemple : Exploit MS12-063 (Internet Explorer)

```bash
msf6 exploit(windows/browser/ie_execcommand_uaf) > show targets

Exploit targets:

   Id  Name
   --  ----
   0   Automatic
   1   IE 7 on Windows XP SP3
   2   IE 8 on Windows XP SP3
   3   IE 7 on Windows Vista
   4   IE 8 on Windows Vista
   5   IE 8 on Windows 7
   6   IE 9 on Windows 7
```

Ici, plusieurs versions précises d’Internet Explorer et de Windows sont disponibles.

👉 Par défaut, **Automatic** tentera de détecter la version cible avant exploitation.

👉 Si la version exacte est connue, on peut définir manuellement la cible :

```bash
msf6 exploit(windows/browser/ie_execcommand_uaf) > set target 6
target => 6
```

Dans cet exemple, la cible sélectionnée correspond à **IE 9 sur Windows 7**.

***

### 🛠️ Types de cibles et paramètres

Chaque cible peut différer par :

* **Service Pack** (SP)
* **Version de l’OS**
* **Langue du système**

Ces variations influencent directement le choix de l’adresse de retour utilisée dans l’exploitation.

#### 📍 Variations possibles :

* Un **pack linguistique** peut modifier certaines adresses mémoire.
* Une **version logicielle différente** peut décaler ou changer les adresses.
* Des mécanismes comme des **hooks** peuvent influer sur l’emplacement mémoire.

Le retour utilisé peut être :

* `jmp esp`
* Un saut vers un registre spécifique
* Une séquence `pop/pop/ret`

***

### 🧩 Identification correcte d’une cible

Pour identifier précisément une cible, il est nécessaire de :

1. **Obtenir une copie des binaires de la cible** (logiciel ou librairies vulnérables).
2. **Utiliser `msfpescan`** pour localiser une adresse de retour adéquate.
3. Vérifier la correspondance avec les paramètres définis dans le module d’exploitation.

***

### 📖Bonnes pratiques

* Utiliser la commande `info` pour en savoir plus sur le module et la vulnérabilité associée.
* Toujours auditer le code d’un module avant de l’utiliser afin de vérifier l’absence de comportements indésirables.
* Privilégier l’option **Automatic** quand la version exacte n’est pas connue.

***

### 📚 Ressources utiles

* [Analyse CVE-2012-4969 (MS12-063)](https://cvedetails.com/cve/CVE-2012-4969/)
* [Microsoft Security Bulletin MS12-063](https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2012/MS12-063)

***
