Inspection visuelle du PCB
L’objet de ce nouvel article est de rechercher un accès au port série sur le PCB (Printed Circuit Board) d’un système embarqué comme un modem routeur.PCB d'un système embarqué |
Contacts candidats au port série |
Vias et headers à souder |
Vias et connectique dans les couches de silicium |
Le port série, console ou UART
Un port série possède traditionnellement quatre contacts :- GND (masse),
- Vcc (alimentation),
- Tx (transmission)
- Rx (réception).
L’intérêt d’un port série est d’offrir un port de debug pour accéder au chargeur de démarrage (bootloader), observer les messages du démarrage (bootloader, noyau de l'OS, application) et interagir avec le terminal via un shell ou un menu interactif en ligne de commande. Le port série offre aussi la possibilité d’extraire ou copier la mémoire ou de flasher des images en mémoire non volatile. Le port série est ainsi une cible de choix pour un attaquant.
La méthode de recherche du port série
La recherche du port série, habituellement appelé UART (Universal Asynchronous Receiver Transmitter), est réalisée avec un multimètre numérique.Multimètre numérique |
- L’inspection visuelle préalable permet d'identifier des contacts ou vias candidats sur le PCB.
- Lorsque des points de contact sont identifiés, il faut rechercher en priorité la masse (GND). Un test de continuité entre la masse sur le PCB (par exemple un shield ou une pièce métallique importante) et chaque point de contact permet de trouver celui qui est directement relié à la masse grâce au bip sonore continue émis par le multimètre.
- L'étape suivante consiste à identifier la broche Tx car celle-ci est facile à identifier lorsque des données sont émises. Pour cela, la séquence de démarrage est appropriée car elle génère un flux continu de données sur le port console. Une mesure de l’intensité avec le multimètre permet de détecter des fluctuations du voltage lors du boot, oscillant entre 0 et 3,6 Volts dans notre cas. Cette fluctuation est provoquée par la transmission des données.
- Il ne reste plus qu’à identifier Vcc et Rx. Lorsque les paramètres de la connexion UART sont identifiés grâce à Tx, (cf. pragraphe suivant) il suffit d’émettre des caractères vers l’un de ces contacts et vérifier l’écho en retour pour identifier la broche Rx.
L'adaptateur USB série
Pour se connecter au port série du PCB, un adaptateur USB série (FTDI 232) est nécessaire. Un modèle comme celui ci-dessous supporte 3,3V ou 5V et coûte quelques euros.Adaptateur USB série |
Schéma de raccordement d'un adaptateur USB série |
Pince grip-fil |
Accès au port série avec câbles grip-fil |
Le programme pilotant la liaison série
L’utilitaire utilisé sur le PC sous Linux de l'auditeur pour établir la connexion avec l’adaptateur USB série est minicom, qui utilise le pseudo périphérique /dev/ttyUSB0 pour communiquer.
$ sudo minicom –o
–D /dev/ttyUSB0
Bienvenue avec minicom 2.6.1
OPTIONS: I18n
Compilé le Feb 11 2012,
18:12:55.
Port /dev/ttyUSB0
Tapez CTRL-A Z pour voir
l'aide concernant les touches
spéciales
Après quelques tentatives de connexion pour déterminer les caractéristiques de la communication, le port console de la carte s’avère utiliser une vitesse de transmission à 115 200 bauds, 8-bits de données, aucune parité et un bit de stop (en abrégé 115200 8N1). Le contrôle de flux matériel doit être désactivé.
L’étape suivante consiste à démarrer le modem routeur lorsque la connexion au port série via minicom est établie. Les séquences de démarrage suivantes s'affichent :
BCM3384A8
0002A080 memsys2g800x16 2p5bld1
SHMOO VER 1.17
MCB
PKID 20131007
050B6000 050B0000 04B4103E
00001C00
S300001B7
000011A0
+00000004 >0000011A
t00000020 0000003C
@000000B4 ^0000001B
RDEN W0
00000020 00000006 00000000
RDLY W0
00000003
RDQS W0
[...]
Sync: 0
MemSize: 256 M
Chip ID: BCM3384Z-B0
BootLoader
Version: 2.5.0beta1 Rev01 Release spiboot dual-flash memsys2g800x16 avs linux
Build Date:
Sep 9 2014
Build Time:
19:36:18
SPI flash ID
0x010219, size 32MB, block size 64KB, write buffer 256, flags 0x2
Cust key size 128
Signature/PID:
d06f
Image 1 Program
Header:
Signature: d06f
Control: 0005
Major Rev: 0003
Minor Rev: 0000
Build Time: 2015/1/13 08:19:06 Z
File Length: 5024538 bytes
Load Address:
80004000
Filename: EMTA62-1_NCC_1.2.3-20150113.bin
HCS: c6fd
CRC: 51a22add
Found image 1 at
offset 30000
Enter '1', '2',
or 'p' within 2 seconds or take default...
Conclusion
Voilà un accès au port série d'un modem routeur réussi. La suite est confidentielle car elle mettrait en péril le produit audité et ne respecterait pas la déontologie du ethical hacking. Sachez néanmoins qu’il a été possible de consulter le mapping de la mémoire non volatile, permettant ainsi de flasher les partitions contenant le firmware (bootloader, kernel et application) et d'extraire la clef indivuduelle du périphérique.
Génial!!!
RépondreSupprimerEnfin un article qui détaille le mode opératoire pour trouver un port console sur une carte.
Merci pour l'article, j'ai pu trouver le port série sur un modem du même genre que le votre cependant le port RX semble être inactif ... !
RépondreSupprimerSur certains équipements, le port série est unidirectionnel, il envoie les messages systèmes sur le port TX mais ne reçoit rien.
Supprimer