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 :
Défendre
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
Disponibilité
3
Confidentialité (optionnel)
Contraintes :
Durée de vie élevée
Fonctionnement en continu avec arrêts planifiés
Pour certains, contraintes de temps de réponse
Atouts :
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é Technologie
Intégrité
Critique
Standard
Serveur
SCADA
Automate
Automate
Très critique Spécifique
actionneur
capteur
actionneur
capteur
Détection dans les systèmes industriels: Suricata et le cas Modbus
5/20
Systèmes de détection
Système de détection
d’intrusion
IDS
dispositif de sécurité issu
des systèmes
d’information de gestion
analyse le trafic réseau
SCADA
sécurité
issu des systèmes industriels
collecte active de
l’information (monitoring)
complément à la supervision
du procédé industriel
Détection dans les systèmes industriels: Suricata et le cas Modbus
6/20
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
Connexion et déconnexion d’utilisateur
Charges CPU
Compteurs (de trames. . . )
3
Incohérence des informations
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é
Serveur
SCADA
sécurité
Client
SCADA
Serveur
d’historique
Passerelle
vers Intranet
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
Détection d’évènements simples redoutés
Reprogrammation d’automate (StuXnet)
Ordre d’arrêt
Vulnérabilités connues (CVE)
Conformité protocolaire
2
3
Violation de la matrice de flux
Violation de la politique de sécurité
Utilisation de fonctions illicites
Dépassement de seuils
Écriture hors des zones autorisées
4
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
SIEM
SCADA sondes
S3
Passerelle
vers Intranet
S1
Serveur
SCADA
S4
S2
Automate
S5
Automate
S6
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é
Collecte d’alarme, de
valeurs et d’évènements
systèmes
Analyse des évènements
dans le temps
Corrélation entre sources
Atouts
IDS
Système non intrusif
Préexistence d’une
surveillance par des
opérateurs
Trafic réseau exhaustif au
point de collecte
Formation et
Mise à jour plus aisée et moins
appropriation accélérées
risquée
(mêmes outils. . . )
Défauts
Maintien à jour nécessaire
Intrusif
Mise à jour délicate
Détection dans les systèmes industriels: Suricata et le cas Modbus
11/20
Cas pratique
Client
SCADA
Serveur
d’historique
Passerelle
vers Intranet
Serveur
SCADA
S4
S2
Automate
S5
Automate
S6
Consigne
actionneur
Information
capteur
actionneur
capteur
Détection dans les systèmes industriels: Suricata et le cas Modbus
12/20
Protocole Modbus TCP/IP
Requête
ADU Modbus
PDU Modbus
Entête MBAP
Trans.
ID
Long.
Prot.
ID
Code
fonction
Données
Code
fonction
Données
Unité
Réponse
Entête MBAP
Trans.
ID
Long.
Prot.
ID
Unité
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
ADU Modbus
PDU Modbus
Entête MBAP
Trans.
ID
Long.
Prot.
ID
Code
fonction
Unité
0x5A
Données
Non documentées
Réponse
Entête MBAP
Trans.
ID
Long.
Prot.
ID
Code
fonction
Unité
0x5A
Données
Non documentées
Détection dans les systèmes industriels: Suricata et le cas Modbus
14/20
Exemple 2 : Écriture dans un registre
Fonction Write Single Register : Écriture dans un registre
Requête
ADU Modbus
PDU Modbus
Entête MBAP
Trans.
ID
Long.
Prot.
ID
Code
fonction
Unité
0x06
Données
Adresse
Valeur
Réponse
Entête MBAP
Trans.
ID
Long.
Prot.
ID
Code
fonction
Unité
0x06
Données
Adresse
Valeur
Détection dans les systèmes industriels: Suricata et le cas Modbus
15/20
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 :
Possibilité de contourner l’IDS
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
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 :
Définition moins complexe et plus performante des règles
Vérification de la conformité du protocole
Détection dans les systèmes industriels: Suricata et le cas Modbus
17/20
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 :
Définition moins complexe et plus performante des règles
Vérification de la conformité du protocole
Définition étendue
Détection dans les systèmes industriels: Suricata et le cas Modbus
17/20
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 :
Définition moins complexe et plus performante des règles
Vérification de la conformité du protocole
Définition étendue
Vérification du contenu
Détection dans les systèmes industriels: Suricata et le cas Modbus
18/20
Performance
Métrique de performance d’un IDS : taux de perte.
50 %
Taux de perte
40 %
Règles de conformité
30 %
100 règles avec alerte
100 règles sans alerte
20 %
10 %
0%
0k
10 k
20 k
30 k
40 k
Débit (pps)
0€
-20
0
0
1
93mm
20mm
113mm
Détection dans les systèmes industriels: Suricata et le cas Modbus
19/20
Conclusion
1
Deux méthodes de détection complémentaires :
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 :
D’autres protocoles industriels (S7, EtherNet/IP. . . )
Quid de la sécurité des sondes IDS ?
Détection dans les systèmes industriels: Suricata et le cas Modbus
20/20