Volatility2实战指南:从内存取证到恶意软件分析 1. Volatility2入门内存取证基础第一次接触内存取证时我盯着满屏的十六进制数据直发懵。直到发现Volatility2这个神器才明白原来内存镜像里藏着这么多秘密。简单来说它就像给电脑内存做CT扫描的工具能让我们在不重启系统的情况下直接分析运行中的程序、网络连接、注册表等关键信息。安装Volatility2其实特别简单。我在Ubuntu系统上实测过用pip就能一键搞定pip install volatility不过要注意不同操作系统版本需要对应不同的profile文件。比如分析Windows 7的内存镜像就得准备Win7SP1x86这样的profile。我第一次用的时候没注意这点结果报了一堆错后来才发现官网提供了完整的profile包需要单独下载。基础命令结构长这样vol.py -f 内存镜像文件 --profile系统类型 插件名 [参数]举个例子要查看镜像基本信息vol.py -f victim.raw --profileWin7SP1x64 imageinfo这个命令会返回操作系统版本、内核时间等关键信息。有次分析勒索软件案例时就是靠这个命令发现受害者机器打了过期补丁才被攻破的。2. 系统关键信息提取实战2.1 用户凭证与哈希提取黑客得手后第一件事往往是抓密码。用hashdump插件可以直接提取内存中的NTLM哈希vol.py -f infected.vmem --profileWin10x64 hashdump有次应急响应时我们就是靠这个命令发现攻击者盗取了域管账号。更厉害的是lsadump插件能提取Windows存储的自动登录密码。记得某次取证居然从内存里找到了明文的管理员密码吓得客户马上改了所有服务器口令。2.2 进程分析技巧pslist是基础命令但老手都会配合psscan使用vol.py -f malware.mem --profileWin7SP1x86 pslist vol.py -f malware.mem --profileWin7SP1x86 psscan两者的区别在于pslist会漏掉隐藏进程而psscan能发现被rootkit隐藏的恶意程序。去年分析一个挖矿病毒时就发现它用进程伪装技术把自己伪装成svchost.exe普通工具根本看不出来。进阶技巧是用pstree看进程父子关系vol.py -f trojan.dmp --profileWin8x64 pstree曾经发现有个木马会寄生在explorer.exe下每隔十分钟就启动子进程外联C2服务器。这种父子进程关系在树状图里一目了然。3. 恶意软件行为深度分析3.1 内存注入检测malfind插件是我的心头好它能扫描内存中的代码注入痕迹vol.py -f backdoor.raw --profileWin2012R2 malfind -D dump_dir参数-D会把可疑内存段保存下来方便后续逆向分析。上个月分析银行木马时就靠它发现了恶意代码注入到lsass.exe的罪证。更狠的是apihooks插件能揪出被篡改的API函数vol.py -f spyware.dmp --profileWin10x64 apihooks有次发现某间谍软件hook了键盘输入的API所有密码输入都被它记录下来了。配合dumpfiles插件还能把恶意DLL从内存里导出来vol.py -f infected.vmem --profileWin7SP1x86 dumpfiles -Q 0x3f3de000 -D output/3.2 网络痕迹追踪netscan堪称挖矿病毒照妖镜vol.py -f miner.mem --profileWin8x64 netscan去年处理过几十起挖矿事件这个命令一跑所有外联矿池的TCP连接都无所遁形。对于老系统可以用connscan替代vol.py -f xp_memory.img --profileWinXPSP3x86 connscan4. 高级取证技巧与实战案例4.1 注册表取证宝典注册表是Windows的数据库hivelist命令先列出所有注册表单元vol.py -f ransomware.vmem --profileWin10x64 hivelistprintkey命令则是查看具体键值的神器。有次分析勒索软件启动项就是用它找到了持久化注册表键vol.py -f cryptoware.dmp --profileWin7SP1x86 printkey -K SoftwareMicrosoftWindowsCurrentVersionRun4.2 时间线分析艺术timeliner插件能重建系统活动时间线vol.py -f hacked.raw --profileWin2016x64 timeliner配合grep过滤可以精确定位攻击时间点。某次调查数据泄露事件时我们就是靠这个功能发现攻击者在凌晨2点批量导出数据库的痕迹。4.3 文件恢复实战filescan配合dumpfiles能恢复内存中的文件vol.py -f fraud.vmem --profileWin10x64 filescan | grep \.doc vol.py -f fraud.vmem --profileWin10x64 dumpfiles -Q 0x3e4d1000 -D docs/曾经帮客户恢复过被恶意程序删除的合同文档就是从内存里把未保存的Word文件捞出来的。