磁盘取证看到的是"留下了什么",内存取证看到的是"当时在干什么"。很多东西只存在于内存里:
- 未落地的进程。注入到合法进程里的代码,磁盘上找不到
- 解密后的配置。C2 地址、密钥,磁盘上是加密的,内存里是明文
- 网络连接。当时连了哪里
- 命令历史、剪贴板、凭据。LSASS 里的哈希是最经典的
- 注册表 hive 的内存副本,包括已经被删掉的键
Volatility 3 的常用起手式:
windows.pslist 进程列表
windows.pstree 父子关系,找异常的父进程
windows.malfind 找有执行权限的私有内存页,注入代码的典型特征
windows.cmdline 看命令行参数
windows.netscan 网络连接
windows.dlllist 加载的模块,找不在磁盘上的
malfind 一般是我第一个跑的——它命中率高,而且结果直接可以拿去反汇编。
采集这一步反而最容易出错:用 WinPMEM 之类的工具要注意不要把结果写到目标机自己的磁盘上。
你们 IR 的时候内存和磁盘的优先级怎么排?