简介
内存取证是数字取证的一个重要分支,它专注于在计算机或其他数字设备运行时,对其存储的内存数据进行采集、分析和提取,以获取有关设备状态、操作过程和可能存在的安全事件。
对于内存数据,最为常用的工具便是 Volatility Framework
,其为 Volatility Foundation
所开发的一款对内存取证分析提供支持的框架,对多平台电子设备的内存数据均提供了支持,并且也支持加载第三方模块来增加功能。
内存取证是数字取证的一个重要分支,它专注于在计算机或其他数字设备运行时,对其存储的内存数据进行采集、分析和提取,以获取有关设备状态、操作过程和可能存在的安全事件。
对于内存数据,最为常用的工具便是 Volatility Framework
,其为 Volatility Foundation
所开发的一款对内存取证分析提供支持的框架,对多平台电子设备的内存数据均提供了支持,并且也支持加载第三方模块来增加功能。
工具安装指南
2or3?
当前,Volatility 已经开发到了 Volatility 3,但是第三代仍然在开发阶段,其功能相较于第二代还不完善,但是第三代对 Windows 10 以上的 Windows 系统所导出的内存数据提供了更完善的支持,并实现了更快的分析速度,故建议进行内存取证工作的时候,两代 Volatility 都备着。
项目地址:
https://github.com/volatilityfoundation/volatility
apt install git
git clone https://github.com/volatilityfoundation/volatility.git
pip3 install volatility3
需要注意的是,Linux 系统中,允许 Python2 与 Python3 环境并存,但是二者的依赖库(python-dev)和第三方包(通过 pip 包管理器安装的第三方包)并不会共享,也就意味着如果如上文安装好 Vol 2 之后,相关操作也要再重复一遍
sudo apt install python2-dev
pip2 install pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple
pip2 install yara -i https://pypi.tuna.tsinghua.edu.cn/simple
pip2 install distorm3 -i https://pypi.tuna.tsinghua.edu.cn/simple
使用演示
python2 vol.py -f file imageinfo #f:指定分析的内存镜像文件名
VolatilityFramework 版本: 2.6.1
确定配置文件: Volatility 正在基于 KDBG(KernelDebugging符号)搜索来确定合适的配置文件。
建议的配置文件: 根据搜索结果,建议使用的配置文件包括多个 Windows7SP1 x64 版本,如
Win7SP1x64,
Win7SP0x64,
Win2008R2SP0x64 等。
地址空间层(ASLayer):
Layer1: WindowsAMD64PagedMemory (KernelAS),表示这是64位分页内存。
Layer2: FileAddressSpace,表示内存数据来源于文件。
PAE类型: 没有启用物理地址扩展(NoPAE)。
调试信息:
DTB (DebugTableBase): 0x187000L。
KDBG (KernelDebuggingsymbol): 0xf80004038120L。
系统信息:
处理器数量: 2。
KPCR (KernelProcessorControlRegion) forCPU0: 0xfffff8000403a000L。
KPCRforCPU1: 0xfffff8800450000L。
KUSER_SHARED_DATA: 0xfffff78000000000L。
时间戳:
镜像日期和时间: 2021-12-1012:33:14UTC+00:00。
镜像本地日期和时间: 2021-12-1020:33:14 +0800,考虑到了时区偏移。
grep的妙用
grep
是一个在类 Unix 系统中用于搜索文本的命令行工具。它可以根据指定的模式匹配文本,并输出匹配的行。由于内存其本身就为操作系统和软件运行时的动态数据,所以绝大多数的数据都是直接以明文形式储存在内存之中的,往往直接 strings 进行提取明文字符串并加以筛选,就能获得一些意想不到的惊喜
vol.py -f file --profile=Win7SP1x64 filescan | grep Users #filescan:提取文件对象(file objects)池信息
文件信息:0x0000000013dca4790: 这是一个文件的物理地址,
文件权限为 -W-rw-,
文件路径为 DeviceHarddiskVolume1UsersJiaJiaAppDataRoamingTelegram Desktoptdataemoj1cache_3。
......
imageinfo:显示内存镜像的基本信息,帮助确定正确的配置文件。
hashdump:提取内存中的密码哈希。
pslist:列出内存中所有进程的列表。
psscan:扫描并列出所有进程,包括隐藏的进程。
malfind:查找可能的恶意代码,通过查找不规则的内存分配。
dlllist:列出指定进程加载的所有 DLL。
connscan:列出所有网络连接。
netscan:显示网络连接和监听端口。
filescan:扫描并列出文件系统中的文件。
procdump:从内存中导出进程。
memdump:导出内存区域的内容。
apihooks:检测 API 钩子,可能用于恶意软件隐藏其活动。
ssdt:列出系统服务描述表,用于检测 SSDT 钩子。
svcscan:扫描并列出所有服务,包括隐藏的服务。
driverscan:扫描并列出所有加载的驱动程序。
hivelist:列出所有注册表 hive。
printkey:打印注册表键的内容。
psxview:显示特定进程的线程和内存映射。
cmdline:显示进程的命令行参数。
volshell:提供一个交互式 shell,允许在 Volatility 中执行命令。
mft:提取文件的 MFT 条目。
timeliner:创建时间线,帮助确定事件发生的顺序。
iehistory:提取 Internet Explorer 的浏览历史。
firefoxhistory:提取 Firefox 浏览器的历史记录。
chromehistory:提取 Chrome 浏览器的历史记录。
autoruns:列出在系统启动时自动运行的程序。
lnkfiles:提取快捷方式文件。
mpsl:列出进程的内存页共享。
mutantscan:扫描并列出所有进程的互斥锁。
amcache:查看AmCache应用程序痕迹信息。
apihooks:检测内核及进程的内存空间中的API hook。
atoms:列出会话及窗口站atom表。
atomscan:Atom表的池扫描(Pool scanner)。
auditpol:列出注册表HKLMSECURITYPolicyPolAdtEv的审计策略信息。
bigpools:使用BigPagePoolScanner转储大分页池(big page pools)。
bioskbd:从实时模式内存中读取键盘缓冲数据(早期电脑可以读取出BIOS开机密码)。
cachedump:获取内存中缓存的域帐号的密码哈希。
callbacks:打印全系统通知例程。
clipboard:提取Windows剪贴板中的内容。
cmdline:显示进程命令行参数。
cmdscan:提取执行的命令行历史记录(扫描_COMMAND_HISTORY信息)。
connections:打印系统打开的网络连接(仅支持Windows XP 和2003)。
connscan:打印TCP连接信息。
consoles:提取执行的命令行历史记录(扫描_CONSOLE_INFORMATION信息)。
crashinfo:提取崩溃转储信息。
deskscan:tagDESKTOP池扫描(Poolscaner)。
devicetree:显示设备树信息。
dlldump:从进程地址空间转储动态链接库。
dlllist:打印每个进程加载的动态链接库列表。
driverirp:IRP hook驱动检测。
drivermodule:关联驱动对象至内核模块。
driverscan:驱动对象池扫描。
dumpcerts:提取RAS私钥及SSL公钥。
dumpfiles:提取内存中映射或缓存的文件。
hpakinfo:查看HPAK文件属性及相关信息。
idt:显示中断描述符表(Interrupt Descriptor Table)。
iehistory:重建IE缓存及访问历史记录。
imagecopy:将物理地址空间导出原生DD镜像文件。
imageinfo:查看/识别镜像信息。
https://hello-ctf.com/HC_MISC/memory/
原文始发于微信公众号(无尽藏攻防实验室):浅谈Volatility取证
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论