如何从linux系统转储内存映像?

bak*_*kie 22 memory forensics dump

我知道在 Windows 中转储内存图像。(eg-dumpit) 但我不知道如何在 Linux 中转储内存映像。

我想在 Linux 中获取内存映像,并通过 ssh 连接或其他方式从 Linux 到 Linux。

我怎样才能进入 Linux?

slm*_*slm 30

来自 Forensic 的 Wiki:工具:内存成像

摘抄

Linux

/开发/内存

在较旧的 Linux 系统上,程序 dd 可用于从设备文件 /dev/mem读取物理内存的内容。然而,在最近的 Linux 系统上,/dev/mem 仅提供对有限地址范围的访问,而不是系统的完整物理内存。在其他系统上,它可能根本不可用。在整个 2.6 系列的 Linux 内核中,趋势是减少通过伪设备文件直接访问内存。例如,请参见此补丁附带的消息:http : //lwn.net/Articles/267427/

/开发/崩溃

在 Red Hat 系统(以及那些运行相关发行版,例如 Fedora 或 CentOS)上,可以加载崩溃驱动程序以创建伪设备 /dev/crash 用于原始物理内存访问(通过命令“modprobe crash”)。该模块也可以为其他 Linux 发行版编译,只需少量工作(例如,参见http://gleeda.blogspot.com/2009/08/devcrash-driver.html)。当崩溃驱动程序被修改、编译并加载到其他系统上时,由此产生的内存访问设备对于整个映像是不安全的。必须小心避免非 RAM 支持的地址。在 Linux 上,/proc/iomem 将正确的地址范围暴露给映像,并标有“系统 RAM”。

第二眼:Linux 内存取证

这个商业内存取证产品附带了崩溃驱动程序的修改版本和一个脚本,用于在任何给定的 Linux 系统上使用原始或修改后的驱动程序安全地转储内存。

fmem fmem - github 存储库

fmem 是创建设备 /dev/fmem 的内核模块,类似于 /dev/mem 但没有限制。可以使用 dd 或其他工具复制此设备(物理 RAM)。适用于 2.6 Linux 内核。在 GNU GPL 下。

LiME - Linux 内存提取器

Linux 内存提取器 (LiME) 是一个可加载内核模块 (LKM),它允许从 Linux 和基于 Linux 的设备(例如由 Android 驱动的设备)获取易失性内存。该工具支持将内存转储到设备的文件系统或通过网络。

我发现这个fmem正在使用的例子,这似乎是为了分析目的而转储内存的最简单方法/dev/mem,据我了解,在 2.6.x 内核之后你不能再使用了。

fmem 示例

$ ./run.sh
...
----Memory areas: -----
reg00: base=0x000000000 (    0MB), size= 1024MB, count=1: write-back
reg01: base=0x0c8800000 ( 3208MB), size=    2MB, count=1: write-combining
-----------------------
!!! Don't forget add "count=" to dd !!!


$ ls /dev/f*
/dev/fb0  /dev/fd0  /dev/fmem  /dev/full  /dev/fuse


$ sudo dd if=/dev/fmem of=/tmp/fmem_dump.dd bs=1MB count=10
10+0 records in
10+0 records out
10000000 bytes (10 MB) copied, 0.0331212 s, 302 MB/s
Run Code Online (Sandbox Code Playgroud)

*来源: 如何将所有物理内存转储到文件中?

LiME 示例

为了分析易失性内存,还有这个页面,标题为:Linux Memory Analysis。本视频教程中有一个完整的示例,展示了如何使用 LiME 和 Volatility 收集内存转储,然后对其进行分析,从内存转储中提取用户的 Bash 历史记录。

还有什么?

还有这个 U&L 问答题为:如何转储完整的系统内存?其中有其他示例和信息。