我知道要在Windows中转储内存映像。(例如,dumpit)但是我不知道如何在Linux中转储内存映像。
我想在Linux中以及通过ssh连接或其他方式从Linux到Linux获取内存映像。
如何获得Linux?
我知道要在Windows中转储内存映像。(例如,dumpit)但是我不知道如何在Linux中转储内存映像。
我想在Linux中以及通过ssh连接或其他方式从Linux到Linux获取内存映像。
如何获得Linux?
Answers:
从法医的Wiki:工具:内存映像
摘抄
的Linux
/ dev / mem
在较旧的Linux系统上,程序dd可用于从设备文件/ dev / mem中读取物理内存的内容。但是,在最新的Linux系统上,/ dev / mem仅提供对有限地址范围的访问,而不是系统的完整物理内存。在其他系统上,它可能根本不可用。在Linux内核的2.6系列中,趋势是减少通过伪设备文件对内存的直接访问。例如,请参阅此修补程序随附的消息:http : //lwn.net/Articles/267427/。
/ dev /崩溃
在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系统上使用原始或修改后的驱动程序安全地转储内存。
fmemfmem-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内核之后您将无法再使用它。
$ ./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
*资料来源: 如何将所有物理内存转储到文件中?
为了分析易失性内存,也有此页面,标题为:Linux Memory Analysis。该视频教程中有一个详尽的示例,展示了如何使用LiME和Volatility收集内存转储,然后对其进行分析,并从内存转储中提取用户的Bash历史记录。
还有一个名为“ U&L的问答”:如何转储完整的系统内存?其中包含其他示例和信息。
查看rekall框架,他们有一个linpmem应用程序用于此目的:http : //www.rekall-forensic.com/docs/Tools/index.html
在SANS人Rekall内存取证的cheatsheet有如何转储linux下的内存过一个例子:
# ./linpmem_2.0.1 -o linux.aff4