Volatility-Windows内存分析

  • 简介
  • 安装与基础命令
  • 一个例题


一.简介

Volatility是一个用于事件响应和恶意软件分析的开源内存取证框架。它是用Python编写的,支持Microsoft Windows,macOS和Linux,volatility框架是一个完全开放的工具集合,在GNU通用许可证下用Python实现,用于从易失性存储器(RAM)样本总提取数字镜像。提取技术完全独立于被取证的系统而执行,但可以查看到系统运行时的状态信息。该框架旨在向人们介绍从内存样本中提取的数字镜像相关的技术,并为进一步研究该领域提供一个平台,它可以分析 .raw、.vmem、.img后缀的文件。



二.安装与基础命令

1.安装

1
git clone https://github.com/volatilityfoundation/volatility.git

Volatility使用python2运行,需要的python模块如下

Distorm3:反编译库

Yara:恶意软件分类工具

PyCrypto:加密工具集

PIL:图片处理库

OpenPyxl:读写excel文件

ujson:JSON解析

2.基础命令

1
python vol.py -f [image] ‐-profile=[profile][plugin]

其中 -f 后面加的是要取证的文件, --profile 后加的是工具识别出的系统版本, [plugin] 是指使用的插件,其中默认存在一些插件,另外还可以自己下载一些插件扩充。

可以使用 -h 参数获取使用方法和插件介绍,这里只列举几个常用到的

imageinfo:显示目标镜像的摘要信息,这常常是第一步,获取内存的操作系统类型及版本,之后可以在 –profile 中带上对应的操作系统,后续操作都要带上这一参数

pslist:该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以

notepad:查看当前展示的 notepad 文本

editbox:显示有关编辑控件的信息

screenshot:保存基于GDI窗口的伪截屏

psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程

pstree:以树的形式查看进程列表,和pslist一样,也无法检测隐藏或解链的进程

mendump:提取出指定进程,常用foremost 来分离里面的文件

filescan:扫描所有的文件列表

hashdump:查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容(实际中没有mimikatz效果好)

svcscan:扫描 Windows 的服务

connscan:查看网络连接

cmdscan:可用于查看终端记录

dlllist: 列出某一进程加载的所有dll文件

dumpfiles:导出某一文件(指定虚拟地址)

hivelist: 列出所有的注册表项及其虚拟地址和物理地址

timeliner: 将所有操作系统事件以时间线的方式展开


三.一个例题

内存取证三项

描述:一天下午小白出去吃饭,临走之前还不忘锁了电脑,这时同寝室的小黑想搞点事情,懂点黑客和社工知识的小黑经过多次尝试获得了密码成功进入电脑,于是便悄悄在电脑上动起手脚了,便在桌面上写着什么,想给小白一个惊喜,同时还传送着小白的机密文件,正巧这时小白刚好回来,两人都吓了一跳,小黑也不管自己在电脑上留下的操作急忙离开电脑,故作淡定的说:“我就是随便看看”。

1.小黑写的啥,据说是flag?

2.那么问题来了,小白的密码是啥?

3.小黑发送的机密文件里面到底是什么?

查看镜像信息python27 vol.py -f ..\内存取证三项\1.raw imageinfo

imageinfo

可以看到系统是WinXPSP2x86,使用--profile命令指定系统版本

查看进程

1
python27 vol.py -f ..\内存取证三项\1.raw --profile=WinXPSP2x86 pslist

pslist

可以看到系统进程中有一个notepad.exe,根据题目,猜测里面包含第一个flag

1
python27 vol.py -f ..\内存取证三项\1.raw --profile=WinXPSP2x86 notepad

notepad

获取到密文666C61677B57336C6563306D655F376F5F466F72336E356963737D

试了几次,用的base16编码,第一个flag

base16

第二个flag,去查找电脑的密码

1
python27 vol.py -f ..\内存取证三项\1.raw --profile=WinXPSP2x86 hashdump

Administrator:500:1e27e87bd14ec8af43714428b303e3e4:1e581aafa474dfadfdf83fc31e4fd4ea:::

密文可以使用ophcrack或者其他软件爆破,这里彩虹表比较少,没有完全爆破出来,后面有提示能猜出来是19950101

ophcrack

查看网络连接状况

1
python27 vol.py -f ..\内存取证三项\1.raw --profile=WinXPSP2x86 connscan

connscan

发现一个2333端口的访问请求,看一下pid对应的进程

nc

此外还有cmd.exe,猜测是使用cmd命令连接nc,可以通过cmd命令行来查看执行了什么命令

1
python27 vol.py -f ..\内存取证三项\1.raw --profile=WinXPSP2x86 cmdscan

cmdscan

可以看到获取了一个 P@ssW0rd_is_y0ur_bir7hd4y.zip的压缩文件,将文件导出

1
python27 vol.py -f ..\内存取证三项\1.raw --profile=WinXPSP2x86 memdump -p 120 --dump-dir=dump

memdump

使用binwalk对提取出来的dmp文件进行分析,发现存在P@ssW0rd_is_y0ur_bir7hd4y.txt,现在只需要提取出这个txt文件,使用foremost提取出文件,得到6个zip

binwalk

解压生成的压缩包,发现需要密码,密码根据提示可以猜出是19950101,解压获得flag

unzip


参考

[内网攻防]电子取证(Forensics)-Windows取证基础

Volatility取证使用笔记

volatility



-------------本文结束感谢您的阅读-------------

本文标题:Volatility-Windows内存分析

文章作者:J2ck7a1 Ch33

发布时间:2020年11月10日 - 10:11

最后更新:2020年11月10日 - 14:11

原始链接:http://yoursite.com/Volatility-WindowsMemoryForensicsAnalysis/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。


想喝快乐水