Firmare il Permesso di Passare: Code Signing Policy Modification (T1553.006)

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.


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

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

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.