Comunicazione tramite USB: Communication Through Removable Media (T1092)

Gli attaccanti utilizzano dispositivi removibili come USB per stabilire comunicazioni di comando e controllo tra sistemi compromessi, specialmente quando questi operano su reti disconnesse o air-gapped. Questa tecnica richiede che entrambi i sistemi siano compromessi: tipicamente il primo viene infettato attraverso Internet, mentre il secondo attraverso movimento laterale.

La metodologia si inserisce nella tattica TA0011 (Command and Control), rappresentando una fase cruciale della kill chain dove l'avversario mantiene il controllo sui sistemi compromessi. Il canale di comunicazione funziona trasferendo comandi e dati dal sistema isolato a quello connesso a Internet attraverso il supporto removibile.

APT28 rappresenta l'unico gruppo documentato che utilizza attivamente questa tecnica, evidenziando come sia particolarmente efficace contro infrastrutture critiche con sistemi air-gapped. Due malware specifici implementano questa capacità: CHOPSTICK e USBStealer.

Per simulare questa tecnica in laboratorio, inizia configurando due macchine virtuali: una connessa a Internet (Victim1) e una isolata (Victim2). Su Victim1, crea uno script che monitori l'inserimento di USB:

wmic logicaldisk where drivetype=2 get deviceid, volumename

Questo comando Windows identifica i dispositivi removibili. Per automatizzare il processo, utilizza PowerShell per scrivere payload sul dispositivo quando viene rilevato:

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "E:\"
$watcher.EnableRaisingEvents = $true
Register-ObjectEvent $watcher "Created" -Action {
    Copy-Item "C:\temp\commands.txt" "E:\task.txt"
}

Su Linux, il monitoraggio avviene attraverso udev. Crea una regola in /etc/udev/rules.d/99-usb-c2.rules:

ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/usr/local/bin/usb_handler.sh"

Lo script handler potrebbe contenere:

#!/bin/bash
mount_point=$(findmnt -n -o TARGET /dev/$DEVNAME)
if [ -n "$mount_point" ]; then
    cp /tmp/beacon.log "$mount_point/"
fi

CHOPSTICK utilizza un approccio modulare dove ogni modulo si copia automaticamente sul dispositivo removibile. Puoi replicare questo comportamento creando un eseguibile che si auto-propaga:

gcc -o propagator propagator.c -static

Il codice deve includere logica per rilevare nuovi mount point e copiarsi automaticamente. USBStealer invece deposita comandi specifici per la seconda vittima, che vengono eseguiti all'inserimento del dispositivo attraverso autorun o script di avvio personalizzati.

Per testare la comunicazione bidirezionale, implementa un sistema dove Victim2 scrive risposte in un file specifico che Victim1 legge periodicamente quando l'USB viene reinserita.

Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo