Por que diabos o NTFS permite executáveis invisíveis?

103

Você pode ocultar qualquer arquivo dentro de outro arquivo apenas digitando:

type sol.exe > container.txt:sol.exe

e para rodar o arquivo oculto basta usar:

start c:\hide\container.txt:sol.exe

Mas a parte maluca sobre isso é que isso não aumenta o tamanho do arquivo (então está totalmente oculto).

E se você excluir o arquivo com o conteúdo oculto, o material oculto não será excluído. Apenas use:

more <  container.txt:sol.exe > sol.exe

Por que o NTFS permite isso? Parece ser a melhor maneira de esconder um vírus.

    
por Kredns 24.07.2009 / 01:44

5 respostas

97

Existem dois lados nesta questão. A primeira é por que esse recurso existe, e o segundo é por que a GUI (ou o prompt de comando) não facilita a visualização e o gerenciamento do recurso.

Existe porque é útil. Várias outras plataformas suportam vários fluxos de dados por arquivo. No Mac, eles eram chamados de garfos , por exemplo. Estou razoavelmente certo de que coisas semelhantes existiram no mundo do mainframe, mas não posso colocar meus dedos em nenhum exemplo explícito hoje.

No Windows moderno, ele é usado para armazenar atributos extras para um arquivo. Você pode notar que a caixa Propriedades disponível no Windows Explorer tem uma guia Resumo que, na exibição Simples (estou no Windows XP, sua milhagem será diferente em outros tipos), inclui vários campos úteis como Título, Assunto, Autor e assim por diante. Esses dados são armazenados em um fluxo alternativo, em vez de criar algum tipo de banco de dados de carro lateral para conter tudo o que seria separado do arquivo com muita facilidade.

Um fluxo alternativo também é usado para conter o marcador que diz que o arquivo veio de uma fonte de rede não confiável aplicada pelo Internet Explorer e pelo Firefox em downloads.

A questão difícil é por que não há uma interface de usuário melhor para perceber que os streams existem, e por que é possível colocar conteúdo executável neles e, pior ainda, executá-lo mais tarde. Se houver um bug e risco de segurança aqui, é isso.

Editar:

Inspirado por um comentário para outra resposta, aqui está uma maneira de descobrir se sua proteção antivírus e / ou antimalware está ciente de fluxos alternativos.

Obtenha uma cópia do arquivo de teste da EICAR . São 68 bytes de texto ASCII que também são executáveis x86 válidos. Embora completamente inofensivo, o setor de antivírus concordou em ser detectado como se fosse um vírus real. Os criadores pensaram que testar software AV com um vírus real seria um pouco demais como testar o alarme de incêndio acendendo a lixeira em chamas ...

O arquivo EICAR é:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Salve-o com a extensão .COM e ele será executado (a menos que seu AV esteja prestando atenção) e imprima uma saudação.

Seria informativo salvá-lo em um fluxo de dados alternativo e executar uma verificação ...

    
por 24.07.2009 / 01:59
15

Este recurso é necessário para um recurso de plataforma cruzada do Windows Server: serviços para mac.

Isso permite que um servidor Windows em execução no compartilhamento NTFS para macs via AFP. Para que esse recurso funcione, o sistema de arquivos NTFS precisa oferecer suporte a garfos e tem desde o primeiro dia.

E antes de perguntar, esse recurso ainda é usado? Sim, eu tenho ele em execução e em uso diariamente em um servidor em um cliente que eu suporte.

O principal problema de segurança ocorre quando pessoas e aplicativos esquecem ou não percebem que ele está lá.

Provavelmente deve haver uma opção para incluir os garfos no tamanho total do arquivo ou exibi-los no Windows Explorer.

    
por 24.07.2009 / 02:05
5

Eu imagino que um dos principais usos (talvez até o uso pretendido) seria permitir de forma transparente a adição de qualquer tipo de meta-dados a um arquivo. A razão pela qual o tamanho do arquivo não é alterado é neste cenário que você não deseja que o arquivo tenha aparência ou se comporte de forma diferente, para que o aplicativo de origem não dependa de algum aspecto da aparência do arquivo.

Eu poderia imaginar usos interessantes em IDEs, por exemplo, onde às vezes vários arquivos estão envolvidos para formar uma única unidade (arquivo de código / arquivo de formulário, etc), que poderia ser anexado ao arquivo original dessa maneira para que eles não pudessem acidentalmente separe-se.

Eu também acredito que existe um comando para encontrar todos esses 'anexos' em uma determinada árvore de diretórios, para que eles não fiquem completamente ocultos. Também me surpreenderia se os melhores verificadores de vírus não estivessem cientes disso e verificassem essas áreas 'ocultas', mas você poderia verificar isso anexando propositalmente um arquivo executável infectado a um arquivo de texto e vendo se ele é captado.

    
por 24.07.2009 / 01:53
5

Veja um bom artigo sobre a possível vulnerabilidade de segurança apresentada por Fluxos de dados alternativos .

    
por 24.07.2009 / 01:52
5

Boa pergunta, eu não estava ciente da ADS até o ano passado e sou desenvolvedor do Windows há muitos anos. Eu posso garantir que não estou sozinho nisso.

Em relação à possibilidade de verificar dados alternativos em arquivos, encontrei a pequena ferramenta útil chamada Lads disponível a partir do software Frank Heyne. Ele pode listar o ADS em todos os arquivos em um determinado diretório, mesmo em arquivos criptografados (e também em subdiretórios).

    
por 24.07.2009 / 04:44