一、练习基本命令使用
1、获取镜像信息
./volatility -f Challenge.raw imageinfo
一般取第一个就可以了
2、查看用户
./volatility -f Challenge.raw --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"
3、获取主机名
./volatility -f Challenge.raw --profile=Win7SP1x64 printkey -K "ControlSet001\Control\ComputerName\ComputerName"
4、查看浏览器的浏览记录
volatility.exe -f Challenge.raw --profile=Win7SP1x64 iehistory
最前面是 volatility 的文件名,加不加后缀看文件名的情况,这里我用的是 window 下的 volatility,后面命令一样的,只不过 kali 中的 volatility 问题比较多
5、查看网络连接情况
./volatility -f Challenge.raw --profile=Win7SP1x64 netscan
6、查看用户密码
volatility.exe -f Challenge.raw --profile=Win7SP1x64 hashdump
7、查看 LSA 密钥信息
volatility.exe -f Challenge.raw --profile=Win7SP1x64 lsadump
8、查看服务信息
volatility.exe -f Challenge.raw --profile=Win7SP1x64 svcscan
9、查看进程
volatility.exe -f Challenge.raw --profile=Win7SP1x64 pslist
10、查看进程树
volatility.exe -f Challenge.raw --profile=Win7SP1x64 pstree
11.显示隐藏或终止的进程
volatility.exe -f Challenge.raw --profile=Win7SP1x64 psscan
12、查找带有隐藏进程的所有进程列表
volatility.exe -f Challenge.raw --profile=Win7SP1x64 psxview
13、查看 cmd 历史命令
volatility.exe -f Challenge.raw --profile=Win7SP1x64 cmdscan
14、查看文件
volatility.exe -f Challenge.raw --profile=Win7SP1x64 filescan
扫描所有的文件列表,在 kali 中可以配合 grep 命令来使用,过滤出目标文件
15、查看文件内容
volatility.exe -f Challenge.raw --profile=Win7SP1x64 dumpfiles -Q 0xxxx -D 路径
导出内存中缓存的文件
16、查看某软件版本信息
volatility.exe -f Challenge.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000011ff1a070 -D D:\
把后缀改成 .exe 右键属性即可查看版本信息
17、提取进程
memdump
volatility.exe -f Challenge.raw --profile=Win7SP1x64 memdump -p 2012 -D D:\
18、将进程转储到可执行文件
procdump
./volatility -f Challenge.raw --profile=Win7SP1x64 procdump -p 2012 -D /home/kali/
【procdump 和 memdump 的区别:procdump 是提取进程的可执行文件、memdump 是提取进程在内存中的信息】
19、查看桌面上的软件
volatility.exe -f Challenge.raw --profile=Win7SP1x64 filescan | findstr "Desktop"
window 使用 findstr ;kali 使用 grep
20、获取邮箱号
方法一:iehistory
volatility.exe -f Challenge.raw --profile=Win7SP1x64 iehistory
方法二:screenshot
volatility.exe -f Challenge.raw --profile=Win7SP1x64 screenshot -D 路径
这条命令把图片保存在指定路径中,去图片中找邮箱
21、从内存中的注册表信息获取机器关机时间
volatility.exe -f Challenge.raw --profile=Win7SP1x64 shutdowntime
22、显示进程的环境变量
例题:已知某某从浏览器中下载了一个压缩文件,文件相关信息写入到环境中,请找出文件的内容
后面的 333.txt 是自定义文件名,如果不存在会自己创建,打开后就可以在里面找相关内容了,像题目说的那样,是个压缩包,那就过滤后缀为 rar、zip 的数据(注意要大小写不敏感)
23、创建内存中的各种痕迹信息的时间线
./volatility -f Challenge.raw --profile=Win7SP1x64 timeliner | grep "conhost.exe"
题目:找出某应用的最后一次运行时间
这里需要注意,扫出来之后很多是配置文件的运行时间,这里要找到可执行程序的信息(exe)
24、打印 UserAssist 注册表项和信息
./volatility -f Challenge.raw --profile=Win7SP1x64 userassist
查看运行程序相关的记录,比如最后一次更新时间,运行过的次数等
25、查看剪切板
./volatility -f OtterCTF.vmem --profile=Win7SP1x64 clipboard
clipboard
26、查看进程命令行参数
cmdline
二、例题训练及解析
1、【例题取自靶场:OtterCTF】
注意:只挑出一些有针对性的题目
查看镜像版本信息
Win7SP1x64
第一题【3 - Play Time】:瑞克只是喜欢玩一些好玩的老电子游戏。你能分辨出他在玩什么游戏吗?服务器的 IP 地址是什么?
./volatility -f OtterCTF.vmem --profile=Win7SP1x64 netscan
不清楚的可以去百度查一下该名字就好了
由第一张图所示,游戏程序对应的 IP 为 77.102.199.102
最终答案:
CTF{LunarMS}
CTF{77.102.199.102}
第二题【2 - General Info】:让我们从简单的开始 - PC 的名称和 IP 地址是什么?
./volatility -f OtterCTF.vmem --profile=Win7SP1x64 printkey -K "ControlSet001\Control\ComputerName\ComputerName"
CTF{WIN-LO6FAF3DTFE}
看 IP 直接用 netscan 看,找那些出现个数最多的,成片出现的大概率就是了
CTF{192.168.202.131}
最终答案:
CTF{192.168.202.131}
CTF{WIN-LO6FAF3DTFE}
第三题【1 - What the password?】:你得到了 Rick 的 PC 内存样本。你能得到他的用户密码吗?
直接使用 hashdump 看,下图红框内就是密码对应的 MD5 值,不过撞库撞不出来,那就说明考察点不再这里
使用 lsadump 来查看,猜测下图红框内应该是密码,整理一下得到:MortyIsReallyAnOtter
最终答案:
CTF{MortyIsReallyAnOtter}
第四题【4 - Name Game】:我们知道该帐户已登录到一个名为 Lunar-3 的频道。帐户名称是什么?
【登录到名为 Lunar-3 的频道指的是游戏内的频道,所以需要提取游戏程序的信息】
使用 pslist 找到游戏进程 PID
使用 memdump 提取文件信息
把文件丢到 Window 中,使用 HxD 分析,当然也可以右键打开记事本来分析,载入后 CTRL + F 搜索 Lunar-3 快速定位,然后就在 Lunar-3 周围的英文单词一个一个试
试了两个就找到了,Ott3r8r33z3 就是了
最终答案:
CTF{0tt3r8r33z3}
第五题【6 - Silly Rick】:Silly rick 总是忘记他的电子邮件密码,所以他使用在线存储的密码服务来存储他的密码。他总是复制并粘贴密码,这样他就不会弄错。Rick 的电子邮件密码是什么?
题目提示的很明显,复制粘贴密码,所以我们直接看剪切板
最终答案:
CTF{M@il_Pr0vid0rs}
第六题【7 - Hide And Seek】:我们采取 rick 的 PC 内存转储的原因是存在恶意软件感染。请找到恶意软件进程名称(包括扩展名)
查看可以进程的命令行参数
往下翻找,发现 Rick And Morty 下载了东西,且 vmware-tray.exe 存在临时文件夹 Temp 下,该文件夹是比较敏感的,一般看到有程序存在该文件夹下就要特别注意了
所以我们猜测 vmware-tray.exe 是恶意程序,提交发现答案也确实是这个
第七题【11 - Graphic's For The Weak】:恶意软件的图形中有一些可疑的东西。
这题不能只用 volatility,需要配合 foremost (做过 CTF 杂项题的同学对该工具应该很熟悉)分离恶意软件中的图片。
首先,将恶意软件提取出来,使用 procdump 转存成 exe 文件
PID :3720
使用 kali 自带工具 binwalk 查看是否有东西,发现确实包含图片在里面
接下来就可以使用 foremost 来分离了,foremost 分离完的文件会存放在 output 文件夹下
最终答案:
CTF{S0_Just_M0v3_Socy}
第八题【9 - Path To Glory 2】:继续搜索恶意软件进入的方式。
前面我们分析出恶意软件是 Rick And Morty 下载的,所以我们先将所有的 chrome 进程转储下来
自己创建个文件夹,把导出的文件放进去,使用 strings 命令查找相关信息
往下翻找
最终答案:
CTF{Hum@n_I5_Th3_Weak3s7_Link_In_Th3_Ch@inYear}
这一小题出的并不好,我把他放出来的目的是他的思路可以用在比赛中。
2、【例题取自信息安全比赛赛前训练题】
【第一题:找出机器上安装的系统版本】
volatility.exe -f C220.vmem imageinfo
Win7SP1x64
【第二题:找出攻击者的 IP 地址和目标计算机上的本地端口】
volatility -f C220.vmem --profile=Win7SP1x64 netscan
54.36.109.161
2222
【第三题:找出攻击者执行的第一个命令】
volatility -f C220.vmem --profile=Win7SP1x64 cmdline
"C:\Windows\sysnative\svchost.exe"
【第四题:获取 admin 用户密码】
volatility -f C220.vmem --profile=Win7SP1x64 lsadump
flag{406990ff88f13dac3c9debbc0769588c}
【第五题:获取 IP 和主机名】
通过第四题可以得到本机 IP
192.168.85.129
volatility -f C220.vmem --profile=Win7SP1x64 printkey -K "ControlSet001\Control\ComputerName\ComputerName"
WIN-9FBAEH4UV8C
【第六题:获取当前系统浏览器搜索过的关键词】
volatility -f C220.vmem --profile=Win7SP1x64 iehistory
admin@file:///C:/Users/admin/Desktop/flag.txt
【第七题:获取桌面上的 flag.txt 文件的内容】
volatility -f C220.vmem --profile=Win7SP1x64 filescan | findstr "Desktop"
找到文件,接下里使用插件把文件 dump 下来
volatility -f C220.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007f1b6c10 -D D:/
用记事本打开
flag{180d163ca48c793cb0db74fb96d6a882}
【第八题:服务器存在一个挖矿病毒,矿池地址是多少】
54.36.109.161
【第九题:恶意代码在系统中注册了服务,服务名是什么】
由第八题我们确定了病毒程序的端口为 2588,接下来使用 pslist 找到该进程的 PPID
volatility -f C220.vmem --profile=Win7SP1x64 pslist
volatility -f C220.vmem --profile=Win7SP1x64 svcscan
VMnetDHCP
三、比赛例题解题思路
1、找出某恶意程序注册的服务器名称
①、通过 netscan 找到可疑的连接,并记录下对应的进程 PID
②、通过 volatility -f [镜像名称] --profile=[版本] pslist -p PID 找到对应的 PPID(父进程)
③、通过 volatility -f [镜像名称] --profile=[版本] svcscan 中找到 process ID 为 PPID 的即可