Abuso di MSBuild: Trusted Developer Utilities Proxy Execution — MSBuild (T1127.001)

MSBuild.exe è il motore di build ufficiale del framework .NET e di Visual Studio: elabora file XML di progetto che descrivono come compilare software per diverse piattaforme e configurazioni. La sua natura di binario Microsoft firmato digitalmente lo rende però un vettore ideale per gli avversari, che lo sfruttano per eseguire codice arbitrario aggirando i controlli applicativi.

La tecnica T1127.001 rientra nella tattica TA0005 (Defense Evasion) e sfrutta in particolare la funzionalità inline task introdotta con .NET 4, che permette di incorporare codice C# o Visual Basic direttamente all'interno di un file di progetto XML. Quando MSBuild elabora il file, compila ed esegue il codice inline nel contesto di un processo affidabile, di fatto trasformandosi in un interprete di codice managed non riconosciuto come tale dalle policy di application control mal configurate.

L'impatto è significativo: i dati MITRE documentano 2 famiglie di software che abusano di MSBuild (il RAT PlugX e il framework post-exploitation Empire) e almeno 1 campagna documentata, Frankenstein (gennaio-aprile 2019), in cui attori con risorse elevate hanno assemblato tool open source per orchestrare operazioni mirate. La tecnica appartiene alla famiglia più ampia dei LOLBin (Living Off the Land Binaries) e resta uno dei metodi di proxy execution più stabili per bypassare AppLocker e WDAC quando le regole non escludono esplicitamente il binario.

La simulazione di T1127.001 in un ambiente di laboratorio è didatticamente potente perché mostra come un binario firmato Microsoft possa eseguire logica arbitraria senza toccare il disco con eseguibili non firmati. Il punto di partenza è la localizzazione di MSBuild, tipicamente presente in C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe oppure, con Visual Studio installato, nei percorsi sotto *C:\Program Files (x86)\Microsoft Visual Studio*.

Il payload minimale è un file XML con estensione .xml, .csproj o .proj che dichiara una UsingTask con TaskFactory="CodeTaskFactory" e incorpora codice C# nel blocco <Code Type="Class" Language="cs">. L'esecuzione avviene con:

MSBuild.exe payload.xml

Nessun flag esotico è necessario: il comportamento è quello nominale del tool. Per la fase di build del payload, il progetto Nishang (open source) contiene template di Invoke-BuildExe e reference storiche, mentre il repository Atomic Red Team (open source) mantiene test riproducibili per T1127.001 con file XML pronti all'uso — utile per validare EDR e SIEM in modo controllato.

In una catena red team realistica, MSBuild viene usato come secondo stadio dopo un initial access via phishing: il documento malevolo scrive su disco il file .xml in %APPDATA% o %TEMP% e lancia MSBuild come processo figlio. Il codice inline può caricare shellcode via P/Invoke (VirtualAlloc, CreateThread) per iniettare beacon Cobalt Strike (a pagamento) o Sliver (open source), replicando esattamente il pattern osservato con PlugX che carica shellcode dentro un progetto .NET.

Il framework Empire (open source, mantenuto da BC-Security) dispone di moduli specifici sotto powershell/code_execution/invoke_msbuild che generano automaticamente il file XML e ne orchestrano l'esecuzione — è esattamente lo strumento visto nella campagna Frankenstein.

Per testare l'efficacia dei bypass sui controlli applicativi, in laboratorio conviene configurare una policy AppLocker in modalità Audit only con regole di default (che consentono MSBuild in quanto binario Microsoft) e verificare che il payload inline venga eseguito senza allerte a livello di policy — dimostrando così l'esigenza di regole esplicite di deny sul percorso di MSBuild o di migrazione a WDAC con constraint sui managed code. Documentare l'esperimento con hash del file XML e riga di comando è essenziale per il debrief con il team difensivo.

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.