Em forenses computacionais, muitas vezes, precisamos realizar um dump de memória. Isso sempre pode ser feito com o comando dd. Veja:
# dd if=/dev/mem of=memoria.dump
No entanto, as pessoas têm reclamado que, ultimamente, o seguinte erro tem aparecido:
dd: lendo "/dev/mem": Operação não permitida
ou
dd: reading `/dev/mem': Operation not permitted
Este foi o fato que gerou este post.
O erro mostrado ocorre porque, há algum tempo, o kernel 2.6 tem vindo com a opção CONFIG_STRICT_DEVMEM habilitada por default. Essa opção protege a memória contra acessos que não ocorram via dispositivos específicos. Para ver isso no Debian, por exemplo, basta executar o comando a seguir:
# cat /boot/config-* | grep CONFIG_STRICT_DEVMEM
Uma solução é utilizar o módulo fmem, disponível em http://hysteria.sk/~niekt0/foriana/. Ele é de fácil compilação e fornece os dados desejados. É necessário ter o cuidado de especificar o limite da memória para que ele não entre em um loop infinito. Exemplo:
# dd if=/dev/fmem of=memoria.dump bs=1M count=4096
O valor em count deverá ser trocado pela quantidade de memória em MB. No meu caso, tenho 4 GB = 4096 MB.
Muito legal seus blogs e wiki que estarei acompanhando desde agora. Minha questão é relacionando o forense computacional, já que este post tem a tag forense computacional.
Em que momento este procedimento poderia ser realizado já que um dos princípios da análise forense é a máxima preservação? Este método de análise (compilação do módulo fmen) não estaria sendo hostil e comprometendo a veracidade dos fatos?
Saudações.
Thiago,
A compilação deve se dar em uma outra máquina que contenha a mesma versão e distribuição. Depois, você transporta o módulo, já compilado para a máquina alvo.
A aquisição de memória deve ser o primeiro ato de todos, para que os comandos seguintes, como os de verificação de situação da rede, não alterem o estado de memória. O fmem irá alterar um mínimo de estado de memória, pois precisará ser carregado na mesma para funcionar. Mas não tem outro jeito.
[]s