
IoTGoat è un firmware deliberatamente insicuro basato su OpenWrt.

Il progetto IoTGoat è un firmware volutamente insicuro basato su OpenWrt e mantenuto da OWASP per educare gli utenti su come testare le vulnerabilità più comuni nei dispositivi IoT. Le sfide di vulnerabilità si basano sull'OWASP IoT Top 10 elencato di seguito, oltre a "uova di Pasqua" dai contributori del progetto. Per un elenco delle sfide di vulnerabilità, consulta la pagina wiki delle sfide IoTGoat.
| OWASP IoT Top 10 2018 | Descrizione |
|---|---|
| I1 Password Deboli, Prevedibili o Hardcoded | Uso di credenziali facilmente attaccabili tramite forza bruta, pubblicamente disponibili o immutabili, inclusi backdoor nel firmware o nel software client che consentono accessi non autorizzati 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 il controllo remoto non autorizzato. |
| I3 Interfacce di Ecosistema Insicure | Interfacce web, API backend, cloud o mobili insicure nell'ecosistema al di fuori del dispositivo che consentono il compromesso del dispositivo o dei suoi componenti correlati. I problemi comuni includono la mancanza di autenticazione/autorizzazione, crittografia assente o debole e mancanza di filtraggio di input e output. |
| I4 Mancanza di Meccanismo di Aggiornamento Sicuro | Mancanza di capacità di aggiornare il dispositivo in modo sicuro. Ciò include la mancanza di validazione del firmware sul dispositivo, mancanza di consegna sicura (non crittografata in transito), mancanza di meccanismi anti-rollback e mancanza di notifiche di modifiche alla sicurezza dovute agli aggiornamenti. |
| I5 Uso di Componenti Insicuri o Obsoleti | Uso di componenti/librerie software deprecati o insicuri che potrebbero consentire il compromesso del dispositivo. Ciò include la personalizzazione insicura delle piattaforme del sistema operativo e l'uso di software o componenti hardware di terze parti provenienti da una catena di fornitura 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 inattivi, in transito o durante l'elaborazione. |
| I8 Mancanza di Gestione del Dispositivo | Mancanza di supporto di sicurezza sui dispositivi distribuiti in produzione, inclusa la gestione delle risorse, la gestione degli aggiornamenti, la dismissione sicura, il monitoraggio dei sistemi e le capacità di risposta. |
| I9 Impostazioni Predefinite Insicure | Dispositivi o sistemi forniti 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 staticamente, scarica l'ultima versione del firmware precompilato da https://github.com/scriptingxss/IoTGoat/releases. Fai riferimento alla Metodologia di Test di Sicurezza del Firmware di OWASP per aiutarti nell'identificazione delle vulnerabilità.
Per test web dinamici e analisi runtime dei binari, il modo più rapido per iniziare è scaricare l'ultimo "IoTGoat-x86.vmdk" (VMware) e creare una macchina virtuale personalizzata usando l'immagine disco di IoTGoat. Fai riferimento alla Guida ai Test di Sicurezza Web di OWASP e ai progetti ASVS per ulteriori indicazioni sull'identificazione delle vulnerabilità delle applicazioni web.
Emula il firmware con strumenti open source (es. Firmadyne e FAT) che utilizzano QEMU per virtualizzare IoTGoat localmente.
Usa il firmware IoTGoat-raspberry-pi2-sysupgrade.img per flashato su un Raspberry Pi 2 (BRCM2708 e BRCM2709).
OpenWrt può compilare per molte piattaforme CPU e schede diverse. Compilare dal sorgente dà agli utenti la flessibilità di flashato IoTGoat su hardware OpenWrt supportato. Assicurati di avere 10-15 GB di spazio su disco con almeno 4 GB di RAM e una distribuzione Linux supportata come Ubuntu 18.04. Segui i passaggi seguenti per iniziare a compilare un firmware personalizzato.
Fai tutto come utente normale, non usare root o sudo durante la compilazione!
$ 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 # seleziona la tua configurazione preferita per toolchain, sistema target e pacchetti firmware.
$ make # Compila il tuo firmware con make. Questo scaricherà tutte le fonti, compilerà la toolchain di cross-compilazione e poi compilerà in modo incrociato il kernel Linux e tutte le applicazioni scelte per il tuo sistema target.
La prima compilazione richiederà del tempo e varierà in base alla connessione internet fornita per scaricare la toolchain. Una volta completata la compilazione con successo, il firmware compilato verrà inserito nella directory IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/ a seconda del target selezionato in menuconfig. Ad esempio, il firmware per IoTGoat Raspberry Pi 2 si troverà nella directory IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/brcm2708/bcm2709. I file di configurazione di compilazione di IoTGoat sono resi disponibili per le piattaforme x86 (.config-x86) e Raspberry Pi 2 (.config-rpi).
| I10 Mancanza di Rafforzamento Fisico | Mancanza di misure di rafforzamento fisico, che consentono a potenziali aggressori di ottenere informazioni sensibili che possono aiutare in un futuro attacco remoto o di prendere il controllo locale del dispositivo. |