volatility

Volatility是一款非常强大的内存取证工具,它是由来自全世界的数百位知名安全专家合作开发的一套工具, 可以用于windows,linux,mac osx,android等系统内存取证。Volatility是一款开源内存取证框架,能够对导出的内存镜像进行分析,通过获取内核数据结构,使用插件获取内存的详细情况以及系统的运行状态。

在不同系统下都有不同的软件版本,

官网地址:https://www.volatilityfoundation.org/26

volatility工具的基本使用

命令格式

volatility -f [image] --profile=[profile] [plugin]

在分析之前,需要先判断当前的镜像信息,分析出是哪个操作系统

volatility -f xxx.vmem imageinfo

如果操作系统错误,是无法正确读取内存信息的,知道镜像后,就可以在–profile=中带上对应的操作系统

常用插件

下列命令以windows内存文件举例

查看用户名密码信息

volatility -f 1.vmem --profile=Win7SP1x64 hashdump

查看进程

volatility -f 1.vmem --profile=Win7SP1x64 pslist

查看服务

volatility -f 1.vmem --profile=Win7SP1x64 svcscan

查看浏览器历史记录

volatility -f 1.vmem --profile=Win7SP1x64 iehistory

查看网络连接

volatility -f 1.vmem --profile=Win7SP1x64 netscan

查看命令行操作

volatility -f 1.vmem --profile=Win7SP1x64 cmdscan

查看文件

volatility -f 1.vmem --profile=Win7SP1x64 filescan

查看文件内容

volatility -f 1.vmem --profile=Win7SP1x64 dumpfiles -Q 0xxxxxxxx -D ./

查看当前展示的notepad内容

volatility -f 1.vmem --profile=Win7SP1x64 notepad

提取进程

volatility -f 1.vmem --profile=Win7SP1x64 memdump -p xxx --dump-dir=./

屏幕截图

volatility -f 1.vmem --profile=Win7SP1x64 screenshot --dump-dir=./

查看注册表配置单元

volatility -f 1.vmem --profile=Win7SP1x64 hivelist

查看注册表键名

volatility -f 1.vmem --profile=Win7SP1x64 hivedump -o 0xfffff8a001032410

查看注册表键值

volatility -f 1.vmem --profile=Win7SP1x64 printkey -K "xxxxxxx"

查看运行程序相关的记录,比如最后一次更新时间,运行过的次数等

volatility -f 1.vmem --profile=Win7SP1x64 userassist

最大程序提取信息

volatility -f 1.vmem --profile=Win7SP1x64 timeliner

电子取证之Easy_dump(2018护网杯)

查看镜像信息

volatility -f easy_dump.img imageinfo

微信图片_20230227235915-1677513577531

查看结果,推测可能是Win7SP1x64的镜像

指定镜像进行进程扫描

volatility -f easy_dump.img --profile=Win7SP1x64 psscan

微信图片_20230228000002

也可以使用pslist参数
发现存在notepad.exe,查看一下内容。

微信图片_20230228000039

导出进程中内容
volatility -f easy_dump.img --profile=Win7SP1x64 memdump -p 2616 -D /xxx/xxx/xxx/
其中procdump:是提取进程的可执行文件
memdump:是提取进程在内存中的信息

微信图片_20230228000108

使用strings查找flag信息
strings -e l 2616.dmp | grep “flag”
发现提示是jpg

微信图片_20230228000132

读取jpg文件
volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep “jpg”
发现图片phos.jpg

微信图片_20230228000202

导出图片

微信图片_20230228000223

查看图片,无法正常打开

微信图片_20230228000243

使用binwalk查看,发现存在zip文件

微信图片_20230228000303

分离文件
foremost file.None.0xfffffa8008355410.vacb

微信图片_20230228000347

分离后自动生成output文件夹,查看内容
解压00004372.zip,得到message.img
继续使用binwalk提取文件

微信图片_20230228000430

得到hint.txt

微信图片_20230228000507

使用脚本进行转换
查看其他大佬说可能是左边,使用脚本进行转换

#脚本文件
import matplotlib.pyplot as plt
import numpy as np

x = []
y = []
with open('hint.txt','r') as f:
    datas = f.readlines()
for data in datas:
    arr = data.split(' ')
x.append(int(arr[0]))
y.append(int(arr[1]))

plt.plot(x,y,'ks',ms=1)
plt.show()

微信图片_20230228000541

扫描二维码得到提示,一个是维吉尼亚加密,秘钥是aeolus。一个是加密文件被删除了,需要恢复。

恢复文件
使用testdisk进行恢复
testdisk message.img

微信图片_20230228000625

红色为需要恢复的文件

微信图片_20230228000639

微信图片_20230228000700

微信图片_20230228000740

使用ls -a查看

微信图片_20230228000808

使用strings查看

微信图片_20230228000821

最后一句字符串尝试解密
得到最终结果

微信图片_20230228000844