Pentest IoT : 10 types de tests hardware et software

La sécurité des objets connectés est un sujet d’actualité, cependant les tests d’intrusion IoT sont encore loin d’être une pratique généralisée. La plupart des constructeurs priorisent d’abord les fonctionnalités et le design du produit. Cependant, même avec une approche « security by design », le test d’intrusion reste incontournable pour connaître les risques de sécurité réels, puis pour prendre les mesures nécessaires.

Pentest Internet of Things : 10 types de tests hardware and software

Qu’est-ce qu’un pentest IoT ?

Un objet connecté est une solution complexe, avec différents points d’entrée potentiels pour un attaquant. Un audit de sécurité d’objet connecté (ou pentest IoT) comprend des tests sur l’ensemble de l’écosystème de l’objet, c’est-à-dire : la couche électronique, le logiciel embarqué, les protocoles de communication, le serveur, les interfaces web et mobiles. Les tests côté serveur, interfaces web et applications mobiles ne sont pas spécifiques à l’IoT, cependant ce sont des tests importants, car il s’agit de pans particulièrement à risques. Les tests côté électronique, logiciel embarqué et protocoles de communication concernent des vulnérabilités plus spécifiques à l’IoT.

Il existe trois types d’attaques spécifiques sur les objets connectés et les systèmes embarqués. Les attaques software, les attaques hardware non invasives et les attaques hardware invasives. Les premières profitent des failles logicielles, les secondes récupèrent des informations du hardware sans l’endommager tandis que les dernières impliquent l’ouverture des composants et donc leur destruction pour pouvoir en tirer des secrets. Si les deux premiers types d’attaques ne nécessitent pas beaucoup de moyens, ce n’est pas le cas des attaques invasives pour lesquelles des équipements très coûteux sont nécessaires.

Voici dix types de tests concrets conduits lors de l’audit de sécurité d’un objet connecté, illustrés par quelques exemples médiatisés et emblématiques. Pour chaque point abordé ci-dessous, il existe de nombreux outils et méthodes qui profitent de failles très diverses. Il s’agit donc d’une liste non exhaustive.

Attaques software

1/ Détection de ports de communication ouverts et mal protégés

Il est courant que des ports soient laissés ouverts à des fins de débogage ou par oubli. Shodan, un moteur de recherche dédié aux objets connectés à internet, donne un aperçu de la diversité des systèmes connectés. Il peut trouver tout ce qui a une interface web, une IP visible publiquement : webcams, imprimantes ou encore serveurs. Connaître (ou trouver) les identifiants par défaut suffit alors pour s’y connecter, et ensuite récupérer des informations, accéder à d’autres services…

Lors d’un pentest ou une attaque sur un objet en particulier, ce sont plutôt des outils comme Nmap, un scanner de ports libre, qui va permettre au pentester de trouver les ports ouverts et les services les utilisant. L’observation du trafic permet de plus d’identifier les différents ports utilisés et de voir s’ils sont protégés. Chaque port ouvert indique l’utilisation d’une application, d’un service particulier, ayant potentiellement des failles exploitables. Certains services, comme le protocole Telnet, ne sont pas sécurisés et peuvent être sujet au sniffing.

Mirai_botnet

Apparu en 2016, le malware Mirai se propage par le protocole Telnet et grâce à des mots de passe par défaut, à travers des centaines de milliers d’objets connectés non protégés. Les systèmes infectés sont utilisés pour mener des attaques DDoS d’ampleur, mettant les cibles attaquées hors service. L’entreprise Dyn et ses services DNS en ont notamment été victimes, ce qui a entraîné des pertes financières importantes.

2/ Capture et analyse des signaux radio (sniffing) – multi-protocoles

Les objets connectés utilisent le plus souvent une technologie de communication sans fil pour échanger des données. Muni d’un logiciel d’analyse de paquets comme Wireshark et d’un adaptateur pour la technologie sans fil visée, un attaquant peut récupérer les informations transmises par et vers l’objet ciblé.

Si les communications se font en filaire, le sniffing est également possible. Il faut alors être plus près du réseau pour pouvoir s’y connecter.

Suivant le protocole utilisé, la taille des paquets peut varier et empêcher l’implémentation d’une solution de chiffrement des communications : les données sont alors envoyées en clair.

Lors d’un pentest, le sniffing est utilisé sur le fonctionnement normal de l’appareil afin de voir si des informations importantes comme des clés, des hashs, des mots de passe sont envoyées et exploitables. Cette technique permet également de voir quels ports sont utilisés et par quelles fonctions, ce qui contribue ainsi au test précédent.

3/ Détection d’interfaces de configuration ou de backdoors

Parfois, une backdoor ou une interface de configuration est laissée sur un produit après la fin du développement. Ce qui était un avantage pour l’équipe de développement pour tester et modifier le produit devient alors une porte grande ouverte pour un attaquant.

Pendant un test d’intrusion, il est possible de détecter ces interfaces et backdoors en faisant du sniffing. En isolant les échanges de données non nécessaires au fonctionnement du système, des ports ouverts pour des services d’interface de configuration ou backdoors sont mis en évidence. La sécurité de ces ports doit alors être testée.

4/ Buffer overflow

Le débordement de tampon consiste en l’écriture d’une donnée dans un buffer au-delà de sa capacité, entrainant ainsi la réécriture d’espaces mémoire adjacents. Les buffers des systèmes embarqués ont une mémoire assez petite, le risque de buffer overflow est donc bien présent. Le système ciblé peut par conséquent ne plus marcher correctement.

Un attaquant peut alors envoyer du code malveillant dans la partie réécrite afin de mettre en place une backdoor pour prendre le contrôle de l’appareil. 

Tester la vulnérabilité au buffer overflow d’un objet connecté revient à tester les applications serveurs et embarquées. L’étude du code ou plus simplement le test des différents champs avec de grandes valeurs permet de mettre en évidence la présence de cette vulnérabilité et de l’exploiter.

En septembre 2018, c’est une faille qui a été trouvée et exploitée sur des caméras de surveillance, vous pouvez découvrir l’attaque plus en détail ici (en anglais).

5/ Cassage de mots de passe

Tenter de casser les mots de passe d’IoT s’avère généralement très fructueux. Les couples identifiant / mot de passe par défaut ne sont pas toujours modifiés après développement du produit. De plus, le même couple est souvent utilisé sur toute une série de produits. Crackez-le une fois et vous avez accès à des milliers d’appareils. Les attaquants trouvent ou achètent en ligne des listes des identifiants par défaut de nombreux produits.

Les pentesters évaluent la robustesse de mots de passe en utilisant des dictionnaires de mots de passe ou en faisant du brute force, ce qui demande un peu plus de temps et de moyens matériels. N’importe quel attaquant peut casser un mot de passe avec ces techniques.

Prenons maintenant l’exemple du cassage d’un mot de passe sur le microcontrôleur d’un système embarqué.

Après avoir étudié les fiches techniques des différents composants du produit, l’attaquant peut mener une attaque par injection de fautes en perturbant par exemple la tension d’alimentation ou en émettant des ondes électromagnétiques sur des zones précises des composants. En faisant cela, il peut empêcher l’exécution de certaines parties du code comme celle responsable du blocage après un nombre fini de tentatives ratées. Avec un autre microcontrôleur, il lui est alors possible d’attaquer par brute force le mot de passe.

6/ Debugging

Il arrive qu’une interface de débogage soit toujours accessible sur l’IoT ciblé. Si un attaquant y accède, cela permet de contourner complètement les protections et d’obtenir un contrôle direct sur l’appareil. Une interface accessible peut faire d’économiser beaucoup d’efforts aux attaquants, ne leur facilitons pas la tâche.

Teddy Bear

Cette vulnérabilité a été découverte par exemple chez un ourson en peluche connecté (article en anglais). N’importe qui ayant un accès physique au jouet pouvait avoir un accès complet au système de l’ourson. Le nom, l’anniversaire ou encore le genre pouvaient être récupérés par l’attaquant et réutilisés pour casser d’autres mots de passe par exemple.

7/ Modification du firmware (logiciel embarqué)

De nombreuses failles permettent de modifier le logiciel d’un appareil. Les attaquants ont différentes possibilités :

  • mise en ligne des mises à jour vérolées par des malwares,
  • dumper la mémoire,
  • étudier la mémoire par reverse engineering, la modifier en y injectant du code malveillant (pour établir une backdoor  par exemple) et remettre ensuite le code dans l’appareil qui exécutera le script rajouté donnant ainsi à l’attaquant accès à son contenu.

8/ Reverse engineering (rétro-ingénierie)

Le reverse engineering est possible à la fois sur le firmware et sur le hardware. Dans le premier cas, soit le firmware est accessible en ligne sur le site du fabricant, soit on peut essayer de dumper la mémoire (voir le memory dumping plus bas). Une fois le code récupéré, le pentester le décompresse, le désassemble et le décompile jusqu’à comprendre son fonctionnement. Il peut alors le modifier puis le réinjecter dans l’appareil ou en tirer les informations sauvegardées en local.

Il y a quelques années, une équipe de chercheurs a ainsi réussi à prendre le contrôle d’une Jeep SUV en exploitant une vulnérabilité de son firmware. Ils sont parvenus à faire accélérer, ralentir le véhicule et même à le faire quitter la route.

Attaques hardware invasives

Reverse engineering

Dans le cas du hardware, l’attaquant se procure le produit et le démonte pour en identifier les composants. La simple étude visuelle des éléments permet d’obtenir des informations de valeur pour mieux cibler d’autres types d’attaques. L’ouverture des composants et l’analyse par logiciel de la position des transistors et des interconnexions métalliques permettent même de remonter au fonctionnement du composant, mais une étude aussi poussée demande beaucoup de moyens.

Attaques hardware non invasives

9/ Analyse cryptographique

Il n’y a souvent pas de chiffrement dans un souci de préserver mémoire et batterie. Cependant, il arrive qu’un algorithme, comme l’AES ou le RSA, soit présent dans un système embarqué. Un attaquant peut cracker le secret à l’aide par exemple d’une attaque par canaux auxiliaires. Ce type d’attaque repose sur l’analyse de la consommation électrique, de la chaleur dégagée ou encore des ondes électromagnétiques émises et ne demande pas forcément beaucoup de moyens.

Un pentest classique de cryptographie consiste d’abord à vérifier que les données et les communications sont bien chiffrées. Si c’est le cas, le sont-elles avec un algorithme encore considéré comme sûr ? Quel niveau de chiffrement le secret protégé par l’algorithme nécessite-t-il ? On peut considérer qu’une attaque par analyse cryptographique est réussie lorsque le secret découvert vaut plus que le temps investi pour l’obtenir.

10/ Dumps de mémoire

Pour récupérer le firmware, les attaquants ont souvent recours au dump de mémoire, c’est-à-dire la récupération du contenu de la mémoire de la cible. Pour beaucoup de microcontrôleurs, il existe une fonction de « memory dump » native, mais les défenses contre son utilisation ne sont parfois pas implémentées.

En pratique, dumper la mémoire d’un objet connecté se fait par connexion physique via des ports USB, SPI, JTA. Un ordinateur ou un microcontrôleur est connecté directement au microcontrôleur cible. Des outils logiciels permettent alors de récupérer la mémoire de la cible et le reverse engineering peut commencer.

Pour conclure, conduire les différents tests évoqués dans cet article donne une bonne vision de la sécurité matérielle et logicielle d’un objet connecté. Les tests d’intrusion IoT peuvent s’effectuer dès le développement de l’objet connecté sur un prototype fonctionnel, ou bien lorsqu’il est en phase de production ou lorsqu’il est commercialisé.

Si certaines mesures pour améliorer la sécurité d’un appareil et résister à ces attaques peuvent être complexes, d’autres comme changer les mots de passe ou vérifier que les ports non utilisés soient fermés sont faciles à mettre en œuvre et apportent un gain de sécurité notable.