Por que NTFS Alternate Data Streams é uma Vulnerabilidade de Segurança
Dec 16, 2022
Você pode não estar familiarizado com fluxos de arquivos NTFS, mas os utiliza todos os dias ao acessar arquivos em qualquer sistema Windows moderno. Este post do blog explica esse recurso do NTFS ADS, mostra como hackers podem explorar a funcionalidade de fluxo de arquivos em ciberataques e oferece estratégias para defender sua organização.
Conteúdo relacionado selecionado:
Fluxos de Dados Padrão e Fluxos de Dados Alternativos
Um fluxo de arquivo é uma sequência de bytes que contém dados sobre um arquivo, como palavras-chave ou a identidade do usuário que criou o arquivo. Pense em um fluxo de dados como um arquivo dentro de um arquivo — um arquivo oculto residindo dentro de um legítimo. Cada fluxo tem sua própria alocação de espaço em disco, seu próprio tamanho real (bytes em uso) e seus próprios bloqueios de arquivo.
Todo arquivo na sua estrutura de arquivos NTFS tem pelo menos um fluxo, seu fluxo padrão. O default data stream é o conteúdo normal e visível do arquivo — por exemplo, o texto em um arquivo .txt ou o código executável em um arquivo .exe. Essa informação é armazenada no atributo $Data. Como o nome desse atributo padrão está vazio (definido como “”), o unnamed data stream também é frequentemente referido como o “fluxo de dados sem nome”.
Os arquivos também podem conter um ou mais alternate data streams (ADSs). Um ADS deve ser nomeado. Observe que o fluxo de dados padrão permanece inalterado com a adição de fluxos de dados alternativos.
Como criar fluxos alternativos de dados
É bastante fácil criar fluxos de dados alternativos para um arquivo: basta acrescentar dois pontos (“:”) ao nome do arquivo ou caminho, seguido pelo nome do fluxo. Como os dois pontos são um caractere reservado não permitido em um nome de arquivo, isso não entra em conflito com nomes de arquivos existentes.
Você pode adicionar vários ADSs a um arquivo. Por exemplo, aqui está como podemos criar dois fluxos de dados alternativos para um arquivo de texto:
Myfile.txt:stream2
Myfile.txt:secretstuff
Benefícios dos NTFS File Streams
Embora sistemas de arquivos antigos do Windows, como FAT16 e FAT32, não tenham suporte para múltiplos fluxos de dados, ADS não é uma tecnologia nova; está presente em todas as versões do sistema de arquivos NTFS da Microsoft desde o Windows NT.
Desde cedo, o uso de múltiplos fluxos de dados ajudou a permitir que um servidor Windows também funcionasse como um servidor de arquivos para computadores Apple Macintosh. Arquivos Mac utilizam dois fluxos por arquivo — um para dados e outro para informações de recurso. Com o NTFS suportando múltiplos fluxos, um usuário Mac poderia copiar arquivos para um servidor Windows e depois de volta para um Mac sem perder o fluxo de recurso. Em outras palavras, o ADS foi capaz de fornecer compatibilidade para ambos os sistemas e suas aplicações.
Existem também razões legítimas para utilizar fluxos de dados alternativos no Windows. Por exemplo, alguns softwares de gestão de arquivos e backup usam ADS para armazenar informações de revisão de arquivos, e muitos navegadores de internet adicionam um fluxo aos arquivos baixados da internet que inclui informações de segurança sobre a origem do arquivo.
O Lado Sinistro do ADS
Embora o ADS tenha muitos propósitos legítimos, hackers podem abusar dele para fins maliciosos, como ataques de malware. Como um compartimento secreto dentro de uma mala usado por um contrabandista para esconder produtos ilícitos de um inspetor, o ADS pode ser utilizado por atores de ameaças para ocultar código malicioso e executar ataques futuros enquanto evita a detecção de segurança básica. Um ADS pode armazenar qualquer tipo de arquivo, incluindo áudio, vídeo, imagens ou código malicioso como vírus, trojans e ransomware. E porque os fluxos de dados alternativos são ocultos, os usuários não podem detectá-los usando comandos de listagem de diretórios.
Ferramentas para Trabalhar com Streams NTFS
Existem algumas ferramentas nativas que você pode usar para obter mais visibilidade no ADS. Estas incluem:
- Echo and More
- O utilitário Sysinternals Streams
- A opção /R do comando Dir.
- PowerShell 3.0, que inclui seis cmdlets para manipular diretamente o conteúdo para ADS
Echo and More
Vamos começar utilizando Echo e More. No exemplo abaixo, o comando Echo é usado para adicionar “:secret” a um arquivo de texto chamado test.txt, e o comando More é usado para escrever uma mensagem secreta que não pode ser visualizada por padrão. Observe que o comando Dir também não consegue ver o fluxo secreto NTFS.
Streams
Streams é uma ferramenta de linha de comando disponível em Sysinternals. É utilizada para mostrar quais arquivos em uma pasta usam streams além dos fluxos de dados padrão. A captura de tela abaixo mostra que o arquivo test.txt possui um stream alternativo chamado “secret”, que tem um tamanho de arquivo de 86 bytes. Observe que isso é muito mais do que os 26 bytes mostrados pelo comando Dir no exemplo anterior.
Dir /R
A opção Dir /R está disponível desde o Windows Server 2003. Como mostrado abaixo, nosso arquivo ‘test.txt’ aparece duas vezes ao usar a opção Dir /R. Também mostra o tamanho correto do arquivo para ambos os fluxos de arquivo padrão e secreto.
PowerShell
Você também pode usar o PowerShell para identificar os fluxos de dados alternativos em um arquivo. No exemplo abaixo, utilizamos o comando Get-Item com a opção Stream e o parâmetro curinga. A saída mostra ambos os fluxos para o nosso arquivo; a seta destaca a visualização do fluxo alternativo.
Você também pode usar o PowerShell para limpar um fluxo NTFS. Na captura de tela abaixo, usamos o comando clear-content para excluir os dados associados ao fluxo de dados secreto. Executar o comando get-item imediatamente depois confirma que os dados no fluxo foram excluídos, já que o tamanho do arquivo agora é zero.
Podemos até fazer melhor e deletar completamente o fluxo utilizando o comando remove-item, conforme mostrado abaixo. O comando get-item confirma que o fluxo foi deletado.
Como se defender contra a ameaça ADS
Adversários podem e de fato usam ADS para esconder conteúdo malicioso, incluindo ransomware e outros malwares, na sua estrutura hierárquica de arquivos. Infelizmente, o Windows File Explorer, o comando Dir e ferramentas relacionadas informam apenas sobre o fluxo de dados padrão de um arquivo. A verdade é que um simples arquivo .txt ou documento Word reportando 1k de dados poderia na realidade conter megabytes de dados ocultos ou código executável em um ADS.
Assim, ao construir sua estratégia de gestão de segurança, você precisa melhorar a visibilidade em ADS. Em particular, considere investir em produtos antivírus, ferramentas de descoberta de dados e detectores de exfiltração de dados que possam detectar a existência de fluxos de dados alternativos e escanear em busca de conteúdo não autorizado para que você possa removê-lo proativamente. Afinal, a prevenção de incidentes é sempre melhor do que a resposta a incidentes.
Melhores práticas de gerenciamento de permissões NTFS
Saiba maisCompartilhar em
Saiba Mais
Sobre o autor
Joe Dibley
Pesquisador de Segurança
Pesquisador de Segurança na Netwrix e membro da Equipe de Pesquisa de Segurança da Netwrix. Joe é um especialista em Active Directory, Windows e uma ampla variedade de plataformas de software empresarial e tecnologias, Joe pesquisa novos riscos de segurança, técnicas de ataque complexas e as respectivas mitigações e detecções.
Saiba mais sobre este assunto
Leis de Privacidade de Dados por Estado: Abordagens Diferentes para a Proteção da Privacidade
O que é Gerenciamento de Registros Eletrônicos?
Expressões Regulares para Iniciantes: Como Começar a Descobrir Dados Sensíveis
Compartilhamento Externo no SharePoint: Dicas para uma Implementação Sábia
Confianças no Active Directory