Ir para conteúdo
  • Abuso de fluxo de dados alternativos (ADS)

       (0 análises)

    b4ct3r14

    Prefácio

    Este artigo abordará um recurso do sistema de arquivos NTFS, muito pouco conhecido e mal documentado, que leva o nome de Alternate Data Stream ou simplesmente ADS. O artigo apresenta conceitos, usos, formas de identificação e maneiras de lapidar a técnica. Embora essa técnica de ocultação de cargas maliciosas em sistemas de arquivos seja considerada antiga, seu uso ainda é muito relevante nos dias atuais.

    O que é Alternate Data Stream (ADS)?

    Alternate Data Stream (ADS) é um recurso do sistema de arquivos NTFS, implementado pela primeira vez no Windows NT 3.1, com o intuito de permitir a compatibilidade com os sistemas de arquivos MAC HFS (Macintosh Hierarchical File System). De maneira sucinta, esse recurso permite que os arquivos contenham mais de um fluxo de dados. 

    Os arquivos em NTFS têm ao menos um fluxo de dados visível. Em ambientes Windows, esse fluxo de dados padrão é chamado de atributo MFT :$DATA ou fluxo de dados sem nome.

    Experimentação

    Para entendermos melhor como funciona esse fluxo de dados, vamos abrir o Prompt de Comando para fazer alguns testes. Primeiramente, vamos começar criando um arquivo de texto com a string Mente Binária:

    Untitled_(1).thumb.png.5d19b44ac58204292a73d8aa237d9b82.png

    Observe o tamanho do arquivo gerado. Como segundo passo, vamos inserir um segundo fluxo de dados dentro desse arquivo:

    Untitled_(2).thumb.png.006c9618be0acf3eb13a571397a44650.png

    Note que ao realizar o processo de listagem, o arquivo mentbin.txt permanece com 18 bytes, não sendo possível notar qualquer diferença aparente. Para verificar a existência de um ADS precisamos utilizar da flag /r para exibir o fluxo de dados alternados, como help do programa sugere:

    Untitled_(3).thumb.png.36fee139be5a3ef2b2486788884892f1.png

    Agora sim parece que acendemos a luz e conseguimos ver o hf.txt  dentro do arquivo mentbin.txt:

    Untitled_(4).thumb.png.8601ccf373ed19636963e4de0a6f24c0.png

    Ao abrir o arquivo com o Bloco de Notas, com o comando type ou Windows Explorer apenas o fluxo de dados principal é exibido em tela. 

    Para ler o conteúdo de um fluxo, podemos utilizar os comandos more ou sort:

    Untitled_(5).thumb.png.e0035c2cbcc858511c3dbc91fe59ec35.png

    Caso de uso

    Mas agora surge a pergunta, porque bulhufas isso é utilizado? Bom, acredito que conseguimos responder essa pergunta com uma demonstração prática. Quando baixamos arquivos da internet usando um browser por exemplo é criado um $DATA para identificar de onde esse arquivo foi baixado.

    Demonstração

    Vamos baixar a imagem do gatinho do post de Detectando overlays em executáveis ELF do @Fernando Mercês:

    Untitled_(6).thumb.png.0c89b76af20f1081367865f7d61943bc.png

    Salvamos a imagem:

    Untitled_(7).thumb.png.21452e45586e8aa67d9e233e43f2d091.png

    Untitled_(8).thumb.png.dcf69a0af19bd7c2e7a6ed1a3183394e.png

    Só pra garantir, verificamos o tipo de arquivo com o comando file:

    Untitled_(9).thumb.png.190cc532a25b762d0468522c582883fa.png

    Ao listar os arquivos com dir /r, é possível ver a existência de um ADS chamado Zone.Identifier:

    Untitled_(10).thumb.png.f5eb5537deb0f9018b8e93522b989745.png

    Verificando seu conteúdo conseguimos extrair a informação de onde essa imagem foi baixada. Legal né?

    Untitled_(11).thumb.png.73ece2e0ed78f2970a09c0680ba79ee6.png

    Ocultando binários no fluxo de dados

    Com esse recurso podemos esconder qualquer tipo de dado usando o ADS, então que tal começarmos escondendo o binário da calculadora? Analise:

    Untitled_(12).thumb.png.c6e27468bd29cd17110a2207bc9ee1f8.png

    Utilizando do wmic vamos executar o binário oculto.

    A ferramenta Windows Management Instrumentation Command-line (WMIC) é uma interface de script e linha de comando que simplifica o uso do Windows Management Instrumentation (WMI) e dos sistemas gerenciados através do WMI. Embora no site da Microsoft exista um aviso informando que esse recurso foi preterido a partir do Windows 10 versão 21H1, sendo substituído pelo utilitário Windows PowerShell para WMI, ele continua presente em versões mais atuais do sistema. Vamos usá-lo:

    Mágicaaaaaa! 🪄

    Relevância Forense 

    Do ponto de vista forense, os fluxos de dados alternativos do NTFS têm implicações graves para a anti-forense, uma vez que invasores podem ocultar arquivos incriminadores ou cargas maliciosas por meio de fluxos de dados ocultos em outros arquivos além da possibilidade de utilizar dessa técnica para exfiltração de dados. Demonstrarei agora como é feito o processo de identificação.

    Identificação

    Como mencionado no prefácio, essa técnica de esconder dados usando ADS já é bem manjada, de modo que o Windows Defender e vários antivírus já conseguem fazer esse mapeamento. Além disso,  um administrador de sistemas ou um analista forense poderiam facilmente achar esses arquivos usando simples linhas de comando. Por exemplo:

    Untitled_(13).thumb.png.3ad5ff68918151e180a2907367e7f36b.png

    Explicação da sintaxe

    • % implementa um foreach
    • ? coloca uma condição where
    • gi forma curta de Get-Item
    • gci forma curta Get-Childitem
    • ne Not Equal (Não é Igual)

    Lapidando a técnica

    E se eu te falar que existe uma forma de lapidar essa técnica dificultando sua identificação, com o uso de nomes reservados no Windows? 🙂

    Alguns nomes de uso reservado no Windows são: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LP6, LPT7, LPT8 e LPT9.

    Vamos olhar o que acontece quando tentamos criar qualquer tipo de arquivo, usando algum desses nomes reservados:

    Untitled_(14).thumb.png.84a74b4ef467a0bf53517471e8e5ae51.png

    O arquivo não é criado. 😟

    Pulo do 🐈 

    Existe uma forma de realizar o bypass da verificação de nomes reservados. Utilizando os prefixos "\\?\" ou "\\.\"  é possível informar às APIs do Windows para desabilitar toda a análise de cadeia de caracteres enviado a cadeia que a segue diretamente para o sistema de arquivo possibilitando dessa forma criar arquivos com esses nomes.

    Demonstração

    Untitled_(16).thumb.png.fe90f45a89dcf9f0720a70e90354c635.png

    Opa, opa, olha só, conseguimos criar o arquivo.

    Agora vamos analisar o que acontece quando colocamos um fluxo de dados dentro de um arquivo com nome reservado.

    Untitled_(17).thumb.png.243ed535578eb683c7a22f4f1a99c374.png

    Espera ai, cadê o ADS do arquivo COM.TXT?

    sumiu-meme.gif.d2073f8df4b3a09947e773964d5e24f9.gif

    Esse é o pulo do gato, o Windows não consegue mais detectar o ADS do arquivo, apenas quem criou o arquivo e sabe o nome pode ver/executar seu conteúdo.

    Untitled_(18).thumb.png.2739b1f67b7d7ca8585993574dc328c8.png

    Olha o que acontece quando tentamos buscar por esse arquivo usando os comandos demonstrados anteriormente:

    Untitled_(19).thumb.png.cfba9520c9da561f0096979a1f37d57d.png

    Observação

    Existe uma única solução chamada LADS que consegue identificar o fluxo de arquivo em nomes reservados, no entanto essa ferramenta não recebe mais atualização desde 2015.

    Untitled_(20).thumb.png.b0058805133c4d0426c43e88e951ea2a.png

    Referências


    • Curtir 1
    • l33t 1

    Feedback do Usuário

    Participe da conversa

    Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.
    Nota: Sua postagem exigirá aprovação do moderador antes de ficar visível.

    Visitante

    • Isso não será mostrado para outros usuários.
    • Adicionar um análise...

      ×   Você colou conteúdo com formatação.   Remover formatação

        Apenas 75 emojis são permitidos.

      ×   Seu link foi automaticamente incorporado.   Mostrar como link

      ×   Seu conteúdo anterior foi restaurado.   Limpar o editor

      ×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.


×
×
  • Criar Novo...