Volatility 内存分析入门
Volatility 是内存取证的主流工具,作用是直接从内存镜像里还原当时运行的系统状态:进程列表、网络连接、命令行、加载的模块与注入痕迹。分析流程通常是三步:先识别镜像对应的系统版本,再跑进程与网络类基础插件建立整体印象,最后用注入检测类插件深挖异常。内存分析的价值在于它能看到磁盘上没有的东西——未落地的载荷、内存中的配置与连接记录。
基本信息
| 输入要求 | 内存镜像文件,采集时记录哈希与采集时间 |
|---|---|
| 版本差异 | v2 使用 vol.py 加 profile 参数;v3 使用 vol 命令加 windows 或 linux 前缀的插件名 |
| 第一步 | 识别镜像:v2 的 imageinfo、v3 的 banners 等元信息插件 |
| 基础插件 | pslist、pstree、netscan(v3 为 windows.netscan)、cmdline |
| 深挖插件 | malfind 查注入,psscan 与 pslist 对比找隐藏或已退出进程 |
| 分析环境 | 在隔离环境执行,不要在受害主机上跑分析 |
典型使用场景
- 确认采集时刻有哪些进程与网络连接,弥补磁盘证据不足
- 还原已经被删除的二进制或未落地的载荷线索
- 提取进程命令行与环境信息,找到下载地址与配置
- 验证清理前的判断:某个进程当时是否真的在运行
- 为报告提供与磁盘证据互相印证的第二条证据线
基础分析与注入排查
基础分析与注入排查
vol.py -f /evidence/mem.raw imageinfo # v2:识别镜像与 profile
vol.py -f /evidence/mem.raw --profile=Win10x64 pstree # 进程树
vol.py -f /evidence/mem.raw --profile=Win10x64 netscan | head -n 30 # 网络连接
vol.py -f /evidence/mem.raw --profile=Win10x64 cmdline # 进程命令行
vol.py -f /evidence/mem.raw --profile=Win10x64 malfind | head -n 40 # 注入检测
vol.py -f /evidence/mem.raw --profile=Win10x64 psscan | head -n 30 # 与 pslist 对比
vol -f /evidence/mem.raw windows.pslist # v3 语法示例常用插件与用途
| 插件 | 用途 | 判断要点 |
|---|---|---|
| imageinfo 或 banners | 识别系统版本与建议 profile | profile 不准会导致后续输出为空或乱码 |
| pslist 与 pstree | 列出进程与父子关系 | 关注非系统路径与异常父子链 |
| psscan | 扫描内存中的进程结构 | 与 pslist 的差集即隐藏或已退出进程 |
| netscan | 还原当时的连接与监听 | 对端地址可整理成 IOC |
| cmdline | 还原进程命令行 | 含下载地址与脚本参数 |
| malfind | 检索可执行注入痕迹 | 命中项需与进程路径和签名对照 |
profile 猜错是新手最常见的问题:输出为空或出现乱码并不代表「内存里没有东西」,而是版本不匹配。先跑识别类插件,再选择插件参数;v2 与 v3 的命令语法不同,照抄前先确认版本。
内存镜像要带着采集时间与哈希一起分析:没有时间基准,就无法把内存里的连接与磁盘日志对齐;没有哈希,就无法说明分析所用的镜像与采集结果一致。