一种Mac OS系统的物理内存镜像文件分析方法技术方案

技术编号:6950764 阅读:728 留言:0更新日期:2012-04-11 18:40
本发明专利技术的MacOS系统的物理内存镜像文件分析方法,包括:a.判断系统版本信息,确定指向内核进程地址空间的最高级页表的指针;b.获取内核符号表和字符串表,通过内核映像文件在物理内存镜像文件中的副本找到内核符号表和字符串表,进而获取物理内存镜像文件中包含的系统配置信息、挂载的文件系统信息、进程信息以及驱动信息;c.获取指向系统中各个任务的最高级页表的指针。步骤b通过对物理内存镜像文件中内核映像文件副本的分析,来获取符号表和字符串表。本发明专利技术克服了现有技术内核映像文件获取方式繁琐复杂、地址转换方法不可靠、信息获取不全面的缺点;易于获取进程、驱动、挂载的文件系统等信息,有利于MacOS系统计算机内存取证的研究。

【技术实现步骤摘要】

本专利技术涉及,更具体的说,尤其涉及一种使用内核进程地址空间中指向最高级页表的指针进行内核虚拟地址向物理地址转换再通过该方法获取内核符号表和字符串表信息的Mac OS系统的物理内存镜像文件分析方法。本技术将应用于计算机取证领域,主要用于信息安全事件和各类计算机犯罪案件的调查取证。
技术介绍
a.涉及概念及专业术语 a-Ι.物理内存镜像文件物理内存镜像文件是指把目前正在运行的计算机中物理内存里的信息按照一个比特对应一个比特的方式映射出来所组成的文件,该文件中数据的位置与物理内存中数据的位置是一一对应的。在vmware虚拟机中,可以通过执行snapshot操作来获取物理内存镜像文件,该文件就是执行snapshot操作后所产生的以.vmem为扩展名的文件;在物理计算机中,可以通过软件如dd获取其对应的物理内存镜像文件。a-2.任务Mach的抽象定义,含有虚拟地址空间和端口名字空间。任务本身不做任何操作,而是为线程提供上下文环境。a-3.进程BSD中对运行程序的抽象定义。进程资源包括虚拟地址空间、线程和文件描述符。在 Mac OS X中,进程基于一个Mach任务和一个或多个Mach线程。a-4.内核空间内核空间,内核进程运行的地址空间。a-5.内核映像内核的代码和数据就叫内核映像(Kernel Image)。b.研究背景为推进物理内存分析技术的发展,DFRWS (Digital Forensic Research Workshop)于 2005年推出了名为“!^orensics Challenge”的活动,活动的主题就是物理内存分析。从此, 对于物理内存的分析和获取成为计算机取证的研究热点。2008年和2009年,公司和政府部门把研究重点都放在了对Windows操作系统的物理内存分析上,并取得了一定的发展。但是,这些年对于Mac OS系统的物理内存分析基本上从未涉及。2010年,Matthieu Suiche 首次提出了 Mac OS的物理内存分析方法,这也是目前所公开的唯一的一种Mac OS的物理内存分析方法。该方法首先获取内核符号表及与之对应的字符串表;然后从内核符号表中获得IdlePDPT、IdlePDPT64、IdlePML4、IdlePTD四个内核变量的值,根据这些值实现内核虚拟地址向物理地址的转换;最后,在地址转换和内核符号变量的基础上,分析进程、挂载的文件系统、系统调用表、内核扩展等一系列信息。其具体过程如下b-Ι.内核符号表的获取Windows操作系统编译器一般把符号存储在以PDB为扩展名的外部文件中。在Mac OS X操作系统中,编译器把符号文件存放在内核可执行文件的—LINKEDIT节中。该节包含了字符串表(存放内核符号名)和符号表(存放与内核符号名相对应的内核符号值)的偏移。对 Mac OS的物理内存分析以符号表的获取为基础。获取符号表的基本步骤是,首先根据FAT 文件格式和Mach-O文件格式获取内核镜像文件在内存中的文件内容;然后,对该文件进行分析,读取—LINKEDIT节中字符串表偏移和符号表偏移的值;最后,解析—LINKEDIT的内容获取内核符号表。涉及到的具体数据结构及符号表的具体寻找方法如下#define FAT_MAGIC OxBEBAFECATypedef struct _FAT_HEADER{ULONG magic; ULONG nfat_arch;}FAT_HEADER, *PFAT_HEADER;可以根据FAT_MAGIC找到文件头。从文件头的位置开始,加上sizeof (FAT_HEADER)就可以找到第一个文件结构,定义如下Typedef struct _FAT_ARCH{cpu_type_t cputype; cpu_subtype_t cpusubtype; ULONG offset; ULONG size; ULONG align;}FAT_ARCH, *PFAT_ARCH;Mach-O文件头起始位置=FAT文件头起始位置+ offset.其结构如下所示#define MH_MAGIC OxfeedfaceTypedef struct _MACH_HEADER{ULONG Magic; cpu_type_t cputype; cpu_subtype_t cpusubtype; ULONG filetype; ULONG ncmds; ULONG sizeofcmds; ULONG flags;} MACH_HEADER, *PMACH_HEADER;其中Oxfeedface可以看作是一个Mach-O文件开始的标记。MACH_HEADER结构之后紧跟着是第一个命令项。其一般性结构如下图所示。 Typedef struct _L0AD_C0MMAND {ULONG cmd; ULONG cmdsize; } L0AD_C0MMAND, *PL0AD_C0MMAND;其中,cmd为命令类型,Cmdsize是指命令长度。比较重要的命令类型是以下两个。#define LC_SEGMENT Oxl #define LC_SYMTAB 0x2根据命令类型不同,具体的命令结构也不相同。以下是命令类型为LC_SYMTAB的命令结构Typedef struct _SYMTAB_COMMAND{ULONG cmd; ULONG cmdsize; ULONG symoff; ULONG nsyms; ULONG stroff; ULONG strsize; } SYMTAB_COMMAND, *PSYMTAB_COMMAND;其中,symoff是符号表在文件中的偏移,符号表是一个nlist结构(如下所示)的数据; nsyms是符号表的项数;stroff是字符串表在文件中的偏移;strsize是字符串表的长度。Typedef struct _NLIST{ULONG n_strx; UCHAR n_type; UCHAR n_sect; USHORT n_desc; ULONG n_value; } NLIST, *PLIST;其中,n_strx是指当前符号表项对应的变量名在字符串表中的偏移。revalue是指变量值。符号表的地址=从结构_FAT_ARCH中获取的offset + symoff ; 字符串表的地址=从结构_FAT_ARCH中获取的offset + stroff ; 最后根据这两个表即可获取内核符号名称及其值。b-2.地址转换地址转换方法依赖于IdlePDPT、IdlePDPT64、IdlePML4、IdlePTD四个内核变量的值。 通过遍历所获取的内核符号表中的变量名及其对应的值,即可得到以上四个变量的值,采用PML4 (Page Map Level 4)分页方法,即可实现地址转换。b-3.信息获取通过内核符号表中的变量,获取系统配置信息、挂载的文件系统信息、进程信息以及驱动信息。在实际的对Mac机的物理内存分析过程中,我们发现,以上这种分析方法存在一定的问题,主要表现在以下四个方面(1)内核映像文件的获取方式较为繁琐复杂。这是因为物理内存镜像文件中存在很多FAT文件格式的文件,不能确定哪个是指向了我们所需要的内核映像文件的头部。(2)在Mac OS本文档来自技高网...

【技术保护点】
1.一种Mac OS系统的物理内存镜像文件分析方法,其特征在于,包括以下步骤:a. 从Mac OS系统的物理内存镜像文件中,判断系统版本信息,进而确定指向内核进程地址空间的最高级页表的指针,内核进程地址空间的最高级页表用于实现内核虚拟地址向物理地址的转换;b. 获取内核符号表和字符串表,通过内核映像文件在物理内存镜像文件中的副本找到内核符号表和字符串表的虚拟地址,通过分析内核符号表及字符串表可以获得内核变量名及其对应的变量值,内核变量名及其对应的值用于获取物理内存镜像文件中包含的系统配置信息、挂载的文件系统信息、进程信息以及驱动信息;c.获取指向系统中各个任务的最高级页表的指针,此处获得的各个任务的最高级页表不仅可以实现内核进程地址空间虚拟地址向物理地址的转换,还可以实现除内核进程之外的其他进程地址空间虚拟地址向物理地址的转换。

【技术特征摘要】
1.一种Mac OS系统的物理内存镜像文件分析方法,其特征在于,包括以下步骤a.从MacOS系统的物理内存镜像文件中,判断系统版本信息,进而确定指向内核进程地址空间的最高级页表的指针,内核进程地址空间的最高级页表用于实现内核虚拟地址向物理地址的转换;b.获取内核符号表和字符串表,通过内核映像文件在物理内存镜像文件中的副本找到内核符号表和字符串表的虚拟地址,通过分析内核符号表及字符串表可以获得内核变量名及其对应的变量值,内核变量名及其对应的值用于获取物理内存镜像文件中包含的系统配置信息、挂载的文件系统信息、进程信息以及驱动信息;c.获取指向系统中各个任务的最高级页表的指针,此处获得的各个任务的最高级页表不仅可以实现内核进程地址空间虚拟地址向物理地址的转换,还可以实现除内核进程之外的其他进程地址空间虚拟地址向物理地址的转换。2.根据权利要求1所述的MacOS系统的物理内存镜像文件分析方法,其特征在于,所述步骤a中,由于操作系统版本信息存放在名为SystemVersion. plist的文件中,因此根据文件特征,查找物理内存镜像文件,从物理内存镜像文件中找到名为SystemVersion. plist 的文件,从中获取系统版本信息;对于版本为Mac OS X 10. 5的操作系统,其指向内核进程地址空间的最高级页表的指针值是0x104800,即内核进程地址空间中的最高级页表位于物理内存镜像文件中的偏移0x104800处;对于版本为Mac OS X 10. 6的操作系统,其指向内核进程地址空间的最高级页表的指针值是0x100000,即内核进程地址空间的最高级页表位于物理内存镜像文件的偏移0x100000处。3.根据权利要求1所述的MacOS系统的物理内存镜像文件分析方法,其特征在于,步骤b中的内核符号表和字符串表的获取,包括以下步骤b-Ι.确定内核映像文件在物理内存镜像文件中的位置,对于版本为Mac OS X 10. 5的操作系统,内核映像文件位于物理内存镜像文件中的偏移0x111000处;对于版本为Mac OS X 10. 6的操作系统,内核映像文件位于物理内存镜像文件中的偏移0x200000处;b-2.寻找内核映像文件的副本在物理内存镜像文件中的位置,内核映像文件与其副本之间的差别在于这两个文件中记录的_LINKEDIT节中名为vmaddr的值不同,因此,通过以下方法寻找内核映像文件的副本在物理内存镜像文件中的位置在物理内存镜像文件中,从内核映像文件在物理内存镜像文件中的位置开始,到字段—LINKEIDT结束,复制这一段内容;然后从内存镜像文件中向下寻找这一段内容再次出现的位置;这一段内容再次出现的位置即是内核映像文件的副本在物理内存镜像文件中的位置;内核映像文件的副本找到后,则进行下一步;b-3.首先,在物理内存镜像文件中,从内核映像文件副本在物理内存镜像文件中...

【专利技术属性】
技术研发人员:顾卫东徐丽娟王连海武鲁张淑慧
申请(专利权)人:山东省计算中心
类型:发明
国别省市:88

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1