L'analyse des bus de données

L'une des étapes clés en reverse engineering est de comprendre les communications entre les composants d'un appareil. Maîtrisez l'interception et l'analyse des protocoles SPI, I2C et UART.

SPI I2C UART Analyzer

🛠️ Pourquoi s'intéresser aux bus de données ?

Les bus de communication comme SPI, I2C, et UART sont omniprésents dans les appareils électroniques modernes. Ils constituent souvent le maillon faible de la sécurité car :

  • Données sensibles non chiffrées - Mots de passe, clés API, tokens d'authentification
  • Commandes de contrôle exposées - Instructions de configuration, modes de debug
  • Communications inter-composants - Échanges entre processeur principal et modules périphériques
  • Logs et diagnostics - Informations de débogage révélant l'architecture interne
💡 Fait : Plus de 70% des appareils IoT exposent des informations sensibles via leurs bus de communication internes, selon les études de sécurité récentes.

📚 Comprendre les protocoles

🔄 SPI (Serial Peripheral Interface)

Principe : Communication série synchrone, full-duplex avec un maître et plusieurs esclaves.

Signaux :
• MISO (Master In, Slave Out)
• MOSI (Master Out, Slave In)
• SCK (Serial Clock)
• CS/SS (Chip Select)

Vitesse : Jusqu'à 50 MHz
Usage : Capteurs, mémoires flash, écrans LCD

🔗 I2C (Inter-Integrated Circuit)

Principe : Bus série multi-maître avec adressage des périphériques sur 7 ou 10 bits.

Signaux :
• SDA (Serial Data)
• SCL (Serial Clock)
• Résistances de pull-up obligatoires

Vitesse : 100 kHz à 5 MHz
Usage : Capteurs, EEPROMs, horloges temps réel

📡 UART (Universal Asynchronous Receiver-Transmitter)

Principe : Communication série asynchrone point-à-point, souvent utilisée pour le debug.

Signaux :
• TX (Transmit)
• RX (Receive)
• GND (Ground)
• VCC (optionnel)

Vitesse : 9600 à 115200+ bps
Usage : Console de debug, communication série

🔍 Comment capturer et analyser ces communications ?

1️⃣ Identifiez les lignes de bus

Méthodes de reconnaissance :
  • Analyse visuelle du PCB
    • Recherchez des groupes de 3-4 pins proches
    • Traces parallèles reliant plusieurs composants
    • Connecteurs de debug non peuplés
    • Markings sérigraphiés (TX, RX, SCL, SDA...)
  • Documentation constructeur
    • Datasheets des processeurs principaux
    • Schémas de développement similaires
    • Pinouts standards des composants identifiés
  • Outils de mesure
    • Multimètre - Vérifiez les niveaux de tension (3.3V, 5V)
    • Oscilloscope - Observez les signaux lors du fonctionnement
    • Sonde logique - Détectez l'activité numérique sur les pins
💡 Astuce : Les pins UART sont souvent actives au démarrage de l'appareil. Cherchez des signaux lors du boot !

2️⃣ Utilisez un analyseur logique

Comparaison des outils :
Outil Prix Canaux Fréquence max Avantages Inconvénients
Saleae Logic €300-800 8-16 100 MHz Logiciel excellent, décodage auto Prix élevé
DSLogic €80-150 16 400 MHz Bon rapport qualité/prix Logiciel moins intuitif
Adaptateur USB €15-25 3-4 - Très abordable, portable Limité à UART principalement
Bus Pirate €25-40 5 125 kHz Versatile, communauté active Vitesse limitée
Raspberry Pi Pico €4-8 26 GPIO Variable Prix imbattable, programmable Nécessite programmation
Configuration type :
  1. Connexion physique
    • Utilisez des sondes avec crochets ou des câbles Dupont
    • Respectez les niveaux de tension (3.3V vs 5V)
    • Connectez impérativement le GND en commun
  2. Paramétrage logiciel
    • Fréquence d'échantillonnage : 10x la fréquence du signal
    • Durée de capture : Suffisante pour couvrir une séquence complète
    • Triggering : Déclenchez sur le début d'une transmission

3️⃣ Décodez les signaux

Logiciels de décodage :
  • PulseView (sigrok) - Gratuit, open source
    • Support de nombreux protocoles
    • Décodeurs extensibles
    • Compatible avec de nombreux analyseurs
  • Logic 2 (Saleae) - Commercial mais excellent
    • Interface intuitive
    • Décodage en temps réel
    • Export vers de nombreux formats
  • Outils console pour UART
    • Minicom (Linux/macOS)
    • PuTTY (Windows)
    • SerialPort Monitor (Multi-plateforme)
Paramètres de décodage courants :
UART
Baudrates : 9600, 38400, 57600, 115200
Data bits : 8
Parity : None
Stop bits : 1
I2C
Standard : 100 kHz
Fast : 400 kHz
Fast+ : 1 MHz
Adressage : 7-bit ou 10-bit
SPI
Mode 0 : CPOL=0, CPHA=0
Mode 1 : CPOL=0, CPHA=1
Mode 2 : CPOL=1, CPHA=0
Mode 3 : CPOL=1, CPHA=1

🛠️ Que faire avec les données capturées ?

🔍 Analysez les échanges

Points d'attention :
  • Informations sensibles en clair
    • Mots de passe d'administration
    • Clés de chiffrement ou certificats
    • Tokens d'authentification
    • Identifiants de session
  • Commandes de configuration
    • Modes de debug ou de maintenance
    • Paramètres de sécurité modifiables
    • Commandes administrateur cachées
  • Faiblesses cryptographiques
    • Algorithmes de chiffrement faibles
    • Absence de chiffrement sur données sensibles
    • Clés prévisibles ou réutilisées
  • Vulnérabilités de protocole
    • Absence d'authentification des commandes
    • Injection de commandes possibles
    • Buffer overflows dans le parsing
⚠️ Technique : Utilisez des outils comme strings, hexdump et binwalk pour analyser les dumps de données capturées.

💉 Modifiez les données (Injection)

Techniques d'injection :
  • Replay attack
    • Rejouez des séquences capturées
    • Modifiez certains paramètres pour tester les réactions
    • Analysez les réponses du système
  • Command injection
    • Injectez de nouvelles commandes dans le flux
    • Testez des commandes non documentées
    • Exploitez les parsers vulnérables
  • Fuzzing de protocole
    • Générez des données aléatoires ou malformées
    • Testez la robustesse du protocole
    • Recherchez des crashes ou comportements anormaux
Outils d'injection :
  • Bus Pirate - Injection manuelle de commandes
  • Arduino/Raspberry Pi - Scripts d'injection automatisés
  • UART injection tools - Outils spécialisés pour l'injection série
  • Custom scripts - Python avec pySerial, ou autres langages
💡 Exemple pratique : Sur un routeur, l'injection de commandes AT via UART peut parfois révéler des commandes de diagnostic cachées donnant accès à des informations sensibles.

🔓 Astuces avancées et contournements

🛡️ Contourner les protections

Protections courantes et contournements :
  • Chiffrement des communications
    • Protection : Données chiffrées sur le bus
    • Contournement : Cherchez les clés en mémoire ou les faiblesses d'implémentation
    • Alternative : Analysez avant le chiffrement (entre CPU et crypto-chip)
  • Authentification des commandes
    • Protection : Signature ou checksum des commandes
    • Contournement : Analysez l'algorithme de vérification
    • Alternative : Trouvez des commandes non protégées
  • Désactivation en production
    • Protection : Interfaces debug désactivées
    • Contournement : Recherchez des jumpers ou des résistances à modifier
    • Alternative : Test pins ou séquences d'activation spéciales
  • Obfuscation des protocoles
    • Protection : Protocoles propriétaires non documentés
    • Contournement : Reverse engineering du protocole par observation
    • Alternative : Correlation avec les fonctionnalités utilisateur

Techniques avancées

  • Timing attacks
    • Analysez les délais de réponse aux commandes
    • Exploitez les différences de traitement pour révéler des informations
  • Power analysis
    • Correlez la consommation électrique avec les activités de communication
    • Révélez des opérations cryptographiques ou des états internes
  • Injection de fautes
    • Perturbez l'alimentation ou l'horloge pendant les communications
    • Provoquez des erreurs révélatrices dans le traitement
  • Multi-bus correlation
    • Analysez simultanément plusieurs bus de communication
    • Révélez la logique de traitement interne par corrélation
⚠️ Attention : Ces techniques avancées peuvent endommager définitivement l'appareil. Pratiquez sur des devices de test !

🎯 Cas d'usage pratiques

Exemples concrets d'exploitations réussies :

  • Routeurs Wi-Fi
    • Extraction des clés WPA via UART lors du boot
    • Commandes de configuration avancées non exposées dans l'interface web
    • Backdoors de développement laissées actives
  • Caméras IP
    • Mots de passe administrateur en clair sur I2C vers l'EEPROM
    • Contournement de l'authentification via injection de commandes
    • Firmware updates non signés acceptés via interfaces debug
  • Objets connectés (IoT)
    • Clés API de services cloud hardcodées
    • Tokens d'authentification réutilisables
    • Commandes de contrôle à distance injectables
  • Systèmes embarqués automobiles
    • Codes de diagnostic cachés via UART
    • Communication CAN bus non chiffrée
    • Contournement des protections anti-clonage
📈 Impact : L'analyse des bus de données a permis de découvrir des vulnérabilités critiques dans plus de 60% des appareils IoT testés en 2024, selon les rapports de sécurité industriels.

📚 Ressources pour aller plus loin

Documentation et références :

💡 Conseil final : Commencez par analyser vos propres appareils en fin de vie. C'est légal, sûr, et vous apprendrez énormément sans risque !