
IoTGoat est un firmware délibérément non sécurisé basé sur OpenWrt.

Le projet IoTGoat est un firmware délibérément vulnérable basé sur OpenWrt et maintenu par OWASP pour éduquer les utilisateurs sur la façon de tester les vulnérabilités les plus courantes trouvé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 wiki des défis IoTGoat.
| OWASP IoT Top 10 2018 | Description |
|---|---|
| I1 Mots de passe faibles, devinables ou codés en dur | Utilisation d'identifiants facilement bruteforçables, publiquement disponibles ou non modifiables, y compris les portes dérobées dans le firmware ou les logiciels clients 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 fonctionnant sur l'appareil lui-même, en particulier ceux exposés à Internet, qui compromettent la confidentialité, l'intégrité/authenticité ou la disponibilité des informations ou permettent un contrôle à distance non autorisé. |
| I3 Interfaces d'écosystème 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é | Incapacité de 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/bibliothèques logiciels obsolètes ou non sécurisés qui pourraient permettre la compromission de l'appareil. Cela inclut la personnalisation non sécurisée des plates-formes 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 aux données sensibles n'importe où dans l'écosystème, y compris au repos, en transit ou pendant le traitement. |
| I8 Absence de gestion des appareils | Manque de support de sécurité sur les appareils déployés en production, y compris la gestion des actifs, la gestion des mises à jour, le déclassement 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 souhaitent 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/scriptingxss/IoTGoat/releases. Référez-vous à la Méthodologie de test de sécurité des firmwares de l'OWASP pour vous aider à identifier les vulnérabilités.
Pour les tests web dynamiques et l'analyse à l'exécution des binaires, le moyen le plus rapide de commencer est de télécharger le dernier « IoTGoat-x86.vmdk » (VMware) et de créer une machine virtuelle personnalisée en utilisant l'image disque IoTGoat. Référez-vous aux projets Guide de test de sécurité Web de l'OWASP et ASVS 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 et FAT) qui utilisent QEMU pour virtualiser IoTGoat localement.
Utilisez le firmware IoTGoat-raspberry-pi2-sysupgrade.img pour flasher sur un Raspberry Pi 2 (BRCM2708 et BRCM2709).
OpenWrt peut construire 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, d'au moins 4 Go de RAM et d'une distribution Linux prise en charge telle qu'Ubuntu 18.04. Suivez les étapes suivantes pour commencer à construire un firmware personnalisé.
$ git clone https://github.com/scriptingxss/IoTGoat.git
$ cd IoTGoat/OpenWrt/openwrt-18.06.2/
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
$ make menuconfig # select your preferred configuration for the toolchain, target system & firmware packages.
$ make # Build your firmware with make. This will download all sources, build the cross-compile toolchain and then cross-compile the Linux kernel & all chosen applications for your target system.
La première construction prendra un certain temps et variera en fonction de la connexion Internet fournie pour télécharger la chaîne d'outils. Une fois la construction réussie, 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 Raspberry Pi 2 se trouvera dans le répertoire suivant IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/brcm2708/bcm2709. Les fichiers de configuration de construction 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 incapacité de rendre le système plus sécurisé en restreignant les opérateurs à modifier les configurations. |
| I10 Absence de durcissement physique | Absence de mesures de durcissement physique, permettant à des attaquants potentiels d'obtenir des informations sensibles qui peuvent aider dans une future attaque à distance ou de prendre le contrôle local de l'appareil. |