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:
- Lettore / tag RFID
- Client microcontroller, (Arduino / w Ethernet Shield)
- 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?