一种基于实时响应的遍历用户地址空间的方法技术

技术编号:32132854 阅读:19 留言:0更新日期:2022-01-29 19:35
本发明专利技术涉及一种基于实时响应的遍历用户地址空间的方法。本发明专利技术首先对计算机的系统版本和配置文件进行确定;然后根据配置文件导入内核符号,与VAD树中的节点信息相匹配,解析出内存映射文件、共享内存、堆栈缓冲区和保留系统结构等相关元数据;通过PEB结构遍历NT堆和段堆;通过PCB遍历线程栈;最后进行输出内存分配起止地址、占用大小、分配保护、内存类型和详细信息。本发明专利技术的遍历用户地址空间的方法能够有效完整的遍历出Windows10的内存地址空间,有助于明确其详细信息,能够减少取证分析人员检测、定位和提取恶意代码的工作量,减少安全事件响应所需的时间。事件响应所需的时间。

【技术实现步骤摘要】
一种基于实时响应的遍历用户地址空间的方法


[0001]本专利技术涉及一种基于实时响应的遍历用户地址空间的方法,可以完整的遍历Windows10的内存地址空间,能够减少取证分析人员检测、定位和提取恶意代码的工作量,减少安全事件响应所需的时间。

技术介绍

[0002]内存注入攻击是一种针对进程用户地址空间注入恶意代码的攻击技术,如Shellcode注入、DLL注入和Hollowing注入等,通常对目标进程用户地址空间的缓冲区、动态链接库、共享内存和其他内存区域注入并执行恶意代码。Windows 10 64位系统作为目前主流的操作系统,是网络攻击者的主要目标。对于64位操作系统,在高达128TB的地址空间中检测恶意代码加重了取证分析人员的工作量,增加了安全事件响应所需的时间。
[0003]明确用户地址空间可以在内存取证分析中起到重要作用,根据其详细信息,能够减少取证分析人员检测、定位和提取恶意代码的工作量,减少安全事件响应所需的时间。以往的内存取证研究专注于内存内核地址空间的结构和内容,对用户地址空间的结构和内容分析研究较少。
[0004]虚拟地址描述符(VAD)树是每个进程的内核空间中维护着的自平衡二叉树,树中每一个节点存储一个用户分配的基本信息,如起始地址、结束地址、分配保护和内存类型等。可以通过遍历VAD树得到用户地址空间的有用信息。

技术实现思路

[0005]本专利技术的目的在于提供一种基于实时响应的遍历用户地址空间的方法,可以实时的检测用户地址空间,减少取证分析人员检测、定位和提取恶意代码的工作量。
[0006]本专利技术的实现包括以下步骤。
[0007]步骤1:对计算机的系统版本和配置文件进行确定。
[0008]步骤2:根据配置文件导入内核符号,与VAD树中的节点信息相匹配,解析出内存映射文件、共享内存、堆栈缓冲区和保留系统结构等相关元数据。
[0009]步骤3:通过PEB结构遍历NT堆和段堆。
[0010]步骤4:通过PCB遍历线程栈。
[0011]步骤5:进行输出内存分配起止地址、占用大小、分配保护、内存类型和详细信息。
[0012]进一步的在步骤1中,判断目标系统是否为Windows10系列版本,并对其的配置文件进行确定。Windows 10 64位系统的VAD树结构与旧版本的不同,这使得映射文件、共享内存的遍历方法也不同。
[0013]进一步的在步骤2中,VAD树的每个节点由_MMVAD结构维护,由于VAD树是自平衡二叉树,通过递归所有左子树和右子树来遍历全部节点。
[0014]进一步的在步骤3中,段堆堆块也分布在用户地址空间中,段堆堆块的起始地址与部分VAD树节点中记录的起始地址是相同的。
[0015]进一步的在步骤4中,通过WinDbg调试Windows 10 64位系统发现,_TEB32结构位于_TEB结构的+0x2000偏移处,其DeallocationStack成员指向用户地址空间的WOW64栈。有益效果
[0016]本专利技术是一种基于实时响应的遍历用户地址空间的方法。主要是可以实时遍历出用户地址空间的信息,能够减少取证分析人员检测、定位和提取恶意代码的工作量,减少安全事件响应所需的时间。
[0017]通过VAD树获取用户地址空间信息是可靠的,是因为进程VAD树结构在系统中很不稳定,如果恶意软件企图通过非法方式访问或修改VAD树中的数据,很容易造成系统崩溃。
[0018]能够完整地展示Windows 10 64位系统进程的用户地址空间布局,相比于传统的遍历方法,提高了遍历的完整度,并适用于目前所有版本的Windows 10 64位系统。
附图说明
[0019]图1为遍历地址空间流程图。
[0020]图2为定义用户分配流程图。
[0021]图3为获取用户地址空间信息实验结果显示图。
具体实施方式
[0022]下面结合附图对本专利技术进行更详尽的说明。
[0023]步骤1是对计算机的系统版本和配置文件进行确定。
[0024]步骤2是根据配置文件导入内核符号,与VAD树中的节点信息相匹配,解析出内存映射文件、共享内存、堆栈缓冲区和保留系统结构等相关元数据。VAD树的每个节点由_MMVAD结构维护,结构中Core成员是_MMVAD_SHORT结构,它的StartingVpn成员和EndingVpn成员记录了每个用户分配的起止虚拟地址;u成员记录了内存分配的权限。
[0025]定义用户分配的流程图如图1所示,由于VAD树是自平衡二叉树,通过递归所有左子树和右子树的方法即可遍历全部节点。分配的起始地址和终止地址来源于VAD节点的StartingVpn和EndingVpn成员。结构体的u成员以索引值的形式标记每个用户分配的保护,每个索引值对应不同的分配保护,这些在WinNT.h中定义。当VAD树节点的ControlArea字段为有效的指针时,对应分配的内存类型为共享类型,其余为私有类型。
[0026]内存映射文件相关信息由_FILE_OBJECT文件对象维护,结构中的FileName成员记录了文件在磁盘中的路径。通过获取文件对象即可遍历映射文件。传统的遍历映射文件的方法采用解析进程句柄表的方式获取内核文件对象,但是这种方法很容易受到Rootkit隐遁攻击的影响,使得方法无法获取被隐藏的文件对象。本文通过解析VAD树发现,VAD树节点的FileObject成员同样指向了文件对象结构体,通过遍历全部VAD节点能够获取进程维护的全部文件对象。此外VAD树中的数据具有可靠性,由于进程VAD树结构在系统中很不稳定,一旦恶意软件企图通过非法方式访问或修改VAD树中的数据,很容易造成系统崩溃。
[0027]每个进程对象结构都包含一个指向其进程句柄表的指针,句柄表包含进程正在使用的句柄。通过解析句柄表可获取维护共享内存的_SECTION结构。通过WinDbg调试Windows10 64位系统内存数据结构发现,当_SECTION结构的ControlArea成员与部分VAD节点中的ControlArea成员指向相同的地址,VAD树与_SECTION结构描述的是同一用户分配。
[0028]遍历映射文件和共享内存步骤如下:步骤2

1首先从_MMVAD结构中获取文件对象结构,将FlieName成员作为映射文件的描述信息。步骤2

2通过解析进程句柄表获取_SECTION对象,当VAD节点的ControlArea成员与_SECTION对象的ControlArea成员指向相同的地址时,以_SECTION对象中存储的信息描述用户分配,当_SECTION对象中的信息为空字符串或不可打印的字符串时,则以共享内存描述该区域。
[0029]步骤3是通过PEB结构遍历NT堆和段堆。段堆堆块的起始地址与部分VAD树节点中记录的起始地址相同,这说明段堆堆块也分布在用户地址空间中。遍历段堆:步骤3

1首先通过进本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于实时响应的遍历用户地址空间的方法,其特征在于,该方法包括以下步骤:步骤1:对计算机的系统版本和配置文件进行确定。步骤2:根据配置文件导入内核符号,与VAD树中的节点信息相匹配,解析出内存映射文件、共享内存、堆栈缓冲区和保留系统结构等相关元数据。步骤3:通过PEB结构遍历NT堆和段堆。步骤4:通过PCB遍历线程栈。步骤5:进行输出内存分配起止地址、占用大小、分配保护、内存类型和详细信息。2.根据权利要求1所述的基于实时响应的遍历用户地址空间方法,其特征在于所述步骤1中,判断目标系统是否为Windows10系列版本,并对其的配置文件进行确定。3.根据权利要求1所述的基于实时响应的遍历用户地址空间方法,其特征在于,所述步骤2中,VAD树节点的FileObject成员指向了文件对象结构体,通过递归的方法可以遍历全...

【专利技术属性】
技术研发人员:孙海旭杨晓秋张家奇
申请(专利权)人:哈尔滨理工大学
类型:发明
国别省市:

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

1