最近学了一些关于内存取证工具volatility的使用,在这里整理一下
内存取证工具volatility
1 2 3 4
| #确定镜像类型 volatility -f imagename imageinfo #选定一个profile进行操作 volatility -f imagename --profile=profiletype modulename
|
基本的volatility插件
进程类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| pslist #列出系统的所有进程
psscan #显示非活跃或隐藏进程,手册原话:This can find processes that previously terminated (inactive) and processes that have been hidden or unlinked by a rootkit.
pstree #以树状形式打印进程
dlllist #显示当前进程加载的dll
envar #显示进程的环境变量
privs #显示进程的运行权限
cmdline #显示进程启动的命令行参数
malfind #找出隐藏在内存中的dll文件和代码
timeliner #显示内存中多种事件的时间线
procdump #导出当前进程的可执行文件 #使用方法: volatility -f imagename --profile=profiletype procdump -p [pid] -D [dumpdir]
memdump #导出一个进程的内存镜像 #使用方法: volatility -f imagename --profile=profiletype memdump -p [pid] -D [dumpdir]
dlldump #导出程序加载的dll文件 #使用方法: volatility -f imagename --profile=profiletype dlldump -p [pid] -D [dumpdir] volatility -f imagename --profile=profiletype dlldump -o [offset] -D [dumpdir] --baseaddr [base addr] #从基地址提取隐藏的dll文件 --regex [regular exp] #采用正则表达式dump符合条件的dll文件
|
命令类
1 2 3
| cmdscan #检查从cmd.exe输入的命令记录
consoles #收集键入cmd.exe的命令和返回内容
|
文件类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| filescan #扫描内存中的文件对象
mftparser #扫描在内存中潜在NTFS主文件表记录(MFT),就算删除了文件,在MFT中这条记录会被标记为free,但是实际文件是仍然没有被真正删除的,只要原来的文件没有被新文件覆盖,就可以完整恢复被删除的文件。在mftparser的$DATA就可以看见文件的数据了
mbrparser #扫描内存中潜在的主引导记录
dumpfiles #导出加载在内存中的文件 #使用方法 volatility -f imagename --profile=profiletype dumpfiles -D [dumpdir] -Q [physoffset] volatility -f imagename --profile=profiletype dumpfiles -D [dumpdir] -o [physicaloffset] -n, --name #在转储出来的文件的文件名中加入原来的文件名 -u, --unsafe #放松安全约束来获取更多信息 -r, --regex #转储符合正则表达式的文件 -i, --ignore-case #在正则表达式中忽略大小写 #导出的文件名有三种后缀 #.img .dat .vacb #其中.dat文件可以直接修改后缀为原文件后缀使用
|
网络类
1 2 3 4 5 6 7 8 9 10 11
| connections #显示活跃的TCP连接/win7x64sp1不可用
connscan #显示所有的TCP连接/win7x64sp1不可用
sockets #显示所有的套接字连接/win7x64sp1不可用
sockscan #扫描标签池查找_ADDRESS_OBJECT结构体/win7x64sp1不可用
netscan #扫描所有的网络连接
iehistory #显示ie浏览器历史记录
|
注册表类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| userassist #打印userassist信息,userassist信息可以显示用户从Windows explore使用应用的频率
hivelist #显示内存中的注册表配置单元和对应的路径
printkey #显示指定的注册表项, #使用方法 volatility -f imagename --profile=profiletype printkey -K [registrykey]
hivedump #递归列出所有的配置单元的子项,需要给出虚拟偏移 #使用方法 volatility -f imagename --profile=profiletype hivedump -o [virtualoffset]
hashdump #解密SAM中存储的用户域凭据(账户密码)哈希
lsadump #提取windows LSA(本地安全颁发机构) secret中保存的信息,可能有udp公钥,默认密码等信息
shellbags #导出shellbags注册表项 #关于shellbags注册表项:是一组用来记录文件夹(包括挂载网络驱动器文件夹和挂载设备的文件夹)的名称、大小、图标、视图、位置的注册表项。每次对文件夹的操作,shellBags的信息都会更新,而且包含时间戳信息。是Windows系统改善用户体验的功能之一。即使删除文件夹后,shellBags仍然会保留文件夹的信息
dumpregistry #将内存中的注册表配置单元导出至磁盘 #使用方法 volatility -f imagename --profile=profiletype dumpregistry -D [dumpdir] #导出所有注册表到磁盘 volatility -f imagename --profile=profiletype dumpregistry -o [virtualoffset] -D [dumpdir] #导出对应虚拟偏移所在的单个注册表
|
窗口类
1 2 3 4 5 6 7 8 9 10 11 12 13
| windows #打印系统所有桌面窗口的信息
wintree #以树状形式打印系统所有的窗口简略信息
screenshot #导出当前桌面的截图(只有线框图和标题) #使用方法 volatility -f imagename --profile=profiletype screenshot -D [dumpdir]
clipboard #获取用户剪贴板的内容
notepad #查看用户的记事本内容
editbox #查看编辑控件信息
|
基本的volatility操作组合
获取内存中的文件信息并导出
1 2 3
| volatility -f imagename --profile=profiletype filescan | grep [targetfile]
volatility -f imagename --profile=profiletype dumpfiles -Q [offset] -D [dumpdir]
|
提取的文件并不一定能成功获取有用的数据
获取进程信息并导出可疑进程
1 2 3
| volatility -f imagename --profile=profiletype pslist
volatility -f imagename --profile=profiletype memdump -p [pid] -D [dumpdir]
|
像什么mspaint.exe,notepad.exe啥的都可以dump出来试试,用foremost或者binwalk可以分析并提取有用的文件
获取Windows账户密码
1
| volatility -f imagename --profile=profiletype hashdump
|
获得密码的哈希值以后可以用hashcat爆破或者用解密网站解密,如果有mimikatz可以尝试直接获得明文密码
1
| volatility -f imagename --profile=profiletype mimikatz
|
导出Windows注册表项
1 2 3
| volatility -f imagename --profile=profiletype hivelist #找出注册项的虚拟偏移
volatility -f imagename --profile=profiletype hivedump -o [offset] -D [dumdir] #导出对应的注册表配置单元
|
导出的注册表的后缀为.reg
,但是不能直接挂载,可以用WRR转换成Windows可以挂载的格式或直接阅读
找到被删除的文件痕迹
1 2 3
| volatility -f imagename --profile=profiletype shellbags
volatility -f imagename --profile=profiletype mftparser > mftoutput.txt
|