Mostra tutti

Dronehacks – Come Hackerare un Drone in 11 secondi e l’Exploit Mavlink

Dronehacks – Come Hackerare un Drone in 11 secondi e l’Exploit Mavlink

Oggigiorno i droni sono ovunque. Amazon consegna pacchetti tramite droni. I registi e gli operatori televisivi lanciano in aria le telecamere per ottenere bellissime panoramiche. Ad alcuni amanti del settore non importa pagare più di 500 euro per un drone giocattolo per esplorare il cielo o girare video ai matrimoni degli amici.

È facile immaginarvi con il vostro nuovo drone da 500 euro, lanciandolo in aria e… guardare inermi il velivolo che scompare perché non risponde ai comandi del joystick che avete in mano.

Non si tratta di un bug del firmware o di un guasto al joystick: il vostro drone è stato hackerato. Al Security Analyst Summit, l’esperto di sicurezza Jonathan Andersson ha provato che un criminale competente può creare un dispositivo in grado di hackerare i droni in pochi secondi.

Dronehacks in pochi secondi

Andersson ha utilizzato una software defined radio (SDR), un’unità di controllo di droni, un microcomputer e altri strumenti elettronici per creare tale dispositivo. L’ha chiamato Icarus. Con l’aiuto dell’SDR, Andersson si è sintonizzato sulla frequenza che il drone utilizza per comunicare con il joystick e poi l’ha provato fino a quando non ha scoperto come venivano trasmessi esattamente i segnali tra i dispositivi.

Andersson ha avuto bisogno di un po’ di tempo per capire come funzionava il trasferimento di dati tra il drone e la sua unità di controllo, soprattutto perché cambiano canale ogni 11 millisecondi. Ciononostante, se si riesce a farlo una volta, hackerare un drone diventa poi più facile; tutti gli sviluppatori dei giocattoli intelligenti usano protocolli simili.

Gli sviluppatori seguono il famoso metodo sicurezza tramite segretezza, facendo affidamento sulla complessità dei protocolli e trascurando un criptaggio sicuro. Icarus è in grado di hackerare il loro criptaggio originale e di inviare una serie di comandi per hackerare un velivolo negli 11 millisecondi in cui un dispositivo aspetta per cambiare canale.

Hack, Drone, Mavlink, Dronehacks,

Di conseguenza, il controllo legittimo del drone smette di funzionare e il controllo passa nelle mani del criminale. Il seguente video mostra come funziona tutto questo nel mondo reale.

Andersson ha spiegato che questa minaccia può potenzialmente influenzare l’intero settore dei droni (dai giocattoli poco costosi ai velivoli carissimi e professionali) in quanto i droni e le unità di controllo utilizzano i protocolli di trasferimento dei dati che sono vulnerabili allo stesso tipo d’attacco.

Una buona crittografia potrebbe risolvere il problema, ma non è così semplice (molti joystick non supportano gli aggiornamenti software). Inoltre, un’ottima crittografia richiede una buona capacità di calcolo e questo comporta un ulteriore consumo d’energia del joystick e del velivolo. Il problema d’energia complica sul serio la situazione: quando si tratta di droni, ogni briciola di batteria vale tanto.

Ci piace credere che gli sviluppatori risolveranno il problema a breve. È triste dire addio a un drone hackerato! I registi saranno ancora più tristi: i loro droni valgono migliaia e migliaia di Euro (e anche questi si possono hackerare facilmente).

Hack Drone – L’EXPLOIT MAVLINK

L’exploit di cui parliamo coinvolge tutti i droni che fanno uso di MAVLink (Micro Air Vehicle Link) e cioè il protocollo che si occupa della comunicazione usato per piccoli veivoli senza pilota, in particolare tra l’operatore a terra (Ground Control Station) ed il veivolo ma anche per i sistemi all’interno dei veivolo. Con il protocollo vengono trasmesse informazioni fondamentali per un drone come l’orientamento, la posizione GPS e la velocità.

Ecco una piccola lista dei droni vulnerabili:

  • Parrot AR.drone
  • ArduPilot
  • PX4FMU
  • pxIMU
  • SmartAP
  • MatrixPilot
  • Armazila 10dM3UOP88
  • Hexo+
  • TauLabs e AutoQuad.

Analisi del condice MAVLINK

Codice originale:

// decodifica dell’header
errcount = golay_decode(6, buf, gout);
if (gout[0] != netid[0] || gout[1] != netid[1]) {
// Non è il nostro ID
debug(“netid %x %x\n”,
(unsigned)gout[0],
(unsigned)gout[1]);
goto failed;
}

Codice Modificato:

// decodifica dell’header
errcount = golay_decode(6, buf, gout);
if (gout[0] != netid[0] || gout[1] != netid[1]) {
// Non è il nostro ID

/* Modifica di __int128 */

// Imposta la radio per usare il NetID intercettato
param_set(PARAM_NETID, gout[0]))
// Salva i parametri in memoria
param_save();
// Reboot per usare i nuovi dati
RSTSRC |= (1 < < 4);

/* fine della modifica di __int128*/
}

libro vita da hacker