如何在 Linux 中创建物理内存(RAM)的转储?
有什么软件可以用于此目的吗?
我读到过,不应该将数据写入本地磁盘,而应该通过网络发送数据。有人知道这里面有什么特别之处吗?以太网可以用于此目的吗?或者是否有任何命令可以在发送到磁盘之前将缓存量降至最低?
Windows 上的 WinHex 具有这样的功能:
我正在寻找 Linux 上类似的东西。
答案1
以下是 eHow 页面如何转储 Linux 内存
Linux 为此提供了两个虚拟设备,即“
/dev/mem
”和“/dev/kmem
”,但出于安全原因,许多发行版默认禁用它们。“/dev/mem
”链接到物理系统内存,而“/dev/kmem
”映射到整个虚拟内存空间,包括任何交换。这两个设备都作为常规文件工作,可以与 dd 或任何其他文件操作工具一起使用。
这导致 ForensicsWiki 页面内存映像工具与Linux/Unix 部分,
- 日 在 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”)。
- 再看 这款商业内存分析产品能够从 Linux 系统获取内存,无论是本地内存还是通过 DMA 或网络从远程目标获取内存。它附带了预编译的物理内存访问驱动程序 (PMAD) 模块,适用于最常用的 Linux 发行版中的数百个内核。
- Idetect(Linux)
- fmem(Linux)
fmem 是内核模块,它创建设备 /dev/fmem,类似于 /dev/mem,但没有限制。可以使用 dd 或其他工具复制此设备(物理 RAM)。适用于 2.6 Linux 内核。遵循 GNU GPL。- 金鱼
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。