Un rootkit è un insieme di strumenti malware progettati per due scopi inscindibili: nascondere la presenza del malware sul sistema compromesso e mantenere un accesso privilegiato (root = privilegio massimo, kit = insieme di strumenti) a lungo termine e in modo furtivo. Il rootkit non è il malware “principale” ma lo strato di invisibilità che protegge gli altri componenti malevoli da rilevamento e rimozione.
Classificazione per livello di operazione
User-mode rootkit: opera nello spazio utente (userspace) intercettando le chiamate alle API del sistema operativo (DLL hooking su Windows, LD_PRELOAD su Linux). Quando un antivirus chiede al sistema “elenca i processi in esecuzione”, il rootkit intercetta la risposta e rimuove dalla lista i processi malevoli prima che l’antivirus li veda. Relativamente più semplice da rilevare con strumenti che bypassano le API standard.
Kernel-mode rootkit: si inserisce nel kernel del sistema operativo modificando le strutture dati del kernel (DKOM — Direct Kernel Object Manipulation) o sostituendo driver di sistema. Il kernel modificato mente a tutti gli strumenti che gli chiedono informazioni: file nascosti, processi invisibili, connessioni di rete assenti dall’elenco. Molto più difficile da rilevare perché compromette il fondamento della fiducia del sistema.
Bootkit: persiste nel firmware (UEFI/BIOS) o nel bootloader, sopravvivendo alla reinstallazione completa del sistema operativo — anche la formattazione del disco non lo rimuove. Si carica prima del sistema operativo e può infettare o controllare il kernel prima che qualsiasi antivirus sia attivo. Esempi: LoJax (primo bootkit UEFI documentato in natura, APT28, 2018), MoonBounce (2022).
Hypervisor rootkit (Blue Pill, Joanna Rutkowska 2006): sposta il sistema operativo legittimo all’interno di una macchina virtuale che gira sotto il controllo del rootkit. Il SO vede hardware virtuale controllato dal rootkit, che può intercettare e modificare qualsiasi operazione. Principalmente teorico ma dimostrato concettualmente.
Memory-only rootkit: esiste esclusivamente in memoria RAM, senza file su disco. Scompare a ogni riavvio, ma può essere reiniettato da un dropper persistente. Difficilissimo da rilevare con tool tradizionali che analizzano il filesystem.
Tecniche di rilevamento
Il rilevamento è difficile per definizione — il sistema infetto non è affidabile come fonte di informazioni. Le tecniche efficaci includono:
- Boot da media esterno: avviare il sistema da un OS pulito su USB o CD e analizzare il disco senza caricare il rootkit.
- Analisi della memoria volatile (forensics): Volatility Framework analizza il dump della RAM cercando discrepanze tra strutture kernel e processi visibili.
- Integrity checking offline: confronto degli hash di file di sistema con un database autentico.
- Firmware scanning: strumenti come CHIPSEC verificano l’integrità del firmware UEFI.
- Hypervisor-based detection: VMware Carbon Black e soluzioni simili usano un hypervisor sicuro per osservare il SO dall’esterno, fuori dalla portata dei rootkit kernel-mode.