# T1564.004 - NTFS File Attributes ## Descrição **NTFS File Attributes** é uma subtécnica de [[t1564-hide-artifacts|T1564 - Hide Artifacts]] em que adversários exploram funcionalidades nativas do sistema de arquivos NTFS (New Technology File System) do Windows para ocultar payloads maliciosos, scripts e binários completos dentro de arquivos legítimos - sem alterar o tamanho visível do arquivo host e sem criar novos arquivos detectáveis por varreduras convencionais. O NTFS mantém uma **Master File Table (MFT)** que registra todos os atributos de cada arquivo no volume. Cada entrada MFT pode conter múltiplos atributos do tipo `$DATA`: o fluxo principal (unnamed data stream) contém o conteúdo visível do arquivo, enquanto fluxos adicionais - denominados **Alternaté Data Streams (ADS)** - podem armazenar dados arbitrários, incluindo executáveis completos. O Windows Explorer, `dir`, e a maioria das ferramentas de auditoria convencionais exibem apenas o tamanho do fluxo principal, tornando o conteúdo oculto nos ADS completamente invisível sem inspeção especializada. Além dos ADS, adversários também abusam de **Extended Attributes (EA)** - metadados estruturados no atributo `$EA` da MFT - para armazenar configurações de malware, chaves de criptografia e stagers de shellcode fora do conteúdo normal do arquivo. > **Técnica pai:** [[t1564-hide-artifacts|T1564 - Hide Artifacts]] > **Tática principal:** Defense Evasion > **Plataformas:** Windows (NTFS exclusivamente - não afeta FAT32, exFAT, ReFS sem suporte ADS) --- ## Como Funciona ### Alternaté Data Streams (ADS) A sintaxe de acesso a ADS no Windows usa o separador `:` após o nome do arquivo: ``` arquivo.txt:stream_oculto ``` Um adversário pode: 1. Criar um ADS contendo um executável malicioso dentro de um arquivo legítimo (ex.: `readme.txt:payload.exe`) 2. Executar o payload diretamente via `wscript`, `rundll32`, `mshta`, ou chamadas nativas sem extraí-lo para disco como arquivo separado 3. Usar o ADS como área de staging para shellcode que será injetado em um processo legítimo **Comandos nativos que interagem com ADS:** - `type payload.exe > documento.docx:hidden` - escreve payload em ADS - `wscript.exe documento.docx:script.vbs` - executa VBScript em ADS diretamente - `expand arquivo.cab arquivo.txt:payload.exe` - extrai arquivo comprimido para ADS ### Extended Attributes (EA) Os **Extended Attributes** são estruturas de metadados associadas a arquivos NTFS que originalmente existiam por compatibilidade com OS/2. Adversários abusam desse mecanismo para: - Armazenar stagers de shellcode em `$EA` que são carregados por um dropper - Esconder configurações de C2 em atributos EA de arquivos de sistema legítimos - Persistir payloads que sobrevivem a varreduras de AV focadas em conteúdo de arquivo A ferramenta nativa `esentutl.exe` pode ser utilizada para ler e escrever EA, o que torna a técnica "living-off-the-land" quando combina [[t1218-signed-binary-proxy-execution|T1218 - Signed Binary Proxy Execution]]. --- ## Attack Flow ```mermaid graph TB A["Acesso Inicial<br/>(phishing / exploit)"] --> B["Dropper executado<br/>em disco"] subgraph STAGING["Fase de Staging - ADS/EA"] B --> C["Payload principal escrito<br/>em Alternaté Data Stream<br/>(arquivo.txt:evil.exe)"] B --> D["Configuração C2 escrita<br/>em Extended Attributes<br/>(esentutl / API nativa)"] C --> E["Arquivo host visível<br/>tamanho aparente inalterado"] D --> E end subgraph EXECUCAO["Execução Furtiva"] E --> F["Loader/dropper lê<br/>ADS ou EA via API"] F --> G["Shellcode/PE injetado<br/>em processo legítimo<br/>(svchost, explorer)"] G --> H["Execução sem<br/>arquivo em disco<br/>(fileless)"] end subgraph C2["Persistência e C2"] H --> I["Comúnicação C2<br/>estabelecida"] I --> J["Payload em ADS<br/>permanece para<br/>reativação futura"] end style STAGING fill:#1a1a2e,stroke:#f39c12,color:#fff style EXECUCAO fill:#16213e,stroke:#e94560,color:#fff style C2 fill:#0f3460,stroke:#27ae60,color:#fff style G fill:#e94560,color:#fff style H fill:#e94560,color:#fff ``` --- ## Exemplos de Uso ### APT32 / OceanLotus (Vietnam-nexus) [[g0050-apt32|APT32]], grupo de espionagem com nexo vietnamita amplamente documentado pela FireEye e ESET, utilizou ADS para ocultar componentes de malware em comprometimentos de organizações governamentais e empresas na ASEAN e no Brasil. O grupo armazenou payloads em streams de documentos Office legítimos, executando-os via LOLBins para minimizar criação de arquivos suspeitos em disco. ### Regin (Five Eyes - espionagem avançada) [[s0019-regin|Regin]] é um framework de espionagem multi-estágio atribuído a serviços de inteligência anglófonos, documentado pela Kaspersky e Symantec em 2014. O malware utilizava extensivamente NTFS EA para armazenar módulos criptografados entre estágios, tornando-o um dos primeiros exemplos documentados de abuso sistemático de Extended Attributes em operações de espionagem de estado. ### WastedLocker (ransomware corporativo) [[s0612-wastedlocker|WastedLocker]], ransomware operado pelo grupo Evil Corp e documentado pela NCC Group em 2020, utilizou ADS para staging de componentes antes da fase de criptografia, combinando a técnica com injeção de processo em serviços legítimos do Windows para evasão de EDR. O grupo comprometeu múltiplas organizações norte-americanas e europeias, com impacto no Brasil via subsidiárias. ### Latrodectus (loader emergente) [[s1160-latrodectus|Latrodectus]], loader identificado em 2023 como sucessor do IcedID, foi documentado usando ADS para armazenar configurações de C2 e chaves de descriptografia em arquivos de sistema, dificultando análise estática de amostras isoladas. ### DEADEYE e POWERSOURCE [[s1052-deadeye|DEADEYE]] (atribuído ao APT41) e [[s0145-powersource|POWERSOURCE]] (grupo FIN7) utilizaram ADS em combinação com [[t1059-001-powershell|T1059.001 - PowerShell]] para staging de payloads. Em ambos os casos, um script PowerShell mínimo leria o ADS e carregaria o conteúdo diretamente na memória. ### Valak e PowerDuke [[s0476-valak|Valak]], malware modular documentado em 2020, e [[s0139-powerduke|PowerDuke]], ferramenta de espionagem associada ao APT29, utilizaram ADS para persistência de módulos adicionais após comprometimento inicial - evitando criação de novos arquivos no sistema de arquivos visível. --- ## Detecção A detecção de abuso de ADS/EA requer monitoramento em múltiplas camadas: eventos de criação de arquivo via Sysmon, auditoria de processos que leem ADS, e inspeção periódica de volumes NTFS. ### Regra Sigma - Criação de Alternaté Data Stream Suspeito ```yaml title: Criação de Alternaté Data Stream em Arquivo Executável ou de Documento id: c4e7a2f1-8b3d-4e9c-a5f2-1d8c3b6e9f4a status: experimental description: > Detecta criação de ADS em arquivos comuns (txt, docx, pdf) que contenham extensões executáveis (.exe, .dll, .ps1, .vbs) no nome do stream, indicando possível uso malicioso de NTFS Alternaté Data Streams. references: - https://attack.mitre.org/techniques/T1564/004/ author: RunkIntel daté: 2026-03-25 tags: - attack.defense_evasion - attack.t1564.004 logsource: product: windows service: sysmon definition: 'EventID: 15 - FileCreateStreamHash' detection: selection: EventID: 15 TargetFilename|contains: - ":evil" - ".exe:" - ".dll:" TargetFilename|endswith: - ".exe" - ".dll" - ".ps1" - ".vbs" - ".bat" - ".js" condition: selection falsepositives: - Algumas ferramentas de backup e antivírus criam ADS internos (Zone.Identifier é legítimo) level: high ``` ### Regra Sigma - Leitura de ADS via Processo Suspeito ```yaml title: LOLBin Acessando Alternaté Data Stream id: d9f3b8e2-4a7c-5f1b-b6d3-2e9a4c7f1b8d status: experimental description: > Detecta binários nativos do Windows (LOLBins) acessando arquivos com sintaxe de ADS (nome:stream), padrão associado a execução de payloads ocultos em NTFS Alternaté Data Streams. references: - https://attack.mitre.org/techniques/T1564/004/ - https://lolbas-project.github.io/ author: RunkIntel daté: 2026-03-25 tags: - attack.defense_evasion - attack.t1564.004 - attack.t1218 logsource: product: windows category: process_creation detection: selection_lolbin: Image|endswith: - "\\wscript.exe" - "\\cscript.exe" - "\\mshta.exe" - "\\rundll32.exe" - "\\regsvr32.exe" - "\\esentutl.exe" - "\\expand.exe" selection_ads: CommandLine|re: '.*\w+\.\w+:\w+.*' condition: selection_lolbin and selection_ads falsepositives: - Raramente legítimo; investigar sempre level: critical ``` ### Indicadores de Detecção Adicionais | Indicador | Ferramenta | Relevância | |-----------|-----------|-----------| | Sysmon EventID 15 (FileCreateStreamHash) | Sysmon | Alta - específico para criação de ADS | | `dir /r` mostrando streams além de `Zone.Identifier` | cmd.exe | Alta - enumeração manual | | `streams.exe` (Sysinternals) reportando ADS > 1KB em arquivos de sistema | Sysinternals | Alta | | `esentutl.exe /y arquivo /d destino /o` com destino ADS | Process Monitor | Alta | | Acesso a `$EA` via API `NtSetEaFile` por processo não-sistema | ETW / Kernel | Alta | | PowerShell `Get-Item -Stream *` retornando streams não-padrão | PowerShell logging | Média | --- ## Mitigação | ID | Mitigação | Implementação | |----|-----------|--------------| | [[m1022-restrict-file-and-directory-permissions\|M1022 - Restrict File and Directory Permissions]] | Permissões de arquivo | Restringir criação de ADS em diretórios de sistema (`%SystemRoot%`, `%ProgramFiles%`). Aplicar ACLs para impedir que usuários não privilegiados escrevam em streams de arquivos críticos. | | Monitoramento ADS | Detecção contínua | Usar Sysinternals Streams ou scripts PowerShell agendados para inventariar ADS em diretórios sensíveis. Qualquer ADS além de `Zone.Identifier` deve ser investigado. | | Sysmon EventID 15 | Logging | Habilitar `FileCreateStreamHash` no Sysmon para registrar todos os eventos de criação de ADS. Integrar ao SIEM com regras de alerta para extensões executáveis. | | Controle de LOLBins | Whitelisting | Usar AppLocker ou Windows Defender Application Control (WDAC) para restringir execução de `wscript`, `mshta`, `regsvr32` fora de caminhos autorizados, dificultando execução de payloads em ADS. | | Formatação e limpeza | Remediação | Em casos de comprometimento confirmado, formatar o volume NTFS e restaurar de backup limpo elimina todos os ADS/EA maliciosos. Alternativa: usar `streams.exe -d` para remover ADS individuais. | --- ## Contexto Brasil/LATAM O abuso de NTFS Alternaté Data Streams é técnica recorrente em ataques direcionados a organizações brasileiras, especialmente por grupos como [[g0050-apt32|APT32]] que têm histórico documentado de operações na América Latina. **Setores em risco elevado no Brasil:** - **Governo federal e estadual:** sistemas Windows legados com pouco ou nenhum monitoramento de Sysmon representam alvos ideais para staging via ADS, especialmente em redes com segmentação deficiente - **Setor financeiro:** bancos e fintechs brasileiros com presença LATAM já foram alvos de grupos que utilizam técnicas fileless, onde ADS serve como área de staging intermediária antes de injeção em memória - **Telecomúnicações:** operadoras com infraestrutura Windows em servidores de gerenciamento são alvo de implantes que usam ADS para persistência de longo prazo **Ferramentas de espionagem relevantes na região:** O [[s1160-latrodectus|Latrodectus]] tem crescente presença no Brasil em 2025, com campanhas documentadas contra setores corporativos. Sua utilização de ADS para configurações de C2 o torna especialmente difícil de detectar em ambientes sem Sysmon habilitado. **Recomendação imediata para SOCs brasileiros:** 1. Habilitar Sysmon EventID 15 em todos os endpoints Windows com política de FileCreateStreamHash 2. Criar regra SIEM para alertar sobre ADS com extensões executáveis fora de `Zone.Identifier` 3. Executar varredura periódica com `Get-ChildItem -Recurse | Get-Item -Stream * | Where-Object Stream -ne ':$DATA'` em diretórios críticos 4. Investigar uso de `esentutl.exe` fora de contexto de backup/recovery como indicador de abuso de EA --- ## Técnicas Relacionadas - [[t1564-hide-artifacts|T1564 - Hide Artifacts]] (técnica pai) - [[t1218-signed-binary-proxy-execution|T1218 - Signed Binary Proxy Execution]] (execução via LOLBins de payload em ADS) - [[t1059-001-powershell|T1059.001 - PowerShell]] (leitura e execução de ADS via PowerShell) - [[t1055-process-injection|T1055 - Process Injection]] (payload em ADS → injetado em processo legítimo) - [[t1027-obfuscated-files|T1027 - Obfuscated Files or Information]] (técnica frequentemente combinada) - [[t1036-009-break-process-trees|T1036.009 - Break Process Trees]] (evasão de árvore de processos pós-execução) --- ## Referências - [MITRE ATT&CK - T1564.004](https://attack.mitre.org/techniques/T1564/004/) - [Microsoft - NTFS Alternaté Data Streams](https://docs.microsoft.com/en-us/archive/blogs/askcore/alternate-data-streams-in-ntfs) - [Kaspersky - Regin: Nation-State Ownage of GSM Networks (2014)](https://securelist.com/regin-nation-state-ownage-of-gsm-networks/) - [NCC Group - WastedLocker: A New Ransomware Variant (2020)](https://research.nccgroup.com/2020/06/23/wastedlocker-a-new-ransomware-variant-developed-by-the-evil-corp-group/) - [Sysinternals Streams](https://docs.microsoft.com/en-us/sysinternals/downloads/streams) - [LOLBAS - esentutl](https://lolbas-project.github.io/lolbas/Binaries/Esentutl/)