查看镜像信息(imageinfo)
首先使用-f
选项来选择镜像文件
输入命令,以下命令用来查看镜像的系统信息
volatility -f xxx.dmp imageinfo
输出
Volatility Foundation Volatility Framework 2.6
INFO : volatility.debug : Determining profile based on KDBG search...
Suggested Profile(s) : Win7SP1x64, Win7SP0x64, Win2008R2SP0x64, Win2008R2SP1x64_23418, Win2008R2SP1x64, Win7SP1x64_23418
AS Layer1 : WindowsAMD64PagedMemory (Kernel AS)
AS Layer2 : FileAddressSpace (/home/kali/Desktop/计算机取证/1.dmp)
PAE type : No PAE
DTB : 0x187000L
KDBG : 0xf80003ffa0a0L
Number of Processors : 1
Image Type (Service Pack) : 1
KPCR for CPU 0 : 0xfffff80003ffbd00L
KUSER_SHARED_DATA : 0xfffff78000000000L
Image date and time : 2022-04-28 05:54:55 UTC+0000
Image local date and time : 2022-04-28 13:54:55 +0800
我们查看到了Win7SP1x64
,这个信息在后面的操作都会用到
确定系统(–profile=)
看到了系统信息,接下来就可以确定了
volatility -f xxx.dmp --profile=Win7SP1x64 imageinfo
想要进行进一步操作,需要指定profile
参数
查看密码的MD5值(hashdump)
volatility -f xxx.dmp --profile=Win7SP1x64 hashdump
使用此命令可以查看到windows的用户名明文和密码的md5值
**分析进程
分析explorer.exe的进程号:
命令:pslist/pstree/psscan:非常有用的插件,列出转储时运行的进程的详细信息,显示过程ID,该父进程ID(PPID),线程的数目,把手的数目,日期的时间,过程开始和退出;
pslist(无法显示隐藏/终止进程,解决这个问题可以使用psscan)
pstree同样是扫描进程的,但是是以进程树的形式出现的;
当显示的内容比较多的时候,导出文本进一步分析查看;
查看IE记录(iehistory)
volatility -f xxx.raw --profile=WinXPSP2x86 iehistory
查找文件(fliescan)
volatility -f xxx.raw --profile=WinXPSP2x86 fliescan
加上管道符可以精确查找目标文件
volatility -f xxx.raw --profile=WinXPSP2x86 fliescan | grep ssh.txt
mftparser(命令)
MFTParser 插件通常用于解析和分析 NTFS 文件系统的 MFT(Master File Table)。它能够提取关于文件和目录的信息,包括文件名、创建时间、修改时间、访问时间、文件大小等元数据。
Shellbags 插件用于分析 Windows 系统中的 Shellbags 数据,这些数据记录了用户在 Windows 资源管理器中浏览的文件夹和窗口位置等信息。通过分析 Shellbags,用户可以获取有关文件访问历史的有用线索。
文件下载(dumpfiles)
volatility -f xxx.raw --profile=WinXPSP2x86 dumpfiles -Q 0x00000000020bf6a0 -D ./
根据文件查找到的-Q参数才能进行文件下载
历史命令(cmdscan)
volatility -f xxx.raw --profile=WinXPSP2x86 cmdscan
PowerShell历史命令文件路径为:%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
,所以我们直接去filescanConsoleHost_history.txt
网络连接信息(netscan)
volatility -f 1.raw --profile=WinXPSP2x86 netscan
使用此命令可以查看本机ip地址以及进程的网络连接
导出进程内存数据(memdump)
volatility -f OtterCTF.vmem --profile=Win7SP1x64 memdump --pid='708' --dump-dir=./
导出后可用strings
指令来查看数据,并使用grep
指令来筛选,添加-C
的选项用来显示匹配内容的后N行内容,例如:
strings 708.dmp | grep 'Lunar-3' -C 10
或者使用xxd
指令打印文件的hexdump信息,例如:
xxd 708.dmp | grep '5a0c 0000'
注册表信息(hivelist)
volatility -f OtterCTF.vmem --profile=Win7SP1x64 hivelist
主机名
主机名会出储存在\REGISTRY\MACHINE\SYSTEM
中的ControlSet001\Control\ComputerName\ComputerName
条目中,可以直接读取
先使用hivelist
查看\REGISTRY\MACHINE\SYSTEM
的Virtual
值,再使用如下名称即可查看主机名
volatility -f OtterCTF.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control\ComputerName\ComputerName"
粘贴板(clipboard)
volatility -f OtterCTF.vmem --profile=Win7SP1x64 clipboard
查找用户SID
vol.py -f xxx.mem --profile=Win7SP1x86_23418 getsids
查找计算机windows安装时间
Microsoft路径下寻找系统信息
vol.py -f xxx.mem --profile=Win7SP1x86_23418 -o 0x8bd898e8 printkey -K "WOW6432Node\Microsoft"
先使用hivelist
查看\SystemRoot\System32\Config\SOFTWARE
的Virtual
值,再使用如下名称即可查看主机名
可以通过Last updated进行大致判断。正常的系统信息会记录在如下路径:(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
关于计算机连接USB装置
使用命令volatility -h | grep service
查找与设备相关的命令。
(可以看到相关的命令与功能)
使用设备扫描命令查询是否有USB使用痕迹
vol.py -f memdump.mem --profile=Win7SP1x86_23418 svcsan | grep usb
发现确实存在USB的使用记录,在注册表中查询USB设备使用情况
(注册表中与USB设备相关的路径为:ControlSet001\Enum\USBSTOR
)
(先使用hivelist
查看\REGISTRY\MACHINE\SYSTEM
的Virtual
值)
vol.py -f memdump.mem --profile=Win7SP1x86_23418 -o 0x8bc1a1c0 printkey -K "ControlSet001\Enum\USBSTOR"
例:查看到设备(Disk&Ven_Seagate&Prod_Expansion&Rev_0710)
vol.py -f memdump.mem --profile=Win7SP1x86_23418 -o 0x8bc1a1c0 printkey -K "ControlSet001\Enum\USBSTOR\Disk&Ven_Seagate&Prod_Expansion&Rev_0710" 进一步查看该设备
vol.py -f memdump.mem --profile=Win7SP1x86_23418 -o 0x8bc1a1c0 printkey -K "ControlSet001\Enum\USBSTOR\Disk&Ven_Seagate&Prod_Expansion&Rev_0710\NAA6DT2Z&0"
即可查询到该usb设备的详细信息,例,GUID,containerID等
总结(调整)
命令1:
pslist/pstree/psscan:非常有用的插件,列出转储时运行的进程的详细信息,显示过程ID,该父进程ID(PPID),线程的数目,把手的数目,日期的时间,过程开始和退出;
pslist(无法显示隐藏/终止进程,解决这个问题可以使用psscan)
pstree同样是扫描进程的,但是是以进程树的形式出现的;
命令2:
cmdscan:用来查看受害者系统上攻击OS的最强大的命令之一,无论是否打开cmd.exe。简单说,可以看到攻击者在命令提示符中键入的内容;提取内存中保留的cmd命令使用情况
命令3:
filescan:扫描当前打开的文件
使用正则表达式一起使用:volatility -f 路径 --profile=... filescan | grep Downloads
找下载的文件夹了,一般windows下载的内容都放在Downloads文件夹中
命令4:
dlllist:能够显示一个进程装载的动态链接库的信息,其显示列表主要包括加载的动态链接库文件的基地址、文件大小以及文件的所在路径
命令5:
hivelist:查看缓存在内存的注册表
命令6:
hashdump:获取内存中的系统密码
命令7:
userassist:提取出内存中的记录的 当时正在运行的程序有哪些,运行过多少次,最后一次运行时间等信息
命令8:
getsids:查看SID
命令9:
malfind:用于寻找可能注入到各种进程中的恶意软件,使用malfind时也可以使用-p直接指定进程
命令10:
printkey:获取SAM表中的用户
命令11:
mftparser:解析MFT记录、导出MFT记录
volatility -f 镜像 --profile= mftparser
导出的命令为:volatility -f 镜像 --profile= mftparser --output-file=mftverbose.txt -D mftoutput
命令12:
timeliner:可以查看访问记录
命令13:
svcscan:该命令能查看windows的服务
命令14:
psxview:查看被隐藏的进程,如某些隐藏的病毒文件
命令15:
memdump:将内存中的某个进程保存出来
命令16:
dumpregistry:提取内存中的注册表信息
dumpregistry --dump-dir 提取内存注册表的目录路径
命令17:
turecryptmaster:获取TrueCrypt密钥信息
命令18:
truecryptpassphrase:获取TrueCrypt密码信息