Ao copiar um arquivo no Windows 11, a maioria dos usuários espera que apenas o conteúdo visível seja movido. Mas metadados ocultos, conhecidos como Fluxos de Dados Alternativos ou ADS, frequentemente acompanham o arquivo sem aviso. Isso acontece porque os ADS são parte central do sistema de arquivos NTFS e foram projetados para serem transparentes durante operações padrão de arquivo. Este artigo explica as razões técnicas pelas quais os ADS persistem durante uma cópia, como detectá-los e quais riscos esse comportamento introduz.
Principais Conclusões: Por que os ADS Sobrevivem a uma Cópia de Arquivo
- Design do sistema de arquivos NTFS: Os Fluxos de Dados Alternativos são um recurso nativo do NTFS que se vinculam ao arquivo pai e são incluídos em todas as operações de arquivo por padrão.
- APIs CopyFile e MoveFile: O Windows usa essas funções principais que copiam todos os fluxos anexados a um arquivo, não apenas o fluxo de dados principal.
- Nenhuma opção visível no File Explorer: O File Explorer copia arquivos sem expor os ADS, então os usuários não podem ver ou escolher ignorá-los.
O Que São Fluxos de Dados Alternativos e Por Que Eles Existem
Os Fluxos de Dados Alternativos foram introduzidos com o Windows NT 3.1 em 1993 como parte do sistema de arquivos NTFS. Um arquivo no NTFS é na verdade uma coleção de atributos, e o fluxo padrão sem nome contém o conteúdo visível. Os ADS são fluxos nomeados adicionais que podem armazenar dados extras, como metadados, tags de arquivo ou até código executável.
O propósito original dos ADS era suportar o Sistema de Arquivos Hierárquico do Macintosh, que armazena forks de recursos de arquivo separadamente. Com o tempo, aplicativos Windows adotaram os ADS para tarefas como armazenar dados de Zone.Identifier para arquivos baixados, caches de miniaturas e propriedades personalizadas do Microsoft Office.
Quando um arquivo é copiado usando mecanismos padrão de cópia do NTFS, o sistema operacional trata todos os fluxos como partes integrantes do arquivo. A função CopyFile na API do Windows enumera cada fluxo anexado ao arquivo de origem e escreve cada um no destino. Não há opção embutida para copiar apenas o fluxo principal e descartar os ADS.
Como o Sistema de Arquivos NTFS Lida com Fluxos Durante a Cópia
O NTFS armazena dados de arquivo em uma estrutura chamada Tabela de Arquivos Mestre ou MFT. Cada arquivo tem um ou mais registros, e cada registro pode conter vários atributos. O tipo de atributo $DATA armazena dados de fluxo. O fluxo sem nome está sempre presente, e quaisquer fluxos nomeados aparecem como atributos $DATA adicionais com um nome.
Quando a função CopyFile é executada, ela chama a rotina de sistema NtFsControlFile com o código de controle FSCTL_GET_NTFS_FILE_RECORD para recuperar o registro MFT completo. A função então lê cada atributo $DATA e o escreve no novo local. Esse processo garante que todos os fluxos sobrevivam à cópia.
Por Que o File Explorer Não Avisa Sobre ADS
O File Explorer usa a mesma API CopyFile que outras ferramentas do Windows. A interface não exibe os ADS porque a Microsoft projetou o recurso para ser invisível para o usuário final. Nenhuma caixa de diálogo, caixa de seleção ou configuração no File Explorer permite remover os ADS durante uma cópia.
A única exceção é quando você copia arquivos para um volume que não seja NTFS, como FAT32 ou exFAT. Esses sistemas de arquivos não suportam ADS, então o Windows descarta silenciosamente todos os fluxos alternativos durante a transferência. Esse comportamento é automático e não configurável.
Detectando Fluxos de Dados Alternativos no Windows 11
Você pode visualizar os ADS usando a ferramenta de linha de comando dir com a opção /r. Abra o Prompt de Comando ou PowerShell e execute:
- Abra o Prompt de Comando como administrador
Pressione Win + R, digite cmd, depois pressione Ctrl + Shift + Enter. - Navegue até a pasta que contém o arquivo
Digite cd seguido do caminho completo para a pasta. Por exemplo: cd C:\Users\SeuNome\Downloads. - Liste todos os fluxos de um arquivo específico
Digite dir /r nome_do_arquivo.ext. Substitua nome_do_arquivo.ext pelo nome real do arquivo. Quaisquer ADS aparecem como linhas recuadas sob a entrada principal do arquivo, mostrando o nome do fluxo e o tamanho.
Usuários do PowerShell podem usar o cmdlet Get-Item com o parâmetro -Stream. Execute Get-Item -Path nome_do_arquivo.ext -Stream * para ver todos os fluxos anexados ao arquivo.
Problemas Comuns Causados pela Sobrevivência dos ADS em uma Cópia de Arquivo
Fluxos Zone.Identifier Persistem e Bloqueiam o Acesso
Quando você baixa um arquivo da internet, o Windows anexa um ADS Zone.Identifier que marca o arquivo como originário de uma zona restrita. Se você copiar esse arquivo para outra pasta ou unidade, o Zone.Identifier viaja com ele. O arquivo pode ainda exibir um aviso de segurança ao ser aberto, mesmo no novo local. Para remover o Zone.Identifier, use o cmdlet Unblock-File no PowerShell ou exclua o fluxo manualmente com o utilitário streams do Sysinternals.
Malware Pode se Esconder Dentro de ADS
Atacantes podem armazenar código malicioso em um ADS anexado a um arquivo legítimo. Como os ADS são invisíveis no File Explorer, um usuário pode copiar um documento aparentemente inofensivo que na verdade contém um executável escondido em um fluxo. O software antivírus geralmente verifica os ADS, mas nem todas as ferramentas os verificam por padrão. Executar o utilitário streams do Sysinternals em arquivos copiados pode revelar conteúdo oculto.
Consumo de Espaço em Disco por Fluxos Ocultos
ADS grandes, como miniaturas ou metadados personalizados, podem consumir espaço significativo em disco. Quando você copia arquivos para uma nova unidade, esses fluxos vêm junto e inflam o tamanho total. Você pode verificar o tamanho real dos fluxos usando o comando dir /r e compará-lo ao tamanho visível do arquivo. Se os fluxos forem desnecessários, exclua-os com o comando streams -d.
Copiando Arquivos Sem Fluxos de Dados Alternativos
Para copiar um arquivo e remover todos os ADS, você deve usar uma ferramenta que leia apenas o fluxo principal. O método mais simples é usar o utilitário Streams do Sysinternals com a opção -d para excluir os fluxos e depois copiar o arquivo. Alternativamente, use o PowerShell para ler apenas o fluxo de dados principal e escrevê-lo em um novo arquivo:
- Abra o PowerShell como administrador
Clique com o botão direito no botão Iniciar e selecione Windows Terminal (Admin). - Leia o fluxo principal e escreva em um novo arquivo
Execute Get-Content -Path arquivo_origem.ext -Stream :$DATA | Set-Content -Path arquivo_destino.ext -Stream :$DATA. Isso copia apenas o fluxo sem nome e descarta todos os ADS nomeados.
Copiar para uma unidade FAT32 ou exFAT também remove os ADS, mas esses sistemas de arquivos têm um limite de tamanho de arquivo de 4 GB.
Sobrevivência dos ADS Durante Cópia vs. Movimentação: Principais Diferenças
| Item | Cópia no mesmo volume NTFS | Movimentação no mesmo volume NTFS |
|---|---|---|
| Operação do sistema de arquivos | CopyFile escreve todos os fluxos em um novo local | MoveFile renomeia o registro do arquivo na MFT |
| Retenção de ADS | Todos os ADS são preservados | Todos os ADS são preservados porque nenhum dado é reescrito |
| Impacto no espaço em disco | Duplica todos os fluxos | Sem duplicação |
| Controle do usuário | Nenhuma opção embutida para excluir ADS | Nenhuma opção embutida para excluir ADS |
Conclusão
Os Fluxos de Dados Alternativos sobrevivem a uma cópia de arquivo no Windows 11 porque o NTFS os trata como partes integrantes do arquivo e a API CopyFile copia todos os fluxos por padrão. Você pode detectar ADS usando o comando dir /r ou o PowerShell Get-Item -Stream *. Para remover ADS, use o utilitário Streams do Sysinternals ou copie o fluxo principal manualmente com Get-Content e Set-Content. Como prática avançada de segurança, execute o utilitário streams em todos os arquivos copiados de fontes não confiáveis e remova quaisquer fluxos suspeitos com a opção -d.