La première étape dans un projet de sécurisation de son SI industriel est bien souvent la création, ou la fiabilisation, d’un inventaire de l’ensemble des composants. En effet, l’inventaire et la documentation existante peuvent s’avérer insuffisant ou non-fiable.
C’est à ce besoin que répond l’outil GRASSMARLIN en fournissant une solution de cartographie réseau passive adaptée au secteur industriel.
Présentation de GRASSMARLIN
GRASSMARLIN est un outil permettant de cartographier de manière passive un réseau industriel. Cet outil, premièrement développé par la National Security Agency (NSA) des États-Unis est désormais Open-Source et directement accessible sur GitHub (https://github.com/iadgov/GRASSMARLIN).L’outil GRASSMARLIN permet d’obtenir une image ou « snapshot » du système d’information (SI) industriel avec notamment:
- Les équipements présents
- Les communications existantes entre les équipements
- Des méta-informations obtenues à partir des communications (localisation, constructeurs)
L’outil est disponible sur la plateforme Windows (version 7+, 64bits uniquement), certaines distributions Linux (Fedora, Ubuntu) et est téléchargeable au lien suivant : https://github.com/iadgov/GRASSMARLIN/releases/latest.
Une perte de disponibilité d’un équipement du SI industriel pouvant avoir des conséquences importantes (arrêt de la production, perte de visibilité pour les opérateurs, …), la cartographie est entièrement passive. Les communications sont enregistrées puis analysées, contrairement à un scan actif avec nmap ou plcscan qui vont activement envoyer des paquets à destination de toutes les adresses IP et analyser les éventuels retours.
Fonctionnement de Grassmarlin
GRASSMARLIN permet d’obtenir deux types de topologies du réseau industriel :
- La « Logical View » : fournit une liste des équipements présents et des communications existantes, nommée par la suite la vue logique.
- La « Physical View » : permet d’obtenir les liens physiques entre les équipements en donnant par exemple le numéro de port d’un routeur auquel un automate est connecté, nommée par la suite la vue physique.
La détection passive
La méthode de découverte de réseau étant passive l’outil GRASSMARLIN ne génère aucun trafic sur le réseau. Ainsi afin d’obtenir des résultats de la vue logique ce dernier va simplement écouter les communications sur le réseau tel un analyseur de trame classique. En d’autres termes, GRASSMARLIN ne pourra analyser que les communications qu’il est en mesure d’écouter sur sa machine hôte.Figure 1 : Visibilité de GRASSMARLIN
Il est aussi possible d’obtenir une topologie réseau à partir de captures réseaux (fichiers PCAP) générées à des instants ultérieurs à d’autres points du réseau.
De même, pour générer la vue physique GRASSMARLIN utilise des logs de routeur Cisco et reste donc totalement passif.
Vue logique
Dans cette vue, la topologie du réseau se présente comme suit :Figure 2 : Vue logique avec 2 automates Siemens
Cette topologie est générée à partir d’une capture réseau de deux équipements industriels utilisant le protocole de communication industriel S7comm. Les fichiers PCAP peuvent être retrouvés à cette adresse : https://wiki.wireshark.org/S7comm
La carte principale à droite permet de donner les équipements présents, identifiés par leur adresse IP, ainsi que les communications existantes entre les équipements et les sous-réseaux IP.Par ailleurs, GRASSMARLIN reconnait à l’aide de signatures les protocoles et équipements industriels :
Figure 3 : Vue logique et détails fournis par GRASSMARLIN
Ces informations sont générées suite à la confrontation des captures réseaux avec les signatures connues par GRASSMARLIN, l’attribut Confidence (confiance) échelonné de 1 (non confiant) à 5 (confiant) informe alors sur le degré de véracité des informations données.
GRASSMARLIN fournit aussi une vision textuelle de la carte à l’aide d’un arbre de connections (présent à gauche sur la figure 2) renseignant les équipements par sous-réseaux.
Il est aussi possible d’isoler les communications liées à un équipement en particulier et d’obtenir des premiers éléments d’analyses tels que : la taille des paquets échangés, l’instant t de l’échange, l’origine du paquet (si plusieurs fichiers PCAP’s sont utilisés) :
Figure 4 : Fenêtre d’analyse des communications d’un automate
Signatures protocolaires
GRASSMARLIN embarque des signatures permettant de reconnaitre les protocoles utilisés sur la vue logique.Chaque signature peut être composée de deux types d’élément :
- L’élément Filter (ou filtre) qui décrit un attribut à détecter.
- L’élément Payload (ou charge utile) qui permet de retourner des informations à l’utilisateur.
Une signature peut contenir plusieurs Filter et chaque Payload fait référence à un Filter :
Figure 5 : Exemple de signature MODBUS
Tableau 1 : Ensemble des filtres possibles
La version actuelle de GRASSMARLIN (v3) compte 54 signatures couvrant les protocoles industriels couramment utilisés. Du fait du récent passage de l’outil en open-source (28/01/16) il est probable que la bibliothèque de signature s’enrichisse avec les années à venir.
Les signatures sont éditées sous le format XML néanmoins un outil graphique est proposé – FingerPrint Editor - afin de permettre une création plus aisée de signatures :
Figure 6 : Fingerprint Editor, outil graphique d’édition de signatures
Vue physique
La topologie physique permet d’obtenir les connexions physiques existantes entre les équipements.Figure 7 : Vue physique
À ce jour seul les routeurs Cisco sont supportés et les vues sont générées à partir des résultats des 3 commandes suivantes :
- “show running-config”
- “show ip arp” (OU) “show mac address-table”
- “show interfaces”
Une fois la sortie de ces commandes enregistrée dans un fichier texte, GRASSMARLIN est en mesure de générer à partir de ce dernier la vue physique.
Partage de données
L’exportation des données est gérée par GRASSMARLIN avec 3 types d’export- L’exportation des vues sous format d’images (PNG).
- L’exportation des données sous format XML :
- Enregistre l’ensemble de l’arbre de connexion de la vue logique.
- Ces données peuvent être utilisées comme des données de session lors de prochaine importation.
- L’exportation des données en partage : création d’une archive avec les données sous format XML et les fichiers de captures réseaux générés.
Tests sur banc d’essai
Des tests sur une des maquettes SI industriel de Solucom ont été réalisés afin de confronter l’outil à un cas d’utilisation concret avec de réels équipements industriels.Présentation banc d’essai
Le banc d’essai simule un aiguillage de train et est composé de :- 1 interface homme/machine (IHM) Siemens ;
- 1 automate Siemens ;
- 2 automates Schneider ;
- 1 switch manageable.
Figure 8 : Photo du banc d’essai
Réalisation des tests
Suite à une capture en temps réel des trames, GRASSMARLIN a pu générer la vue logique suivante :Figure 9 : Vue logique de la maquette
Et, après réorganisation (manuelle) de la vue nous obtenons la vue suivante :
Figure 10 : Vue logique de la maquette réordonnée
De même, un fichier XML de sortie est correctement généré à partir des fonctions d’export. Ce dernier résume l’ensemble des informations extraites par GRASSMARLIN et permet de réutiliser les données plus facilement :
Figure 11 : Fichier de sortie XML
- La non-concurrence des signatures
Si un équipement répond à plusieurs signatures alors seule une signature est détectée. Ceci peut notamment poser problème dans le cas d’une IHM qui communique potentiellement avec différents automates en utilisant plusieurs protocoles de communication. - Le manque de verbosité de certaines signatures
Les signatures comportent des champs descriptions dans leur Payload permettant de décrire au mieux le rôle de l’équipement identifié. Il est possible que ces champs soient laissés initialement vides ou peu renseignés ce qui peut compliquer la tâche d’identification. - Une analyse des échanges peu aboutie
GRASSMARLIN ne fournit actuellement que les premiers éléments d’analyse sur les communications : tailles des paquets, instants d’envois. Dans les pistes d’améliorations de sa fonction d’analyse nous pourrions par exemple citer l’implémentation d’une fonction de reconnaissance de cycles dans les échanges entre IHM et automates.
Conclusion
D’autres outils de détection passive de topologie sont disponibles sur le marché. Cependant GRASSMARLIN est actuellement l’un des rares, si ce n’est l’unique, à être destiné au SI industriels et à être Open-Source.En comparaison un autre outil nommé NetworkMiner permet aussi de réaliser des topologies de réseaux en utilisant les signatures d’autres outils dont notamment : nmap, p0f et Ettercap . Néanmoins, ce dernier n’embarque pas à l’installation de signatures destinées aux protocoles industriels et n’est donc pas aussi précis que GRASSMARLIN.
Figure 12 : Sortie de l’outil NetworkMiner pour 2 automates Siemens
Figure 13 : Autre exemple – utilisation de l’outil p0f avec 2 automates Siemens
Figure 14 : Sortie de GRASSMARLIN avec 2 automates Siemens
Figure 15 : Extrait d’une cartographie générée par Sentryo (https://www.sentryo.net/how-to-start-your-ics-cybersecurity-project/)
Arnaud SOULLIE