Come procedere con la valutazione Vulnerabilità dell'IoT?

4

Primo: questo non è uno di quelli "Come posso iniziare a hackerare?" domande, ma più di un "Come posso iniziare a testare un dispositivo specifico?".

È una parte della mia tesi di laurea triennale per eseguire un'analisi / valutazione della vulnerabilità di un dispositivo IoT che è stata implementata durante un'altra tesi di laurea con un obiettivo di sicurezza in mente e fornire possibili soluzioni o miglioramenti. Applicando il principio di Kerckhoffs, ho pieno accesso alla documentazione, al codice sorgente e sono stato persino fornito con un client di test, lasciandomi il compito di configurare il server web in base alla documentazione.

Come posso procedere?
Secondo questo abbiamo vari passaggi per una valutazione completa.

  • Discovery
  • Scansione vulnerabilità
  • Valutazione delle vulnerabilità
  • Valutazione della sicurezza
  • Test di penetrazione

Sistema
I tre principali componenti tematici sono già identificati:

  1. Lettore / tag RFID
  2. Client microcontroller, (Arduino / w Ethernet Shield)
  3. Sistema di back-end

Ulteriori informazioni per fornire un'immagine migliore: 1) utilizza solo l'ID del tag rfid (autorizzazione senza autenticazione), possibilità di clonazione / spoofing dei tag. Considerando se è possibile integrarlo con il sistema di blocco proprietario, poiché vengono utilizzati gli stessi tag rfid, quindi il sistema ha l'autenticazione dell'utente.

2) Arduino Uno come interfaccia per la porta seriale e la lettura di tag rfid, utilizza la libreria crittografica per ChaCha20-Poly1305 crittografa / autentica il traffico al backend, la chiave precondivisa, genera una nuova chiave di sessione periodicamente, implementerò un piccolo programma che emula la comunicazione via porta seriale.

3) Backend con Webserver (Apache), application server (django) e database (sqlite, come ancora un sistema di test). Fornisce Webinterface come strumento amministrativo, utilizza lo stato dell'arte TLS.

Stato attuale

Attualmente sono bloccato su come affrontarlo in modo metodico e strutturato / processo .
Non ho molta speranza nell'attaccare (1) perché non riesco a vedere molti vettori di attacco, a parte la clonazione / lo spoofing
In (2), dato che è un Arduino, utilizza il 99% della sua capacità per i suoi compiti. Ho già utilizzato flawfinder sul codice sorgente, ma ha mostrato solo alcuni errori (controlla la dimensione dell'array se copia, ecc), che erano tutto gestito nel codice. Non è in corso alcuna allocazione di memoria dinamica, la lettura dagli array è strettamente definita dalla dimensione degli array ecc. Supponendo che la libreria ChaCha20, che porta il proprio RNG sicuro, sia correttamente implementata, non vedo proprio nulla qui.
Finalmente (3) dove vedo il maggior potenziale. Apache Webserver in esecuzione su Debian 9. I server Web sono spesso configurati in modo errato / non aggiornato che apre i vettori di attacco. Server delle applicazioni? Non sono sicuro di quello. Webclient, a seconda dell'implementazione, costruito con Django, potrebbe anche essere uno dei componenti più vulnerabili.

TL; DR: Ho un dispositivo IoT, costituito da più componenti (Microcontroller, server Web di backend con interfaccia web), e sono bloccato su come eseguire una valutazione della vulnerabilità metodicamente corretta e completa.

Domande

  • Qual è l'approccio metodico corretto a questo problema? Ci sono standard / framework?
  • Come posso testare accuratamente (1) e (2) per le vulnerabilità? Come ci sono le guide per il pentesting (3)

EDIT

Lascio le informazioni di background così come sono. La domanda principale è:

Qual è un approccio metodico corretto alla valutazione delle vulnerabilità di un dispositivo IoT multicomponente?

    
posta k0s1nsky 09.12.2017 - 23:50
fonte

2 risposte

2

TL; DR:

  1. Gestione RFID (il tuo input principale per il sistema)
  2. Debug delle interfacce (combinalo con tutti gli altri passaggi)
  3. app Web
  4. Crypto stuff
  5. Controllo del codice sorgente
  6. Canale laterale e amp; errore di iniezione (che è un po 'più difficile)

1. RFID

Vorrei iniziare con la parte RFID (controlla proxmark3). In che modo arduino gestisce un ID di 1KB? Dovrebbe esplodere. potrebbe persino vomitare parte della sua memoria da qualche parte.

2. Debug delle interfacce

DEBUGGING INTERFACES. Non posso sottolineare abbastanza. Controlla il protocollo di debug di One-Wire per esempio e la mia altra interfaccia che utilizza. Cerca di ottenere un dump della memoria.

3. Applicazione Web

Accendi lo squalo o il burpè e guarda cosa succede. L'errata configurazione spesso non è il tuo problema più grande nelle app Web personalizzate.

4. Crypto stuff

Ricorda che l'arduino è un dispositivo a bassa potenza con potenza di cavallo quasi identico a eseguire calcoli con penna e amp; carta - questi due con crittografia NON giocano bene. Soprattutto la parte RNG. Se non è hardware (come un generatore di rumore bianco con transistor con polarizzazione inversa, ad esempio) è probabilmente spazzatura. Scopri come viene implementata ogni criptazione, sono sicuro che troverai qualcosa.

5. Controllo del codice sorgente

Questo è ovvio, dovrai controllare il codice sorgente. Lo lascio lì, perché quando inizi a controllare il codice sorgente, avrai già una buona idea su cosa sta succedendo, quando e perché. Penso che tu abbia già controllato vari bit nelle fasi precedenti, ma in questa fase cerca di essere molto più accurato

6. Canale laterale e amp; Iniezione di errori

Ultimo ma non meno importante, proverei l'iniezione difettosa & attacchi ai canali laterali. Tensione e amp; clock glitching su architetture così semplici, così come l'analisi della potenza è molto semplice (rispetto ad un processore della serie ARM A, ad esempio). ChipWhisperer sarà di grande utilità! Penso che tu abbia anche una pipeline in due fasi, così puoi saltare le istruzioni complete: P

NOTA: prova a prendere un sacco di appunti durante la valutazione (come hai fatto roba, o come funziona il sistema), nonché immagini e screenshot su cose interessanti / strani. Non esistono "troppe note"!

    
risposta data 07.03.2018 - 20:19
fonte
-1

Dipende da cosa fa il dispositivo. Deve comunicare in qualche modo. Ha un'interfaccia di rete? Prova una scansione delle porte.

Un "dispositivo IoT" è come un mini PC. I tuoi vettori di attacco devono essere gli stessi. Deve ricevere una sorta di input. Manipola gli input.

    
risposta data 07.03.2018 - 18:54
fonte