Analyse de sécurité de technologies propriétaires SCADA



Documents pareils
Les fonctions de hachage, un domaine à la mode

Skype (v2.5) Protocol Data Structures (French) Author : Ouanilo MEDEGAN

SSL ET IPSEC. Licence Pro ATC Amel Guetat

Sécurité des applications Retour d'expérience

Cryptologie. Algorithmes à clé publique. Jean-Marc Robert. Génie logiciel et des TI

Devoir Surveillé de Sécurité des Réseaux

Sécurité des réseaux IPSec

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Sécurité des réseaux sans fil

Protocole SSH-2.0. Tuan-Tu, TRAN. Janvier 2009

Rapport de certification ANSSI-CSPN-2010/07. KeePass Version 2.10 Portable

Attaques Wi-Fi WPA. Séparer le bon grain de l ivraie dans le buzz ambiant. Cédric Blancher. sid@rstack.org Rstack Team

Cours 14. Crypto. 2004, Marc-André Léger

CRYPTOGRAPHIE. Chiffrement par flot. E. Bresson. SGDN/DCSSI Laboratoire de cryptographie

Chapitre 7. Sécurité des réseaux. Services, attaques et mécanismes cryptographiques. Hdhili M.H. Cours Administration et sécurité des réseaux

DÉCLARATION ET DEMANDE D'AUTORISATION D OPÉRATIONS RELATIVES A UN MOYEN DE CRYPTOLOGIE

Le protocole sécurisé SSL

SSH, le shell sécurisé

Contenu. Cocher : Network Policy and Access Services > Next > Next. Cocher : Network Policy Server > Next > Install

Club Utilisateurs 2 ème Réunion, 8 Octobre 2014 International RFID Congress, Marseille. Diffusion Restreinte

Once the installation is complete, you can delete the temporary Zip files..

Le Passeport Biométrique. Benoit LEGER CISSP ISO LD

Le protocole SSH (Secure Shell)

OWASP Open Web Application Security Project. Jean-Marc Robert Génie logiciel et des TI

Les Réseaux Privés Virtuels (VPN) Définition d'un VPN

Journées MATHRICE "Dijon-Besançon" DIJON mars Projet MySafeKey Authentification par clé USB

Evaluation, Certification Axes de R&D en protection

Documentation SecurBdF

Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux

Sécurité des réseaux wi fi

WIFI sécurisé en entreprise (sur un Active Directory 2008)

Manuel des logiciels de transferts de fichiers File Delivery Services

Differential Synchronization

ÉPREUVE COMMUNE DE TIPE Partie D

Travaux soutenus par l ANR. Jean-François CAPURON (DGA) Bruno LEGEARD (Smartesting)

Fonction de hachage et signatures électroniques

Installation d'un serveur RADIUS

La carte à puce. Jean-Philippe Babau

Le format OpenPGP. Traduit par : Sébastien Person. personseb@yahoo.fr. Matthieu Hautreux. matthieu.hautreux@insa-rouen.fr.

INSTALLATION D'OPENVPN:

Plan. École Supérieure d Économie Électronique. Plan. Chap 9: Composants et systèmes de sécurité. Rhouma Rhouma. 21 Juillet 2014

Les Protocoles de sécurité dans les réseaux WiFi. Ihsane MOUTAIB & Lamia ELOFIR FM05

Rappels réseaux TCP/IP

FTPS AVEC UNE APPLIANCE FAST360 EN COUPURE. Table des matières

(Third-Man Attack) PASCAL BONHEUR PASCAL 4/07/2001. Introduction. 1 Domain Name Server. 2 Commandes DNS. 3 Hacking des serveurs DNS

WiFI Sécurité et nouvelles normes

TP 2 Réseaux. Adresses IP, routage et sous-réseaux

Haka : un langage orienté réseaux et sécurité

La sécurité des réseaux. 9e cours 2014 Louis Salvail

Concept Compumatica Secure Mobile

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

Réseaux. Moyens de sécurisation. Plan. Evolutions topologiques des réseaux locaux

Jeux de caracte res et encodage (par Michel Michaud 2014)

Formats d images. 1 Introduction

Installation d'un TSE (Terminal Serveur Edition)

Intégration de la cybersécurité aux systèmes de conduite industriels. Méthodes et pratiques

Livre blanc. Sécuriser les échanges

Sécurité par compression! ReSIST Gilles RICHARD IRIT

BAP E Gestionnaire de parc informatique et télécommunications MI2 / MI3 Ouverts au titre de 2010 Arrêté du 7/04/10 - J.

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad

Tunnels et VPN. 22/01/2009 Formation Permanente Paris6 86

Transmission d informations sur le réseau électrique

Gestion des clés cryptographiques

Kerberos en environnement ISP UNIX/Win2K/Cisco

La Technologie Carte à Puce EAP TLS v2.0

Guide de mise en service - THOMSON ST2030

PocketNet SNMP/Modbus

Information. BASES LITTERAIRES Etre capable de répondre à une question du type «la valeur trouvée respecte t-elle le cahier des charges?

SQL MAP. Etude d un logiciel SQL Injection

Mise en route d'un Routeur/Pare-Feu

CIBLE DE SECURITE CSPN DU PRODUIT PASS. (Product for Advanced SSO)

CCNA Discovery Travailler dans une PME ou chez un fournisseur de services Internet

VTP. LAN Switching and Wireless Chapitre 4

Accès aux ressources informatiques de l ENSEEIHT à distance

>#? " $: $A; 4% 6 $7 -/8 $+.,.,$9:$ ;,<=</.2,0+5;,/ ! " # $%!& *$$ $%!& *! # +$

VMware ESX : Installation. Hervé Chaudret RSI - Délégation Centre Poitou-Charentes

7.1.2 Normes des réseaux locaux sans fil

Sécurité des systèmes d'informations et communicants dans le médical

Note technique. Recommandations de sécurité relatives à IPsec 1 pour la protection des flux réseau

Installer Enterprise Miner 5.1 en SAS environnement Windows

CRYPTOGRAPHIE. Signature électronique. E. Bresson. SGDN/DCSSI Laboratoire de cryptographie

Formations. «Règles de l Art» Certilience formation N SIRET APE 6202A - N TVA Intracommunautaire FR

Routage AODV. Languignon - Mathe - Palancher - Pierdet - Robache. 20 décembre Une implémentation de la RFC3561

Sécurité de la ToIP Mercredi 16 Décembre CONIX Telecom

Représentation d un entier en base b

Sécurité des applications web. Daniel Boteanu

IPSEC : PRÉSENTATION TECHNIQUE

VOIP : Un exemple en Afrique

Instructions Mozilla Thunderbird Page 1

TP 1 : LES COMMANDES RESEAUX Matière: RESEAUX LOCAUX

Sommaire Introduction Les bases de la cryptographie Introduction aux concepts d infrastructure à clés publiques Conclusions Références

S28 - La mise en œuvre de SSO (Single Sign On) avec EIM (Enterprise Identity Mapping)

Club Automation : Journée Cyber Sécurité Intégration de la Cyber Sécurité : Enjeux et étapes. 03 Décembre 2013

ADHEFILM : tronçonnage. ADHEFILM : cutting off. ADHECAL : fabrication. ADHECAL : manufacturing.

Étudiant : Nicolas Favre-Félix IFIPS Info 3. Les One Time Passwords, Mots de passe à usage unique

Protection des protocoles

Transcription:

Analyse de sécurité de technologies propriétaires SCADA Jean-Baptiste Bédrune jbbedrune@quarkslab.com Alexandre Gazet agazet@quarkslab.com Florent Monjalet florent.monjalet@cea.fr

Plan 1 Introduction Qu est-ce qu un ICS? Objet de l étude Buts 2 Reverse d un protocole industriel récent 3 À la recherche de l entropie perdue 4 Rétronconception du firmware 5 Conclusion 2 / 41

Qu est-ce qu un ICS? Qu est-ce qu un système industriel? Système industriel / Industrial Control System (ICS) Réseau informatique contrôlant un processus physique. Présents dans beaucoup de systèmes critiques : Centrale nucléaire Distribution d eau Aiguillage de trains Contrôles d accès Chaînes de production Supervisory Control and Data Acquistion (SCADA) Partie supervision et contrôle direct du processus physique (sous-partie de l ICS). 3 / 41

Qu est-ce qu un ICS? Composants d un ICS High level management / enterprise network (ERP) SCADA User Interface Engineering workstation Programmable Logic Controllers 4 / 41

Qu est-ce qu un ICS? SCADA Figure: Exemple d IHM SCADA (fastweb.it) 5 / 41

Objet de l étude Pourquoi spécifiquement un protocole industriel? Constat : une grande partie des vulnérabilités publiées concernent des fonctionnalités non spécifiques aux réseaux industriels (serveurs Web embarqués) Intérêt de l étude d un protocole métier : Critique : contrôle direct et bas niveau du processus industriel Indispensable : cœur du système industriel 6 / 41

Objet de l étude Pourquoi spécifiquement un protocole industriel? Constat : une grande partie des vulnérabilités publiées concernent des fonctionnalités non spécifiques aux réseaux industriels (serveurs Web embarqués) Intérêt de l étude d un protocole métier : Critique : contrôle direct et bas niveau du processus industriel Indispensable : cœur du système industriel La cible : Protocole récent, conçu pour être sécurisé Propriétaire Très peu de travaux publics existants Beaucoup de choses à découvrir 6 / 41

Buts Objectifs de l étude? 1 Reverser une partie du protocole pour écrire des dissecteurs 2 Évaluer la sécurité du protocole Comment l authenticité/l intégrité est-elle implémentée? Des erreurs de conception? 3 Évaluer l implémentation du protocole 7 / 41

Plan 1 Introduction 2 Reverse d un protocole industriel récent Analyse en boîte noire Recherche des fonctions intéressantes Découverte du cryptosystème 3 À la recherche de l entropie perdue 4 Rétronconception du firmware 5 Conclusion 8 / 41

Analyse en boîte noire Analyse en boîte noire Buts : Identification de la structure générale des paquets Recherche de points d intérêt Méthodologie : Génération contrôlée de trafic Analyse différentielle, entre paquets de : Même session, hôte différent Même session, même hôte, position différente dans l échange Session différente, même hôte, même position Etc. 9 / 41

Analyse en boîte noire Analyse différentielle Believe it or not, if you stare at the hex dumps long enough, you start to see the patterns - Rob Savoye Figure: Différences entre paquets envoyés par le PLC 1 1. hexlighter (https://github.com/fmonjalet/hexlighter) 10 / 41

Analyse en boîte noire Analyse différentielle Figure: Différences entre paquets envoyés par le PLC (plus vif = plus grande différence) 11 / 41

Analyse en boîte noire Résultats Résultats : Déduction d une partie de la spécification Outils de dissection Identification des champs liés à de la cryptographie (32 octets à forte entropie) Et maintenant? Les champs cryptographiques nécessitent une analyse en boîte blanche Étude des binaires 12 / 41

Recherche des fonctions intéressantes Plan 1 Introduction 2 Reverse d un protocole industriel récent Analyse en boîte noire Recherche des fonctions intéressantes Découverte du cryptosystème 3 À la recherche de l entropie perdue 4 Rétronconception du firmware 5 Conclusion 13 / 41

Recherche des fonctions intéressantes Recherche des fonctions intéressantes Étude des clients Windows (IHM) : facile à instrumenter/débugger Recherche du code traitant le bloc de 32 octets 2. http://aluigi.altervista.org/mytoolz.htm 14 / 41

Recherche des fonctions intéressantes Recherche des fonctions intéressantes Étude des clients Windows (IHM) : facile à instrumenter/débugger Recherche du code traitant le bloc de 32 octets Première approche : suivre manuellement les données depuis recv jusqu à leur lecture Multiprocessing, mémoire partagée, asynchronicité, nombreuses copies... Deuxième approche : recherche de primitives cryptographiques intéressantes (par exemple un hash de 32 octets) signsrch 2 : détection de constantes cryptographiques (et autres signatures) classiques Dans une DLL : SHA-256, AES 2. http://aluigi.altervista.org/mytoolz.htm 14 / 41

Découverte du cryptosystème Plan 1 Introduction 2 Reverse d un protocole industriel récent Analyse en boîte noire Recherche des fonctions intéressantes Découverte du cryptosystème 3 À la recherche de l entropie perdue 4 Rétronconception du firmware 5 Conclusion 15 / 41

Découverte du cryptosystème Découverte du cryptosystème Point de départ : 1 SHA-256 appelé à chaque paquet reçu ou émis 2 SHA-256 utilisé dans un HMAC SHA-256 3 Utilisation d une clé MAC, d où vient-elle? Itérations : 1 Comment la clé MAC est-elle générée? 2 Analyse boîte noire : trouver l échange de clés dans les paquets 3 Analyse boîte blanche : trouver comment l échange a lieu 4 Etc. 16 / 41

Découverte du cryptosystème Résumé du cryptosystème Session establishment Client hello packet hello packet Server

Découverte du cryptosystème Résumé du cryptosystème Session establishment Client hello packet hello packet obf enc Kobf (K AES) + aes128 gcm enc KAES (K MAC) Applicative ack Server After this response, all packets contain a HMAC

Découverte du cryptosystème Résumé du cryptosystème Session establishment Password authentication Client hello packet hello packet obf enc Kobf (K AES) + aes128 gcm enc KAES (K MAC) Applicative ack Ask for challenge chall : 20 byte challenge Server After this response, all packets contain a HMAC

Découverte du cryptosystème Résumé du cryptosystème Session establishment Password authentication Client hello packet hello packet obf enc Kobf (K AES) + aes128 gcm enc KAES (K MAC) Applicative ack Ask for challenge chall : 20 byte challenge HMAC sha1(key = sha1(password), text = chall) Auth result Server After this response, all packets contain a HMAC After this response, this session has the priviledge associated with password

Découverte du cryptosystème Résumé du cryptosystème Session establishment Password authentication Client hello packet hello packet obf enc Kobf (K AES) + aes128 gcm enc KAES (K MAC) Applicative ack Ask for challenge chall : 20 byte challenge HMAC sha1(key = sha1(password), text = chall) Auth result payload + HMAC sha1(key = K MAC, text = payload) Server After this response, all packets contain a HMAC After this response, this session has the priviledge associated with password Rest of the communication payload + HMAC sha1(key = K MAC, text = payload)... 17 / 41

Découverte du cryptosystème Remarques sur le protocole Le client utilise une clé publique (ECC?) K obf premier secret partagé (K AES ) pour chiffrer le 18 / 41

Découverte du cryptosystème Remarques sur le protocole Le client utilise une clé publique (ECC?) K obf pour chiffrer le premier secret partagé (K AES ) La clé est stockée dans un Zip chiffré côté client (mot de passe hardcodé) Le Zip vient de l installation de l IHM SCADA 18 / 41

Découverte du cryptosystème Remarques sur le protocole Le client utilise une clé publique (ECC?) K obf pour chiffrer le premier secret partagé (K AES ) La clé est stockée dans un Zip chiffré côté client (mot de passe hardcodé) Le Zip vient de l installation de l IHM SCADA La clé récupérée dans le Zip ne dépend que du modèle de PLC Même clé privée pour tous les PLCs d un même modèle Objectif : reverser la crypto obscurcie et extraire la clé privée du PLC (work in progress) 18 / 41

Plan 1 Introduction 2 Reverse d un protocole industriel récent 3 À la recherche de l entropie perdue Mais où est l entropie? Démonstration 4 Rétronconception du firmware 5 Conclusion 19 / 41

Mais où est l entropie? Mais où est l entropie? Authenticité confidentialité de la clé MAC. Collisions de clés vues pendant la phase de débogage 20 / 41

Mais où est l entropie? Mais où est l entropie? Authenticité confidentialité de la clé MAC. Collisions de clés vues pendant la phase de débogage Comment ces clés sont-elles générées? prng_init(0xffffffff) Suite déterministe d appels à : prng_reseed("only for real entropy bytes!") prng_gen_num(size) Toujours la même séquence de clés MAC générée Bruteforce aisé... Possibilité de forger des paquets authentifiés Pas besoin de casser la white-box 20 / 41

Mais où est l entropie? Mais où est l entropie? Authenticité confidentialité de la clé MAC. Collisions de clés vues pendant la phase de débogage Comment ces clés sont-elles générées? prng_init(0xffffffff) Suite déterministe d appels à : prng_reseed("only for real entropy bytes!") prng_gen_num(size) Toujours la même séquence de clés MAC générée Bruteforce aisé... Possibilité de forger des paquets authentifiés Pas besoin de casser la white-box La vulnérabilité a été patchée depuis 20 / 41

Mais où est l entropie? Exploitation de la vulnérabilité Prérequis : Accès au réseau Man-in-the-middle Que peut-on faire avec? Voler n importe quelle session authentifiée Changer les valeurs renvoyées par le PLC Agir avec les privilèges de l utilisateur actif : Écritures arbitraires sur le PLC Reprogrammation du PLC Contrôle total du processus physique 21 / 41

Démonstration Démonstration Exploitation du manque d entropie : Man-in-the-middle entre un PLC et la supervision PLC HMI Attacker 22 / 41

Plan 1 Introduction 2 Reverse d un protocole industriel récent 3 À la recherche de l entropie perdue 4 Rétronconception du firmware Sections Décompression de la section de code Signature du code 5 Conclusion 23 / 41

Rétroconception du firmware Motivation Pas de cryptographie boîte blanche? Obfuscation plus légère? Accès au firmware Sur la NAND du PLC Sur le site de Web de l équipementier : nécessite un compte valide Mise à jour Mise à jour à travers le serveur Web ou une carte SD Code du firmware intégralement compressé Décompression réalisée par le firmware en cours d exécution Décompression en boîte noire... 24 / 41

Sections Recherche des en-têtes Nom 00000020 58 42 30 20 00 00 00 00 00 00 00 00 20 00 00 00 XB0...... 00000030 87 D0 FD FF 42 47 5F 41 42 4C BE 41 99 00 4D 68 ÐýÿBG_ABL¾A.Mh 00000040 8A E5 41 30 30 30 30 30 02 00 00 00 FF FF FF FF ŠåA00000...ÿÿÿÿ 00000050 42 30 30 30 30 30 48 00 00 00 02 40 EE FF 46 57 B00000H...@îÿFW 00000060 5F 53 49 47 42 47 5F 41 42 4C 01 00 EF 00 00 00 _SIGBG_ABL..ï... 00000070 00 10 36 45 53 37 20 32 31 32 2D 31 42 45 34 30..6ES7 212-1BE40 00000080 2D 30 58 42 30 20 56 04 00 00 41 30 30 30 30 30-0XB0 V...A00000 00000090 F2 B7 00 00 00 01 5D 1B 41 53 00 00 04 2D C0 00 ò...].as...-à. 000000A0 00 80 40 00 00 D8 B6 C7 00 04 00 00 00 00 00 00. @..Ø Ç... 000000B0 40 00 00 80 3F 00 10 00 00 00 56 04 00 00 40 00 @..?...V...@. 25 / 41

Sections Recherche des en-têtes Taille 00000020 58 42 30 20 00 00 00 00 00 00 00 00 20 00 00 00 XB0...... 00000030 87 D0 FD FF 42 47 5F 41 42 4C BE 41 99 00 4D 68 ÐýÿBG_ABL¾A.Mh 00000040 8A E5 41 30 30 30 30 30 02 00 00 00 FF FF FF FF ŠåA00000...ÿÿÿÿ 00000050 42 30 30 30 30 30 48 00 00 00 02 40 EE FF 46 57 B00000H...@îÿFW 00000060 5F 53 49 47 42 47 5F 41 42 4C 01 00 EF 00 00 00 _SIGBG_ABL..ï... 00000070 00 10 36 45 53 37 20 32 31 32 2D 31 42 45 34 30..6ES7 212-1BE40 00000080 2D 30 58 42 30 20 56 04 00 00 41 30 30 30 30 30-0XB0 V...A00000 00000090 F2 B7 00 00 00 01 5D 1B 41 53 00 00 04 2D C0 00 ò...].as...-à. 000000A0 00 80 40 00 00 D8 B6 C7 00 04 00 00 00 00 00 00. @..Ø Ç... 000000B0 40 00 00 80 3F 00 10 00 00 00 56 04 00 00 40 00 @..?...V...@. 26 / 41

Sections Recherche des en-têtes CRC-32 00000020 58 42 30 20 00 00 00 00 00 00 00 00 20 00 00 00 XB0...... 00000030 87 D0 FD FF 42 47 5F 41 42 4C BE 41 99 00 4D 68 ÐýÿBG_ABL¾A.Mh 00000040 8A E5 41 30 30 30 30 30 02 00 00 00 FF FF FF FF ŠåA00000...ÿÿÿÿ 00000050 42 30 30 30 30 30 48 00 00 00 02 40 EE FF 46 57 B00000H...@îÿFW 00000060 5F 53 49 47 42 47 5F 41 42 4C 01 00 EF 00 00 00 _SIGBG_ABL..ï... 00000070 00 10 36 45 53 37 20 32 31 32 2D 31 42 45 34 30..6ES7 212-1BE40 00000080 2D 30 58 42 30 20 56 04 00 00 41 30 30 30 30 30-0XB0 V...A00000 00000090 F2 B7 00 00 00 01 5D 1B 41 53 00 00 04 2D C0 00 ò...].as...-à. 000000A0 00 80 40 00 00 D8 B6 C7 00 04 00 00 00 00 00 00. @..Ø Ç... 000000B0 40 00 00 80 3F 00 10 00 00 00 56 04 00 00 40 00 @..?...V...@. 27 / 41

Sections Recherche des en-têtes 00000020 58 42 30 20 00 00 00 00 00 00 00 00 20 00 00 00 XB0...... 00000030 87 D0 FD FF 42 47 5F 41 42 4C BE 41 99 00 4D 68 ÐýÿBG_ABL¾A.Mh 00000040 8A E5 41 30 30 30 30 30 02 00 00 00 FF FF FF FF ŠåA00000...ÿÿÿÿ 00000050 42 30 30 30 30 30 48 00 00 00 02 40 EE FF 46 57 B00000H...@îÿFW 00000060 5F 53 49 47 42 47 5F 41 42 4C 01 00 EF 00 00 00 _SIGBG_ABL..ï... 00000070 00 10 36 45 53 37 BG_ABL 20 32 31 32 2D 31 42 45 34 30..6ES7 212-1BE40 00000080 2D 30 58 42 30 20 56 04 00 00 41 30 30 30 30 30-0XB0 V...A00000 00000090 F2 B7 00 00 00 01 5D 1B 41 53 00 00 04 2D C0 00 ò...].as...-à. 000000A0 00 80 40 00 00 D8 B6 C7 00 04 A00000 00 00 00 00 00. @..Ø Ç... 000000B0 40 00 00 80 3F 00 10 00 00 00 56 04 00 00 40 00 @..?...V...@. 28 / 41

Décompression de la section de code Organisation de la section de code Section A00000 Taille des chunks 00000090 F2 B7 00 00 00 01 5D 1B 41 53 00 00 04 2D C0 00 ò...].as...-à. 000000A0 00 80 40 00 00 D8 B6 C7 00 04 00 00 00 00 00 00. @..Ø Ç... 000000B0 40 00 00 80 3F 00 10 00 00 00 56 04 00 00 40 00 @..?...V...@.... 0000B880 2C 20 FF E2 03 00 02 C1 00 00 00 01 E3 A0 90 00, ÿâ...á...ã.. 0000B890 00 E1 A0 B0 09 E8 A3 0A 04 00 E3 A0 B0 4C E8 83.á.è...ã Lèƒ 0000B8A0 0A 00 00 E2 87 70 01 E2 5E E0 01 00 1A FF FF E3...â p.â^à...ÿÿã 0000B8B0 E3 A0 70 29 00 E3 A0 B0 20 E0 87 21 07 00 E0 85 ã p).ã à!..à... 00017980 74 50 01 01 03 15 01 A0 70 00 00 00 60 CA 00 00 tp... p...`ê.. 00017990 00 02 E3 A0 00 01 00 E1 C5 00 BC E2 8D 00 40 00..ã...áÅ.¼â..@. 000179A0 EB FF FA A0 E1 57 00 00 00 2A 00 00 EA E1 A0 10 ëÿú áw...*..êá. 000179B0 07 00 E2 87 70 01 E2 8D 00 40 80 05 D0 10 B2 E3..â p.â..@.ð.²ã... 000243F0 44 D3 00 00 00 00 E1 A0 00 05 00 EB 00 0B 3A E1 DÓ...á...ë..:á 00024400 A0 00 05 80 03 38 E1 B0 70 00 1A 00 00 00 00 EB...8á p...ë 00024410 FF 7C E3 E2 8A 00 0F 5F E1 D0 10 B6 E1 A0 00 00 ÿ ãâš.._áð. á.. 29 / 41

Décompression de la section de code Zones faiblement compressées 00814000 00 3C 53 45 52 56 45 52 50 00 41 47 45 53 3E 0D.<SERVERP.AGES>. 00814010 0A 3C 00 21 2D 2D 20 54 68 65 20 00 44 65 66 61.<.!-- The.Defa 00814020 75 6C 74 20 00 6C 69 6E 6B 20 61 74 20 28 74 68 ult.link at (th 00814030 02 42 01 73 65 20 00 54 61 67 20 77 69 6C 6C 01.B.se.Tag will. 00814040 20 62 65 20 75 73 65 02 00 77 68 65 6E 20 61 20 be use..when a. 00814050 52 05 65 71 75 65 73 02 63 01 02 75 6C 64 20 6E R.eques.c..uld n 00814060 6F 02 62 00 65 20 72 65 73 6F 6C 76 00 65 64 20 o.b.e resolv.ed. 00814070 2D 2D 3E 0D 0A 00 3C 42 41 53 45 20 4C 4F 00 43 -->...<BASE LO.C 30 / 41

Décompression de la section de code Zones faiblement compressées 00000000 00 3C 53 45 52 56 45 52 50.<SERVERP 00000009 00 41 47 45 53 3E 0D 0A 3C.AGES>..< 00000012 00 21 2D 2D 20 54 68 65 20.!-- The. 0000001B 00 44 65 66 61 75 6C 74 20.Default. 00000024 00 6C 69 6E 6B 20 61 74 20.link at. 0000002D 28 74 68 02 42 01 73 65 20 (th.b.se. 00000036 00 54 61 67 20 77 69 6C 6C.Tag will 0000003F 01 20 62 65 20 75 73 65 02. be use. 00000048 00 77 68 65 6E 20 61 20 52.when a R 00000051 05 65 71 75 65 73 02 63 01.eques.c. 0000005A 02 75 6C 64 20 6E 6F 02 62.uld no.b 00000063 00 65 20 72 65 73 6F 6C 76.e resolv 0000006C 00 65 64 20 2D 2D 3E 0D 0A.ed -->.. 00000075 00 3C 42 41 53 45 20 4C 4F.<BASE LO 0000007E 00 43 41 4C 4C 49 4E 4B 3D.CALLINK= 00000087 00 22 2F 22 20 50 52 45 46."/" PREF 31 / 41

Décompression de la section de code Zones faiblement compressées Premier octet : masque 00000000 00 3C 53 45 52 56 45 52 50.<SERVERP 00000009 00 41 47 45 53 3E 0D 0A 3C.AGES>..< 00000012 00 21 2D 2D 20 54 68 65 20.!-- The. 0000001B 00 44 65 66 61 75 6C 74 20.Default. 00000024 00 6C 69 6E 6B 20 61 74 20.link at. 0000002D 28 74 68 02 42 01 73 65 20 (th.b.se. 00000036 00 54 61 67 20 77 69 6C 6C.Tag will 0000003F 01 20 62 65 20 75 73 65 02. be use. 00000048 00 77 68 65 6E 20 61 20 52.when a R 00000051 05 65 71 75 65 73 02 63 01.eques.c. 0000005A 02 75 6C 64 20 6E 6F 02 62.uld no.b 00000063 00 65 20 72 65 73 6F 6C 76.e resolv 0000006C 00 65 64 20 2D 2D 3E 0D 0A.ed -->.. 00000075 00 3C 42 41 53 45 20 4C 4F.<BASE LO 0000007E 00 43 41 4C 4C 49 4E 4B 3D.CALLINK= 00000087 00 22 2F 22 20 50 52 45 46."/" PREF 32 / 41

Décompression de la section de code Zones faiblement compressées Premier octet : masque Octets rouges : longueur 00000000 00 3C 53 45 52 56 45 52 50.<SERVERP 00000009 00 41 47 45 53 3E 0D 0A 3C.AGES>..< 00000012 00 21 2D 2D 20 54 68 65 20.!-- The. 0000001B 00 44 65 66 61 75 6C 74 20.Default. 00000024 00 6C 69 6E 6B 20 61 74 20.link at. 0000002D 28 74 68 02 42 01 73 65 20 (th.b.se. 00000036 00 54 61 67 20 77 69 6C 6C.Tag will 0000003F 01 20 62 65 20 75 73 65 02. be use. 00000048 00 77 68 65 6E 20 61 20 52.when a R 00000051 05 65 71 75 65 73 02 63 01.eques.c. 0000005A 02 75 6C 64 20 6E 6F 02 62.uld no.b 00000063 00 65 20 72 65 73 6F 6C 76.e resolv 0000006C 00 65 64 20 2D 2D 3E 0D 0A.ed -->.. 00000075 00 3C 42 41 53 45 20 4C 4F.<BASE LO 0000007E 00 43 41 4C 4C 49 4E 4B 3D.CALLINK= 00000087 00 22 2F 22 20 50 52 45 46."/" PREF 33 / 41

Décompression de la section de code Compression Summary : Blocs de 9 octets : un octet de masque, 8 octets de données Certaines données encodées par leur longueur Longueur, mais pas de distance... La compression augmente progressivement à l intérieur des chunks Compression LZ 34 / 41

Décompression de la section de code Compression : LZP LZP Seul algorithme encodant seulement la longueur (WikiBooks) Improvement to dictionary coding/context coding 4 variantes. Ici, LZP3 est utilisé Pas d implémentation publique fonctionnelle Utilisation Décompresse chaque bloc de la section A00000. Chaque bloc fait 64 Ko Récupération du firmware en clair Un CRC-32 à la fin des données décompressées valide l intégrité 35 / 41

Décompression de la section de code Organisation mémoire Firmware décompressé : données brutes, pas un format connu Organisation mémoire décrite dans le binaire Utilisé par le bootloader Écriture d un loader IDA pour charger correctement les données du firmware 36 / 41

Décompression de la section de code Organisation mémoire Firmware décompressé : données brutes, pas un format connu Organisation mémoire décrite dans le binaire Utilisé par le bootloader Écriture d un loader IDA pour charger correctement les données du firmware Mauvaise nouvelle : l obfuscation est toujours présente... 36 / 41

Signature du code Signature du firmware But Contourner le mécanisme de signature Injecter du code arbitraire Vérification de signature ECDSA-256 avec SHA-256, courbe et générateur standard (ANSI X9.62 P-256) Tout le firmware est signé, sauf les 78 derniers octets (section FW SIG, de taille fixe) Code propriétaire, correctement mis en œuvre. Nombres de taille fixe Aucune vulnérabilité identifiée. 37 / 41

Signature du code Travaux à venir Cryptographie boîte blanche Authentification : clé privée du PLC. Une clé par modèle... Chiffrement des programmes utilisateur (AES, plutôt simple) Meilleure compréhension du protocole. Beaucoup d informations dans le firmware Exécution de code Injection et exécution de code arbitraire Modification du comportement du code existant 38 / 41

Plan 1 Introduction 2 Reverse d un protocole industriel récent 3 À la recherche de l entropie perdue 4 Rétronconception du firmware 5 Conclusion 39 / 41

Conclusion Technologie pas encore mature du point de vue de la sécurité Erreurs dans l utilisation des fonctions cryptographiques Vol des sessions rendu facile Schéma d authentification non standard De réels progrès Efforts pour concevoir un protocole sécurisé Bien meilleur que ce qui était précédemment utilisé Équipementier très réactif La sécurité semble être maintenant bien prise en compte 40 / 41

Questions? contact@quarkslab.com I @quarkslab.com