Microsoft Defender può essere costretto a rimuovere i propri componenti di protezione utilizzando un driver integrato di Windows. Questa tecnica funziona nei sistemi da Windows 7 a Windows 11 25H2 e non richiede lo sfruttamento di vulnerabilità software o il caricamento di driver esterni. All’attaccante basta ottenere privilegi amministrativi con la privilegi SeLoadDriverPrivilege, dopodiché il driver integrato BTR.sys permette di eseguire operazioni sui file e sul registro di sistema a livello del kernel di Windows.
BTR.sys, o Boot Time Removal Tool, fa parte di Microsoft Defender ed è necessario per la pulizia del computer durante l’avvio del sistema. L’antivirus ricorre al driver quando non riesce a rimuovere un file dannoso o una voce del registro in una Windows in esecuzione. Un file impegnato in un processo può essere bloccato, quindi Defender salva il compito, riavvia il computer e completa la rimozione prima che i programmi riescano a rioccupare gli oggetti necessari.
I ricercatori hanno scoperto che il meccanismo integrato accetta un insieme di comandi molto più ampio di quanto necessario per la normale pulizia antivirus. Un compito correttamente formato permette a BTR.sys di rimuovere file e cartelle bloccate, spostare file in posizioni arbitrarie, inclusa System32\drivers, rimuovere sezioni e parametri del registro e scrivere nel registro nuovi valori di qualsiasi tipo. Tutte le operazioni vengono eseguite in Ring 0, cioè a livello del kernel di Windows.
Il blocco ordinario di driver pericolosi è di poco aiuto in questo caso. BTR.sys è necessario per Microsoft Defender stesso, quindi l’aggiunta del componente all’elenco dei driver vulnerabili bloccati da Microsoft comprometterebbe il funzionamento dell’antivirus. Per lo stesso motivo è problematico vietare BTR.sys attraverso il meccanismo di gestione delle applicazioni di Windows, precedentemente noto come Windows Defender Application Control. Microsoft ora utilizza per esso il nome «Gestione delle applicazioni per le aziende».
La tecnica dei ricercatori è stata ispirata dall’analisi di un computer compromesso. Parte della telemetria inizialmente ricordava le azioni di un programma dannoso, tuttavia la verifica ha indicato il normale funzionamento di Microsoft Defender durante la pulizia del sistema. Successivamente, gli specialisti hanno iniziato a studiare il protocollo interno attraverso il quale Defender trasmette a BTR.sys i compiti da eseguire.
Il protocollo si è rivelato chiuso e non documentato. La configurazione con i comandi è cifrata con l’algoritmo RC4, con una chiave di 256 byte scritta in modo fisso nella sezione .rdata di ogni BTR.sys esaminato. La verifica di 18 diverse versioni a 64 bit ha mostrato la stessa chiave in tutte le versioni esaminate a partire da Windows 7. Conoscendo il formato dei dati e la chiave, è possibile preparare autonomamente una transazione che il driver accetterà come compito corretto.
Per la verifica, i ricercatori hanno creato BTR_CLI. Il programma trova inizialmente la libreria MpEngine.dll tra i file di aggiornamento di Microsoft Defender. Il codice binario di BTR.sys si trova all’interno della libreria nella risorsa BOOTTIMETOOL, quindi non è necessario portare il driver dall’esterno. BTR_CLI estrae il file incorporato direttamente dai componenti di Defender installati sul computer.
Successivamente, il programma forma un insieme di comandi cifrati e registra BTR.sys come servizio driver con una scrittura diretta nel ramo HKLM del registro di sistema. BTR_CLI imposta i parametri Type=1, Start=1 e Group=”Boot Bus Extender”. Il gestore di gestione dei servizi di Windows non viene utilizzato in questo caso.
La scrittura diretta nel registro lascia meno tracce abituali nei log. Windows crea normalmente un evento Event ID 7045 durante l’installazione di un servizio attraverso il meccanismo standard, ma BTR_CLI aggira il gestore di gestione dei servizi, quindi la registrazione con Event ID 7045 non appare. Il driver riceve comunque i parametri necessari per il caricamento.
Dopo l’avvio, BTR.sys legge il compito preparato ed esegue i comandi in nome del processo di sistema con PID 4. Per i mezzi di monitoraggio, le operazioni sui file appaiono quindi come azioni di Windows stesso, e non di un normale processo utente.
BTR_CLI supporta anche un altro scenario: i comandi possono essere salvati fino al riavvio successivo. Durante l’avvio di Windows si verifica un breve intervallo in cui il sistema di file permette già la scrittura, ma i servizi utente di Microsoft Defender non sono ancora avviati. I processi di protezione non hanno ancora aperto i propri file e non sono riusciti a bloccare l’accesso a essi.
BTR.sys si avvia abbastanza presto da poter utilizzare questo intervallo. Il driver può rimuovere WdFilter.sys, MsMpEng.exe e altri file di Defender prima del completo avvio della protezione antivirus. La rimozione viene eseguita da un componente firmato da Microsoft stessa con privilegi di kernel, e non da un programma sconosciuto in modalità utente.
Dal noto metodo di attacco BYOVD, o Bring Your Own Vulnerable Driver, il metodo si differenzia in modo fondamentale. In BYOVD, il malintenzionato carica un driver firmato in modo legittimo di un produttore esterno con una vulnerabilità nota e utilizza l’errore per accedere al kernel o disattivare il software di protezione. Il driver rilevato può essere aggiunto a una lista nera e il suo ulteriore avvio può essere vietato.
Carolina Vivianti è consulente/Advisor autonomo in sicurezza informatica con esperienza nel settore tech e security. Ha lavorato come Security Advisor per Ford EU/Ford Motor Company e Vodafone e ha studi presso la Sapienza Università di Roma.
Aree di competenza: Cybersecurity, IT Risk Management, Security Advisory, Threat Analysis, Data Protection, Cloud Security, Compliance & Governance