Live analysis: Coletando a memória RAM em ambientes GNU/Linux

Propaganda
Live analysis: Coletando a memória RAM em ambientes GNU/Linux
A coleta da memória RAM, para a realização de uma live analysis, sempre foi uma tarefa
fácil em ambientes Linux, visto que todo o seu conteúdo podia ser acessado através do arquivo
/dev/mem. Contudo, as distribuições atuais estão sendo liberadas com uma diretiva que limita, a um
certo tamanho (geralmente 1MB ou 1GB), o acesso à memória através deste arquivo.
O comando abaixo comprova tal restrição:
$ sudo dcfldd count=3G if=/dev/mem of=/home/chir0n/memoria.img
dcfldd:/dev/mem: Operation not permitted
32+0 records in
32+0 records out
$ ls -lh .
-rw-r--r-- 1 root root 1.0M 2010-06-05 01:37 memoria.img
Através do comando abaixo pode-se confirmar que a opção que restringe o acesso à
memória através do arquivo /dev/mem está ativada:
$ sudo cat /boot/config-* | grep CONFIG_STRICT_DEVMEM
CONFIG_STRICT_DEVMEM=y
CONFIG_STRICT_DEVMEM=y
Uma solução para este problema seria desabilitar a opção acima no arquivo
/usr/src/linux/.config e recompilar o kernel, contudo, esta seria uma tarefa árdua e a cada
atualização do kernel seria necessário refazê-la.
Para a nossa sorte foi desenvolvido o módulo fmem que resgata a facilidade citada acima ao
criar o arquivo /dev/fmem que, por sua vez, pode ser utilizado para realizar o dump da memória
RAM em sistemas GNU/Linux.
A fim de utilizá-lo, primeiramente deve-se realizar o download do código fonte do módulo
através do link http://hysteria.sk/~niekt0/foriana/, descompactá-lo e após instalá-lo com os
comandos abaixo:
$ make
$ sudo ./run.sh
O resultado para o comando acima, no meu caso, foi:
Module: insmod fmem.ko a1=0xffffffff81040ed0 : OK
Device: /dev/fmem
----Memory areas: ----reg00: base=0x000000000 ( 0MB), size= 2048MB, count=1: write-back
reg01: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back
----------------------!!! Don't forget add "count=" to dd !!!
É importante destacar que é preciso que os headers do kernel estejam instalados para que o
módulo possa ser compilado. Uma alternativa é compilar o módulo fmem (com o comando make)
em um sistema com o mesmo kernel do sistema em que as evidências estão sendo coletadas e
apenas carregar o módulo nesta estação (com o comando run.sh).
Após, é possível criar a imagem da memória RAM sem limites de tamanho, porém, como
alerta a mensagem acima, é necessário utilizar o parâmetro “count” no dd (ou derivado) para
especificar o tamanho da memória RAM. Sem este parâmetro o software pode entrar em um loop
eterno:
$ sudo dcfldd count=3072 bs=1M if=/dev/fmem of=/home/chir0n/memoria.img
Nota: A quantidade de memória RAM a ser lida á calculada da seguinte forma: quantidade de
blocos indicada por “count” e tamanho do bloco indicado por “bs”. No exemplo bs=1M x 3072
blocos = 3072MB = 3GB. A dica é utilizar bs=1M para facilitar o cálculo. Se não for utilizado “bs”
será utilizado o tamanho do bloco padrão.
NO FDTK 3.0 o módulo fmem já vem instalado por padrão, basta apenas executar o comando acima
para realizar a imagem da memória.
Homepage: http://hysteria.sk/~niekt0/foriana/
Autor: Fábio J. Bertinatto
Data: 05/06/2010
Adaptado por Evandro Della Vecchia em 13/09/2010.
Referências:
[1] FILHO, ERIBERTO MOTA. Fazendo o dump de memória via /dev/fmem.
http://www.eriberto.pro.br/blog/?p=279
[2] http://hysteria.sk/~niekt0/foriana/
[3] http://www.forensicswiki.org/wiki/Tools:Memory_Imaging
Download