Como despejo a memória física no Linux?

22

Como alguém criaria um despejo de memória física (RAM) no Linux?

Que software, se houver algum, está disponível para esse fim?

Eu li que não se deve gravar em um disco local, mas sim enviar os dados pela rede. Alguém conhece as peculiaridades aqui? A Ethernet funcionaria para esse fim ou existem comandos que minimizem a quantidade de cache antes de enviar para o disco?

O WinHex no Windows tem essa funcionalidade:

insira a descrição da imagem aqui

Estou procurando algo semelhante no Linux.

Anônimo
fonte

Respostas:

22

Aqui está uma página eHow em Como despejar memória Linux

O Linux fornece dois dispositivos virtuais para esse fim, ' /dev/mem' e ' /dev/kmem', embora muitas distribuições os desativem por padrão por razões de segurança. ' /dev/mem' está vinculado à memória do sistema físico, enquanto ' /dev/kmem' é mapeado para todo o espaço de memória virtual, incluindo qualquer troca. Ambos os dispositivos funcionam como arquivos regulares e podem ser usados ​​com o dd ou qualquer outra ferramenta de manipulação de arquivos.

Isso leva à página ForensicsWiki em Memory Imaging Tools com a seção Linux / Unix ,

  1. dd Nos sistemas Unix, o programa dd pode ser usado para capturar o conteúdo da memória física usando um arquivo de dispositivo (por exemplo, / dev / mem e / dev / kmem). Nos kernels recentes do Linux, / dev / kmem não está mais disponível. Nos kernels ainda mais recentes, / dev / mem tem restrições adicionais. E no mais recente, / dev / mem também não está mais disponível por padrão. Em toda a série 2.6 do kernel, a tendência tem sido reduzir o acesso direto à memória via arquivos de pseudo-dispositivo. Veja, por exemplo, a mensagem que acompanha este patch: http://lwn.net/Articles/267427/ . Nos sistemas Red Hat (e distribuições derivadas, como o CentOS), o driver de falha pode ser carregado para criar um pseudo-dispositivo para acesso à memória ("falha no modprobe").
  2. Segunda análise Este produto de análise de memória comercial tem a capacidade de adquirir memória de sistemas Linux, localmente ou de um destino remoto via DMA ou pela rede. Ele vem com módulos PMAD (Physical Memory Access Driver) pré-compilados para centenas de kernels das distribuições Linux mais usadas.
  3. Identificação (Linux)
  4. fmem (Linux)
    fmem é um módulo do kernel, que cria o dispositivo / dev / fmem, semelhante ao / dev / mem, mas sem limitações. Este dispositivo (RAM física) pode ser copiado usando o dd ou outra ferramenta. Funciona em kernels 2.6 do Linux. Sob GNU GPL.
  5. Goldfish
    Goldfish é uma ferramenta forense ao vivo do Mac OS X para uso exclusivo da polícia. Seu principal objetivo é fornecer uma interface fácil de usar para despejar a RAM do sistema de uma máquina de destino por meio de uma conexão Firewire. Em seguida, extrai automaticamente a senha de login do usuário atual e quaisquer fragmentos de conversa abertos do AOL Instant Messenger que possam estar disponíveis. A aplicação da lei pode entrar em contato com goldfish.ae para obter informações sobre download.

Veja também: Análise de memória do Linux .
Também há GDB comumente disponível na maioria dos Linux.
Além disso, é sempre recomendável evitar a gravação em memória desconhecida - isso pode levar à corrupção do sistema.

nik
fonte
1
Alguém já tentou isso em um sistema recente do Ubuntu?
1
no / dev / mem ou / dev / kmem no meu sistema debian.
Rob
Acabei de fazer isso na minha VM CentOS 7.x.
SLM
4

A volatilidade parece estar funcionando bem e é compatível com Windows e Linux.

No site deles:

A volatilidade suporta despejos de memória de todas as principais versões e service packs de 32 e 64 bits do Windows, incluindo XP, 2003 Server, Vista, Server 2008, Server 2008 R2 e Seven. Esteja o despejo de memória em formato bruto, um despejo de memória da Microsoft, arquivo de hibernação ou instantâneo de máquina virtual, o Volatility poderá trabalhar com ele. Agora também suportamos despejos de memória Linux no formato bruto ou LiME e incluímos mais de 35 plugins para analisar kernels Linux de 32 e 64 bits de 2.6.11 a 3.5.xe distribuições como Debian, Ubuntu, OpenSuSE, Fedora, CentOS e Mandrágora. Suportamos 38 versões de despejos de memória do Mac OSX de 10.5 a 10.8.3, Mountain Lion, de 32 e 64 bits. Telefones Android com processadores ARM também são suportados.

Patel95
fonte
0

Como confirmação, consegui despejar a memória da minha VM do CentOS 7.x usando este método:

$ head /dev/mem | hexdump -C
00000000  53 ff 00 f0 53 ff 00 f0  53 ff 00 f0 53 ff 00 f0  |S...S...S...S...|
00000010  53 ff 00 f0 53 ff 00 f0  cc e9 00 f0 53 ff 00 f0  |S...S.......S...|
00000020  a5 fe 00 f0 87 e9 00 f0  53 ff 00 f0 46 e7 00 f0  |........S...F...|
00000030  46 e7 00 f0 46 e7 00 f0  57 ef 00 f0 53 ff 00 f0  |F...F...W...S...|
00000040  22 00 00 c0 4d f8 00 f0  41 f8 00 f0 fe e3 00 f0  |"...M...A.......|
00000050  39 e7 00 f0 59 f8 00 f0  2e e8 00 f0 d4 ef 00 f0  |9...Y...........|
00000060  a4 f0 00 f0 f2 e6 00 f0  6e fe 00 f0 53 ff 00 f0  |........n...S...|
00000070  ed ef 00 f0 53 ff 00 f0  c7 ef 00 f0 ed 57 00 c0  |....S........W..|
00000080  53 ff 00 f0 53 ff 00 f0  53 ff 00 f0 53 ff 00 f0  |S...S...S...S...|
*
00000100  59 ec 00 f0 3d 00 c0 9f  53 ff 00 f0 ed 69 00 c0  |Y...=...S....i..|
00000110  53 ff 00 f0 53 ff 00 f0  53 ff 00 f0 53 ff 00 f0  |S...S...S...S...|
*
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000afea0  00 00 00 00 00 00 00 00  aa aa aa 00 aa aa aa 00  |................|
000afeb0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
...
...
000b0000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
000c0000  55 aa 40 e9 62 0a 00 00  00 00 00 00 00 00 00 00  |[email protected]...........|
000c0010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 49 42  |..............IB|
000c0020  4d 00 9c 80 fc 0f 75 06  e8 4f 01 e9 bc 00 80 fc  |M.....u..O......|

Dado esse 55aah ocorrendo na faixa de c0000h-effffh, é provável que o PNP Expansion Header:

Referência: especificação de inicialização do BIOS

3.3 Dispositivos com cabeçalhos de expansão PnP

Todos os dispositivos IPL com ROMs de opção devem conter um cabeçalho de ROM de opção válido que resida entre os endereços de memória do sistema C0000h e EFFFFh em um limite de 2k e começa com 55AAh. A inicialização de um dispositivo só pode ser controlada se ele tiver um cabeçalho de expansão PnP. O cabeçalho de expansão, cujo endereço reside no cabeçalho ROM da opção padrão no deslocamento + 1Ah, contém informações importantes usadas para configurar o dispositivo. Ele também contém indicadores para codificar na opção ROM do dispositivo (BCV ou BEV) que o BIOS chamará para inicializar a partir do dispositivo. Veja o Apêndice A para a estrutura do cabeçalho de expansão PnP. Há duas maneiras de inicializar um dispositivo IPL com um cabeçalho de expansão PnP. Ele deve conter um BCV ou um BEV.

Referências

slm
fonte