Windows内存取证思路-----volatility



文章目录

  • 前言
  • 一、首先拿到内存,该怎么做
  • 二、解题思路
    • 1.获取Windows中用户的明文密码,flag{明文密码}
    • 2.找到浏览器的下载的信息
    • 3.查出恶意主机的IP地址及连接的端口号
    • 4.查询恶意连接的服务名
    • 5.查询主机名称
  • 二.volatility常用命令
  • 总结


前言

Volatility是一个开源的记忆分析工具,用于分析windows操作系统的内存快照。 该工具可以在内存镜像中查找恶意软件、病毒、漏洞利用等代码,发现系统漏洞,并为取证工作提供很多的便利


一、首先拿到内存,该怎么做

1.拿到Windows内存,先查看内存镜像的版本信息

vol.py -f worldskills3.vmem imageinfo

Windows内存取证思路-----volatility_第1张图片

一般取第一个就行----------Win7SP1x64

二、解题思路

1.获取Windows中用户的明文密码,flag{明文密码}

vol.py -f worldskills3.vmem --profile=Win7SP1x64 hashdump

Windows内存取证思路-----volatility_第2张图片

如果hashdump解不出来,那就lsadump,查看明文
vol.py -f worldskills3.vmem --profile=Win7SP1x64 lsadump

Windows内存取证思路-----volatility_第3张图片

将flag中数字提取出来,md5解密
406990ff88f13dac3c9debbc0769588c

Windows内存取证思路-----volatility_第4张图片

2.找到浏览器的下载的信息

vol.py -f worldskills3.vmem --profile=Win7SP1x64 iehistory

Windows内存取证思路-----volatility_第5张图片

发现flag,使用filescan扫描
vol.py -f worldskills3.vmem --profile=Win7SP1x64 filescan |grep flag
将flag提取出来dumpflies
vol.py -f worldskills3.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007f1b6c10 -D ./

Windows内存取证思路-----volatility_第6张图片

┌──(root㉿kali)-[~/neicun]
└─# mv file.None.0xfffffa801a879510.dat flag
                                                                               
┌──(root㉿kali)-[~/neicun]
└─# cat flag       
flag{180d163ca48c793cb0db74fb96d6a882}  

3.查出恶意主机的IP地址及连接的端口号

vol.py -f worldskills3.vmem --profile=Win7SP1x64 netscan

4.查询恶意连接的服务名

上一题我们看到恶意连接的pid是2588
vol.py -f worldskills3.vmem --profile=Win7SP1x64 pslist |grep 2588

在这里插入图片描述

看到父进程的ppid是3036,那我们就scvscan-----查找所有的恶意进程信息
vol.py -f worldskills3.vmem --profile=Win7SP1x64 svcscan |grep 3036 -C 10

Windows内存取证思路-----volatility_第7张图片

5.查询主机名称

先查询注册表信息
vol.py -f worldskills3.vmem --profile=Win7SP1x64 hivelist
在查具体的信息
vol.py -f worldskills3.vmem --profile=Win7SP1x64 -o “0xfffff8a000024010” printkey
-o 后面跟的是内存地址

vol.py -f worldskills3.vmem --profile=Win7SP1x64 -o “0xfffff8a000024010” printkey -K “ControlSet001”
-K 后面跟要查的值
然后一直往下查就行了

Windows内存取证思路-----volatility_第8张图片
Windows内存取证思路-----volatility_第9张图片
Windows内存取证思路-----volatility_第10张图片
Windows内存取证思路-----volatility_第11张图片

二.volatility常用命令

volatility -f 镜像 参数 命令
示例:volatility -f XXX.raw --profile=Win7SP1x64 pslist

常用命令

imageinfo    #查看镜像系统信息 使用对应版本的镜像,后面的参数使用–profile(两根横杠) --profile=Win7SP1x64

pslist 		#看完镜像直接查看这个镜像上有那些进程正在运行 pslist应该比较好理解就是进程的列表的意思。
psxview		#可查看一些隐藏进程
pstree 		#以树的形式来列出正在进行的进程,不会显示出隐藏或未链接的进程

cmdscan		#查看镜像的历史命令,就是和linux中history差不多。
consoles	#这个会比上面那个更好一些,能看到指令的输入和输出。
cmdline		#此指令将会列出所有命令行下运行的程序
cmdscan		#提取内存中保留的 cmd 命令使用情况
dlllist		#显示每个进程的加载dll列表
netscan 	#获取到当时的网络连接情况
svcscan		#查看服务
modules 	#查看内核驱动
modscan/driverscan 		 #可查看一些隐藏的内核驱动
ShimCache				#来识别应用程序兼容性问题。跟踪文件路径,大小,最后修改时间和最后“执行”时间.

privs		#显示进程权限
envars		#显示环境变量

filescan	#查找文件,可搭配 grep | "xxx"   /  filescan | grep -E “png”

memdump -p [PID] -D 保存目录			#通过相应的进程能直接dump出相关的文件。
dumpfiles -Q [16进制位置] -D 保存目录	 #通过16进制位置dump出相关的文件。

editbox		#查看系统正在运行的编辑本
dumpregistry -D 保存目录  #导出系统的注册表
screenshot -D 保存目录	  #查看并导出屏幕的截屏【需要安装PIL库】
clipboard				#查看剪贴板数据,加一个-v可以导出相关的数据。
iehistory				#查看浏览器的历史记录

printkey -K "SAM\Domains\Account\Users\Names"	#查看用户名
printkey -K "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"  #打印出最后登录的用户
hashdump/lsadump			#获取各个账号的MD5加密密码
hivelist				#获取注册表单元配置列表
#找出获取system 的 virtual 地址,SAM 的 virtual 地址,然后在使用hashdump -y SYSTEM_virtual -x SAM_virtual.  (通过hivelist找出用户)

总结

以上就是今天要讲的内容,本文仅仅简单介绍了对Windows内存的取证方法,Linux的取证比较少见,volatility的使用,而volatility的功能还有很多,这篇文章仅供参考,要学的还有很多哟!!!

你可能感兴趣的:(windows,缓存)