
2.6 内存分析
在应急响应过程中,除了上述几个通用的排查项,有时也需要对应急响应服务器进行内存的提取,从而分析其中的隐藏进程。
1.内存的获取
内存的获取方法有如下几种:
基于用户模式程序的内存获取;
基于内核模式程序的内存获取;
基于系统崩溃转储的内存获取;
基于操作系统注入的内存获取;
基于系统休眠文件的内存获取;
基于虚拟化快照的内存获取;
基于系统冷启动的内存获取;
基于硬件的内存获取。
以下主要介绍几种最常用的内存获取方法。
1)基于内核模式程序的内存获取
这种获取方法一般需要借助相关的工具来完成。常用的提取工具有Dumpit、Redline、RAM Capturer、FTK Imager等。图2.6.1和图2.6.2分别是RAM Capturer及FTK Imager获取内存的操作界面。

图2.6.1 Ram Capturer获取内存的操作界面
2)基于系统崩溃转储的内存获取
打开【系统属性】对话框,选择【高级】选项卡,单击【启动和故障恢复】中的【设置】按钮,打开【启动和故障恢复】对话框,选择【核心内存转储】并找到转储文件进行获取。如图2.6.3所示。

图2.6.2 FTK Imager获取内存的操作界面

图2.6.3 基于系统崩溃转储的内存获取
3)基于虚拟化快照的内存获取
这种获取方法是通过VMware Workstation、ESXI等虚拟化软件实现的。VMware Workstation在生成快照时会自动生成虚拟内存文件,使用VMware Workstation生成的虚拟内存文件如图2.6.4所示。

图2.6.4 使用VMware Workstation生成的虚拟内存文件
2.内存的分析
对于内存的分析,一般需要借助相应的工具来进行,以下简单介绍几个常用工具。
1)Redline
在获取内存文件后,可以使用Redline进行导入分析,其主要收集在主机上运行的有关进程信息、内存中的驱动程序,以及其他数据,如元数据、注册表数据、任务、服务、网络信息和Internet历史记录等,最终生成报告。使用Redline进行内存分析的界面如图2.6.5 所示。

图2.6.5 使用Redline进行内存分析的界面
2)Volatility
Volatility是一个开源的内存取证工具,可以分析入侵攻击痕迹,包括网络连接、进程、服务、驱动模块、DLL、handles、进程注入、cmd历史命令、IE浏览器历史记录、启动项、用户、shimcache、userassist、部分rootkit隐藏文件、cmdliner等。这里以一个获取的内存镜像为例,介绍Volatility的一般用法。
对内存镜像中的网络连接情况进行排查,使用命令【netscan】,可以列出内存镜像中的网络连接的情况,如图2.6.6所示。

图2.6.6 内存镜像中的网络连接的情况
使用【psxview】命令,可查看内存镜像中带有隐藏进程的所有进程列表。使用【psxview】命令排查隐藏进程,发现存在隐藏进程dllhost.exe,如图2.6.7和图2.6.8所示。
使用【malfind】命令,可查找隐藏或注入的代码、DLL,如图2.6.9和图2.6.10所示。

图2.6.7 使用【psxview】命令

图2.6.8 发现存在隐藏进程dllhost.exe

图2.6.9 使用【malfind】命令

图2.6.10 内存中注入的代码
使用【cmdscan】命令,可提取执行的相关命令记录,如图2.6.11所示。

图2.6.11 提取执行的相关命令记录
使用【procdump】命令,可提取进程文件。可通过制定进程的PID的值来对特定的进程文件进行提取,如使用【procdump-p 2476-D】命令提取进程文件,如图2.6.12所示,

图2.6.12 提取进程文件
可以分析内存中提取出的文件,从而判别文件是否有恶意行为。最简单的方法是把提取出的文件上传到virustotal平台并进行扫描,如图2.6.13所示。

图2.6.13 分析内存中提取出的文件