
Firmware basato su OpenWrt deliberatamente insicuro per formazione pratica sulla sicurezza IoT. Include sfide sulle vulnerabilità mappate sull'OWASP IoT Top 10 per analisi statica e dinamica.

Il progetto IoTGoat è un firmware deliberatamente insicuro basato su OpenWrt e mantenuto da OWASP come piattaforma per istruire sviluppatori software e professionisti della sicurezza sui test delle vulnerabilità comunemente presenti nei dispositivi IoT. Le sfide sulle vulnerabilità si basano sull'OWASP IoT Top 10 riportato di seguito, oltre che su "uova di Pasqua" dei contributori del progetto. Per un elenco delle sfide sulle vulnerabilità, vedere la pagina wiki delle sfide IoTGoat.
| OWASP IoT Top 10 2018 | Descrizione |
|---|---|
| I1 Password deboli, prevedibili o hardcoded | Uso di credenziali facilmente bruteforzabili, pubblicamente disponibili o non modificabili, inclusi backdoor nel firmware o nel software client che concedono accesso non autorizzato ai sistemi distribuiti. |
| I2 Servizi di rete insicuri | Servizi di rete non necessari o insicuri in esecuzione sul dispositivo stesso, specialmente quelli esposti a internet, che compromettono la riservatezza, l'integrità/autenticità o la disponibilità delle informazioni o consentono un controllo remoto non autorizzato. |
| I3 Interfacce ecosistema insicure | Interfacce web, API backend, cloud o mobili insicure nell'ecosistema al di fuori del dispositivo che consentono di compromettere il dispositivo o i suoi componenti correlati. I problemi comuni includono la mancanza di autenticazione/autorizzazione, crittografia assente o debole e mancanza di filtraggio input e output. |
| I4 Mancanza di un meccanismo di aggiornamento sicuro | Mancanza della capacità di aggiornare in modo sicuro il dispositivo. Ciò include la mancanza di validazione del firmware sul dispositivo, la mancanza di consegna sicura (non crittografata in transito), la mancanza di meccanismi anti-rollback e la mancanza di notifiche delle modifiche alla sicurezza dovute agli aggiornamenti. |
| I5 Uso di componenti insicuri o obsoleti | Uso di componenti/librerie software deprecati o insicuri che potrebbero consentire di compromettere il dispositivo. Ciò include la personalizzazione insicura delle piattaforme del sistema operativo e l'uso di componenti software o hardware di terze parti provenienti da una supply chain compromessa. |
| I6 Protezione della privacy insufficiente | Informazioni personali dell'utente memorizzate sul dispositivo o nell'ecosistema che vengono utilizzate in modo insicuro, improprio o senza autorizzazione. |
| I7 Trasferimento e archiviazione dei dati insicuri | Mancanza di crittografia o controllo degli accessi per i dati sensibili in qualsiasi punto dell'ecosistema, inclusi dati a riposo, in transito o durante l'elaborazione. |
| I8 Mancanza di gestione dei dispositivi | Mancanza di supporto alla sicurezza per i dispositivi distribuiti in produzione, inclusa la gestione degli asset, la gestione degli aggiornamenti, la dismissione sicura, il monitoraggio dei sistemi e le capacità di risposta. |
| I9 Impostazioni predefinite insicure | Dispositivi o sistemi distribuiti con impostazioni predefinite insicure o privi della capacità di rendere il sistema più sicuro limitando gli operatori dalla modifica delle configurazioni. |
Esistono diversi metodi per iniziare a fare hacking su IoTGoat.
Per chi desidera estrarre il filesystem, analizzare configurazioni e binari in modo statico, scaricare l'ultima release del firmware precompilato da https://github.com/OWASP/IoTGoat/releases. Fare riferimento alla Metodologia di test di sicurezza dei firmware di OWASP per identificare le vulnerabilità.
Per i test web dinamici e l'analisi runtime dei binari, il modo più rapido per iniziare è scaricare l'ultima "IoTGoat-x86.vmdk" (VMware) e creare una macchina virtuale personalizzata utilizzando l'immagine del disco IoTGoat. Selezionare i seguenti dettagli del sistema operativo Type: Linux Version: Linux 2.6 / 3.x / 4.x (32-bit) e abilitare Enable PAE/NX nelle impostazioni della macchina virtuale. Sia .vmdk che .vdi sono stati testati con l'ultima release di VirtualBox (aprile 2020) su Windows 10, Ubuntu 18.04 LTS e MacOS Mojave. Fare riferimento alla Web Security Testing Guide e ai progetti ASVS di OWASP per ulteriori indicazioni sull'identificazione delle vulnerabilità delle applicazioni web.
Emulare il firmware con strumenti open source (ad es. Firmadyne, ARM-X Framework e FAT) che sfruttano QEMU per virtualizzare IoTGoat localmente.
Usare il firmware IoTGoat-raspberry-pi2-sysupgrade.img per il flash su un Raspberry Pi 2 (BRCM2708 e BRCM2709).
Fare riferimento alla pagina Per iniziare per ulteriori dettagli e screencapture.
OpenWrt può compilare molte piattaforme e board CPU diverse. La compilazione dal sorgente offre agli utenti la flessibilità di eseguire il flash di IoTGoat su hardware OpenWrt supportato. Assicurarsi di disporre di 10-15GB di spazio su disco con almeno 4GB di RAM e una distribuzione Linux supportata come Ubuntu 18.04. Utilizzare i seguenti passaggi per iniziare a compilare firmware personalizzato.
Fai tutto come utente normale, non usare root o sudo durante la compilazione!
$ 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 # 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 prima compilazione richiederà del tempo per essere completata e varierà in base alla connessione internet fornita per il download della toolchain. Una volta completata con successo la compilazione, il firmware compilato verrà collocato nella seguente directory IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/ a seconda del target selezionato in menuconfig. Ad esempio, il firmware IoTGoat per Raspberry Pi 2 si troverà nella seguente directory IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/brcm2708/bcm2709. I file di configurazione di build di IoTGoat sono disponibili per le piattaforme x86 (.config-x86) e Raspberry Pi 2 (.config-rpi).




| I10 Mancanza di hardening fisico | Mancanza di misure di hardening fisico, che consente a potenziali attaccanti di ottenere informazioni sensibili utili per un futuro attacco remoto o di prendere il controllo locale del dispositivo. |
Usare il setup Docker per eseguire IoTGoat in un ambiente containerizzato. Fare riferimento alla guida di setup Docker per maggiori dettagli.