免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 各类编程 > 物理内存取证之文件与缓存分析(2)

物理内存取证之文件与缓存分析(2)

时间:2012-05-06 17:28来源:未知 整理:寂涯网络 点击:


dlls和EXEs所以被称为内存映射文件,是因为它们在内存中的数据都是来自磁盘上的 文件内容。对于内存映射文件而言,代码是不分页的。系统通过内核对象来标识一个内存映 射文件,当文件内容需要分页到磁盘时,内存映射文件会将内容拷贝会磁盘。既然正常操作 下不会该表代码内容,且它总是存在于磁盘原文件,故它在页文件的页数据交换中就显多余。 仅仅是单一进程内的特定二进制文件私有内容是分页的。
作为取证调查的一部分,acrord32.exe进程做了一个实验,使用两个不同的方法 获取进程内存映射。传统方法即使用volatility2.0和dlldump命令,第二种方式即使用内 核文件对象获取整个映射文件内容,表1给出了两者之间的区别.
表1.使用两种不同方式获取到的文件内容
(2)误归属的数据
在取证调查事件响应机制中,属性是至关重要的。尽管刚开始可能只是对发现存在缺陷 的主机感兴趣,但随后就会产生更多的补救措施。本文主要是探讨进程地址空间问题,显然 掌握进程漏洞是重要的一环。在此的honeynet工程解决方案中,Smithffifl9Volati 1 ityf的memdump 命令获取到了acrord32.exe进程的pid,并运行foremost工具重新构建pdfs,foremost工具 通过寻找一个特定的起始和结束分界符来重构文件。在此例中,它构建了7个pdf文件,前5 个文件只有400个字节大小,没有实际意义。最后两个文件分别为:
參 00599696.pdf ——占60124字节大小
參 00600328.pdf ——占607083字节大小
作者在00600328.pdf文件内发现了可疑内容,此文件显然归属于acrord32.exe,因为他们是从此进程上下文中获取到的内容。然而,使用Volatility的memdump命令和Foremost 工具对同一个镜像进行分析时,得出了相同大小,内容几乎相同的文件。尽管他们的结论是 正确的,但若他们尝试分析的不是进程acrord32.exe,则结果可能不正确,并会因为错误的 属性而误导。这些文件在每个进程中都存在的原因,是由于采用了同一种技术对进程进行分 析。memdump命令暴力搜索408的虚拟地址空间,并使用目标进程的目录基址表018进行页地 址翻译。这些文件内容都必须在每个进程地址空间上翻译,通过在volatility脚本上放置一 条打印语句,可以看出这些文件在系统中的缓存位置为0132如0000.系统使用此缓存保存部 分文件内容及其部分1/0到内存中,以尽可能地减少从磁盘上读取文件内容导致性能下降。 既然缓存的虚拟地址空间位于内核内存且为全局变量,那么在上述两个进程的地址翻译都是 正确的。
memdump命令并不会对未翻译的页进行磁盘写入,故已翻译的地址看似连续的,但实际 上很可能存在成千上百的虚拟页间隔。foremost仅仅是对获取到的所有数据进行遍历搜索, 寻找开始和结束分隔符。使用moonsols提供的bin2dmp.exe工具,你可以将内存镜像从 Bob•vmem形式转换为Windbg格式。将dump文件加载到windbg后,使用filecache命令,我们 可以找到FILE_OBJCT对象地址为0x81dfadf0.然而,!filecache同样掲露了00600328.pdf 实际上是pdf.php.此文件并不是607083字节大小,而仅仅占19731字节。导致这种差异的存 在,主要是memdUmp命令会对进程内的所有页翻译成一个连续的文件,而忽视了无法翻译的 页以及缓存结构等。此外,foremost工具会遍历开始与结束定界符,并将标签内部的内容视 为一个连续的文件。下面小段将给出如何利用fileobject和缓存结构。
利用文件对象
既然dlls和exes都是通过内核内存中的文件对象fileobject来引用的内存映射文件,则 理解它们的结构对内存取证而言显得至关重要。file_object结构体包含了 一些重要成员变 量,如此unicode文件名指针、文件的设备对象指针(包含驱动名)等。其中最为重要的指针 即section_object_pointers,如图1所示。

SECTION_OBJECT_POINTERS 结构体仅包含 3 个指针,分别为 DataSectionObject, sharedcachemap和imagesection.其中datasectionobjects和imagesectionobjects相关都是指向control_areas结构体指针。imagesectionobjects代表 二进制镜像,以跟踪可执行文件流的状态。
(1) Image Section Objects
imagesectionobjects即指向control_area结构的指针,用来表示内存映射二进制文件。 Controlarea包含一个指向段结构体的指针,段结构体中又包含一个指向原controlarea的指 针。这种关系可以在内存解析中作为一种验证方法。段结构中还包含了段大小、页表项总数。 用ptes总数乘以011000可校验一个段的完整性。subsection结构体在controlarea中起着重 要作用。寻找首个与fileobject对象相关的subsection^最易的方法即将control_area结构体 大小加到fileobject对象地址上。我们的研究表明首个subsection结构紧随controlarea构体,每个subsection都包含一个指向下一个subsection的指针,如图2所示。

本页地址 http://www.jybase.net/biancheng/20120506907.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com