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

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

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

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

我读到过,不应该将数据写入本地磁盘,而应该通过网络发送数据。有人知道这里面有什么特别之处吗?以太网可以用于此目的吗?或者是否有任何命令可以在发送到磁盘之前将缓存量降至最低?

Windows 上的 WinHex 具有这样的功能:

在此处输入图片描述

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

答案1

以下是 eHow 页面如何转储 Linux 内存

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

这导致 ForensicsWiki 页面内存映像工具Linux/Unix 部分

  1. 在 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. 金鱼
    Goldfish 是一款 Mac OS X 实时取证工具,仅供执法部门使用。其主要目的是提供一个易于使用的界面,通过 Firewire 连接转储目标机器的系统 RAM。然后,它会自动提取当前用户登录密码和任何可用的 AOL Instant Messenger 对话片段。执法部门可以联系 goldfish.ae 获取下载信息。

也可以看看:Linux内存分析
还有地理数据库在大多数 Linux 上都很常见。
并且,我们始终建议您避免写入未知内存 — — 这可能会导致系统损坏。

答案2

挥发性似乎运行良好并且兼容 Windows 和 Linux。

来自他们的网站:

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

答案3

Second Look 是在 Linux 中转储内存的一种好方法,而且简单:http://secondlookforensics.com/

您还可以尝试最近发布的一个名为 LiME 的内核模块:http://code.google.com/p/lime-forensics/

答案4

作为确认,我能够使用此方法转储我的 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  |[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......|

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

参考:BIOS 启动规范

3.3 带有 PnP 扩展接头的设备

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

参考

相关内容