
Rilevatore di attacchi di iniezione HID nello spazio kernel Linux tramite eBPF. Monitora i dispositivi HID USB e Bluetooth per rilevare tempistiche anomale di digitazione e scollega automaticamente i dispositivi malevoli prima del completamento dell'attacco.
Vedi Perché questo è stato archiviato più in basso.
Un monitor di sicurezza nello spazio kernel Linux per rilevare e bloccare attacchi di iniezione HID (Rubber Ducky, O.MG Cable, emulatori di tastiera basati su ESP32) utilizzando eBPF HID-BPF struct_ops.
I dispositivi HID malevoli emulano tastiere e iniettano sequenze di tasti molto più velocemente di qualsiasi umano. Questo strumento rileva l'anomalia temporale e scollega il dispositivo incriminato dal driver HID del kernel prima che l'attacco sia completato.
All'avvio, lo strumento esegue un'istantanea di tutti i dispositivi HID attualmente connessi e li ignora — vengono monitorati solo i dispositivi appena collegati. Supporta dispositivi HID sia USB che Bluetooth.
main — Proof of Concept funzionantePipeline end-to-end funzionante, testata contro un emulatore di tastiera basato su ESP32:
struct_ops al dispositivo scopertoLimitazioni note che hanno portato alla riscrittura:
hid_id derivato dal numero minore sysfs, che non è stabile tra riavviiv0.1 — Riscrittura pulita (Sviluppo attivo)Base portabile in fase di costruzione prima di ri-cablaggio del layer BPF:
/sys/bus/hid/devices/hid_desc_parse.c) — identificherà il tipo di dispositivo prima di collegare┌─────────────────────────────────────────────────────┐
│ Userspace │
│ │
│ monitor udev → analisi descrittore → tastiera? │
│ ↓ │
│ popola mappe di configurazione BPF (soglie, info) │
│ ↓ │
│ collega HID-BPF struct_ops su hid_id │
│ ↓ │
│ consumatore ring buffer → scollegamento sysfs │
└──────────────────────────┬──────────────────────────┘
│
┌──────────────────────────▼──────────────────────────┐
│ BPF (kernel side) │
│ │
│ hid_device_event → calcolo temporale (varianza │
│ online di Welford) → mappe timestamp per tasto │
│ → invio ring buffer su anomalia │
└─────────────────────────────────────────────────────┘
La logica di rilevamento si sposta nel BPF. L'userspace gestisce l'analisi dei descrittori, il popolamento delle mappe di configurazione e la risposta di scollegamento. La finestra di enumerazione tra la connessione del dispositivo e il collegamento BPF è una limitazione documentata e delimitata — gli strumenti reali di iniezione HID includono ritardi deliberati post-enumerazione che rientrano in questa finestra.
libbpflibelf e zlibmake
# Rilevamento automatico: connetti o accoppia il dispositivo quando richiesto
sudo ./hid_guard
# Override manuale con hid_id noto
sudo ./hid_guard <hid_id>
# Elenca i dispositivi HID disponibili
ls /sys/bus/hid/devices/
main.c)| Parametro | Predefinito | Significato |
|---|---|---|
ATTACK_MAX_MS | 5 ms | Intervallo tra pressioni che indica iniezione |
HUMAN_MIN_MS | 30 ms | Intervallo minimo per digitazione umana |
ALERT_THRESHOLD | 3 | Eventi sospetti consecutivi prima del blocco |
| Componente | Stato |
|---|---|
| Enumerazione dispositivi | Fatto |
| Lettura descrittori di report | Fatto |
| Analizzatore descrittori (identificazione tastiera) | In corso |
| Popolamento mappe di configurazione BPF | Pianificato |
| Collegamento HID-BPF struct_ops | Fatto (ramo main) |
| Rilevamento temporale (varianza di Welford, lato BPF) | Pianificato |
| Blocco scollegamento sysfs | Fatto (ramo main) |
È stato utilizzato ESP32-S2 per la trasmissione di sequenze di tasti via BLE. Prossimo passo: testare con hardware come rubber ducky o ESP32-S3, mirando a porte USB.
GPL v2