一、环境安装
1.kali下安装Volatility2
2.windows下安装
二、常用命令使用
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey
也可以直接通过 hivedump查询相应的键名, 但是查询非常费时间
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 psxview
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 dumpfiles -Q 0xxxxxxxx -D ./
注意:需要指定偏移量 -Q 和输出目录 -D,dumpfiles:导出某一文件,指定虚拟地址
18.查看当前展示的notepad内容(win7不支持该命令)
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 editbox
20.提取进程内容(需要pslist命令配合查询使用)
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 memdump -p 2588 --dump-dir=./
注意:memdump:提取出指定进程,常用foremost 来分离里面的文件 ,需要指定进程-p [pid] 和输出目录 -D
提取出来的直接用strings是无法查看,需要添加-e参数
strings -e l 2626.dmp | grep flag
21.屏幕截图
python2 vol.py -f worldskills3.vmem --profile=Win7SP1x64 screenshot --dump-dir=./
注意:需要安装PIL库,建议linux下运行
22.查看运行程序相关记录,比如最后一次更新时间,运行过的次数等
提取出内存中记录的,当时正在运行的程序有哪些,运行过多少次,最后一次运行的时间等信息
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 userassist
23.最大程度上将内存中的信息提取出来
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 timeliner
注意:将所有操作系统事件以时间线的方式展开
24.查看剪贴板信息
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 clipboard
25.显示关于计算机及其操作系统的详细配置信息(需要安装插件)
volatility -f 1.vmem --profile=Win7SP1x64 systeminfo
26.查看访问时间
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 mftparser
27.查看环境变量
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 envarsvolatility.exe -f worldskills3.vmem --profile=Win7SP1x64 envars | grep "Password"
28.列出某一进程加载的所有dll文件
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 dlllist
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 dlllist -p 2588
29.获取最后登录系统的账户
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 printkey -K "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
30.显示进程权限
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 privs
31.导出注册表
volatility.exe -f worldskills3.vmem --profile=Win7SP1x64 dumpregistry --dump-dir=./
32.获取明文密码,直接爆破出用户密码(linxu)
python2 vol.py -f worldskills3.vmem --profile=Win7SP1x64 mimikatz
33.查看SID
python2 vol.py -f worldskills3.vmem --profile=Win7SP1x64 getsids
34.获取TrueCrypt密码信息
python2 vol.py -f worldskills3.vmem --profile=Win7SP1x64 truecryptpassphrase
35.获取TrueCrypt秘钥信息
python2 vol.py -f worldskills3.vmem --profile=Win7SP1x64 truecryptmaster
36.解析MFT记录、导出MFT记录
python2 vol.py -f worldskills3.vmem --profile=Win7SP1x64 mftparser
python2 vol.py -f worldskills3.vmem --profile=Win7SP1x64 mftparser --output-file=mftverbose.txt -D ./
37.寻找可能注入到各种进程中的恶意软件
python2 vol.py -f worldskills3.vmem --profile=Win7SP1x6 malfind
38.usb连接信息
python2 vol.py -f worldskills3.vmem --profile=Win7SP1x64 usbstor
三、插件安装
下载地址:
https://github.com/ruokeqx/tool-for-CTF/tree/master/volatility_plugins
https://github.com/superponible/volatility-plugins
下载之后,将 .py 插件放进volatility 的 plugins 文件夹目录下(/volatility-master/volatility/plugins)
- lastpass.py Chrome 记录的登录密码
- usbstor.py 扫描注册表查找插入系统的 USB 设备
- chromehistory.py 谷歌浏览器历史记录
- firefoxhistory.py 火狐浏览器历史记录
- system_info.py systeminfo
- sqlite_help.py 上面两个插件的必须文件
四、CTF中内存取证题目类型
类型1:隐藏图片1.查看可疑进程(pslist)2 导出进程文件3.使用查看文件内容,确认文件类型(file *.dmp)4.一般图片文件使用foremost 分离 ( foremost *.dmg)5.如果分离出来是镜像文件.img损坏(testdisk *.img进行修复)类型2:剪切板1.搜索关于flag的文件(filescan | grep flag)2.搜索IE浏览器历史记录,查看访问了什么网站(iehistory | grep 'https://')3.查看编辑器中有什么,和文档有关的取证(editbox或者notepad)4.查看剪切板复制中有什么记录,mspaint对应进程的内容(memdump -p PID值 --dump-dir=./)类型3:TrueCrypt加密1.导出TrueCrypt对应进程的内容(memdump -p PID值 --dump-dir=./)2.使用Elcomsoft Forensic Disk Decryptor对导出的进程进行还原内容3.用VeraCrypt挂载查看还原的内容类型4:传输压缩包1.查看使用过得命令(cmdscan)2.搜索关键字(filescan | grep 'P@ss')4.dump出压缩包内存文件(dumpfiles -Q 0x0000000002c61318 -D ./)类型5:用户密码1.hashdump导出密码hash值2.使用jone或者在线工具对其进行NTML值破解https://crackstation.net/3.或者使用mimikatz插件进行明文读取用户的密码类型6:IE浏览器中保存的文件1.获取IE浏览器历史记录(iehistoy)2.过滤IE浏览器中的关键字(iehistory | grep jpg或者hint)3.dump出对应的jpg和hint内存文件(dumpfiles -Q 0x0000000002c61318 -D ./)类型7:查看主机名和IP1.主机名(systeminfo插件或者注册表查找对应的键名)2.ip(netscan)类型8:剪切板内容1.获取剪切板内容(clipboard插件)类型9:隐藏了flag1.搜索flag.txt文件(filescan | grep flag)2.导出flag.txt内存文件(dumpfiles -Q 0x0000000002c61318 -D ./)类型10:隐藏的加密的AES1.查看可疑程序进程(查看ppid和pid值对比以及时间不一样可判断出可疑进程也还可以用chatget来判断)2.查找曾经使用过的命令(cmdscan)3.分别导出子进程和父进程的内存内容分析(memdump -p PID值 --dump-dir=./)4.找到KEY和IE值,是AES加密类型11:encryto加密1.查看可疑进程(pslist)2.查看历史命令,.查看到加密的历史文件(cmdscan)3.导出加密的历史可疑文件(dumpfiles -Q 0x000000003e435890 --dump-dir=./**)4.使用encryto进行解密类型12:匿名用户登录1.查看可疑进程,这里是注册表的进程有可疑(pslist)2.dump出注册表的进程内容(memdump -p 804 --dump-dir=./)3.查看DUMP出注册表内存关键字sam (strings -e l -d 804.dmp|grep "SAM" ),发现有可疑的用户名4.检索注册表中的该用户 printkey -K "SAM\Domains\Account\Users\00000493"5.hashdum出对应账号的用户名的密码(hashdump|grep "FHREhpe")类型13:rootkiet.exe木马1.查看可疑进程(pslist)一般rootkit恶意程序与svchost进行捆绑并注入到svchost.exe中,需要进入安全电脑模式才能清理2.-查找进程注入引用的文件(-p 880 handles -t file)3进程在运行过程中被注入的DLL文件(ldrmodules -p 880 | grep -i false)4.个注入的dll文件的内存地址(malfind -p 880)dlldump -p 880 --base=0x980000 --dump-dir=.volatility命令练习的内存镜像:链接: https://pan.baidu.com/s/1LXSJ_RL9yotb8IKbzIQZ3g 提取码: syny参考文章:https://blog.csdn.net/m0_68012373/article/details/129038773