Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Arile! Scopri di più
Ogni sistema operativo moderno impone una barriera tra codice legittimo e codice potenzialmente malevolo: le policy di code signing. Su Windows, il meccanismo di Driver Signature Enforcement (DSE) impedisce il caricamento di driver non firmati digitalmente; su macOS, System Integrity Protection (SIP) protegge componenti critici del kernel e del filesystem. Queste difese, però, non sono monolitiche: possono essere disabilitate, aggirate o modificate da chi possiede privilegi sufficienti.
La tecnica T1553.006 si colloca nella tattica Defense Evasion (TA0005) e descrive esattamente questo scenario: un avversario, dopo aver ottenuto privilegi elevati, altera le policy di firma del codice per far eseguire binari non firmati o auto-firmati. I metodi spaziano dall'uso diretto di utility di sistema — come bcdedit.exe su Windows o csrutil su macOS — alla manipolazione di variabili in memoria kernel, come la celebre g_CiOptions che governa DSE.
Il quadro operativo documentato conta 2 gruppi APT, 3 famiglie malware e 3 mitigazioni strutturate. L'impatto è particolarmente severo perché, una volta disabilitata la verifica delle firme, l'attaccante può caricare rootkit a livello kernel, ottenendo un controllo pressoché totale e una persistenza estremamente difficile da rilevare con strumenti convenzionali operanti in user-mode.
La modifica delle policy di code signing è uno snodo cruciale in qualsiasi esercizio red team che preveda il caricamento di driver custom o rootkit in ambiente controllato. Il punto di partenza più immediato su Windows è l'abilitazione del Test Signing Mode tramite la BCD (Boot Configuration Data).
Con privilegi amministrativi, il comando classico è:
bcdedit.exe /set testsigning on
Dopo il riavvio, il sistema accetta driver firmati con certificati di test. Noterai un watermark nell'angolo inferiore destro del desktop che indica "Test Mode": un artefatto visivo che in un ingaggio reale l'avversario cercherebbe di rimuovere. Per verificare lo stato corrente della configurazione BCD senza riavviare, puoi ispezionare:
bcdedit /enum {current}
Il campo testsigning restituirà Yes se la modifica è attiva.
Un secondo vettore, più sofisticato e spesso preferito dagli attaccanti che non vogliono riavviare la macchina, prevede la manipolazione diretta della variabile g_CiOptions in memoria kernel. In laboratorio, questo si dimostra sfruttando un driver firmato ma vulnerabile — il cosiddetto pattern Bring Your Own Vulnerable Driver (BYOVD). Tool come KDU (Kernel Driver Utility, open source) automatizzano il processo: caricano un driver legittimo con vulnerabilità note di lettura/scrittura kernel e lo usano come ponte per azzerare i flag di ci.dll che impongono la verifica delle firme.
Su macOS, la simulazione passa per il Recovery Mode. Riavvia il sistema in modalità di recupero (Cmd+R all'avvio su Intel, tasto di accensione prolungato su Apple Silicon) e dal terminale esegui:
csrutil disable
Questo disabilita SIP, permettendo la modifica di directory protette e il caricamento di kernel extension non firmate. Per una disabilitazione parziale, più realistica in scenario red team:
csrutil enable --without kext
Lato Registry, è possibile replicare il comportamento documentato per il malware Hikit manipolando le chiavi relative alla verifica dei driver. Le chiavi coinvolte si trovano sotto il percorso HKLM\SYSTEM\CurrentControlSet\Control\CI e il valore UpgradedSystem può essere alterato con:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\CI" /v UpgradedSystem /t REG_DWORD /d 1 /f
Per documentare l'intera catena durante un engagement, registra ogni passaggio con Sysmon (open source) configurato per catturare eventi di modifica Registry (EventID 13) e creazione processi (EventID 1). Questo produce la telemetria necessaria al blue team per validare le proprie regole di detection.
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo