
Firmware basé sur OpenWrt délibérément vulnérable pour une formation pratique à la sécurité IoT. Propose des défis de vulnérabilité alignés sur l'OWASP IoT Top 10 pour l'analyse statique et dynamique.

Le projet IoTGoat est un firmware délibérément vulnérable basé sur OpenWrt et maintenu par OWASP en tant que plateforme pour former les développeurs de logiciels et les professionnels de la sécurité aux tests des vulnérabilités courantes rencontrées dans les appareils IoT. Les défis de vulnérabilité sont basés sur l'OWASP IoT Top 10 ci-dessous, ainsi que sur des « œufs de Pâques » des contributeurs du projet. Pour une liste des défis de vulnérabilité, consultez la page IoTGoat challenges wiki.
| OWASP IoT Top 10 2018 | Description |
|---|---|
| I1 Mots de passe faibles, devinables ou codés en dur | Utilisation d'informations d'identification facilement bruteforçables, publiquement disponibles ou immuables, y compris les backdoors dans le firmware ou le logiciel client qui accordent un accès non autorisé aux systèmes déployés. |
| I2 Services réseau non sécurisés | Services réseau inutiles ou non sécurisés exécutés sur l'appareil lui-même, en particulier ceux exposés à Internet, qui compromettent la confidentialité, l'intégrité/l'authenticité ou la disponibilité des informations ou permettent un contrôle à distance non autorisé. |
| I3 Interfaces écosystémiques non sécurisées | Interfaces web, API backend, cloud ou mobiles non sécurisées dans l'écosystème en dehors de l'appareil qui permettent de compromettre l'appareil ou ses composants associés. Les problèmes courants incluent un manque d'authentification/autorisation, un chiffrement absent ou faible, et un manque de filtrage des entrées et sorties. |
| I4 Absence de mécanisme de mise à jour sécurisé | Absence de capacité à mettre à jour l'appareil de manière sécurisée. Cela inclut l'absence de validation du firmware sur l'appareil, l'absence de livraison sécurisée (non chiffrée en transit), l'absence de mécanismes anti-rollback et l'absence de notifications des changements de sécurité dus aux mises à jour. |
| I5 Utilisation de composants non sécurisés ou obsolètes | Utilisation de composants/logiciels obsolètes ou non sécurisés qui pourraient permettre de compromettre l'appareil. Cela inclut la personnalisation non sécurisée des plateformes de système d'exploitation et l'utilisation de logiciels ou de composants matériels tiers provenant d'une chaîne d'approvisionnement compromise. |
| I6 Protection insuffisante de la vie privée | Informations personnelles de l'utilisateur stockées sur l'appareil ou dans l'écosystème, utilisées de manière non sécurisée, inappropriée ou sans autorisation. |
| I7 Transfert et stockage de données non sécurisés | Absence de chiffrement ou de contrôle d'accès des données sensibles partout dans l'écosystème, y compris au repos, en transit ou pendant le traitement. |
| I8 Absence de gestion des appareils | Absence de support de sécurité pour les appareils déployés en production, y compris la gestion des actifs, la gestion des mises à jour, le décommissionnement sécurisé, la surveillance des systèmes et les capacités de réponse. |
| I9 Paramètres par défaut non sécurisés |
Plusieurs méthodes existent pour commencer à pirater IoTGoat.
Pour ceux qui cherchent à extraire le système de fichiers, analyser les configurations et les binaires de manière statique, téléchargez la dernière version précompilée du firmware depuis https://github.com/OWASP/IoTGoat/releases. Référez-vous à la Méthodologie de test de sécurité des firmwares d'OWASP pour vous aider à identifier les vulnérabilités.
Pour les tests web dynamiques et l'analyse runtime des binaires, le moyen le plus rapide de commencer est de télécharger la dernière version « IoTGoat-x86.vmdk » (VMware) et de créer une machine virtuelle personnalisée en utilisant l'image disque IoTGoat. Sélectionnez les détails du système d'exploitation suivants : Type : Linux Version : Linux 2.6 / 3.x / 4.x (32-bit) et activez PAE/NX dans les paramètres de la machine virtuelle. Les fichiers .vmdk et .vdi ont été testés sur la dernière version de VirtualBox (avril 2020) pour Windows 10, Ubuntu 18.04 LTS et MacOS Mojave. Référez-vous aux projets Guide de test de sécurité Web et ASVS d'OWASP pour des conseils supplémentaires sur l'identification des vulnérabilités des applications web.
Émulez le firmware avec des outils open source (par exemple Firmadyne, ARM-X Framework et FAT) qui exploitent QEMU pour virtualiser IoTGoat localement.
Référez-vous à la page Pour commencer pour plus de détails et des captures d'écran.
OpenWrt peut compiler de nombreuses plateformes CPU et cartes différentes. La construction à partir des sources donne aux utilisateurs la flexibilité de flasher IoTGoat sur du matériel OpenWrt pris en charge. Assurez-vous de disposer de 10 à 15 Go d'espace disque avec au moins 4 Go de RAM et une distribution Linux prise en charge, comme Ubuntu 18.04. Suivez les étapes ci-dessous pour commencer à construire un firmware personnalisé.
$ git clone https://github.com/OWASP/IoTGoat.git
$ cd IoTGoat/OpenWrt/openwrt-18.06.2/
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
$ make menuconfig # sélectionnez votre configuration préférée pour la chaîne d'outils, le système cible et les paquets de firmware.
$ make # Construisez votre firmware avec make. Cela téléchargera toutes les sources, construira la chaîne d'outils de cross-compilation puis cross-compilera le noyau Linux et toutes les applications choisies pour votre système cible.
La première construction prendra un certain temps et variera en fonction de la connexion Internet fournie pour le téléchargement de la chaîne d'outils. Une fois la construction réussie terminée, le firmware compilé sera placé dans le répertoire suivant IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/ en fonction de la cible sélectionnée dans menuconfig. Par exemple, le firmware IoTGoat pour Raspberry Pi 2 se trouvera dans le répertoire IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/brcm2708/bcm2709. Les fichiers de configuration de construction d'IoTGoat sont disponibles pour les plateformes x86 (.config-x86) et Raspberry Pi 2 (.config-rpi).




| Appareils ou systèmes livrés avec des paramètres par défaut non sécurisés, ou absence de capacité à sécuriser davantage le système en restreignant les opérateurs de modifier les configurations. |
| I10 Absence de durcissement physique | Absence de mesures de durcissement physique, permettant à des attaquants potentiels d'obtenir des informations sensibles pouvant aider lors d'une future attaque à distance ou de prendre le contrôle local de l'appareil. |
Utilisez le firmware IoTGoat-raspberry-pi2-sysupgrade.img pour flasher sur un Raspberry Pi 2 (BRCM2708 & BRCM2709).
Utilisez la configuration Docker pour exécuter IoTGoat dans un environnement conteneurisé. Référez-vous au guide de configuration Docker pour plus de détails.