Post on 26-Jan-2017
Nuit du Hack 2K16Scénarios d’attaque surun système industriel
Mettre en place une maquette proche des systèmes industriels en production
Démontrer via des sensibilisations les vulnérabilités et les impacts en cas d’attaques
Comprendre le fonctionnement de la logique et l’organisation d’un environnement industriel
ObjectifsUn niveau de protection faible
Découverte des vulnérabilitésLes chercheurs et hackers se concentrent depuis 2009 sur la cyber sécurité des composants industriels
2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 20150
50
100
150
200
250
90
61
77
1731 28
43
172
240
180
222
StuxnetProjet Aurora(INL)
Vulnérabilités ICS dévoilées/an (source scadahacker.com)
Présentation de la maquette
Automate Siemens
Attaquant
Switch
Client lourd sous Linux
Client Web sous Windows
Topologie du réseau industriel
Interface de supervision Serveur d’acquisition
Boite mystèreAccès illégitime au réseau industriel
Ressemble à un boitier industriel sur rail DIN
Connecté sur le réseau industriel
Légitime ?
Et pourtant…
Altération de la logique programméeEnvoi de nouveaux blocs de fonction
PLCSiemensServeur SCADA / client
lourd sous LinuxClient léger SCADA
(Windows) Presse
+-24VS7commHTTP
Inst
alla
tion
nouv
eau
pro
gram
me
Connexion SSH
Comment ça fonctionne ?Exemple d’exécution cyclique d’un programme
Démarrage de l'automate (mode RUN)
Lecture des états des cartes d'entrées
Exécution du bloc OB1 :CALL FC1CALL FB2, DB2
Mise à jour des cartes de sorties
A I5.0R Q9.3R DB1.DBX2.1
A I5.0R #outR #stat
FC1
FB2
0.0 in BOOL2.0 out BOOL
DB2
0.0 STAT0 BOOL0.1 STAT1 BOOL
DB1
Comment ça fonctionne ?Blocs mémoires - Les différents rôles
Organization Block (OB) Appelé suite au déclenchement d’évènements particuliers Premier bloc (OB1) lancé au démarrage de l’automate
Function (FC) / Function Block (FB) Variables locales temporaires et paramètres en entrée/sortie Variables statiques possibles avec les FB grâce aux IDB
System Function (SFC) / System Function Block (SFB) Semblables aux blocs précédents Ensemble de fonctions systèmes non modifiables
Data Block (DB) / Instance Data Block (IDB) / System Data Block (SDB) Variables globales accessibles depuis différentes instances IDB lié à un bloc fonctionnel (FB) SDB contient des informations systèmes comme la configuration hardware
Comment ça fonctionne ?Adressage et types de données
7 6 5 4 3 2 1 0
M3.0M3.4M3.7
MB0
MB1
MB2
MB3
MW0
MW2
MD0
Type Format Taille en bits
BOOL Bit 1
BYTE Octet 8
WORD Mot 16
DWORD Mot double 32
INT Entier 16
DINT Entier double 32
REAL Réel 32
CHAR Caractère ASCII 8
Langages de programmationDéfinis par le standard IEC 61131-3
Simplicité d’utilisation
Instructions composées de fonctions logiques
Langages plus proches de l’électronique que de la programmation
Ladder diagram
Function block diagram
Instruction List
Protocole S7Structure d’un paquet
Partie variablePartie fixe
En-tête IP En-tête TCP En-tête TPKT En-tête COTP S7 (en-tête + PDU)
Version Réservé Longueur Longueur Type ParamètresChamps
Mode connecté (TCP) sur le port 102Communications maitre/esclaveNi chiffrement, ni authentificationProtocole basé sur le modèle OSI
COTP : protocole de transport OSI En-tête TPKT : traducteur OSI <-> TCP/IP
Autres attaquesMan in the middle - Usurpation et contrôle des flux
PLCSiemensServeur SCADA / client
lourd sous LinuxClient léger SCADA
(Windows) Presse
+-24V
S7comm
HTTP
Connexion SSH
S7co
mm
S7comm
Autres attaquesBranchement d’une clé USB directement depuis l’IHM
PLCSiemensServeur SCADA / client
lourd sous LinuxClient léger SCADA
(Windows) Presse
+-24VHTTP S7comm
S7comm :STOP ou RESET
14
Risques liés à ce type d’attaques
Une fois que l’attaquant a accès au SI industriel, il est en mesure de réaliser tout type d’attaque :
Sabotage / Déni de service fatal pour les chaines de productionImpact humain et/ou environnementalEspionnage industrielGuerre économique : légers défauts dans la production
Ouverture à de nombreuses possibilités
RéférencesQuelques liens utiles…
Moteurs de recherche : Shodan : https://www.shodan.io Censys : https://censys.io
Solutions logicielles : SCADA tools : https://github.com/atimorin/scada-tools PLC scan : https://github.com/sbilly/plcscan ICShell : https://code.opensource-security.de/brueggemann/icshell Snap7 : http://snap7.sourceforge.net Libnodave : http://libnodave.sourceforge.net GitHub & GitLab – ex : https://github.com/jseidl/virtuaplant
Veille : SCADA STRANGE LOVE : http://scadastrangelove.blogspot.fr ICS CERT : https://ics-cert.us-cert.gov/advisories SCADAhacker : https://scadahacker.com Digital Bond : https://www.digitalbond.com
Pour en savoir plusContinuez à suivre les activités de Lexsi
Site officielhttps://lexsi.com
Bloghttps://lexsi.com/securityhub
https://linkedin.com/company/lexsiLinkedIn
https://twitter.com/lexsiTwitter
Lexsi recrute... :-)