内存取证——抓住“转瞬即逝”的证据
硬盘上的证据是“死的”,关机还在。但有一类证据只在内存里存在,电脑一关机就永远消失了。
内存里有什么? 正在运行的进程(包括隐藏的恶意软件)、网络连接、最近执行的命令、加密密钥(BitLocker密码、RSA私钥)、未加密的聊天和邮件、恶意软件的完整代码(硬盘上可能是加密的,但内存里是解密后的)。
获取内存镜像的工具:
WinPmem(Windows)
DumpIt(Windows,更简单)
LiME(Linux)
LiME用法:
sudo insmod lime.ko path=/root/memory.dump format=raw
用完要卸载:
sudo rmmod lime
内存镜像大小=物理内存大小。16GB内存→16GB镜像。保存到外部存储,别存被调查电脑的硬盘。
Volatility——内存分析标准工具
下面示例是Volatility 2.x的命令格式。Volatility 3.x命令不同(vol -f memory.raw windows.pslist),别混着用。
第一步,确认操作系统版本:
volatility -f memory.dump imageinfo
选最匹配的profile。
第二步,列进程:
volatility -f memory.dump --profile=Win10x64_19041 pslist
如果攻击者用了进程隐藏技术,pslist看不到,换psscan。
第三步,看网络连接:
volatility -f memory.dump --profile=Win10x64_19041 netscan
所有活动连接都在这里,能看到恶意软件在跟哪个C2服务器通信。
第四步,看命令行历史:
volatility -f memory.dump --profile=Win10x64_19041 cmdscan
即使在硬盘上找不到任何痕迹,内存里的命令行还会留下来。
第五步,提取密码哈希:
volatility -f memory.dump --profile=Win10x64_19041 hashdump
提取所有用户的密码哈希,可以用于后续破解。
浙公网安备 33010602011771号