Aller au contenu

Audit & réponse à incident IoT

Tester la sécurité d'un système IoT avant qu'un attaquant ne le fasse — et savoir réagir efficacement quand la compromission survient malgré tout.


La démarche d'audit IoT

Un audit de sécurité IoT est fondamentalement différent d'un test d'intrusion web classique. Il combine des compétences en électronique (analyse matérielle), en systèmes embarqués (firmware, protocoles bas niveau), en réseau (sniffing radio, protocoles industriels), et en cloud (APIs, backend IoT).

L'objectif d'un audit défensif est d'identifier les vulnérabilités avant un attaquant réel, de les documenter, et d'établir un plan de remédiation priorisé par risque.


Outillage du pentesteur IoT

Analyse matérielle et firmware

Outil Catégorie Usage
Binwalk Firmware analysis Extraction de systèmes de fichiers embarqués, identification de composants
Ghidra (NSA) Reverse engineering Décompilation binaire multi-architecture (ARM, MIPS, RISC-V)
IDA Pro / IDA Free Reverse engineering Analyse statique firmware, graphe d'appel
Radare2 / Cutter Reverse engineering Open source, analyse statique et dynamique
GDB + OpenOCD Debug runtime Débogage via JTAG/SWD, breakpoints, inspection mémoire
ChipWhisperer Side-channel / glitching Attaques sur crypto, contournement secure boot
Bus Pirate Interfaces séries UART, I²C, SPI — lecture flash, communication avec debug
FT232H / FTDI Programmation flash Dump mémoire flash SOIC-8 en circuit
J-Link / SEGGER Debug JTAG Accès debug professionnel sur MCU ARM
Flashrom Dump flash Lecture/écriture flash SPI NOR/NAND

Analyse réseau et radio

Outil Catégorie Usage
Wireshark Sniffing réseau Capture et analyse protocoles IP, MQTT, CoAP
MQTT Explorer Analyse MQTT Inspection arbre de topics, test ACL
Scapy Forge de paquets Construction et injection de trames personnalisées
RTL-SDR SDR radio Sniffing 868 MHz, 433 MHz, 2,4 GHz
YARD Stick One Radio 433-915 MHz Capture et replay de commandes radio
HackRF One SDR broadband Analyse 1 MHz - 6 GHz
Attify Zigbee Framework Zigbee Capture, injection, attaques sur Zigbee
BtleJuice / BTLE-Sniffer Bluetooth LE MITM BLE, sniffing communication
LoRa/LoRaWAN Scanner LoRaWAN Scan réseaux LoRaWAN, capture trames

Environnements et frameworks

Outil Usage
Attify Badge Plateforme d'attaque IoT tout-en-un
EMBA Analyse automatisée de firmware (CI/CD security)
Firmwalker Extraction automatique credentials, clés, URLs depuis firmware
RouterSploit Framework d'exploitation de devices réseau embarqués
Expliot Framework de test d'intrusion IoT (industriel, BLE, MQTT)

Méthodologie d'audit IoT

Phase 1 : Reconnaissance passive

Avant tout accès au device :

  • Collecte OSINT : notices, datasheets publics, CVE liées aux composants identifiés
  • Analyse des applications mobiles associées (décompilation APK, extraction API endpoints)
  • Recherche firmware sur le site fabricant ou via Google (site:manufacturer.com firmware)
  • Scan SHODAN/Censys pour identifier les instances du même device exposées sur Internet

Phase 2 : Analyse matérielle

flowchart LR
    DISS["Dissection\ndu device"]
    PCB["Analyse PCB\nIdentification SoC, flash\nUART, JTAG pads"]
    CONS["Test connectivité\nMultimètre, oscilloscope\nIdentification UART (bauds)"]
    DUMP["Dump flash\nSoIC clip ou soudure\nFT232H + Flashrom"]
    JTAG["Test JTAG\nOpenOCD + GDB\nSi non locké"]

    DISS --> PCB
    PCB --> CONS
    CONS --> DUMP
    CONS --> JTAG

Identification des interfaces UART :

  1. Mesurer la tension de chaque pin inconnu (VCC, GND, TX, RX, ou DTR/RTS)
  2. TX émet des données au démarrage — oscilloscope ou analyseur logique
  3. Calculer le baud rate depuis la largeur du bit le plus court
  4. Typiques : 115200, 57600, 9600 bauds

Phase 3 : Analyse firmware

flowchart TD
    BIN["firmware.bin\n(extrait ou téléchargé)"]
    BINWALK["Binwalk\nIdentification sections\nExtraction FS"]
    STRINGS["Strings / Firmwalker\nCredentials, URLs, clés\nConfiguration hardcodée"]
    GHIDRA["Ghidra / IDA\nRétro-ingénierie binaire\nFonctions crypto, réseau"]
    CVE["Analyse dépendances\nBusyBox version, OpenSSL\nCVE lookup"]
    EMBA["EMBA / FACT\nAnalyse automatisée\nRapport vulnérabilités"]

    BIN --> BINWALK
    BINWALK --> STRINGS
    BINWALK --> GHIDRA
    BINWALK --> CVE
    BIN --> EMBA

Phase 4 : Tests dynamiques

  • Tests d'authentification : credentials par défaut, brute force, bypass
  • Fuzzing des interfaces réseau exposées (MQTT, HTTP, CoAP)
  • Tests OTA : replay de manifests, intégrité de signature
  • Tests de cloisonnement réseau : escape de VLAN, pivot

Checklist d'audit IoT

Sécurité physique et matérielle

Contrôle Critique Statut
Interfaces de debug (JTAG/SWD) désactivées en production OUI
UART de production silencieuse ou en lecture seule OUI
Flash en lecture protégée (RDP, efuses) OUI
Anti-tampering actif (mesh, capteur lumière) SELON USAGE
Pas de connecteurs de debug accessibles sans ouverture boîtier OUI
Boîtier vissé / inviolable (vis Torx ou collé) SELON USAGE

Secure boot et firmware

Contrôle Critique Statut
Secure boot activé (vérification signature chaîne complète) OUI
Signature ECDSA P-256 ou Ed25519 (pas MD5/SHA1) OUI
Compteur monotone anti-downgrade actif OUI
Clé de signature hors du firmware (HSM) OUI
Pas de credentials codés en dur dans le firmware OUI
Bibliothèques sans CVE connues (< 6 mois) OUI
Mécanisme de rollback A/B fonctionnel OUI

Réseau et communications

Contrôle Critique Statut
TLS 1.3 (ou minimum TLS 1.2) sur tous les flux OUI
mTLS device-to-cloud (authentification mutuelle) OUI
Certificat X.509 unique par device (pas de certificat partagé) OUI
Certificate pinning ou validation CA stricte OUI
Pas de connexions HTTP en clair OUI
Pas de services inutiles ouverts (port scan) OUI
Segmentation VLAN IoT / IT en place OUI
ACL MQTT par topic et par device OUI

Gestion des identités

Contrôle Critique Statut
Clé privée dans secure element (non extractible) OUI
Processus de révocation < 1h OUI
Rotation de certificats avant expiration automatisée OUI
Audit log des connexions device OUI

Conformité et processus

Contrôle Critique Statut
Politique de divulgation de vulnérabilités publiée OUI
Processus de veille CVE sur composants embarqués OUI
Plan de réponse à incident documenté et testé OUI
SBOM (Software Bill of Materials) à jour OUI

Forensics embarqué

Lorsqu'un device est suspecté d'être compromis, l'investigation forensique embarquée suit une méthodologie spécifique.

Préservation des preuves

L'ordre de volatilité en embarqué (du plus volatile au moins volatile) :

  1. Registres CPU et RAM (perdus à l'extinction)
  2. Mémoire cache
  3. Processus en cours d'exécution, connexions réseau
  4. Système de fichiers en RAM (tmpfs)
  5. Flash interne (persistante)
  6. EEPROM externe
  7. Logs cloud (si synchronisés)

Règle fondamentale : ne jamais éteindre le device suspecté avant d'avoir capturé la RAM si possible.

Dump mémoire live via JTAG

Si le device est accessible physiquement et que JTAG n'est pas verrouillé (ou en cours d'audit autorisé) :

# OpenOCD + GDB — dump RAM complète
openocd -f interface/jlink.cfg -f target/stm32f4x.cfg

# Dans GDB :
(gdb) target remote localhost:3333
(gdb) dump binary memory ram_dump.bin 0x20000000 0x20020000
(gdb) dump binary memory flash_dump.bin 0x08000000 0x08100000

Analyse post-mortem du dump flash

# Analyse structure firmware
binwalk -e firmware_dump.bin

# Recherche de credentials et artefacts suspects
firmwalker ./firmware_dump/

# Analyse strings sensibles
strings firmware_dump.bin | grep -E "(password|key|token|secret|BEGIN CERTIFICATE)"

# Comparaison avec firmware officiel (détection de modification)
sha256sum firmware_officiel.bin firmware_dump.bin
diff <(strings firmware_officiel.bin) <(strings firmware_dump.bin)

Plan de réponse à incident IoT

Les 6 phases (NIST SP 800-61 adapté IoT)

flowchart LR
    P1["1. Préparation\nProcédures documentées\nOutillage prêt\nContacts d'urgence"]
    P2["2. Détection\nAnomalie réseau\nAlerte SOC\nSignalement terrain"]
    P3["3. Confinement\nIsoler device du réseau\nRévoquer certificat\nBlocker broker MQTT"]
    P4["4. Éradication\nAnalyse forensique\nIdentifier la cause\nNettoyer / rebuilder"]
    P5["5. Récupération\nRe-provisionner\nTest de sécurité\nSurveillance renforcée"]
    P6["6. Retour d'expérience\nPost-mortem\nMise à jour procédures\nCommunication"]

    P1 --> P2 --> P3 --> P4 --> P5 --> P6
    P6 -.->|"amélioration continue"| P1

Actions de confinement immédiates

Délai Action Responsable
< 15 min Révoquer certificat device dans la CA Équipe sécurité
< 15 min Bloquer device sur le broker MQTT (ACL deny) Ops IoT
< 15 min Isoler le VLAN IoT si contamination multiple NetOps
< 1h Notifier les équipes métier impactées RSSI
< 4h Extraire logs device + broker pour forensique Équipe sécu
< 24h Évaluer impact opérationnel (production arrêtée ?) Direction technique
< 72h Notifier CNIL si données personnelles impactées (RGPD) DPO

Matrice de décision : isolation vs continuité

Situation Décision recommandée
Device unique, non critique, compromission avérée Isolation immédiate + forensique
Device critique dans process de production Isolation après transfert de charge + notification ops
Multiple devices compromis, propagation active Isolation zone VLAN complète + cellule de crise
Suspicion sans certitude, production critique Surveillance renforcée + préparation isolement
Ransomware OT actif Isolation totale, activation PCA, contact ANSSI

Disclosure responsable (Responsible Disclosure)

Quand vous découvrez une vulnérabilité dans un produit IoT, la disclosure responsable (Coordinated Vulnerability Disclosure — CVD) est la démarche éthique et légalement recommandée.

Processus CVD

  1. Documenter la vulnérabilité : preuve de concept, versions affectées, impact estimé
  2. Identifier le contact sécurité du fabricant (security@, CERT, page Bugbounty, RFC 9116 .well-known/security.txt)
  3. Notifier en privé avec un délai de correction raisonnable (90 jours, norme Google Project Zero)
  4. Suivre la correction et maintenir la communication avec le fabricant
  5. Publication coordonnée après correction ou à l'échéance du délai
  6. Attribution CVE via MITRE si vulnérabilité significative

Ressources de notification

Ressource Usage
CERT-FR (ANSSI) Signalement incidents en France, assistance PME
CVE Program (MITRE) Attribution d'identifiant CVE
ICS-CERT (CISA) Vulnérabilités ICS/SCADA (US, international)
Bugcrowd / HackerOne Programmes de bug bounty privés et publics
Full Disclosure (Oss-sec) Publication de dernier recours après délai expiré

Ce qu'il faut retenir

  • Un audit IoT combine électronique, firmware, réseau et cloud — il nécessite une équipe aux compétences transverses.
  • La checklist d'audit est un outil vivant : l'adapter au contexte (SL cible IEC 62443, provisions ETSI 303 645 applicables).
  • En cas d'incident, le confinement (révocation certificat + blocage broker) doit intervenir en moins de 15 minutes.
  • La forensique embarquée commence par préserver la volatilité — ne pas éteindre avant d'avoir capturé la RAM.
  • La disclosure responsable protège les utilisateurs finaux tout en permettant au fabricant de corriger dans un délai raisonnable.

Retour : Systèmes Embarqués & IoT — retour à l'index du tutoriel.