如何在Linux中转储物理内存?


22

如何在Linux中创建物理内存(RAM)的转储?

有什么软件可用于此目的?

我已经读过,不应该写入本地磁盘,而应该通过网络发送数据。有人知道这里的特点吗?以太网是否可以用于此目的,或者是否有任何命令可以最大程度地减少发送到磁盘之前的缓存量?

Windows上的WinHex具有以下功能:

在此处输入图片说明

我正在Linux上寻找类似的东西。

Answers:


22

这是有关如何转储Linux内存的eHow页面

Linux为此提供了两个虚拟设备“ /dev/mem”和“ /dev/kmem”,尽管出于安全原因,许多发行版默认禁用它们。“ /dev/mem”链接到物理系统内存,而“ /dev/kmem”映射到整个虚拟内存空间,包括任何交换。两种设备均作为常规文件工作,并且可以与dd或任何其他文件操作工具一起使用。

这将导致“ 内存映像工具”上的“ ForensicsWiki”页面上的“ Linux / Unix”部分

  1. dd 在Unix系统上,程序dd可用于使用设备文件(例如/ dev / mem和/ dev / kmem)捕获物理内存的内容。在最近的Linux内核中,/ dev / kmem不再可用。在最新的内核中,/ dev / mem还有其他限制。并且在最近的情况下,默认情况下,/ dev / mem也不再可用。在整个2.6内核系列中,趋势是减少通过伪设备文件对内存的直接访问。例如,请参阅此修补程序随附的消息:http : //lwn.net/Articles/267427/。在Red Hat系统(以及派生的发行版,如CentOS)上,可以加载崩溃驱动程序以创建用于内存访问的伪设备(“ modprobe crash”)。
  2. 二次查看 这种商用内存分析产品具有从Linux系统本地获取内存的功能,或者可以通过DMA或通过网络从远程目标获取内存。它带有预编译的物理内存访问驱动程序(PMAD)模块,用于来自最常用Linux发行版的数百个内核。
  3. Idetect(Linux)
  4. fmem(Linux)
    fmem是内核模块,它创建设备/ dev / fmem,类似于/ dev / mem,但没有限制。可以使用dd或其他工具复制此设备(物理RAM)。适用于2.6 Linux内核。在GNU GPL下。
  5. 金鱼
    金鱼是Mac OS X的实时取证工具,仅供执法人员使用。其主要目的是提供一个易于使用的接口,以通过Firewire连接转储目标计算机的系统RAM。然后,它将自动提取当前用户的登录密码以及任何可用的打开的AOL Instant Messenger对话片段。执法部门可以联系goldfish.ae获取下载信息。

另请参见:Linux内存分析。大多数Linux上
也普遍提供GDB
而且,始终建议您避免覆盖未知的内存,否则可能导致系统损坏。


1
有人在最近的Ubuntu系统上尝试过吗?

1
我的debian系统上没有/ dev / mem或/ dev / kmem。
罗布

我只是在CentOS 7.x VM上做到了。
slm

4

波动性似乎运行良好,并且与Windows和Linux兼容。

从他们的网站:

Volatility支持所有主要的32位和64位Windows版本和Service Pack(包括XP,2003 Server,Vista,Server 2008,Server 2008 R2和Seven)的内存转储。无论您的内存转储是原始格式,Microsoft故障转储,休眠文件还是虚拟机快照,Volatility都可以使用它。我们现在还支持原始或LiME格式的Linux内存转储,并包括35个以上的插件,用于分析2.6.11-3.5.x以及Debian,Ubuntu,OpenSuSE,Fedora,CentOS和发行版中的32位和64位Linux内核。曼德拉(Mandrake)。我们支持38位版本的Mac OSX内存转储(从32位和64位)从10.5到10.8.3 Mountain Lion。还支持带有ARM处理器的Android手机。



0

作为确认,我能够使用以下方法转储CentOS 7.x VM的内存:

$ 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  |U.@.b...........|
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......|

鉴于这55aah出现在c0000h-effffh范围内,很可能是PNP扩展标头:

参考:BIOS引导规范

3.3具有PnP扩展接头的设备

所有带有选件ROM的IPL设备必须包含一个有效的选件ROM头,该头位于系统内存地址C0000h和EFFFFh之间,边界为2k,以55AAh开头。仅当设备具有PnP扩展标头时,才可以控制其引导。扩展头的地址位于标准选项ROM头中,偏移量为+ 1Ah,其中包含用于配置设备的重要信息。它还包含指向设备选件ROM(BCV或BEV)中的代码的指针,BIOS将调用该选件从设备引导。有关PnP扩展标题的结构,请参见附录A。具有PnP扩展头的IPL设备有两种引导方式。它必须包含BCV或BEV。

参考文献

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.