# T1127.001 - MSBuild > [!info] Técnica Pai > Esta é uma sub-técnica de **[[t1127-trusted-developer-utilities-proxy-execution|T1127 - Trusted Developer Utilities Proxy Execution]]**. Adversários abusam do MSBuild.exe - binário legítimo e assinado da Microsoft - para compilar e executar código C# malicioso inline, contornando controles de aplicação como AppLocker e Windows Defender Application Control. ## Descrição **MSBuild** (Microsoft Build Engine) é a plataforma de build oficial da Microsoft, integrada ao Visual Studio e ao .NET Framework. Sua função legítima é processar arquivos de projeto XML (`.csproj`, `.vbproj`, `.targets`, `.proj`) que definem como compilar, linkar e públicar aplicações .NET. A vulnerabilidade de abuso surge da funcionalidade de **Inline Tasks** introduzida no .NET 4.0: arquivos de projeto MSBuild podem conter código C# ou Visual Basic diretamente embutido no XML, o qual é compilado e executado em tempo de processamento pelo próprio `MSBuild.exe`. Isso significa que um adversário pode: 1. Criar um arquivo XML com extensão `.csproj` ou `.targets` contendo shellcode ou código malicioso completo como Inline Task. 2. Invocar `MSBuild.exe <arquivo.csproj>` via linha de comando. 3. O MSBuild **compila e executa** o código C# - usando o próprio binário assinado da Microsoft como executor. 4. Controles de execução configurados para permitir `MSBuild.exe` (por ser binário legítimo do sistema) são contornados. Este padrão é classificado como **LOLBin** (Living-off-the-Land Binary): o atacante não precisa entregar nem executar binários maliciosos próprios - usa exclusivamente ferramentas que já existem no sistema alvo. O MSBuild.exe está presente em qualquer sistema Windows com .NET Framework 4.x instalado (práticamente universal em ambientes corporativos) e está localizado em: - `C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe` - `C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe` Por ser um binário **assinado pela Microsoft** com um certificado válido, é frequentemente incluído em listas de permissão (allowlists) de políticas de segurança como AppLocker, WDAC (Windows Defender Application Control) e soluções de controle de aplicação de terceiros. > [!danger] Nível de Risco > MSBuild é particularmente perigoso em ambientes com .NET Framework instalado e políticas de allowlisting baseadas apenas em assinatura digital do binário. Adversários com acesso de escrita a qualquer diretório podem depositar um arquivo `.csproj` e executar código arbitrário através de `MSBuild.exe` sem acionar alertas de execução de binário não-autorizado. ## Como Funciona O mecanismo de abuso do MSBuild explora a capacidade de Inline Tasks do sistema de build .NET: **Estrutura de um Arquivo de Projeto Malicioso:** Um arquivo XML de projeto MSBuild contém três elementos principais para abuso: 1. `<UsingTask>` - declara uma task inline com código C# embutido 2. `<Task>` - contém o código malicioso dentro de `<Code>` em CDATA 3. `<Target>` - define quando e como a task é invocada (normalmente `AfterTargets="Build"`) O fluxo de execução quando `MSBuild.exe arquivo.csproj` é invocado: 1. MSBuild processa o XML e encontra a `UsingTask` com código inline. 2. O compilador C# Roslyn (ou `csc.exe` em versões antigas) compila o código da task para assembly temporário em memória. 3. O assembly compilado é carregado pelo MSBuild no mesmo processo. 4. O método `Execute()` da task é chamado - executando o código malicioso. 5. O código malicioso tem o contexto de processo completo: acesso à rede, sistema de arquivos, APIs do Windows. **Variante de Execução Remota:** `MSBuild.exe` pode referênciar arquivos de projeto via UNC path (`\\servidor\share\payload.csproj`), permitindo execução de código hospedado remotamente sem download local do arquivo de projeto. **Variante de Codificação:** O código C# na Inline Task pode ser Base64-encoded ou comprimido, adicionando camada de [[t1027-015-compression|ofuscação por compressão]] ao payload - dificultando análise estática do arquivo XML. ## Attack Flow ```mermaid graph TB A([Atacante Obtém<br/>Execução de Comandos]) --> B[Criar Arquivo de Projeto<br/>XML com Inline Task C#] B --> C{Método de Entrega<br/>do Arquivo .csproj} C -->|Escrita Local| D[Gravar em Diretório<br/>com Permissão de Escrita] C -->|UNC Remoto| E[Hospedar em Share SMB<br/>ou WebDAV] C -->|Download| F[Baixar via PowerShell<br/>ou certutil] D --> G[Invocar MSBuild.exe<br/>com Path do .csproj] E --> G F --> G G --> H[MSBuild Processa XML<br/>Encontra UsingTask Inline] H --> I[Compilador C# Roslyn<br/>Compila Código da Task] I --> J{AppLocker /<br/>WDAC Configurado?} J -->|Bloqueio por Hash/Path| K([Bloqueado]) J -->|Allowlist por Assinatura| L[MSBuild.exe é Permitido<br/>Execução Prossegue] J -->|Não Configurado| L L --> M[Execute Malicioso<br/>Roda no Processo MSBuild] M --> N{Objetivo do<br/>Payload?} N -->|Shellcode| O[Injeção em Processo<br/>Remoto via API Win32] N -->|Download| P[Baixar Segundo Estágio<br/>de C2] N -->|Acesso| Q[Reverse Shell /<br/>RAT Completo] O --> R([Persistência e<br/>Movimentação Lateral]) P --> R Q --> R style A fill:#2d2d2d,color:#fff style K fill:#c0392b,color:#fff style R fill:#8e44ad,color:#fff style M fill:#e74c3c,color:#fff style L fill:#e67e22,color:#fff style I fill:#f39c12,color:#fff ``` ## Exemplos de Uso ### Empire - Framework de Post-Exploitation O [[s0363-empire|Empire]] (PowerShell Empire), framework de post-exploitation amplamente utilizado tanto por pentesters quanto por atores maliciosos, inclui módulo específico para execução via MSBuild. O módulo gera um arquivo `.csproj` com agente Empire embutido como Inline Task, permitindo execução em sistemas onde PowerShell está monitorado ou restrito via Constrained Language Mode. ### PlugX - APT Chineses O [[s0013-plugx|PlugX]], RAT modular utilizado extensivamente por grupos APT chineses como APT41 e múltiplos atores ligados ao PLA, foi documentado usando MSBuild como proxy de execução em campanhas contra alvos governamentais e de defesa. O uso do MSBuild permite ao implante PlugX ser carregado sem escrever o DLL principal em disco - o código de carregamento fica no arquivo `.csproj` e executa via MSBuild. ### Grupos de Ransomware - Cobalt Strike Staging Operadores de ransomware que utilizam [[s0154-cobalt-strike|Cobalt Strike]] como ferramenta de acesso inicial documentaram o uso de MSBuild para carregamento de Beacons do Cobalt Strike em ambientes com AppLocker ativo. O arquivo `.csproj` contém o shellcode do Beacon codificado em Base64, que é decodificado e injetado via MSBuild no contexto de execução. ### Grupos de APT com Foco em Defesa e Governo Pesquisadores da Talos Intelligence e Mandiant documentaram uso de MSBuild em campanhas atribuídas a grupos APT com nexo estatal, especialmente em operações contra alvos de defesa norte-americanos e europeus onde políticas de AppLocker são comuns. O MSBuild oferece um caminho de execução que contorna controles configurados para ambientes sem desenvolvimento de software. ### Red Teams - Uso em Avaliações MSBuild é rotineiramente utilizado em exercícios de Red Team contra ambientes com políticas de application control. Ferramentas como GadgetToJScript, SILENTTRINITY e outros frameworks de ofensiva incluem módulos MSBuild como método de execução padrão quando outros vetores estão bloqueados. ## Detecção > [!tip] Estrategia de Detecção > A detecção efetiva de abuso do MSBuild requer monitoramento comportamental além de assinatura: rastrear processos filhos do MSBuild.exe, conexões de rede originadas do MSBuild, e invocações do MSBuild fora de contextos de build legítimos (IDE, pipeline CI/CD). ### Regra Sigma - MSBuild Gerando Processo Filho Suspeito ```yaml title: Suspeito - MSBuild Executa Processo Filho Incomum id: e8b3f5a1-4c2d-4e7f-b6a9-1d3e7c5b2a8f status: stable description: > MSBuild.exe é usado como LOLBin para executar código malicioso via Inline Tasks. Qualquer processo filho não relacionado a compilação legítima é altamente suspeito. author: RunkIntel daté: 2026-03-25 references: - https://attack.mitre.org/techniques/T1127/001/ - https://lolbas-project.github.io/lolbas/Binaries/Msbuild/ tags: - attack.defense_evasion - attack.execution - attack.t1127.001 logsource: category: process_creation product: windows detection: selection_parent: ParentImage|endswith: - '\MSBuild.exe' filter_legitimate: Image|endswith: - '\csc.exe' - '\vbc.exe' - '\al.exe' - '\MSBuild.exe' CommandLine|contains: - 'tmp' - 'temp' condition: selection_parent and not filter_legitimate falsepositives: - Build pipelines legítimos que invocam scripts ou executáveis como parte do processo de build level: high ``` ### Regra Sigma - MSBuild Invocado Fora de Contexto de Desenvolvimento ```yaml title: Suspeito - MSBuild Invocado por Processo Não-IDE id: f1a4c8e2-6b3d-4f5a-c9e2-8b4d7f1a3e6c status: experimental description: > MSBuild legítimo é invocado por Visual Studio, dotnet CLI, ou scripts de build. Invocação por cmd.exe, PowerShell, ou processos de usuário indica potencial abuso como proxy de execução. author: RunkIntel daté: 2026-03-25 tags: - attack.defense_evasion - attack.t1127.001 logsource: category: process_creation product: windows detection: selection_msbuild: Image|endswith: '\MSBuild.exe' filter_known_good: ParentImage|endswith: - '\devenv.exe' - '\VsHub.exe' - '\dotnet.exe' - '\jenkins.exe' - '\agent.exe' - '\buildkite-agent.exe' condition: selection_msbuild and not filter_known_good falsepositives: - Ambientes de build customizados que invocam MSBuild diretamente - Scripts de CI/CD legítimos que chamam MSBuild via cmd.exe level: medium ``` ### Regra Sigma - MSBuild Realizando Conexão de Rede ```yaml title: Crítico - MSBuild Realiza Conexão de Rede de Saída id: a3d7e1b5-8f2c-4a6d-b9e3-5c1f8a4d2b7e status: stable description: > MSBuild.exe nunca deve fazer conexões de rede de saída em ambientes normais. Conexão indica Inline Task maliciosa executando payload de segundo estágio ou estabelecendo canal de C2. author: RunkIntel daté: 2026-03-25 tags: - attack.defense_evasion - attack.command_and_control - attack.t1127.001 logsource: product: windows service: sysmon detection: selection: EventID: 3 Image|endswith: '\MSBuild.exe' Initiated: 'true' filter_local: DestinationIp|startswith: - '127.' - '::1' - '169.254.' condition: selection and not filter_local falsepositives: - Ambientes muito raros de build que baixam dependências NuGet via MSBuild diretamente level: critical ``` ### Indicadores de Comprometimento | Indicador | Tipo | Descrição | |-----------|------|-----------| | `MSBuild.exe` criando processos filhos não-compiladores | Comportamental | Processo filho suspeito (cmd, powershell, net) | | `MSBuild.exe` realizando chamadas de rede | Comportamental | C2 ou download de segundo estágio | | Arquivo `.csproj` em `%TEMP%` ou `%APPDATA%` | Artefato | Arquivo de projeto fora de diretório de desenvolvimento | | Código Base64 em `<Code>` de Inline Task | Estático | YARA em arquivo de projeto | | `MSBuild.exe` invocado com argumento fora de pasta de projeto | Linha de Comando | Análise de argumentos via Sysmon Event 1 | ## Mitigação | ID | Mitigação | Descrição | Eficácia | |---|-----------|-----------|----------| | M1042 | [[m1042-disable-or-remove-feature-or-program\|M1042 - Disable or Remove Feature or Program]] | Remover ou desabilitar MSBuild.exe em estações e servidores que não são ambientes de desenvolvimento. Pode ser feito via GPO (negando acesso ao executável) ou desinstalando .NET Framework 3.5/4.x em sistemas que não necessitam | Alta em sistemas não-dev | | M1038 | [[m1038-execution-prevention\|M1038 - Execution Prevention]] | Configurar AppLocker ou WDAC com regras de hash ou path que bloqueiem invocação do MSBuild.exe por usuários que não sejam desenvolvedores. **Atenção**: regras baseadas apenas em assinatura digital NÃO são suficientes | Alta com configuração correta | ### Controles Complementares - **Segregação de Ambientes**: manter estações de desenvolvimento separadas de estações corporativas padrão. Desenvolvedores têm acesso ao MSBuild em suas máquinas; usuários corporativos, não. - **AppLocker por Usuário/Grupo**: criar regras AppLocker que permitam MSBuild.exe apenas para membros do grupo AD "Developers" - usuários corporativos comuns são bloqueados. - **Monitoramento de Linha de Comando**: habilitar logging de linha de comando via Auditoria do Windows (Audit Process Creation) + Sysmon Event ID 1 para capturar todos os argumentos passados ao MSBuild. - **EDR com Detecção de LOLBin**: soluções EDR modernas (CrowdStrike Falcon, Microsoft Defender for Endpoint, SentinelOne) possuem detecções específicas para abuso de MSBuild como LOLBin. - **Baseline de Uso Legítimo**: em organizações com desenvolvimento interno, criar baseline de quando e como MSBuild é invocado legitimamente - alertar para desvios. - **Monitoramento de Rede por Processo**: via EDR ou firewall baseado em host, bloquear/alertar conexões de rede originadas por `MSBuild.exe`. ## Contexto Brasil/LATAM > [!example] Relevância Regional O abuso de MSBuild como proxy de execução é particularmente relevante no contexto brasileiro por algumas características específicas do ambiente corporativo nacional: **Ambientes com AppLocker Parcialmente Configurado**: Muitas empresas brasileiras de médio porte implementam AppLocker mas configuram apenas allowlists baseadas em assinatura digital - o que específicamente não bloqueia MSBuild.exe por ser assinado pela Microsoft. Auditorias de segurança conduzidas por Red Teams nacionais frequentemente demonstram esse caminho de execução em ambientes financeiros e industriais. **Setor Industrial e OT**: O [[setor-industrial|setor industrial]] brasileiro (manufatura, energia, óleo e gás) opera estações com .NET Framework instalado para software SCADA e HMI. Essas estações raramente são ambientes de desenvolvimento, mas possuem MSBuild.exe disponível - criando superfície de ataque em redes OT onde as consequências de comprometimento são severas. **Pentest e Red Team Nacional**: Equipes de red team brasileiras e ferramentas de teste de intrusão nacionais documentam consistentemente o uso de MSBuild como vetor de execução em avaliações. O [[s0363-empire|Empire]] e o Cobalt Strike, amplamente usados em operações de Red Team no Brasil, possuem módulos MSBuild nativos. **Ataques a Setor Financeiro**: O [[financial|setor financeiro]] brasileiro é alvo de grupos que utilizam técnicas sofisticadas de evasão. Grupos de ameaça que operam contra bancos e fintechs brasileiras foram documentados usando LOLBins como MSBuild para contornar controles de segurança em ambientes com políticas de application control. **Ransomware Operators**: Operadores de ransomware que atacam organizações brasileiras (LockBit, BlackCat/ALPHV, Medusa) usam fases de staging que incluem LOLBins. MSBuild é frequentemente usado na fase de carregamento do Cobalt Strike Beacon antes do deployment do ransomware - específicamente para contornar soluções EDR configuradas para bloquear execução de shellcode por processos não-assinados. **Referência para SOCs Nacionais**: Centros de operações de segurança (SOCs) de instituições financeiras brasileiras devem incluir detecção de MSBuild em regras SIEM como alta prioridade, especialmente monitoramento de processos filhos e conexões de rede originadas por `MSBuild.exe`. ## Referências - [MITRE ATT&CK - T1127.001: MSBuild](https://attack.mitre.org/techniques/T1127/001/) - [MITRE ATT&CK - T1127: Trusted Developer Utilities Proxy Execution](https://attack.mitre.org/techniques/T1127/) - [LOLBAS Project - MSBuild](https://lolbas-project.github.io/lolbas/Binaries/Msbuild/) - [Microsoft Docs - MSBuild Inline Tasks](https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-inline-tasks) - [Talos Intelligence - LOLBins in the Wild](https://blog.talosintelligence.com) - [Red Canary - MSBuild Threat Detection](https://redcanary.com/threat-detection-report/) - [Casey Smith (@subTee) - Original Research on MSBuild Abuse](https://subt0x11.blogspot.com) --- **Técnica Pai:** [[t1127-trusted-developer-utilities-proxy-execution|T1127 - Trusted Developer Utilities Proxy Execution]] **Técnicas Relacionadas:** [[t1218-system-binary-proxy-execution|T1218 - System Binary Proxy Execution]] · [[t1027-015-compression|T1027.015 - Compression]] · [[t1059-001-powershell|T1059.001 - PowerShell]] · [[t1055-process-injection|T1055 - Process Injection]] **Mitigações:** [[m1042-disable-or-remove-feature-or-program|M1042 - Disable or Remove Feature or Program]] · [[m1038-execution-prevention|M1038 - Execution Prevention]] **Malware e Ferramentas Associadas:** [[s0013-plugx|PlugX]] · [[s0363-empire|Empire]] · [[s0154-cobalt-strike|Cobalt Strike]] *Fonte: [MITRE ATT&CK - T1127.001](https://attack.mitre.org/techniques/T1127/001)*