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