0

Volatility-Windows内存分析

 1 year ago
source link: https://cjjkkk.github.io/Volatility-WindowsMemoryForensicsAnalysis/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Volatility-Windows内存分析

发表于 2020-11-10

| 分类于 应急响应

| 阅读数 681

字数统计: 1.3k

  • 安装与基础命令

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


二.安装与基础命令

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

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

Distorm3:反编译库

Yara:恶意软件分类工具

PyCrypto:加密工具集

PIL:图片处理库

OpenPyxl:读写excel文件

ujson:JSON解析

2.基础命令

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

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

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

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

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

获取到密文666C61677B57336C6563306D655F376F5F466F72336E356963737D

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

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

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

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

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

查看网络连接状况

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

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

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

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

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

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

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

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

参考

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

Volatility取证使用笔记

volatility

-------------本文结束感谢您的阅读-------------
想喝快乐水

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK