Étude des menaces

Les maisons intelligentes sont-elles vulnérables au piratage ?

Martin Hron, 15 février 2019

L'expert d'Avast, Martin Hron, vous explique ce que vous devez savoir sur les forces et les faiblesses de la sécurité IoT et sur le protocole MQTT qui les relie et les contrôle.

Introduction

Aujourd'hui, nous entendons beaucoup parler d'IoT, qui signifie Internet des objets. Toutes ces boîtes intelligentes, ampoules électriques, stores, thermostats, assistants vocaux et machines intelligentes s'introduisent lentement dans nos foyers, nos entreprises et nos environnements industriels. Il est logique et inévitable que nous développions un moyen de les contrôler au fur et à mesure que nous intégrons davantage de périphériques dans nos maisons.

Il est possible d'interconnecter et de contrôler des périphériques domestiques intelligents à l'aide du protocole MQTT (Message Queuing Telemetry Transport).

Lors de l'implémentation du protocole MQTT, les utilisateurs configurent un serveur. Pour les consommateurs, le serveur réside généralement sur un PC ou un mini-ordinateur tel que Raspberry Pi, auquel les périphériques peuvent se connecter et avec lequel ils peuvent communiquer. Bien que le protocole MQTT lui-même soit sécurisé, s’il est implémenté et configuré de manière incorrecte, de graves problèmes de sécurité peuvent survenir.

Chez Avast, nous avons examiné cela de plus près et, en utilisant le moteur de recherche Shodan IoT, nous avons trouvé plus de 49 000 serveurs MQTT visibles publiquement sur Internet en raison d'un protocole MQTT mal configuré. Cela inclut plus de 32 000 serveurs dépourvus de mot de passe, ce qui expose les maisons intelligentes et les entreprises utilisant de tels serveurs MQTT à un risque de fuite de données. Si le protocole MQTT n'est pas configuré correctement, les cybercriminels peuvent obtenir un accès complet à une maison et, par exemple, savoir quand leurs propriétaires sont à la maison, manipuler des systèmes de divertissement, des assistants vocaux, des appareils domestiques et des portes intelligentes physiquement ouvertes.

À propos des maisons intelligentes, vous vous demandez peut-être : Pourquoi un protocole comme MQTT est-il nécessaire s'il risque de compromettre la sécurité et la confidentialité de mon domicile ? Contrôler manuellement quelques appareils intelligents n’est pas un problème, mais à mesure que leur nombre augmente dans nos foyers, leur gestion prend plus de temps et devient un fardeau. C'est comme gérer un grand réseau informatique manuellement. À un moment donné, sans automatisation, la gestion des appareils connectés représente plus de travail que de confort. Viennent ensuite d’autres dispositifs intelligents qui se connectent les uns aux autres, coopèrent et effectuent des tâches sans aucune interaction humaine. Par exemple, votre porte de garage s'ouvre automatiquement lorsque vous rentrez du bureau, l'éclairage de votre maison s'allume, le thermostat est configuré pour une température confortable et votre chaîne stéréo commence à jouer de la musique jazz dans le salon.

Jusqu'ici, ça a l'air sympa, mais qu'en est-il de la sécurité ? Authentification ? Autorisation ?

Des systèmes complexes vous permettant de contrôler toute votre maison à partir d'un appareil mobile, essentiellement de n'importe où dans le monde, sont en cours de construction. La question est de savoir quel est le degré de sécurité de ces systèmes. Certains d’entre eux peuvent s’avérer moins sécurisés que vous ne le pensez.

Le problème avec la sécurité IoT

La sécurité de l'IoT est insuffisante parce que les appareils sont construits à l'aide de protocoles technologiques datant des années 1980. Cela est généralement dû au fait que les premiers cas d'utilisation d'appareils IoT étaient largement industriels. Il existait une forte demande pour des systèmes capables de collecter et de traiter des données provenant de diverses machines dans des usines ou des lignes de production. Ces «réseaux» n'utilisaient pas de protocoles Internet pour échanger des données. En fait, ils n’avaient généralement pas de connexion externe et la sécurité n’était donc pas une préoccupation majeure.

L’autre problème est que les utilisateurs ne se concentrent généralement pas sur la sécurité lors de la configuration des appareils IoT. Si vous n'encouragez pas l'utilisateur à modifier les paramètres (au moins à modifier le mot de passe par défaut), il utilisera probablement la configuration par défaut.

Faites connaissance avec MQTT

MQTT est l'un des protocoles les plus courants utilisés par les périphériques intelligents pour communiquer. Il est synonyme de Message Queuing Telemetry Transport et a été développé à la fin des années 1990 en tant que protocole SCADA. Il était principalement utilisé pour l'automatisation industrielle et, comme son nom l'indique, pour transporter de courts messages de données de télémétrie. Il n’existe pas de norme pour le format des données qu’il transporte - il transportera pratiquement toutes les données utiles. Le protocole est conçu comme un modèle abonné/éditeur. Cela fonctionne comme un flux RSS : vous vous abonnez à un sujet et une fois que quelqu'un publie un article sur le sujet, le contenu est remis à tous les abonnés.

Comme mentionné précédemment, il n'y a pas de problème de sécurité avec le protocole MQTT ni avec le logiciel serveur le plus courant qui implémente ce protocole (ou le courtier comme on l'appelle dans le cas de MQTT), appelé Mosquitto. En fait, MQTT et Mosquitto disposent tous deux de capacités de sécurité étendues, permettant par exemple de fournir un contrôle d'accès détaillé par utilisateur et par sujet. Comme pour beaucoup de choses, les problèmes sont créés dans la mise en œuvre et la configuration. Examinons quelques cas d'utilisation réels de MQTT avant de plonger dans ce qui peut mal se passer.

MQTT est souvent utilisé pour combler le fossé entre différents protocoles, de sorte que différents périphériques puissent communiquer les uns avec les autres même s'ils ne communiquent pas en utilisant le même protocole. C'est très pratique car cela permet d'organiser les sujets dans une structure hiérarchique, créant ainsi un espace de noms unifié pour toute la maison intelligente. Par exemple, une structure de sujet peut ressembler à ceci :

    /myhouse/garage/lights/doorlight

    /myhouse/garage/lights/ceilinglight

    /myhouse/garage/garagedoor

    /myhouse/livingroom/speaker

    /myhouse/kitchen/oven

    /myhouse/kitchen/lights

Vous pouvez voir que la structure est hiérarchique, décrivant dans ce cas une structure pour les appareils connectés dans une maison. Une des choses qui rend MQTT si utile est que vous pouvez utiliser des caractères génériques lorsque vous vous abonnez aux sujets, de la même manière que le fonctionnement du nom de fichier ou de la recherche.

MQTT a deux caractères génériques : # et ?

# correspond à tous les niveaux de son emplacement/occurence, dans la hiérarchie, donc par exemple en vous abonnant à :

    /myhouse/garage/#

Un appareil IoT recevra tous les messages publiés dans /myhouse/garage/lights ou /myhouse/garage/garagedoor.

Le représente toutes les catégories de tous les niveaux et peut être utilisé n'importe où dans la hiérarchie, plusieurs fois. Donc en vous abonnant à :

   /myhouse/?/lights/#

l'appareil recevra tous les messages concernant les lumières de n'importe quelle pièce, car ? dans ce cas peut être une cuisine ou un garage, par exemple.

En combinant des abonnements, vous pouvez créer un scénario très complexe pour contrôler un groupe de périphériques en ne publiant que sur un sujet. Les éditeurs peuvent être, par exemple, des interrupteurs d'éclairage compatibles MQTT. En appuyant dessus, un message MQTT est publié et une action est entreprise. Tout appareil peut être un éditeur, un abonné ou les deux.

Mais pour créer une maison vraiment intelligente, il nous manque encore un élément crucial : l'automatisation.

La domotique se présente généralement sous la forme d'un logiciel, ou peut-être d'une smart box, qui contient une « logique métier » et agit comme un « concentrateur domestique intelligent » pour unifier le contrôle des périphériques, à la base même de l'intégration de MQTT. MQTT est inclus dans la plupart des solutions logicielles de concentrateur domestique intelligent, telles que Home Assistant, afin que les utilisateurs puissent installer un package incluant MQTT ou installer MQTT séparément lors de la configuration de leur hub domestique. Les concentrateur domestiques intelligents souscrivent et publient généralement des messages MQTT et fournissent une logique. Ils fournissent également une sorte de tableau de bord, que ce soit localement ou à distance, où vous pouvez contrôler l’ensemble de la maison « intelligente ».

Par exemple, si le capteur de sol de votre jardin indique au concentrateur que le sol est trop sec et que votre réservoir d'eau contient suffisamment d'eau, il peut activer le système d'irrigation pour arroser vos fleurs. De cette manière, un certain nombre de périphériques intelligents peuvent être connectés à un concentrateur intelligent, contrôlé, voire automatisé, à l'aide du protocole MQTT, même s'ils n'étaient pas conçus à l'origine pour fonctionner ensemble.  

Le problème avec MQTT

Exposons le problème plus clairement.

Nous avons un serveur MQTT (courtier) avec des fonctionnalités de sécurité intégrées, qui sert de « messager » entre tous les composants. Nous avons un concentrateur domestique intelligent qui orchestre tous nos appareils et ajoute une véritable intelligence à l'ensemble du système. Nous disposons de divers appareils compatibles MQTT ou pontés MQTT connectés au serveur/courtier MQTT.

Tout cela semble bien et a du sens, mais que se passe-t-il si le serveur MQTT n’a pas de configuration sécurisée ? Comme pour beaucoup de vulnérabilités, les principaux problèmes sont les configurations non sécurisées et par défaut. Ce qui aggrave la mauvaise configuration de MQTT, c’est qu’en accédant au serveur MQTT, vous accédez à tous les messages qui le traversent. Comment ? Rappelez-vous # utilisé comme un joker ? Vous pouvez vous abonner uniquement à # et à rien d'autre. Dans de tels cas, chaque fois que quelqu'un publie quelque chose sur un sujet, vous obtenez ces données.

Plus inquiétant, beaucoup de serveurs MQTT mal configurés sont également accessibles au public sur Internet sans mot de passe, permettant ainsi à un cybercriminel d’espionner toute maison qui l’utilise. L'avantage pour le cybercriminel est que si le serveur est accessible au public, il peut s'y connecter depuis n'importe où. De plus, comme la plupart des utilisateurs ne configurent pas les contrôles d'accès - sous la forme de listes de contrôle d'accès (ACL) - lorsqu'ils configurent un Mosquitto lors de la configuration de leur concentrateur domestique intelligent, les cybercriminels peuvent non seulement s'abonner au serveur, mais également y publier et prendre ainsi le contrôle de tous les appareils d’une maison intelligente.

Alors, quelle est l'ampleur de ce problème ? Selon le moteur de recherche Shodan IoT, près de 49 000 serveurs MQTT sont exposés sur Internet. Parmi ceux-ci, il y a environ 32 000 serveurs sans protection par mot de passe.

unsecure-number-of-mqtt-servers-2

Les vulnérabilités reflétées par les résultats totaux ci-dessus sont très probablement dues à des serveurs MQTT mal configurés. Lorsque les utilisateurs configurent ces systèmes pour contrôler à distance leur maison intelligente, ils exposent souvent non seulement le « tableau de bord » ou le panneau de configuration du système, mais également le serveur MQTT, ces deux composants s'exécutant généralement sur le même ordinateur ou serveur. Lorsque cela se produit, les utilisateurs peuvent être exposés. Nous avons constaté qu'en général, les utilisateurs ne savaient pas trop comment ils configuraient leur connexion MQTT de manière sécurisée au cours du processus d'installation. 

Voici quelques exemples de ce qui peut se produire si le système est mal configuré.

Cinq façons simples de pirater une maison intelligente 

Nous avons décidé de voir à quel point il serait facile d'accéder à une maison intelligente exposée :

1) Connexion et abonnement à des sujets génériques sur un serveur MQTT non protégé

Notre premier test consistait à trouver un serveur MQTT ouvert et non protégé et à nous abonner à la rubrique #. C'était assez facile et, une fois connectés, nous avons pu recevoir chaque message publié. Dans le cas de certains systèmes domotiques, nous pouvions voir l’état des capteurs de fenêtre et les portes ouvertes/fermées. Nous pouvions voir chaque pression sur un interrupteur dans la maison et même les prévisions météorologiques locales, comme vous pouvez le voir sur l'image suivante.

unsecure-mqtt-server-1

Une prévision météo en plus d'autres sujets, publiée
par un serveur non sécurisé MQTT

Il n'y a généralement pas de listes de contrôle d'accès (ACL), ce qui constitue un contrôle d'accès détaillé aux sujets en place. Ainsi, une fois que vous êtes connecté, vous pouvez également publier sur des sujets. Dans ce cas, vous pouvez contrôler les périphériques ou au moins empoisonner les données collectées en les publiant pour le compte des périphériques. Par exemple, vous pouvez envoyer des messages au concentrateur comme si vous étiez le capteur de sécurité du verrou intelligent de la porte d'entrée de la maison intelligente, car les messages MQTT n'ayant pas de champ expéditeur, le destinataire du message ne peut pas déterminer d'où provient la demande. De ce fait, les cybercriminels peuvent facilement effectuer des « attaques par retransmission » et envoyer des messages au nom des périphériques connectés au concentrateur.

2) Connexion à des tableaux de bord de concentrateur intelligent non protégés sur un serveur sécurisé MQTT

Et si le serveur est protégé ? Pouvons-nous toujours avoir accès au tableau de bord de la maison ? Nous avons constaté qu'une maison intelligente peut être piratée même sur un serveur MQTT sécurisé, car parfois un tableau de bord (panneau de configuration de maison intelligente) s'exécute sur la même adresse IP que le serveur MQTT.

De nombreux propriétaires utilisent des solutions open source pour leur maison intelligente. Les logiciels les plus populaires pour les concentrateurs intelligents sont des solutions facilement disponibles telles que Domoticz, Home Assistant et OpenHAB. Lorsque nous avons recherché ces éléments, nous avons pu voir de nombreuses configurations par défaut, qui n'exigeaient étonnamment aucun mot de passe. Ainsi, même si le serveur MQTT est sécurisé, vous pouvez accéder au tableau de bord aussi facilement qu’en saisissant l’adresse IP dans un navigateur. En faisant cela, on peut obtenir un accès complet à la maison, par le biais d'une jolie interface utilisateur, comme ceci :

home-automation-system-dashboard-3

Exemple d'un tableau de bord accessible publiquement d'un système de domotique – permettant le contrôle total de tous les appareils connectés

L'exploitation de cet accès permettrait à un cybercriminel de contrôler tous les périphériques connectés via le tableau de bord, notamment les éclairages, les serrures, les systèmes de chauffage et de climatisation, les caméras, etc. Avec ce contrôle, un cybercriminel peut faire un grand nombre de choses, comme espionner ou enregistrer secrètement des personnes chez elles, ajuster radicalement la température de leur maison ou entrer dans la maison pendant que les propriétaires sont en vacances ou au travail, sans déclencher aucune des alarmes.

3) Lecture de fichiers sur un serveur MQTT protégé avec un tableau de bord protégé

Mais que se passe-t-il si le tableau de bord et le serveur sont protégés ? Il ne devrait y avoir aucun moyen d'accéder à la maison intelligente, non ? Eh bien, peut-être qu'il y en a. Comment ? C'est aussi simple que de vérifier d'autres services.

Dans le cas du « concentrateur intelligent » du logiciel Home Assistant, nous avons trouvé plusieurs instances de serveurs MQTT correctement configurés et non exposés, ainsi qu'un tableau de bord correctement configuré et protégé par mot de passe. Mais ce qui était étonnant, c’est que nous ayons trouvé des partages SMB ouverts et non sécurisés. SMB est un protocole utilisé pour partager des fichiers sur des réseaux internes, principalement sur la plate-forme Windows. Nous avons trouvé des répertoires partagés publiquement avec tous les fichiers du Home Assistant, y compris les fichiers de configuration. Et ce n'est pas tout. Voyons ce que nous avons trouvé d'autre :

home-assistant-login-screen-4

Écran de connexion de Home Assistant

Comme vous pouvez le voir dans l'image, lorsque nous avons tenté de deviner le mot de passe, de le laisser vierge ou d'utiliser un mot de passe par défaut (« bienvenue »), cela n'a pas fonctionné. Jusqu'ici tout va bien. Le tableau de bord est protégé.

shodan-search-engine-5

Listing du moteur de recherche SHODAN sur la même adresse

Nous avons ensuite décidé de lancer une requête Shodan sur la même adresse IP. Il s'est avéré qu'un service SMB (partage de fichiers) s'exécutait sans aucun ensemble de sécurité. Notez que Home Assistant partage tous les fichiers du logiciel installé, y compris les fichiers de configuration.

unsecured-shared-directory-6Contenu du répertoire partagé non sécurisé montré précédemment avec les fichiers de configuration

Lorsque nous parcourions les fichiers exposés, un fichier particulier a attiré notre attention. Avez-vous remarqué le fichier secrets.yaml dans l'image ci-dessus ? Lorsque nous l'avons ouvert, nous avons été surpris par le contenu du fichier.

secrets-yaml-file-7

Contenu du fichier secrets.yaml

Le fichier secrets.yaml contenait les noms d'utilisateur et les mots de passe stockés en texte brut. Il existe également de nombreux autres comptes pour différents services du cloud ou des clés API qui peuvent être utilisés à mauvais escient pour en prendre le contrôle. Ce qui nous intéressait était le champ http_password . En utilisant ce champ pour un écran de connexion, nous avons obtenu ceci :

full-control-home-automation-takeover-8Contrôle total sur la domotique

Comme vous pouvez le constater, c'est le contrôle total de la maison de quelqu'un. Vous pouvez même jouer de l'audio via Spotify. Nous essayions de trouver une raison pour laquelle il existe autant d'instances de Home Assistant mal protégées.  

Nous pensons que le problème ici est que les utilisateurs ne sont pas conscients du fait qu’une fois qu’ils installent HomeAssistant sur le serveur (dans ce cas, il s’agit probablement de la version HASSBIAN de Home Assistant conçue comme un package prêt à installer sur différents types de matériel sous-jacent) et l'exposent pour accéder au tableau de bord via Internet, ils exposent également souvent un partage Samba utilisé pour accéder aux fichiers de configuration et d’installation de Home Assistant. Ce faisant, ils laissent involontairement tout le système à la portée de tous et divulguent au public tous les mots de passe et les clés API qui y sont stockés. Il convient de noter que même les utilisateurs férus de technologie manquent parfois de connaissances de base sur la manière de sécuriser correctement leurs systèmes open source.

4) Création d'une interface utilisateur sur un serveur MQTT non protégé

Voici quelques outils/applications intéressants vous permettant de créer un tableau de bord simple pour une maison intelligente basée sur MQTT. Nous avons trouvé une application appelée MQTT Dash pour Android et iOS qui vous permet de créer votre propre tableau de bord et votre panneau de contrôle pour votre maison en plaçant diverses tuiles à l'écran et en les reliant à des sujets MQTT. Le plus intéressant est la façon dont l’application stocke la disposition du tableau de bord et la configuration. Au lieu de créer un fichier spécial sur votre périphérique, vous pouvez publier l'intégralité du paramétrage sur le sujet du serveur MQTT et, ce faisant, répliquer facilement les paramètres sur autant de périphériques que vous le souhaitez.

C'est très pratique, mais si le serveur MQTT n'est pas sécurisé, un cybercriminel peut facilement obtenir la même interface utilisateur que l'utilisateur. Cela fournit un moyen facile de pirater la maison de quelqu'un et même d'obtenir son interface utilisateur avec une seule connexion à son serveur MQTT. Encore une fois, la configuration par défaut facilite les choses, et si un tableau de bord est utilisé, comme celui configuré avec l’application MQTT Dash, il est fort probable que vous trouverez un sujet nommé « métriques/échanges », un sujet dit « retenu ». Si vous vous abonnez à un sujet retenu, vous recevrez la dernière charge utile ou les dernières données stockées, ce qui signifie que vous pouvez facilement charger tout le tableau de bord, comme vous pouvez le voir sur l'illustration suivante :

mqtt-dash-appliciation-android-emulator-on-pc-11Application MQTT Dash dans l'émulateur Android sur PC

5) Localisation de l'appareil de suivi

Qu'est-ce qui pourrait être pire ? Les serveurs MQTT se concentrent généralement sur de nombreuses données intéressantes et en temps réel. Nous avons constaté que de nombreux serveurs MQTT, dont certains n'étaient même pas connectés à un système de maison intelligente, contiennent un sujet très intéressant commençant par owntracks /…  Si vous effectuez une courte recherche sur Google, vous pouvez constater que OwnTracks est une application Android et iOS qui fonctionne comme un suivi GPS personnel. Ce qui est encore plus intéressant, c'est qu'il prend en charge le protocole MQTT pour partager votre position avec vos amis ou votre famille. Jusqu'à présent, cela sonne comme une fonction innocente, non ? Faux ! Cette fonctionnalité est généralement configurée en se connectant à un serveur MQTT sans cryptage ni autorisation. De plus, pour pouvoir connecter votre téléphone à un serveur MQTT, vous devez l'exposer à Internet et, malheureusement, de nombreux utilisateurs procèdent à la configuration sans prendre en compte les mesures de sécurité. OwnTracks envoie ensuite un message JSON au sujet MQTT owntracks /… chaque fois que le téléphone change d'emplacement. C'est glauque, non ? Voyons à quoi ressemble le message :

message-delivered-to-mqtt-server-12

Message délivré au serveur MQTT par l'application OwnTracks

recorded-positions-over-a-week-13

Positions enregistrées au cours d'une semaine

Les champs lon (longitude) , lat (latitude) et alt (altitude) sont explicites. Vous pouvez même voir que le niveau de la batterie du téléphone est également envoyé au serveur. Le champ « tst » est en fait un horodatage de la position et est écrit au format d'époque UNIX. Après le décodage, nous avons découvert que l'horodatage provenait de : Mar 7 août 2018 11:26:48 UTC. En utilisant toutes ces informations, vous pouvez facilement reconstituer la position de quelqu'un au cours de la journée, du mois ou de l'année. Et rappelez-vous, toutes ces informations sont disponibles sous forme de données en temps réel.

Maintenant, vous vous demandez probablement pourquoi partager votre emplacement avec le serveur MQTT. Eh bien, la réponse est…automatisation et commodité. Certains concentrateurs ou systèmes pour « maison intelligente » vous permettent de partager votre position avec eux pour vous offrir une meilleure expérience. Vous souvenez-vous du scénario où votre maison allume automatiquement les lumières lorsque vous vous approchez de chez vous ? Vous pouvez également demander à votre système d’éteindre toutes les lumières lorsque personne n’est à la maison. Le partage des informations de localisation GPS est exactement ce dont le système a besoin pour fournir cette fonctionnalité. Ici encore, le problème est la sécurité, plus précisément les protocoles non sécurisés et les messages OwnTracks non cryptés. Tout cela parce que les utilisateurs s'appuient sur des configurations par défaut.

Conclusion

Étant donné qu'il existe encore de nombreux protocoles mal sécurisés datant d'une époque révolue où la sécurité n'était pas une préoccupation majeure, il est terriblement facile d'accéder et de contrôler la maison intelligente d'une personne. La commodité des appareils IoT et des concentrateurs de maison intelligente connectés à Internet est une arme à double tranchant. Il existe un compromis entre facilité d'utilisation et sécurité.

Les consommateurs doivent être conscients des problèmes de sécurité liés à la connexion d'appareils qui contrôlent des parties personnelles de leur domicile à des services qu'ils ne comprennent pas parfaitement, et de l'importance de configurer correctement leurs appareils. À l'échelle de l'industrie, nous avons appelé à une meilleure sécurité au niveau des appareils IoT. Afin de garantir la sécurité de l'ensemble de l'écosystème de la maison intelligente des utilisateurs, les fabricants doivent développer des dispositifs IoT faciles à configurer pour les consommateurs, avec un niveau de sécurité élevé.  Enfin, il est nécessaire de disposer de solutions de contrôle plus sécurisées permettant aux consommateurs d'utiliser la technologie chez eux en toute confiance, en sachant qu'elle est sécurisée et que leur vie privée est protégée.

Les appareils IoT font lentement leur chemin dans nos maisons – il est crucial de les mettre en œuvre correctement maintenant, car nous n'en ajouterons que plus avec le temps.

Merci d’utiliser Avast Antivirus et de nous recommander à vos amis et votre famille. Pour toutes les dernières actualités, pensez à nous suivre sur Facebook et Twitter.