Rootkit Kernel: Kernel Modules and Extensions (T1547.006)

La tecnica T1547.006 descrive l'abuso di Loadable Kernel Modules (LKM) su Linux e di Kernel Extensions (kext) su macOS per ottenere esecuzione automatica al boot con i privilegi più elevati possibili sul sistema operativo, il cosiddetto Ring 0. Un modulo caricato nel kernel condivide lo stesso spazio di indirizzamento del sistema operativo e può quindi manipolare strutture dati interne, intercettare syscall, nascondere processi, file e connessioni di rete, alterare i log e installare backdoor autenticate praticamente invisibili agli strumenti in user space.

La tecnica è mappata su due tattiche del framework ATT&CK: TA0003 Persistence, perché il modulo viene caricato automaticamente ad ogni riavvio, e TA0004 Privilege Escalation, perché l'esecuzione in kernel mode consente di aggirare qualsiasi controllo utente e di elevare processi non privilegiati a root.

Su macOS il meccanismo storico dei kext è stato deprecato a partire da Catalina 10.15 in favore delle System Extensions, ma i kext restano ammessi come Legacy System Extensions per le Kernel Programming Interfaces non ancora migrate. Con SIP attivo la firma viene verificata prima dell'inserimento nell'AuxKC, mentre con SIP disabilitato si aprono scenari di caricamento arbitrario.

I dati MITRE censiscono 3 software che sfruttano questa tecnica (Skidmap, Drovorub, REPTILE) e 1 campagna documentata, Operation CuckooBees, dove è stato osservato un rootkit kernel firmato per persistenza aggiuntiva. Le mitigazioni ufficiali sono quattro e coprono controllo esecuzione, hardening degli account privilegiati e detection antimalware specifica.

Un esercizio red team che simula T1547.006 richiede sempre laboratorio isolato, snapshot delle VM e comunicazione preventiva con il blue team, perché un rootkit kernel mal scritto porta facilmente a kernel panic e perdita del sistema.

Su Linux la catena tipica parte da un accesso già privilegiato (root o capability CAP_SYS_MODULE). Il modulo di test si compila contro gli header del kernel bersaglio con un semplice Makefile che invoca make -C /lib/modules/$(uname -r)/build M=$(pwd) modules. Il caricamento avviene con insmod ./modulo.ko oppure modprobe modulo se il file è stato copiato in /lib/modules/$(uname -r)/extra/ e si è rigenerata la cache con depmod -a. Per la verifica si usano lsmod, cat /proc/modules e modinfo modulo.ko. Se il kernel target ha Secure Boot attivo o module.sig_enforce=1, il modulo deve essere firmato con la chiave MOK importata tramite mokutil --import.

Come riferimento didattico per comprendere le tecniche di hooking delle syscall e nascondimento di processi esistono progetti open source come Diamorphine (open source, GitHub) e Reptile (open source, GitHub, corrispondente al software MITRE S1219). Sono esplicitamente pensati per ricerca e vanno usati solo in lab.

Su macOS il flusso è più rigido. Un kext è un bundle .kext con Info.plist e binario Mach-O; il caricamento avviene con sudo kextload /percorso/modulo.kext e la rimozione con sudo kextunload. Su versioni recenti kmutil load -p /percorso/modulo.kext è il comando corretto e richiede reboot per l'attivazione. Senza un Developer ID con entitlement kernel rilasciato da Apple, il kext non si carica a SIP attivo: in laboratorio si disabilita SIP da recovery con csrutil disable solo su macchine dedicate.

Per post-exploitation e persistenza in scenari di simulazione, framework come Metasploit Framework (open source) e Sliver (open source) includono moduli per il deployment di payload post-root, ma il modulo kernel vero e proprio va scritto ad hoc o adattato da progetti pubblici.

La catena d'attacco realistica prevede: accesso iniziale, escalation a root tramite exploit locale o credenziali, drop del .ko firmato o non firmato in /tmp, caricamento, poi cancellazione delle tracce con dmesg -C e manipolazione di /var/log/kern.log. Il modulo tipicamente installa hook su sys_kill per ricevere comandi tramite segnali speciali e su sys_getdents per nascondere file e processi.

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

Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo

TEST GRATUITO
2 minuti · 7 domande Che professionista cyber sei? Scopri il profilo più vicino al tuo modo di pensare e inizia dal percorso giusto.