| name | iot-uart |
| title | UART / SĂ©rie IoT â AccĂšs Console et Analyse de Protocole |
| description | Guide complet pour l'identification, la connexion et l'exploitation des interfaces UART (Universal Asynchronous Receiver-Transmitter) sur les dispositifs IoT. Couvre la recherche de points de test, la détermination du baudrate, l'accÚs console shell, l'analyse de protocoles propriétaires, et l'injection de commandes. |
| category | cybersecurite |
UART / SĂ©rie IoT â AccĂšs Console et Analyse de Protocole
Vue d'Ensemble
L'UART (Universal Asynchronous Receiver-Transmitter) est l'interface série la plus répandue sur les dispositifs IoT. Elle fournit souvent un accÚs console (shell root, bootloader, diagnostic) sans authentification. C'est généralement le point d'entrée le plus facile pour un pentest hardware.
Objectifs
- Localiser les points UART sur le PCB
- Déterminer le baudrate (vitesse de communication)
- Accéder à la console (shell, bootloader, debug)
- Analyser les protocoles propriétaires sur UART
- Intercepter / injecter des trames
- Contourner l'authentification console
Outils Essentiels
Adaptateurs USB-UART
| Outil | Tension | Prix |
|---|
| FTDI TTL-232R | 3.3V / 5V (jumper) | ~$20 â standard, fiable |
| CP2102 | 3.3V | ~$5 â basique, fonctionnel |
| CH340G | 3.3V / 5V | ~$2 â pas cher, instable |
| PL2303 | 3.3V / 5V | ~$3 â compatible large |
| FT232RL | 3.3V / 5V | ~$10 â le classique |
| Bus Pirate | 0-5.5V (configurable) | ~$30 â UART + SPI + IÂČC |
Logiciels Terminal
| Outil | OS | Fonctionnalités |
|---|
screen | Linux/macOS | Minimal, simple |
minicom | Linux/macOS | Plus configurable |
picocom | Linux/macOS | Léger, pratique |
PuTTY | Windows | Mode série |
TeraTerm | Windows | Macro support |
Serial (Arduino IDE) | Tous | Debug rapide |
CuteCom / GtkTerm | Linux | GUI |
Analyse
| Outil | Usage |
|---|
logic (Saleae) | Décodage UART avec horodatage |
pulseview (sigrok) | Analyseur logique open-source |
sigrok-cli | Décodage UART en CLI |
baudrate.py | Détermination automatique du baudrate |
uart_transmitter.py | Injection de trames custom |
Méthodologie
Phase 1 : Localisation des Points UART
Indices Visuels
Identification TX/RX/GND avec Oscilloscope
Phase 2 : Connexion et Baudrate
Schéma de Connexion
Device USB-UART
âââââââââââ ââââââââââââ
â TX (pin) ââââââââ¶ RX â
â RX (pin) ââââââââ TX â
â GND âââââââââââââ GND â
â VCC âââââââââââââ (PAS) â
âââââââââââ ââââââââââââ
# ATTENTION : NE PAS connecter VCC device au VCC de l'adaptateur
# â cross-connection qui grillerait les deux
Détermination du Baudrate
for baud in 9600 19200 38400 57600 115200 230400 460800 921600; do
echo "Testing $baud:"
screen /dev/ttyUSB0 $baud 2>/dev/null &
sleep 0.5
kill %1 2>/dev/null
done
picocom -b 115200 /dev/ttyUSB0
sigrok-cli -i capture.sr -p -P uart:baudrate=auto
python3 baudrate.py /dev/ttyUSB0
Connexion Terminal
screen /dev/ttyUSB0 115200 8N1
picocom -b 115200 -d 8 -p n -s 1 /dev/ttyUSB0
minicom -D /dev/ttyUSB0 -b 115200
Phase 3 : Exploitation de la Console
Types de Console
printenv
setenv bootargs console=ttyS0,115200 root=/dev/mtdblock1
saveenv
boot
md 0x80000000
flinfo
bdi
Si Login Requis
Phase 4 : Analyse de Protocole Propriétaire
Techniques Avancées
Attaque par Injection de Trames
import serial
ser = serial.Serial('/dev/ttyUSB0', 115200)
ser.write(b'\xAA\x55\x01\x00\x10\x00\x00\x00\x00\x42')
response = ser.read(100)
print(response)
Sniffing UART Passif
sigrok-cli --device=0 --config samplerate=10M \
-C D0,D1 --protocol-decoder uart --channels D0=RX,D1=TX \
--continuous
Console Silencieuse (Pas d'Output au Boot)
PiĂšges & ASTUCES
â ïž Ne JAMAIS connecter VCC-device au VCC de l'adaptateur : les deux alimentations en conflit â court-circuit
â ïž Tensions : vĂ©rifier 3.3V vs 1.8V vs 5V. Les GPIO des SoC modernes sont souvent 1.8V ou 3.3V
â ïž TX â RX : connecter TX device â RX adaptateur et vice versa (cross-connection)
â ïž GND en premier : toujours connecter GND avant les signaux pour Ă©viter les boucles de masse
â ïž Pins non soudĂ©s : certains pads n'ont pas de connecteur mais des holes pour header pins (souder un header)
â ïž Pas de boot messages : appuyer sur EntrĂ©e/Reset aprĂšs connexion pour voir le boot complet
â ïž Baudrate non standard : certains devices utilisent des baudrates rares (14400, 28800, 76800, 250000)
â ïž Firmware qui dĂ©sactive UART : aprĂšs le boot, le noyau peut dĂ©sactiver le port sĂ©rie (vĂ©rifier avant)
â ïž Anti-tampon : rĂ©sine Ă©poxyde sur les pads (dissoudre Ă l'acĂ©tone avec prĂ©caution)
Check-list Rapide
screen /dev/ttyUSB0 115200
Références