# T1027.004 - Compile After Delivery ## Técnica Pai Sub-técnica de [[t1027-obfuscated-files-or-information|T1027 - Obfuscaté Files or Information]], que agrupa métodos pelos quais adversários tornam payloads e artefatos difíceis de detectar e analisar por ferramentas de segurança, incluindo ofuscação, empacotamento e entrega de código em formatos não-executáveis. ## Descrição Adversários podem tentar dificultar a descoberta e análise de payloads ao entregar arquivos às vítimas na forma de **código-fonte não compilado**. Arquivos de código-fonte em texto puro - como `.cs` (C#), `.vb` (VB.NET), scripts Python, ou arquivos C/C++ - contornam análise e detecção por soluções de segurança voltadas a executáveis e binários, pois não correspondem às assinaturas de arquivos PE (Portable Executable) monitoradas pela maioria dos antivírus e EDRs. O payload entregue em código-fonte precisará ser compilado antes da execução, tipicamente por meio de utilitários nativos presentes no sistema-alvo: `csc.exe` e `ilasm.exe` no Windows (.NET), ou `gcc`/`MinGW` em sistemas Linux e Windows com toolchain instalado. Isso faz com que o adversário explore **recursos do próprio sistema operacional** para transformar código aparentemente inofensivo em um executável malicioso funcional, sem precisar entregar um binário que poderia ser bloqueado. O código-fonte pode ainda ser cifrado, codificado em Base64, ou embutido em outros arquivos - como um documento de [[t1566-phishing|T1566 - Phishing]] - tornando sua análise ainda mais complexa. Em sistemas macOS e Linux, payloads com extensão `.exe` são nativamente inofensivos (não há loader PE), mas podem ser entregues junto de um compilador empacotado e script de bootstrap que realiza a compilação local e executa o binário resultante. ## Como Funciona O ataque segue um fluxo estruturado em três fases: **Fase 1 - Entrega do código-fonte:** O adversário entrega ao sistema-alvo arquivos de código-fonte - geralmente por meio de phishing, download drive-by, ou abuso de ferramentas de gerenciamento remoto. O código pode estar embutido em macros de documentos Office, scripts PowerShell, ou arquivos compactados com extensão inofensiva. **Fase 2 - Compilação local:** Após a entrega, o adversário aciona a compilação usando utilitários nativos do sistema. No Windows, `csc.exe` (C# compiler, parte do .NET Framework) e `ilasm.exe` (IL assembler) são especialmente convenientes pois estão presentes em práticamente todas as instalações Windows modernas, sem necessidade de instalar ferramentas adicionais. Em Linux, `gcc` ou `g++` são frequentemente disponíveis, especialmente em servidores. **Fase 3 - Execução do binário compilado:** O executável gerado localmente é iniciado, tipicamente com as mesmas permissões do processo que realizou a compilação. Como o binário foi gerado no próprio sistema, ele não corresponde a nenhuma assinatura conhecida em listas de bloqueio baseadas em hash. ## Attack Flow ```mermaid graph TB A[Entrega do Código-Fonte<br/>Phishing / Macro / Script] --> B{Formato de Entrega} B --> C[Embutido em Documento<br/>Ofuscado / Base64 / Cifrado] B --> D[Arquivo .cs / .vb / .py<br/>Direto no Sistema de Arquivos] C --> E[Decodificação / Decifração do Código-Fonte] D --> E E --> F[Compilação via Utilitário Nativo<br/>csc.exe / ilasm.exe / gcc / MinGW] F --> G[Binário Malicioso Gerado Localmente<br/>Hash Único, Sem Assinatura Conhecida] G --> H{Objetivo} H --> I[Execução de Backdoor / RAT<br/>C2 e Comando Remoto] H --> J[Instalação de Persistência<br/>T1547 / T1053] H --> K[Movimento Lateral<br/>T1021] ``` ## Exemplos de Uso **[[g0047-gamaredon|Gamaredon Group]]** - grupo APT vinculado ao FSB russo e ativo contra alvos ucranianos e de governos aliados. O grupo é documentado distribuindo scripts que, ao serem executados, realizam a compilação local de payloads .NET usando `csc.exe`. Isso permitiu ao grupo evadir EDRs amplamente implantados em redes governamentais ucranianas durante 2022-2024. **[[g0069-mango-sandstorm|MuddyWater]]** - APT iraniano que opera contra alvos no Oriente Médio e, secundariamente, em LATAM. Documentado usando arquivos VBScript que invocam `csc.exe` para compilar payloads C# entregues como strings codificadas em Base64 dentro de documentos de phishing. **[[g0106-rocke|Rocke]]** - grupo de criptomineração baseado na China que distribui scripts shell no Linux que, após entrega, compilam binários de mineração a partir de código-fonte C para contornar detecção baseada em hash em soluções AV/EDR de servidores Linux. **[[g1041-sea-turtle|Sea Turtle]]** - grupo APT com histórico de DNS hijacking que utilizou técnica de compile-after-delivery para implantar webshells customizadas em servidores Linux comprometidos, gerando binários únicos por alvo para evitar correlação de indicadores entre vítimas. Malware e ferramentas associadas que usam esta técnica: - [[s0633-sliver|Sliver]] - framework C2 open-source amplamente usado em Red Team e por APTs; suporta geração de stagers que compilam payloads localmente - [[s0385-njrat|njRAT]] - RAT popular entre grupos de cibercrime no LATAM; versões distribuídas em forma de código-fonte VB.NET para compilação local - [[darkwatchman|DarkWatchman]] - malware que usa `csc.exe` para compilar componentes keylogger a partir de código-fonte entregue via registro do Windows - [[s0348-cardinal-rat|Cardinal RAT]] - RAT que entrega código-fonte ofuscado para compilação via `ilasm.exe` - [[s0661-foggyweb|FoggyWeb]] - malware do grupo [[g0016-apt29|APT29]] que usa compilação local para gerar payloads específicos por alvo em servidores ADFS comprometidos - [[s1099-samurai|Samurai]] - backdoor modular que utiliza compile-after-delivery para dificultar análise forense post-mortem ## Detecção A detecção mais eficaz foca na **execução dos compiladores nativos em contextos anômalos** - especialmente quando o processo pai é um Office, browser, ou script interpreter: ```yaml title: Compilador .NET Invocado por Processo Pai Suspeito (Compile After Delivery) status: experimental logsource: category: process_creation product: windows detection: selection_compiler: Image|endswith: - '\csc.exe' - '\ilasm.exe' - '\vbc.exe' - '\jsc.exe' selection_suspicious_parent: ParentImage|endswith: - '\winword.exe' - '\excel.exe' - '\powerpnt.exe' - '\outlook.exe' - '\wscript.exe' - '\cscript.exe' - '\powershell.exe' - '\cmd.exe' - '\mshta.exe' - '\regsvr32.exe' filter_legitimate: CommandLine|contains: - '\MSBuild\' - '\Visual Studio\' - '\dotnet\sdk' condition: (selection_compiler and selection_suspicious_parent) and not filter_legitimate fields: - Image - ParentImage - CommandLine - ParentCommandLine - User - CurrentDirectory level: high tags: - attack.defense_evasion - attack.t1027.004 ``` Indicadores complementares: - Criação de arquivos `.cs`, `.vb`, `.il` em diretórios temporários (`%TEMP%`, `/tmp`, `/dev/shm`) - Execução de `csc.exe` com argumento `/out:` apontando para diretórios incomuns - Processos `gcc` ou `make` em servidores Linux sem histórico prévio de atividade de desenvolvimento - Presença de compiladores como `MinGW` ou `mono` instalados em endpoints de usuário final ## Mitigação | ID | Mitigação | Descrição | |----|-----------|-----------| | M1049 | Antivirus/Antimalware | Soluções EDR modernas com capacidade de análise comportamental podem detectar a cadeia compilador → execução mesmo sem assinatura do binário final. Priorizar EDRs com análise de linha de comando e árvore de processos. | | M1038 | Execution Prevention | Implementar Application Control (AppLocker, WDAC) com regras que bloqueiem a execução de `csc.exe`, `ilasm.exe` e `vbc.exe` por qualquer processo que não sejá o sistema de build corporativo (MSBuild, Azure DevOps agent). | | M1045 | [[m1045-code-signing\|M1045 - Code Signing]] | Exigir assinatura de código para todos os executáveis que tentarem iniciar. Binários compilados localmente no contexto de um ataque geralmente não possuem assinatura válida, sendo bloqueados por políticas de assinatura obrigatória. | | M1040 | Behavior Prevention on Endpoint | Habilitar regras de prevenção comportamental no EDR que monitorem específicamente a sequência: recebimento de arquivo de texto → invocação de compilador → criação de executável → execução do novo executável. | ## Contexto Brasil/LATAM O Compile After Delivery é uma técnica de alta relevância no contexto LATAM por duas razões estruturais: a ampla disponibilidade de compiladores nativos em ambientes corporativos (.NET Framework presente em práticamente todos os Windows) e a presença expressiva de [[s0385-njrat|njRAT]] e outros RATs de origem árabe e brasileira - frequentemente distribuídos como código-fonte VB.NET em fóruns de cibercrime lusófonos - que usam essa técnica para customização e evasão. Análises do [[sources|CERT.br]] documentam campanhas de phishing direcionadas a empresas brasileiras dos setores [[financial|financeiro]], [[sector-government|governo]] e [[sector-energy|energia]] que utilizam documentos Excel com macros VBA que, ao serem habilitadas, escrevem código-fonte C# em disco e invocam `csc.exe` para compilar o payload final. Esse padrão é especialmente eficaz contra defesas baseadas apenas em assinatura de hash, amplamente usadas em organizações de menor maturidade de segurança na região. O grupo [[g0069-mango-sandstorm|MuddyWater]], com histórico de operações na América Latina, e grupos de cibercrime locais como os associados à família de bankers [[s0531-grandoreiro|Grandoreiro]] têm usado variantes desta técnica para garantir que cada vítima receba um binário com hash único, tornando a partilha de indicadores via plataformas como VirusTotal e OTX menos efetiva para resposta a incidentes na região. ## Referências - MITRE ATT&CK - T1027.004: Obfuscaté Files or Information: Compile After Delivery - [[t1027-obfuscated-files-or-information|T1027 - Obfuscaté Files or Information]] (técnica pai) - [[t1566-phishing|T1566 - Phishing]] (vetor de entrega mais comum) - [[g0047-gamaredon|Gamaredon Group]] - uso documentado com `csc.exe` - [[g0069-mango-sandstorm|MuddyWater]] - uso documentado com payloads C# em Base64 - [[g0106-rocke|Rocke]] - uso documentado em Linux com `gcc` - [[g1041-sea-turtle|Sea Turtle]] - uso documentado em servidores comprometidos - [[s0385-njrat|njRAT]] - RAT prevalente em LATAM distribuído como código-fonte - [[darkwatchman|DarkWatchman]] - compilação via registro do Windows --- *Fonte: MITRE ATT&CK - T1027.004*