Transcript Détection dans les systèmes industriels: Suricata et le cas Modbus
Détection dans les systèmes industriels: Suricata et le cas Modbus Conférence C&ESAR
David DIALLO
et Mathieu FEUILLET {mathieu.feuillet,david.diallo}@ssi.gouv.fr
25 novembre 2014
ANSSI ANSSI :
Agence nationale de la sécurité des systèmes d’information Autorité nationale de cyberdéfense, services du premier ministre Trois missions principales : I
Défendre
I I
Prévenir Informer
http://www.ssi.gouv.fr/
Détection dans les systèmes industriels: Suricata et le cas Modbus
2/20
Systèmes industriels Définition
: système d’information ayant des actions physiques.
Constat
: mêmes vulnérabilités et de plus en plus visés.
Détection dans les systèmes industriels: Suricata et le cas Modbus
3/20
Spécificités des systèmes industriels
Besoins de sécurité :
1 Intégrité 2 3 Disponibilité Confidentialité (optionnel)
Contraintes :
I I Durée de vie élevée Fonctionnement en continu avec arrêts planifiés I Pour certains, contraintes de temps de réponse
Atouts :
I I I Architecture (souvent) bien définie Comportement cadré et limité Evolution lente (peu de modifications)
Détection dans les systèmes industriels: Suricata et le cas Modbus
4/20
Architecture typique
Client SCADA Serveur d’historique Passerelle vers Intranet Disponibilité Intégrité Technologie Critique Standard Serveur SCADA Automate actionneur Automate Très critique Spécifique capteur actionneur capteur
Détection dans les systèmes industriels: Suricata et le cas Modbus
5/20
Supervision ≈ 1s Controle-commande ≈ 1ms Procédé industriel
Systèmes de détection
Système de détection d’intrusion
IDS
I dispositif de sécurité issu des systèmes d’information de gestion I analyse le trafic réseau
SCADA
sécurité I issu des systèmes industriels I collecte active de l’information (monitoring) I complément à la supervision du procédé industriel
Détection dans les systèmes industriels: Suricata et le cas Modbus
6/20
2 systèmes de détection : 2 philosophies
SCADA sécurité : Que détecter ?
Détection par ordre d’importance
1 Sortie de bornes du procédé industriel 2 Suivi et collecte des informations système I I I Connexion et déconnexion d’utilisateur Charges CPU Compteurs (de trames...) 3 Incohérence des informations I Corrélation entre sources
Détection dans les systèmes industriels: Suricata et le cas Modbus
7/20
SCADA sécurité : Où détecter ?
Client SCADA sécurité Client SCADA Serveur d’historique Passerelle vers Intranet Serveur SCADA sécurité Serveur SCADA Automate Automate Passerelle protocolaire sécurisée actionneur capteur actionneur capteur
Détection dans les systèmes industriels: Suricata et le cas Modbus
8/20
IDS : Que détecter ?
Détection en fonction de la maturité
1 2 3 4 Détection d’évènements simples redoutés I I I I Reprogrammation d’automate (StuXnet) Ordre d’arrêt Vulnérabilités connues (CVE) Conformité protocolaire Violation de la matrice de flux Violation de la politique de sécurité I I I Utilisation de fonctions illicites Dépassement de seuils Écriture hors des zones autorisées Détection en liste blanche
Détection dans les systèmes industriels: Suricata et le cas Modbus
9/20
IDS : Où détecter ?
Client SCADA Serveur d’historique Passerelle vers Intranet SIEM SCADA sondes Automate S3 S4 Serveur SCADA S2 S6 S1 S5 Automate actionneur capteur actionneur capteur
Détection dans les systèmes industriels: Suricata et le cas Modbus
10/20
SCADA sécurité vs IDS
SCADA sécurité Atouts IDS
I I I I Collecte d’alarme, de valeurs et d’évènements systèmes Analyse des évènements dans le temps I I Système non intrusif Préexistence d’une surveillance par des opérateurs Corrélation entre sources I Trafic réseau exhaustif au point de collecte Formation et appropriation accélérées (mêmes outils...) I
Défauts
Mise à jour plus aisée et moins risquée I I Intrusif Mise à jour délicate I Maintien à jour nécessaire
Détection dans les systèmes industriels: Suricata et le cas Modbus
11/20
SCADA sécurité pour détecter les conséquences IDS pour détecter les causes
Cas pratique
Client SCADA Serveur d’historique Passerelle vers Intranet Serveur SCADA S4 Automate Consigne S6 Information S2 actionneur S5 Automate capteur actionneur capteur
Détection dans les systèmes industriels: Suricata et le cas Modbus
12/20 Protocole :
Modbus
IDS :
Suricata
Que détecter ?
Avec quelles ressources ?
Protocole Modbus TCP/IP
Requête Entête MBAP Trans.
ID Long.
Prot.
ID Unité ADU Modbus Code fonction PDU Modbus Données Réponse Entête MBAP Trans.
ID Long.
Prot.
ID Unité Code fonction Données
Détection dans les systèmes industriels: Suricata et le cas Modbus
13/20
Exemple 1 : Extension Modbus UMAS
Extension Modbus UMAS : Fonction réservée Schneider Electric Requête Entête MBAP Trans.
ID Long.
Prot.
ID Unité ADU Modbus Code fonction 0x5A PDU Modbus Données
Non documentées
Réponse Entête MBAP Trans.
ID Long.
Prot.
ID Unité Code fonction 0x5A Données
Non documentées
Détection dans les systèmes industriels: Suricata et le cas Modbus
14/20
0x06 Adresse Valeur 0x06 Adresse Valeur
Exemple 2 : Écriture dans un registre
Fonction Write Single Register : Écriture dans un registre Requête Entête MBAP Trans.
ID Long.
Prot.
ID Unité ADU Modbus Code fonction 0x06 PDU Modbus Données Adresse Valeur Réponse Entête MBAP Trans.
ID Long.
Prot.
ID Unité Code fonction 0x06 Adresse Données Valeur
Détection dans les systèmes industriels: Suricata et le cas Modbus
15/20
0x5A
Non documentées
0x5A
Non documentées
Suricata : Détection de motif Exemple 1 :
Protocole Modbus UMAS alert tcp $MODBUS_CLIENT any -> $MODBUS_SERVER 502 (content:”
|5A|
”; offset:7; depth:1; msg:”Modbus TCP – Modbus UMAS Protocol”; [...])
Limitations :
I Possibilité de contourner l’IDS I I Pas de vérification de la conformité Complexité d’implémentation des règles plus précises
Détection dans les systèmes industriels: Suricata et le cas Modbus
16/20
alert modbus $MODBUS_CLIENT any -> $MODBUS_SERVER any (modbus.access: write holding, (modbus.function:
0x5A
; address 100, value >2000; msg:”Vitesse moteur trop élevée”; [...])
Contribution Suricata : Préprocesseur Modbus Exemple 1 :
Protocole Modbus UMAS alert modbus $MODBUS_CLIENT any -> $MODBUS_SERVER any (modbus.function:
0x5A
; msg:”Modbus TCP – Modbus UMAS Protocol”; [...])
Avantages :
I Définition moins complexe et plus performante des règles I Vérification de la conformité du protocole
Détection dans les systèmes industriels: Suricata et le cas Modbus
17/20
alert tcp $MODBUS_CLIENT any -> $MODBUS_SERVER 502 (modbus.access: write holding, (content:”
|5A|
”; offset:7; depth:1; address 100, value >2000; msg:”Modbus TCP – Reserved function”; [...]) msg:”Vitesse moteur trop élevée”; [...]) I I Définition étendue Vérification du contenu
Contribution Suricata : Préprocesseur Modbus Exemple 1 :
Protocole Modbus UMAS alert modbus $MODBUS_CLIENT any -> $MODBUS_SERVER any (modbus.function: reserved; msg:”Modbus TCP – Reserved function”; [...])
Avantages :
I Définition moins complexe et plus performante des règles I Vérification de la conformité du protocole I Définition étendue
Détection dans les systèmes industriels: Suricata et le cas Modbus
17/20
alert tcp $MODBUS_CLIENT any -> $MODBUS_SERVER 502 (modbus.access: write holding, (content:”
|5A| 0x5A
; address 100, value >2000; msg:”Vitesse moteur trop élevée”; [...]) I Vérification du contenu
Contribution Suricata : Préprocesseur Modbus Exemple 2 :
Écriture dans un registre alert modbus $MODBUS_CLIENT any -> $MODBUS_SERVER any (modbus.access: write holding, address 100, value >2000; msg:”Vitesse moteur trop élevée”; [...])
Avantages :
I Définition moins complexe et plus performante des règles I Vérification de la conformité du protocole I I Définition étendue Vérification du contenu
Détection dans les systèmes industriels: Suricata et le cas Modbus
18/20
alert tcp $MODBUS_CLIENT any -> $MODBUS_SERVER 502 (content:”
|5A|
”; offset:7; depth:1; msg:”Modbus TCP – Reserved function”; [...])
Performance
Métrique de performance d’un IDS : taux de perte.
50 % 40 % 30 % 20 % 10 % 0 % 0 k 10 k 20 k Débit (pps) 30 k 40 k
100-2 00€
93mm 113mm Règles de conformité 100 règles avec alerte 100 règles sans alerte 20mm
Détection dans les systèmes industriels: Suricata et le cas Modbus
19/20
Conclusion
1 Deux méthodes de détection complémentaires : I I SCADA sécurité IDS 2 Passivité de l’IDS adaptée aux anciens systèmes 3 Code disponible Suricata V2.1 beta3 https://github.com/inliniac/suricata/
Perspectives :
I D’autres protocoles industriels (S7, EtherNet/IP...) I Quid de la sécurité des sondes IDS ?
Détection dans les systèmes industriels: Suricata et le cas Modbus
20/20