volatility 内存取证的简单用法
一、常用命令格式
命令格式:volatility -f 文件名 --profile=dump的系统版本 命令
volatility -f win7.raw imageinfo ##检测目标系统信息
volatility -f win7.raw --profile=Win7SPIx64 pslist ##查看运行的进程信息
volatility -f /root/桌面/mem.dump imageinfo ##获取dump的版本
volatility -f WIN2012R2x64.raw --profile=Win8SP0x64 filescan ##扫描内存中的文件
volatility -f WIN2012R2x64.raw --profile=Win8SP0x64 hivelist ##列举缓存在内存中的注册表
volatility -f WIN2012R2x64.raw --profile=Win8SP0x64 printkey -K "SAM\Domains\Account\Users\Names" ##查看系统用户名
volatility -f win7.raw --profile=Win7SPIx64 filescan |grep txt ##查看文件列表
volatility -f win7.raw --profile=Win7SPIx64 dumpfile -Q 0x000007 -D dir ##下载感兴趣的文件,#dir你保存的路径
volatility -f win7.raw --profile=Win7SPIx64 hashdump ##提取系统的账号密码
volatility -f win7.raw --profile=Win7SPIx64 netscan |grep ESTABLISHED ##查看网络通信连接
volatility -f win7.raw --profile=Win7SPIx64 cmdscan ##查看cmd历史记录
volatility -f win7.raw --profile=Win7SPIx64 memdump -p 352 -D dir ##导出nc进程传输的文件,352为nc的进程号 dir 为保存的路径
foremost 352.dmp ##分割dmp文件
volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep -E 'jpg|png|jpeg|bmp|gif' ##查找镜像中的文件
volatility -f mem.vmem --profile=WinXPSP2x86 userassist ##查看userassist键值包含系统或桌面执行文件的信息,如名称、路径、执行次数、最后一次执行时间等
二、常用命令插件
可以先查看当前内存镜像中的用户printkey -K
“SAM\Domains\Account\Users\Names”
volatility -f 1.vmem –profile=Win7SP1x64 printkey -K “SAM\Domains\Account\Users\Names”
查看用户名密码信息(密码是哈希值,需要john爆破) hashdump
volatility -f 1.vmem --profile=Win7SP1x64 hashdump
查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容(mimikatz插件可以获取系统明文密码)
如果john爆破不出来,就使用 lasdmp 查看强密码 lsadmp
volatility -f 1.vmem --profile=Win7SP1x64 lsadump
查看进程pslist
volatility -f 1.vmem --profile=Win7SP1x64 pslist
pslist:该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以
查看已知进程pslist
volatility -f 1.vmem --profile=Win7SP1x64 pslist -p 2588
隐藏或解链的进程psscan
volatility -f 1.vmem --profile=Win7SP1x64 psscan
psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程
查看服务 查询服务名称svcscan
volatility -f 1.vmem --profile=Win7SP1x64 svcscan
svcscan:扫描 Windows 的服务
查看浏览器历史记录,获取当前系统浏览器搜索过的关键词 iehistory
volatility -f 1.vmem --profile=Win7SP1x64 iehistory
查看网络连接 获取当前系统 ip netscan
volatility -f 1.vmem --profile=Win7SP1x64 netscan
有一些版本 这个命令是使用不了 这里我们就要使用(connscan,connections)
查看网络连接connscan
volatility -f 1.vmem --profile=Win7SP1x64 connscan
connscan:查看网络连接
查看网络连接connections
volatility -f 1.vmem --profile=Win7SP1x64 connections
connections:查看网络连接
查看命令行操作,显示cmd历史命令 cmdscan
volatility -f 1.vmem --profile=Win7SP1x64 cmdscan
cmdscan:可用于查看终端记录
查看进程命令行参数(具体一些可疑进程的参数指令)cmdline
volatility -f 1.vmem --profile=Win7SP1x64 cmdline
扫描所有的文件列表 filescan
volatility -f 1.vmem --profile=Win7SP1x64 filescan
(linux配合 grep 命令进行相关字符定向扫描,如:grep flag、grep -E ‘png|jpg|gif|zip|rar|7z|pdf|txt|doc’)
例
volatility -f 1.vmem --profile=Win7SP1x64 filescan grep "flag.txt"
cat system.txt|grep -i computername
查看文件内容dmpfiles
volatility -f 1.vmem --profile=Win7SP1x64 dumpfiles -Q 0xxxxxxxx -D ./
需要指定偏移量 -Q 和输出目录 -D
dumpfiles:导出某一文件(指定虚拟地址)
查看当前展示的notepad内容 notepad
volatility -f 1.vmem --profile=Win7SP1x64 notepad
查看当前展示的 notepad 文本(–profile=winxp啥的低版本可以,win7的不行,可以尝试使用editbox)
显示有关编辑控件(曾经编辑过的内容)的信息 editbox
volatility -f 1.vmem --profile=Win7SP1x64 editbox
editbox:显示有关编辑控件(曾经编辑过的内容)的信息 查看内存中记事本的内容
提取进程memdump
volatility -f 1.vmem --profile=Win7SP1x64 memdump -p xxx --dump-dir=./
memdump:提取出指定进程,常用foremost 来分离里面的文件
需要指定进程-p [pid] 和输出目录 -D
memdump -p 332 -D XX/
提取进程 -p 进程号 -D 当前输出路径(导出为332.dmp)
dump出来的进程文件,可以使用 foremost 来分离里面的文件,用 binwak -e 不推荐
strings -e l 2040.dmp | grep flag 查找flag
屏幕截图screenshot
volatility -f 1.vmem --profile=Win7SP1x64 screenshot --dump-dir=./
screenshot:保存基于GDI窗口的伪截屏
查看注册表配置单元hivelist
volatility -f 1.vmem --profile=Win7SP1x64 hivelist
hivelist: 列出所有的注册表项及其虚拟地址和物理地址
查看注册表键名hivedmp
volatility -f 1.vmem --profile=Win7SP1x64 hivedump -o 0xfffff8a001032410
查看注册表键值printkey
volatility -f 1.vmem --profile=Win7SP1x64 printkey -K "ControlSet001\Control\ComputerName\ComputerName"
获取主机名 printkey
volatility -f 1.vmem --profile=Win7SP1x64 printkey -K "ControlSet001\Control\ComputerName\ComputerName"
列出用户名 pringkey
volatility -f 1.vmem --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"
查看运行程序相关的记录,比如最后一次更新时间,运行过的次数等。serassist
volatility -f 1.vmem --profile=Win7SP1x64 userassist
最大程序提取信息timeliner
volatility -f 1.vmem --profile=Win7SP1x64 timeliner
timeliner: 将所有操作系统事件以时间线的方式展开
查看剪贴板信息clipboard
volatility -f 1.vmem --profile=Win7SP1x64 clipboard
clipboard:查看剪贴板信息
显示关于计算机及其操作系统的详细配置信息(插件)systeminfo
volatility -f 1.vmem --profile=Win7SP1x64 systeminfo
systeminfo:显示关于计算机及其操作系统的详细配置信息(插件)
恢复被删除的文件mftparser
volatility -f 1.vmem --profile=Win7SP1x64 mftparser
mftparser:恢复被删除的文件
查看环境变量envars
volatility -f 1.vmem --profile=Win7SP1x64 envars
envars:查看环境变量
列出某一进程加载的所有dll文件dlllist
volatility -f 1.vmem --profile=Win7SP1x64 dlllist -p 2588
dlllist: 列出某一进程加载的所有dll文件
需要指定进程-p [pid]
程序版本信息 verinfo
volatility -f 1.vmem --profile=Win7SP1x64 verinfo
列出PE|程序版本信息
产看进程树,可以轻松了解各进程之间的关系:父进程与子进程 pstree
volatility -f 2008.raw –profile=Win2008R2SP1x64 pstree
在进程中PPID比PID还大,那就可能这个进程有异常程序
从内存文件中找到异常程序植入到系统的开机自启痕迹 shimcache
volatility -f 2008.raw –profile=Win2008R2SP1x64 shimcache
三、部分问题解题思路:
(一)、浏览器cookie信息中找flag
volatility -f Browser.raw imageinfo
volatility -f Browser.raw --profile=Win7SP1x64 pslist
volatility -f Browser.raw --profile=Win7SP1x64 pslist |find "chrome.exe"
##使用find查找所有谷歌浏览器进程
volatility.exe -f Browser.raw --profile=Win7SP1x64 memdump -p {对应的PID} -D ./
##把每一个谷歌浏览器进程的数据保存为dmp格式的文件(这里的PID需要自己指定使用010editer查找flag逐一筛选,在2608.dmp文件中找到flag
(二)、基本命令 hashdump
volatility -f mem.vmem --profile=WinXPSP2x86 volshell #直接获取volshell
volatility -f mem.vmem --profile=WinXPSP2x86 pslist #查看进程:
volatility -f mem.vmem --profile=WinXPSP2x86 printkey -K "SAM\Domains\Account\Users\Names" ##获取SAM表中的用户
volatility -f mem.vmem –profile=WinXPSP2x86 printkey -K "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" ##获取最后登录系统的账户
volatility -f mem.vmem --profile=WinXPSP2x86 userassist ##提取出内存中记录的,当时正在运行的程序有哪些,运行过多少次,最后一次运行的时间等信息
root@kali:~/CTF$ mkdir ctfmon
root@kali:~/CTF$ volatility -f mem.vmem --profile=WinXPSP2x86 memdump -p 1736 -D ctfmon/ #将内存中的某个进程数据以 dmp 的格式保存出来
volatility -f mem.vmem --profile=WinXPSP2x86 iehistory ##获取 IE 浏览器的使用情况
volatility -f easy_dump.img --profile=Win7SP1x64 hashdump timeliner ##获取内存中的系统密码,获取内存中的系统密码,我们可以使用 hashdump 将它提取出来 。
volatility -f mem.vmem –profile=WinXPSP2x86 timeliner ##最大程度上将内存中的信息提取出来,那么你可以使用 timeliner 这个插件。它会从多个位置来收集系统的活动信息