quinta-feira, 3 de junho de 2010

Histograma

O uso da linha do tempo para auxílio nas investigações de malware e invasões já está bastante disseminado e conhecido. Em resumo, nessa técnica pegamos os MAC timestamps (atributos de data/hora que indicam quando o arquivo foi criado, modificado pela última vez ou acessado pela última vez) e os ordenamos. Em geral, dado que temos uma idéia de quando aconteceu o incidente, podemos filtrar o conteúdo da linha do tempo de examinar a sequência de passos que pode ter sido usada na invasão ou infecção pelo malware.

Tudo bem até aqui ?

Acredito que sim, a menos que o investigador não tenha a menor idéia de quando pode ter sido o início do ataque/incidente. Analisar uma linha do tempo sem limitar as informações pode ser um processo penoso e até improdutivo. Outro ponto que complica, nesse sentido da quantidade de dados, é que a tendência atual é utilizar várias fontes de dados que contém data/hora e alinhar em uma única linha do tempo. Isso é ainda mais útil porque ajuda a perceber claramente a relação entre as ações do atacante (ou do malware), correlacionando melhor os vestígios encontrados. Nesse caso, logicamente temos muito mais informações para lidar e, sem a idéia de quando pode ter sido o início (chamamos de T-0 ou Time-0), a análise pode ficar comprometida.

É aí que entra uma outra técnica de análise: o histograma.

Um histograma é um gráfico que ilustra a quantidade de ocorrências em uma determinada série, ou unidade de tempo. Não faço a menor idéia se a definição correta e formal de histograma é exatamente essa, e que me perdoem os estatísticos se os deixei irado com essa explicação simplória, mas no fim das contas um histograma é exatamente isso.

No nosso caso, se fizermos um histograma das distribuições das MAC times, certamente haverá uma concentração maior de registros nas imediações do ataque, ou então notaremos um salto na quantidade quando a infecção estava no seu início. Isso porque temos, na prática, um certo padrão de uso nos computadores e servidores no que diz respeito aos arquivos, mas quando passamos por um ataque bem sucedido ou por uma infecção por malware, invarialvelmente esse padrão de uso vai se modificar. Vários arquivos serão atualizados ou acessados em um curto período de tempo, e isso salta aos olhos na análise via histograma.

Na prática, o histograma fica parecido com isso:
| #
| #
| #
| # #
| # # # # #
| # # # # # # #
-------------------------------------------------------------

Ou então, em um histograma vertical:

|
|##
|
|#
|
|###
|
|######
|
|##
|
|##
|
|#

Não importa se vertical ou horizontal, ambos demonstram visivelmente que há um período onde o uso dos arquivos (seja na criação, modificação ou acesso) foi muito maior. Nesse período devemos concentrar os esforços e avaliações mais detalhadas na linha do tempo.

A fim de facilitar a criação do histograma, eu criei uma rotina em Perl que dá conta do recado. O script fshistog2.pl recebe como parâmetro de entrada um arquivo que é a saída do utilitário fls, do The Sleuth Kit, chamado normalmente de bodyfile. Esse arquivo é a primeira etapa da criação de uma linha do tempo usando o TSK. Logicamente, deve-se gerar o bodyfile para todo o sistema de arquivo da mídia sendo investigada.

Além desse parâmetro, o script tem a possibilidade de usar apenas uma das MAC times (apenas a data de criação, ou ultima modificação, etc), permite agregar (contar) as MAC times por ano, mês, dia, hora e minuto e, por fim, também pode-se usar todo o arquivo de bodyfile ou filtrar por datas. Ao final, o script gera em modo texto um histograma vertical.

Inseri esse script no meu projeto Byte Investigator, que está disponível para download no SourceForge. O link está aqui mesmo no blog, na seção de links interessantes.

Aguardo feedback nos comentários.

Até o próximo post !

Nenhum comentário: