Analyse d'une serrure électronique (3/4)

Nous continuons notre série d’articles dans le cadre de notre veille sur la sécurité de l’IoT. Pour ce troisième sujet, nous nous sommes intéressés à un modèle de serrure électronique vendu sur Internet. L’objectif de ce projet était d’établir, en 5 jours, une liste de défauts ainsi que des scénarios d’attaque pouvant permettre à une personne malveillante de déverrouiller de façon illégitime la serrure. Nous avons identifié la serrure comme étant de niveau 2 selon l’ ISVS (IoT Security Verification Standard) proposé par l’OWASP. Une analyse des aspects logiciels mais aussi physique de l’appareil est donc nécessaire.

La particularité de cet objet est qu’il n’est pas possible d’identifier une marque particulière à laquelle il appartient. Nous l’avons trouvé sur plusieurs sites chinois notamment, vendus par une large variété de boutiques. La serrure semble néanmoins destinée à être utilisée par des entreprises ou infrastructures publiques pour protéger l’accès à des casier personnels.

casier

Figure 1 : Exemple d'utilisation recommandée sur l'un des sites de vente

L’objet est composé de deux parties :

  • Un boitier contenant le verrou qui est fixer à l’intérieur du casier que l’on souhaite protéger.
  • Un clavier numérique (digipad) à monter à l’extérieur du casier pour que l’utilisateur puisse interagir avec.

Ces deux composants sont reliés par un connecteur à 6 fils et sur lequel nous allons revenir dans la suite de l’article.

composantscomposants

Figure 2 : Principaux composants et plan d'installation

Du côté des fonctionnalités, la serrure propose deux modes de verrouillage, le premier par code et le second par carte. Dans cet article nous allons donc analyser ces fonctionnalités ainsi que l’architecture de l’objet et présenter les différentes vulnérabilités et faiblesses de configuration que nous avons observées.

Description de l'objet

Au premier abord, l’objet est emballé dans une boîte en carton composée d’un manuel, du clavier numérique, du boitier contenant le verrou et d’une carte RFID (Radio Frequency Identification). La totalité des boîtiers sont en plastique.

Le manuel est assez léger et reprend quelques caractéristiques techniques de l’objet :

  • Les mots de passe par défaut
  • La tension acceptée
  • Des explications sur sa configuration :
    • L’ouverture par code et/ou par carte
    • La modification des mots de passe
    • L’ajout et la suppression de carte

fig3bis.jpg

Figure 3 : Contenu du paquet réceptionné

Analyse physique

Après avoir installé et testé le bon fonctionnement de notre serrure, nous nous lançons dans une analyse physique de cette dernière.

Le démontage des deux boitiers ne nécessite qu’un tournevis cruciforme classique. Nous constatons que le verrou est composé d’une alimentation par pile de type « AA » et d’un moteur. La partie de contrôle se trouve donc au niveau du clavier numérique. Nous notons donc la première faiblesse de conception. En effet, la disposition des circuits imprimés présente une mauvaise pratique puisqu’un attaquant peut plus facilement accéder aux composants critiques de l’appareil.

Au niveau du digipad, nous identifions un microprocesseur « BS66F340 » fabriqué par « Holtek » et spécifique à l’utilisation d’un clavier à 12 touches. Ce dernier est équipé d’une mémoire EEPROM (Electrically-Erasable Programmable Read-Only Memory ou mémoire morte effaçable électriquement et programmable) interne de 128bit. Ces informations sont disponibles publiquement sur Internet au sein des fiches techniques (datasheets) proposées par le constructeur :

Enfin, un buzzer et une entrée micro USB sont aussi présents respectivement pour l’alarme et pour l’alimentation de secours. Derrière le circuit principal se trouve l’antenne du récepteur RFID.

boitierboitier

Figure 4 : Analyse interne des boitiers

Enfin, nous découvrons la présence d’un groupe de 4 pins associés à l’annotation « PRG » qui est accessible sans même devoir démonter l’objet. Ces pins semblent permettre la programmation du microprocesseur. À l’aide d’un multimètre, nous identifions les connexions à la masse « GND » ainsi qu’aux pins « PA0 » et « PA2 » du microprocesseur puis à « VCC »

pins_programmationmicroprocesseur.jpg

Figure 5 : Pins de programmation et identification des connexions avec le microprocesseur

L’utilisation d’un programmeur « e-Link » du constructeur « Holtek » peut permettre de lire le contenu des différentes mémoires du microprocesseur et même de modifier le code. Nous n’avons cependant pas pu nous procurer l’un de ces programmeurs dans le temps d’audit imparti en raison d’une rupture de stock.

programmateur_elink

Figure 6 : Programmateur e-Link de Holtek

À l’issue de cette analyse passive des composants, nous pouvons établir le schéma technique suivant :

schema_serrure

Figure 7 : Relation entre les différents composants de la serrure

Ouverture par code

Nous nous intéressons ensuite au mécanisme d’authentification par code. Par défaut, le code utilisateur est « 1234 » et le code d’administration est « 4321 ». Les paramètres par défaut sont donc triviaux et présentent une nouvelle problématique de sécurité. En effet, lors de la création d’un mot de passe par défaut, il est important qu’il soit unique et suffisamment robuste pour chaque appareil afin d’éviter que la compromission d’un objet entraîne celle de tout un parc. De plus, il est courant pour les utilisateurs d’installer puis d’utiliser ces objets sans prendre le temps de modifier les paramètres par défaut, ce qui peut entraîner des problématiques de sécurité importantes.

mdp_serrure

Figure 8 : Mots de passe par défaut

À partir du code de management, il est possible de modifier les autres mots de passe. Une autre fonctionnalité permet également de créer des codes temporaires utilisables une seule fois. Un code doit alors être composé de 4 à 15 chiffres.

Nous remarquons la présence d’une alarme qui se déclenche après 4 échecs. Cependant, nous notons qu’en débranchant et rebranchant l’alimentation, une remise à zéro est effectuée sur notre compteur d’échec. Dans le cas d’une alimentation par USB (donc côté digipad), un attaquant peut aisément effectuer une attaque par force brute visant à déverrouiller la porte en effectuant 3 tentatives puis une remise à 0 du compteur.

Ouverture par carte RFID

Nous menons à présent une analyse du système d’ouverture par carte RFID. Cette technologie permet de transmettre des données par ondes radio dans le but d’identifier une personne ou un objet par exemple.

Les données sont stockées dans un tag (ici une carte) qui sera alimenté par un champ électromagnétique à l’approche du lecteur. Le tag sera ensuite en mesure d’émettre ses données d’identification. Dans le cas de la serrure, nous sommes face à un lecteur haute fréquence de 13 MHz environ.

rfid

Figure 9 : Schéma haut niveau du fonctionnement de la technologie RFID

L’identification peut se faire en se basant uniquement sur l’UID (Unique Identifier) de la carte, on parlera alors d’identification faible étant donné la possibilité d’émuler un UID. Il est également possible de stocker des données au sein de la carte et d’utiliser des clés de chiffrement afin de les protéger de toute altération des données contenues.

Le lecteur accepte les cartes « Mifare 1k » qui sont considérées comme obsolètes depuis plusieurs années. En effet plusieurs attaques existent pour retrouver les clés de chiffrement utilisées et ainsi copier un badge dans sa totalité. Cependant, il n’est pas nécessaire d’aller aussi loin. En effet, dans notre cas nous remarquons que seul l’UID de la carte est vérifié, ce qui constitue un mécanisme d’authentification faible. Nous parvenons alors à simuler un badge à l’aide d’un outil appelé « Proxmark » pour ouvrir la serrure. Le « Proxmark » est considéré comme un couteau suisse dans le domaine du RFID. Il est équipé de plusieurs antennes lui permettant d’être compatible avec la plupart des types de tag présents sur le marché aujourd’hui. Ses fonctionnalités sont variées et vont de l’identification de badge à leur émulation.

badge_serrure

Figure 10 : Emulation d'un badge Mifare 1k avec un la valeur "F9575A08" comme UID

De la même manière, il est possible d’utiliser un « Flipper zero » qui sera plus discret et pratique sur le terrain. Cet outil de poche permet tout comme le « Proxmark » de copier des tags et de les émuler. Son avantage est qu’il ne nécessite pas d’être connecté à un ordinateur pour fonctionner.

flipper_zero

Figure 11 : Utilisation du Flipper Zero pour copier un tag « Mifare 1k »

Avec 2³² (4,294,967,296) possibilités, il n’est pas concevable d’effectuer une attaque par force brute sur tous les UID possibles. Cependant nous sommes parvenus à tester plusieurs UID à la suite sans observer de mécanisme de sécurité. Un attaquant ayant identifié une liste d’UID possible pourrait donc ouvrir la serrure en quelques secondes.

proxmark

Figure 12 : Emulation de plusieurs UID à la suite à l'aide du "Proxmark"

De plus, lors de notre tentative d’attaque par force brute, nous avons observé que le dernier octet de l’UID n’est pas contrôlé. Les UID « F9575A00 » et F9575A88 » sont considérées comme identiques par la serrure. Cela réduit alors le nombre de possibilités à 2²⁶ (67,108,864).

Analyse éléctronique

À l’aide d’un analyseur logique, nous revenons sur le connecteur à 6 fils vu précédemment en nous branchant sur chaque fil. Ce dernier étant le seul moyen de communication entre le front (digipad) et le back (verrou), son implémentation en fait une cible de choix pour un attaquant. L’idée est maintenant d’identifier le ou les fils responsables de l’ouverture du verrou.

L’utilisation d’un multimètre nous permet d’identifier la masse au niveau du fil bleu. Ensuite, en procédant de façon empirique, nous notons que seuls les fils vert et jaune sont nécessaires pour le verrouillage et le déverrouillage. Les autres fils sont probablement utilisés pour alimenter le digipad lorsque le verrou utilise une alimentation par piles.

microprocesseur.jpgfils_serrure

Figure 13 : Identification des fils nécessaires

Nous identifions alors que le fil vert est utilisé lors de la fermeture du verrou et le fil jaune lors de son ouverture.

open_close

Figure 14 : Identification des signaux d'ouverture et de fermeture

Il est alors possible pour un attaquant d’ouvrir la serrure sans même connaitre le code de déverrouillage. Pour cela il suffit de connecter l’un de ces deux fils à la borne « VCC » correspondant à une tension de 3.3V et l’autre à la masse en fonction de l’action désirée. L’exploitation de cette vulnérabilité est facilitée par la présence de « VCC » et « GND » à proximité des 4 pins de programmation du côté du clavier numérique.

Conclusion

Plusieurs scénarios, plus ou moins subtiles sont possibles pour déverrouiller cette serrure. Nous pouvons ainsi dresser la liste suivante des vulnérabilités identifiées en fonction du TOP 10 OWASP 2018 dédié à l’IoT:

owasp

Concernant cet équipement, le défaut le plus important observé est lié à l’architecture même de la serrure qui ne respecte pas le principe du moindre privilège. Le même principe doit être appliqué pour la conception d’objets connectés ou pour le développement logiciel, c’est-à-dire ne proposer à l’utilisateur que ce dont il a besoin. Ici, le simple fait que toute la partie de contrôle et d’électronique se trouve exposée à l’utilisateur simplifie la découverte et l’exploitation de la plupart des défauts observés. Le système d’alarme doit également être renforcé en évitant sa remise à 0 lorsque l’appareil est débranché. Ensuite, il serait important que le constructeur puisse implémenter un système définissant un mot de passe par défaut suffisamment robuste et aléatoire pour chaque équipement fabriqué. En effet, la politique de mot de passe actuellement appliquée autorise des codes composés de seulement 4 chiffres, ce qui est jugé trop faible.

Pour continuer, il serait primordial que le constructeur procède au changement du type de carte utilisé « Mifare 1k » pour son système d’authentification RFID. En effet, comme démontré dans cet article, ce type de carte est déprécié et ne doit plus être utilisé de nos jours. Nous recommandons alors de passer à l’utilisation de types de cartes plus robustes telles que les « Mifare DESFire ». Il est également recommandé de ne pas se fier uniquement à l’identifiant d’une carte mais à une donnée stockée de manière sécurisée sur cette dernière pour éviter toute copie ou usurpation d’identité.

Pour conclure, la question de la sécurité des systèmes de sécurité se doit d’être posée que ce soit pour une entreprise ou un particulier. Chaque entreprise créatrice d’objets connectés devrait avoir connaissance des bonnes pratiques de bases proposées dans l’ISVS par l’OWASP. De plus, chaque objet devrait être rigoureusement testé avant sa mise en production, afin de déceler les principaux défauts physiques notamment, ainsi qu’à chaque déploiement de nouvelles fonctionnalités logicielles.

Découvrir nos solutions de pentest

Découvrir les autres articles de cette série consacrée à la sécurité IoT :

Pentest d'un routeur wifi
Dans les entrailles d'une caméra connectée TP-Link

Sécurité Bluetooth low energy