tags: CAN_Replay_Attack CAN_Protocol CAN_Utilis IoT


Il protocollo Controller Area Network (CAN) è un sistema di comunicazione robusto che consente ai microcontrollori e ai dispositivi di interagire senza un computer centrale. Utilizza un approccio basato sui messaggi per uno scambio di dati affidabile, anche in ambienti rumorosi. CAN è ampiamente utilizzato nel settore automobilistico per la sua affidabilità e semplicità. Nei veicoli moderni, il protocollo CAN è fondamentale per la comunicazione di sistema, consentendo connessioni tra controlli motore, freni e unità di infotainment. Tuttavia, questa interconnettività può essere sfruttata dagli hacker per manipolare le funzioni del veicolo, ponendo rischi per la sicurezza.

In questo esempio andreamo a simulare una situazione nella quale un attaccante riesce a catturare i pacchetti CAN che servono a muovere l’automobile come accellerare, girare, frenare ecc, e una volta catturati li ritrasmetteremo per performare le stesse operazioni fatte durante la cattura dei pacchetti.

Per prima cosa dobbiamo installare il programma che ci permette di eseguire queste operazioni:

sudo apt install can-utilis

Dopo averlo installato dobbiamo lanciare i seguenti comandI:

- sudo modprobe can
- sudo modprobe vcan
- sudo ip link add dev vcan0 type vcan
- sudo ip link set up vcan0

Se i comandi sono stati eseguiti in modo corretto se si digita ifconfig dovrebbe apparire l’interfaccia di rete vca0:

Ora diamo i permessi alla cartella ICSim chmod -R 777 ICSim, poi ci dirigiamo dentro la cartella ICSim e digitiamo make:

Ora digitiamo ./icsim vcan0 per attivare il simulatore che ci permetterà di vedere il nostro attacco in atto:

Ora in un nuovo terminale dalla stessa cartella attiviamo il simulatore di controllore che ci permette di simulare l’accellerazione, la frenata, ecc, lanciando il comando ./controls vcan0:

Ora catturiamo il traffico creato tramite il simulatore control con il seguente comando cansniffer -c vcan0 sempre dalla stessa cartella:

E sempre per catturare il traffico dobbiamo utilizzare anche il comando candump -l vcan0 che ci salverà il risultato della cattura in un file .log sempre presente nella cartella ICSim

Per ottenere qualche cattura devi andare nel simulatore control e giocare un pò con i comandi, ecco la lista:

  • Accelerate Up arrow
  • Left/Right Turn Left arrow/ Right arrow
  • Unlock Rear Left/Right doors Right Shift + X / Right Shift + Y
  • Unlock Front Left/Right doors Right Shift +A / Right Shift + B
  • Lock all doors Hold Right Shift key + Tap Left Shift
  • Unlock all doors Hold Left Shift key + Tap Right Shift

Ora che abbiamo catturato il traffico lo possiamo replicare e per farlo possiamo utilizzare il seguente comando:

canplayer -I candump-2024-05-07_063502.log

Dove il file candump-2024-05-07_063502.log è il file di cattura che ci ha salvato prima, dopo aver lanciato questo comando dal simulatore dovremmo vedere le stesse identiche operazioni che abbiamo eseguito prima per creare traffico.