
Strumento di attacco OSDP (e la parola elfica per amico)
Strumento di attacco OSDP (e la parola elfica per amico)
OSDP supporta, ma non richiede strettamente, la crittografia. Quindi la tua connessione potrebbe non essere nemmeno crittografata. L'attacco #1 consiste semplicemente nell'ascoltare passivamente e vedere se riesci a leggere i numeri delle carte sul cavo.
Solo perché il controller e il lettore supportano la crittografia non significa che siano configurati per richiederne l'uso. Un attaccante può modificare il messaggio di risposta delle capacità del lettore (osdp_PDCAP) per pubblicizzare che non supporta la crittografia. Quando ciò accade, alcuni controller proseguono senza crittografia.
OSDP ha una modalità di "installazione" quasi ufficiale che si applica sia ai lettori che ai controller. Come suggerisce il nome, dovrebbe essere utilizzata durante la configurazione iniziale di un lettore. In pratica, consente ai lettori di chiedere al controller qual è la chiave di crittografia di base (SCBK). Se il controller è configurato per rimanere permanentemente in modalità installazione, un attaccante può presentarsi sul cavo e richiedere la SCBK.
Il codice di esempio di OSDP spesso include chiavi di crittografia hardcoded. Chiaramente sono intese come esempi, dove l'utente dovrebbe generare le chiavi in modo sicuro da solo. Ma questo non viene spiegato né reso semplice per l'utente. E chiunque sia stato nel campo della sicurezza abbastanza a lungo sa che ciò che è predefinito probabilmente sarà presente in produzione.
Quindi, come vettore d'attacco, quando il collegamento tra lettore e controller è crittografato, vale la pena provare a enumerare alcune chiavi deboli comuni. Si tratta di chiavi AES a 128 bit, quindi non saremo in grado di enumerarle tutte. Né una parte significativa di esse. Ma possiamo colpire alcuni schemi comuni che si vedono quando qualcuno hardcoda una chiave:
OSDP non ha un meccanismo in-band per lo scambio di chiavi. Ciò significa che un attaccante può:
Troverai il codice proof-of-concept per ciascuno di questi attacchi in attack_osdp.py. Dai un'occhiata al comando --help per maggiori dettagli sull'utilizzo. Questo è uno script Python, pensato per essere eseguito da un laptop con adattatori USB<-->RS485 come questi. Quindi probabilmente vorrai procurartene alcuni. Non deve essere per forza quel modello, comunque.
Se hai un controller che vuoi testare, allora bene. Usalo. Se non ce l'hai, abbiamo un controller OSDP volutamente vulnerabile che puoi usare qui: vulnserver.py.
Alcuni degli attacchi in attack_osdp.py si aspetteranno di essere un MitM completo tra un lettore e un controller funzionanti. Per testarli, potresti aver bisogno di tre adattatori USB<-->RS485, collegati insieme con una breadboard.
Questi problemi non sono, singolarmente, sfruttabili ma rappresentano comunque un indebolimento del protocollo, dell'implementazione o del sistema complessivo.