quarta-feira, 15 de outubro de 2014

Alternate Data Stream (ADS) no Windows + ADS Spy



Você sabia que os arquivos do seu computador, podem “esconder” outros arquivos? Um arquivo de texto, por exemplo, pode esconder outro arquivo de texto (surpresa!!!!) ou até mesmo um programa (surpresa ruim!!!). E isso, é claro, sem que você saiba. 

Mas essa "funcionalidade" possui seu uso legítimo. A grosso modo pense que há muito tempo existia uma dificuldade de sistemas Windows NT, que utilizam NTFS (New Technology File System) se comunicarem com sistemas MAC OS que utilizam HFS (Hierarchical File System), pois esse último não utilizava extensões de arquivos (.doc, .xls, .exe. etc), para que o sistema operacional pudesse associar arquivos aos seus programas padrões. Isso porque os arquivos no Macintosh tinham dois Forks: o Resource Fork (Fork de Recurso), que continha essas e outras informações necessárias para trabalhar com os arquivos e o Data Fork (Fork de Dados), que continha os dados dos arquivos propriamente ditos. Numa eventual cópia de arquivo, por exemplo, seria copiado apenas o fork de dados, uma vez que o fork de recursos não estava fisicamente no arquivo mas num stream separado (o Resource Fork e o Data Fork  não ocupavam o mesmo cluster no disco). A Microsoft então cria o NTFS ADS (Alternate Data Stream), que enxerga o Resource Fork  como outro stream e é capaz de copiá-lo com o arquivo original num computador com Macintosh. Ou seja, a grosso modo, o ADS surgiu como uma iniciativa da Microsoft para fornecer compatibilidade com o antigo sistema de arquivos HFS do Mac OS. 

Um dos problemas do ADS é que a grande maioria dos usuários de NTFS (sistema de arquivos recomendável nos S.O. Microsoft a partir do Windows NT, como Windows XP, Windows 2000, 2003, 7, 2008, etc, por fornecer maior segurança), incluindo usuários administradores, não sabem da existência do ADS e alguns poucos que já ouviram falar, não sabem como detectar que streams existem nos arquivos. Outro problema grave é a sua quase “invisibilidade” para o usuário. Uma pessoa poderia criar um arquivo de texto de "1 byte" e adicionar um arquivo de "2GB" no seu ADS. Esses "2GB" não seriam vistos no Windows Explorer que, apesar de alterar a data de modificação quando o stream fosse adicionado, continuaria mostrando o tamanho do arquivo com apenas "1 byte" de informação. Mas esse cenário pode ficar ainda pior, pois seria possível colocar um arquivo binário ou executável no stream de um arquivo texto, e este não seria identificado pelo sistema operacional, a não ser com ferramentas específicas. Que belo método para implantar um backdoor hein?! De alguns anos para cá, os softwares antivírus são capazes de detectar informações de ADS maliciosas ou modificados de um arquivo, mas se você usa soluções gratuitas de AV, creio que dificilmente estará protegido.

Independente de o sistema operacional prover suporte, o Windows Explorer ou o próprio comando “dir”, simplesmente ignoram as informações de ADS. Aliás o Windows Explorer, numa eventual cópia de arquivos, copia também as informações de ADS e até avisa o usuário caso o sistema de arquivos do destino não suporte essa funcionalidade, porém só calcula o tamanho do stream principal e não lista o stream dos arquivos ou pastas. O Windows PowerShell, já fornece ferramentas para manipular o ADS.


Veja um exemplo na imagem abaixo: note que nessa pasta, temos um arquivo chamado "teste.txt", criado as 11:01 do dia 15/10/2014. Esse arquivo não tem qualquer informação dentro dele, pois seu tamanho é de "0 KB".


Foi então executado o seguinte comando: echo "Arquivo escondido" > teste.txt:hiden.txt
O que este comando faz, é criar um novo arquivo chamado "hiden.txt" com o conteúdo "Arquivo escondido", armazenando-o no ADS do arquivo "teste.txt". Atente ao fato de que, após a execução desse comando, foi executado o comando "dir" no mesmo diretório e, mesmo esse arquivo tendo agora informações de ADS  (um arquivo inteiro diga-se de passagem), o tamanho do arquivo permanece sendo de "0 KB", apesar da data de modificação ter sido alterada.


E isso se reflete inclusive no Windows Explorer. Tamanho do  arquivo = 0 KB. Porém se executarmos o comando "notepad  teste.txt:hiden.txt", seremos capazes de editar o arquivo teste.txt:hiden.txt, conforme pode ser visto na tela abaixo. 


A boa notícia é: desde a versão 7 do seu sistema operacional Windows, a Microsoft impede que arquivos executáveis rodem através do ADS. Ou seja, você até pode guardar esse tipo de arquivo nas informações de ADS, porém não conseguirá executá-los (continua funcional para outros tipos de arquivos, como textos, por exemplo).

A má notícia é: usando o comando "mklink" é possível criar links simbólicos para arquivos executáveis armazenados no ADS e executá-los da mesma maneira. :(  Veja na sequência abaixo:

Queremos colocar um arquivo executável dentro do ADS de um arquivo texto. Apenas para fazer esse exemplo, utilizaremos o "cscript.exe" (presente no C:\Windows\System32). Para isso, criamos um arquivo chamado "teste.txt" com qualquer informação dentro dele (apesar disso não ser mandatório). O tamanho do arquivo ficou 1 KB, como pode ser visto abaixo.


Conforme a tela abaixo, executamos o comando: "type cscript.exe>teste.txt:cscript.exe",  que nos permitiu jogar o conteúdo do arquivo "cscript.exe" para dentro do ADS do arquivo "teste.txt".


Verifique novamente que, apesar da data de modificação do arquivo ter sido alterada, ele agora possui 124 KB (tamanho do arquivo "cscript.exe"), dentro das suas informações de ADS. Porém através do Windows Explorer, continuamos visualizando apenas o tamanho dos seus dados, que é de 1 KB. 


Agora vamos criar um link para um arquivo chamado "fotos.exe", que aponta para o "cscript.exe".  Faremos isso através do comando:  mklink  fotos.exe   teste.txt:cscript.exe.


Veja que, se executarmos o arquivo "fotos.exe", a resposta é justamente o comando "cscript.exe" que copiamos para o ADS anteriormente. Ou seja, mesmo o Windows bloqueando o acesso de executáveis do ADS, essa é uma medida relativamente simples de ser burlada e pode ser utilizada por pessoas mal intencionadas.


O programa ADS Spy pode ajudá-lo a ver as informações ADS de determinados arquivos. 


Ele pode fazer verificações rápidas, em todo o sistema de arquivos ou numa pasta específica. Apenas tenha cuidado com o uso do ADS Spy, pois existem arquivos de sistema do Windows com informações de ADS legítimas. Pesquise sobre os alternate data streams dos arquivos que encontrar. Essa será inclusive, uma bela oportunidade para você conhecer mais a fundo o seu sistema operacional. 

Se você quiser saber mais sobre o ADS, seguem alguns links interessantes:




t+


Cristiano
"A grandeza não consiste em receber honras, mas em merecê-las." - Aristóteles

Nenhum comentário:

Related Posts Plugin for WordPress, Blogger...