Windows Wednesday: Prefetch Files

Para o post de hoje, vou tirar uns momentos para discutir o Prefetch do Windows. Mas primeiro, um plug rápido para algum treinamento:

Estou me preparando para uma próxima aula FOR508 com Chad Tillbury no SANS Security East 2017. Enquanto está chegando muito perto, estamos ansiosos por uma classe incrível e encontrar a próxima equipe de forenses letais! Se você estiver assistindo, por favor, me deixe uma fila antes do tempo. Se você quiser comparecer, acredito que a inscrição ainda está aberta! Também durante o evento, na quarta-feira, 11 de janeiro, estarei dando uma palestra SANS@Night chamada Zero In sobre os artefatos que interessam. A preparação para essa palestra foi a inspiração para o post de hoje, pois o prefetch certamente receberá uma menção.

Eu já disse isso antes e vou dizer novamente – muitos artefatos que amamos no mundo DFIR são na verdade subprodutos do sistema operacional tentando tornar a vida mais fácil e/ou mais eficiente para o usuário ou desenvolvedores. Na minha opinião, o prefetch também se encaixa nesta categoria.

O prefetch existe desde o Windows XP. Ele foi originalmente projetado para ajudar a acelerar o boot do sistema e o lançamento de aplicativos. O objetivo do prefetch é analisar e registrar o comportamento da inicialização de aplicativos após a execução para tornar as futuras startups mais eficientes. Estes dados são gravados por até 10 segundos após a inicialização do aplicativo. O comportamento da aplicação gravado é salvo em um arquivo trace – o que chamamos de arquivo prefetch – no caminho C:\Windows\Prefetch.

Prefetch Files

Como mencionado acima, arquivos prefetch são encontrados no diretório estático C:\Windows\Prefetch. Os ficheiros Prefetch têm uma extensão .pf e seguem uma convenção de nomenclatura padrão:

<APPLICATION NAME IN ALL CAPS>-<EIGHT CHARACTER HASH OF APPLICATION LOCATION>.pf

Os ficheiros Prefetch contêm os seguintes metadados:

  • O nome do executável correspondente
  • O número de vezes que o executável foi executado
  • O tamanho do ficheiro de pré-instalação
  • Os ficheiros e directórios que foram referenciados durante o arranque da aplicação (é isto que o Windows quer rastrear)
  • Informações relacionadas com o volume em que o executável está, incluindo o caminho do volume e o número de série.

Aqui está uma amostra de alguns arquivos de pré-configuração do meu host de testes:

Pasta de Prefetch de um host de testes do Windows 10

Nota que tenho várias aplicações com o mesmo nome, mas com uma localização diferente. Isso é evidência pelos hashes um pouco semelhantes, e em muitos casos de aplicações, é provavelmente indicativo de uma atualização de software ou mudança de estrutura de pastas.

EDIT: Graças a Eric Zimmerman por me lembrar que os nomes dos arquivos do prefetch também dependem de argumentos de linha de comando e sensibilidade a casos, apesar da falta de sensibilidade a casos no arquivo trace. Hexacorn cobre o algoritmo de hashing em detalhes aqui, e eu recomendaria que você verificasse se você precisa fazer este nível de análise de prefetch.

Parsing the Prefetch File

A estrutura para arquivos de prefetch é na verdade bastante conhecida e há múltiplas opções de análise disponíveis. Aqui estão algumas opções:

  • Se piorar, podemos usar strings para obter algumas informações sobre o prefetch trace information. Aqui está um exemplo de enumeração de strings Unicode de um executável suspeito:

Tela de strings de um arquivo de prefetch para A.EXE
  • Eric Zimmerman mantém sua ferramenta PECmd, atualmente na versão 0.7.2.0. Ele pode ser baixado aqui.
  • log2timeline/Plaso contém um analisador de prefetch, e pode colocar dados chave dos arquivos de prefetch em um formato de linha de tempo.
  • TZWorks também publica um analisador de prefetch realmente útil e prático pf. Você pode ver mais informações sobre ele aqui. Aqui está um exemplo da saída da ferramenta TZWorks’ pf:

Screenshot da saída do pf do TZWorks para um arquivo de prefetch

I’ll address some of the forensic artifacts within this output in the next section, mas repare como agora obtemos informações contextuais, tempos de execução e carimbos temporais importantes.

Outra nota importante sobre a análise de arquivos de pré-busca é que novas versões de pré-busca, nomeadamente Windows 10, usam um novo formato de compressão que não funciona bem com analisadores para versões anteriores. Certifique-se que a sua ferramenta pode lidar com artefatos do Windows 10 – ou vá procurar um novo script – antes de assumir que os arquivos podem estar corrompidos.

Como usar no DFIR

DFIR os analistas precisam estar atentos ao prefetch porque ele contém um monte de valor forense. Aqui estão algumas maneiras que usei o prefetch no passado:

  • A contagem de execução pode ser uma importante indicação de quanto tempo o malware pode estar em um sistema ou com que freqüência ele é/fora usado. Se você só viu evidências de duas execuções de malware, mas o prefetch mostra dezenas, então há mais algumas escavações a serem feitas.
  • Os timestamps do arquivo do prefetch também nos dizem volumes. Pense sobre o seguinte: O que cria um arquivo de prefetch, e o que modifica um arquivo de prefetch? Transforme essas ações em carimbos de data e hora, e podemos determinar o seguinte: O timestamp de criação de um arquivo de prefetch é a primeira vez que a aplicação foi executada, e a última vez que um arquivo de prefetch foi modificado é a última vez que ele foi executado. Vamos ver novamente a captura de tela de cima:

Screenshot da saída do pf do TZWorks para um arquivo de prefetch

Note nosso último tempo de execução (2012-04-04 00:43:06.137) e a hora modificada: (2012–04–04 00:43:07). Agora, podemos esperar muito rapidamente através de arquivos Prefetch, sem precisar analisar, e encontrar nossos últimos tempos de execução.

Você pode utilizar os timestamps em outros meios também. Por exemplo, considere a visualização dos timestamps de criação de todos os arquivos a partir da pasta prefetch. Se tivermos quaisquer prazos de interesse, ou ficheiros de prefetch para malware conhecido, procure outros ficheiros com timestamps numa proximidade temporal próxima.

  • Ao analisar ficheiros de prefetch, especialmente os relacionados com malware conhecido, dê uma vista de olhos aos ficheiros mapeados ou carregados. Você pode encontrar indicadores adicionais.
  • Adicionalmente, examine os directórios mapeados a partir do ficheiro de pré-infracção. Você pode encontrar evidências de uma unidade externa ou partição anterior.
  • Você vê vários arquivos de pré-busca com hashes diferentes no final do arquivo? Lembre-se, esse hash é derivado do local – você pode ter malware em vários lugares.
  • Por último, não se esqueça que o Windows monitora a inicialização do aplicativo por até 10 segundos. Então, embora possamos confiar em nossos carimbos de tempo do arquivo prefetch como indicadores bastante fortes, devemos considerar o atraso máximo de dez segundos.

Ir além do prefetch

No Windows Vista e além, a Microsoft continuou a expandir o prefetch com recursos adicionais como SuperFetch, ReadyBoost, ReadyBoot, e ReadyDrive. Estarei me aprofundando nestes recursos em um post posterior.

Até amanhã, Feliz Forense!

Deixe uma resposta

O seu endereço de email não será publicado.