volatility内存取证工具史上最全使用教程

Volatility是一款开源的内存取证框架,主要用于对导出的内存镜像进行分析,通过获取内核数据结构,使用插件获取内存的详细情况以及系统的运行状态。这是volatility内存取证工具史上最全使用教程主要针对比赛场景,文章内容主要借鉴csdn论坛内容进行整合。

目录

内存取证-volatility工具的使用一,简介

二,安装Volatility

1.windows下

2. Linux下(这里kali为例)

三 、安装插件

四,工具介绍help 五,命令格式编辑

六,常用命令插件:

1. 查看当前内存镜像中的用户密码信息,可以使用printkey命令。例如,要查看SAM\Domains\Account\Users\Names的用户名和密码信息,可以输入`printkey -K “SAM\Domains\Account\Users\Names”`。

2. 如果使用john爆破无法获取密码,可以尝试使用lasdmp查看强密码。例如,要查看lsadmp中的强密码,可以输入`lasdmp`。

3. 查看进程信息可以使用pslist命令。例如,要查看已知进程,可以输入`pslist`。

4. 隐藏或解链的进程可以使用psscan命令。例如,要查看服务名称,可以输入`svcscan`。

5. 查看浏览器历史记录可以使用iehistory命令。例如,要获取当前系统浏览器搜索过的关键词,可以输入`iehistory`。

6. 查看网络连接可以使用netscan命令。例如,要获取当前系统的IP地址和主机名,可以输入`netscan`。

7. 查看命令行操作可以使用cmdscan命令。例如,要显示cmd历史命令,可以输入`cmdscan`。

8. 查看进程命令行参数可以使用cmdline命令。例如,要列出某一进程加载的所有dll文件,可以输入`dlllist`。

9. 扫描所有文件列表可以使用filescan命令。例如,要查看文件内容,可以输入`dmpfiles`。

10. 查看当前展示的notepad内容可以使用notepad命令。例如,要显示有关编辑控件的信息,可以输入`editbox`。

11. 提取进程memdump可以使用screenshot命令。例如,要查看注册表配置单元,可以输入`hivelist`。

12. 查看注册表键名和值可以使用hivedmp命令。例如,要获取主机名,可以输入`printkey`。

13. 查看运行程序相关的记录可以使用serassist命令。例如,要最大程序提取信息,可以输入`timeliner`。

14. 查看剪贴板信息可以使用clipboard命令。例如,要显示计算机及其操作系统的详细配置信息,可以输入`systeminfo`。

15. 恢复被删除的文件可以使用mftparser命令。例如,要查看环境变量,可以输入`envars`。

16. 程序版本信息可以使用verinfo命令。例如,要查看进程树,可以输入`pstree`。

17. 从内存文件中找到异常程序植入到系统的开机自启痕迹可以使用shimcache命令。

内存取证-volatility工具的使用

一,简介

Volatility一款开源内存取证框架能够对导出的内存镜像进行分析,通过获取内核数据结构,使用插件获取内存的详细情况以及系统的运行状态。

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

二,安装Volatility 在不同系统下都有不同的软件版本

我这里强烈建议直接使用kali2019及其以前的kali老版本,kali2019以前的老版本系统自带volatility工具,不用费劲安装,volatility工具安装起来很麻烦,而且老有一些幺蛾子事,不如直接vmware安装kali2019系统然后自带volatility工具。

官网地址:

https://www.volatilityfoundation.org

volatility内存取证工具史上最全使用教程插图

根据自己需求下载

另外不同的版本下,也存在着一定命令上的差异,使用时一定需注意支持的内存格式还是很多的,符合日常需求

volatility内存取证工具史上最全使用教程插图1

1.windows下直接下载解压好了

volatility内存取证工具史上最全使用教程插图2

打开cmd 直接输入命令·即可 (cmd必须是当前目录,除非你设了环境变量)

volatility内存取证工具史上最全使用教程插图3

2. Linux 下(这里kali为例)

Volatility2.6需要python2,pip安装模块也需要2版本,具体命令根据实际情况调整。

源码包(这是github,比较快,也可以下上面官网的,步骤是一样的)

https://github.com/volatilityfoundation/volatility

volatility内存取证工具史上最全使用教程插图4

下载解压

unzip volatility-master.zip

volatility内存取证工具史上最全使用教程插图5

安装依赖环境(

distorm3 crypto

crypto pip2 install pycryptodome

#如果安装失败,可使用以下命令切换国内源

pip2 install pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple

distorm3下载地址

GitHub – vext01/distorm3: distorm3

下载解压

unzip distorm3-master.zip

volatility内存取证工具史上最全使用教程插图6

进行编译

python2 setup.py install

volatility内存取证工具史上最全使用教程插图7

可选插件

Distorm3

(反编译库):

pip install distorm3

Yara

(恶意软件分类工具):

pip install yara

PyCrypto

(加密工具集):

pip install pycrypto

PIL

(图片处理库):

pip install pil

OpenPyxl

(读写

excel

文件):

pip install openpyxl

ujson

JSON

解析):

pip install ujson

安装

Volatility

在解压后的Volatility目录下进行编译

python2 setup.py install

volatility内存取证工具史上最全使用教程插图8

检验

volatility内存取证工具史上最全使用教程插图9

三 、安装插件

安装mimikatz

将mimikatz.py复制到volatility-master/volatility/plugins/目录下,使用时需要添加参数–plugins=./volatility-master/volatility/plugins。

运行时可能会出现如下错误,这是因为没有安装construct 模块:

Volatility Foundation Volatility Framework 2.6

*** Failed to import volatility.plugins.mimikatz (ImportError: No module named construct) ERROR : volatility.debug : You must specify something to do (try -h)

安装construct模块。

pip install construct

四,工具介绍help

输入vol.py –h 查看官方做出的帮助

volatility内存取证工具史上最全使用教程插图10

翻译如下

1 Volatility Foundation Volatility Framework 2.6
2 用法: Volatility – 内存取证分析平台
34 Options:
5 -h, –help 列出所有可用选项及其默认值
6 默认值可以在配置文件中设置
7 (/etc/volatilityrc)
8 –conf-file=/home/kali/.volatilityrc
9 基于用户的配置文件
10 -d, –debug 调试Volatility
  1. –plugins=PLUGINS 要使用的其他插件目录(冒号分隔)
  2. –info 打印所有注册对象的信息
  1. –cache-directory=/home/kali/.cache/volatility
  2. 存放缓存文件的目录 15 –cache 使用缓存
    输入vol.py –info可查看插件。

volatility内存取证工具史上最全使用教程插图11

翻译如下

1

Volatility Foundation Volatility Framework 2.6

2

3

Profiles

4

——–

5

VistaSP0x64 – Windows Vista SP0 x64

的配置文件

6

VistaSP0x86 – Windows Vista SP0 x86

的配置文件

7

VistaSP1x64 – Windows Vista SP1 x64

的配置文件

8

VistaSP1x86 – Windows Vista SP1 x86

的配置文件

9

VistaSP2x64 – Windows Vista SP1 x86

的配置文件

10

VistaSP2x86 – Windows Vista SP2 x64

的配置文件

11

Win10x64 – Windows 10 x64

的配置文件

12

Win10x64_10586 – Windows 10 x64

的配置文件

(10.0.10586.306 / 2016-04-23)

13

Win10x64_14393 – Windows 10 x64

的配置文件

(10.0.14393.0 / 2016-07-16)

14

Win10x86 – Windows 10 x86

的配置文件

15

Win10x86

10586

– Windows 10 x86

的配置文件

(10.0.10586.420 / 2016-05-28)

volatility内存取证工具史上最全使用教程插图12

五,命令格式

volatility -f [image] –profile=[profile] [plugin] volatility -f [对象] –profile=[操作系统] [插件参数]

在分析之前,需要先判断当前的镜像信息,分析出是哪个操作系统 命令imageinfo即可获取镜像信息。

Volatility -f xxx.vmem imageinfo

在查到操作系统后如果不确定可以使用以下命令查看

volatility – f xxx.vmem –profile= [操作系统] volshell

举个例子 像这种什么都找不到 什么都

volatility内存取证工具史上最全使用教程插图13

像这种是合格的

volatility内存取证工具史上最全使用教程插图14

当我们确定操作系统可以利用插件去做题了

六,常用命令插件

六,常用命令插件:

注意,一下命令为简称需要使用完全命令才行

1. 查看当前内存镜像中的用户密码信息,可以使用printkey命令。例如,要查看SAM\Domains\Account\Users\Names的用户名和密码信息,可以输入`printkey -K “SAM\Domains\Account\Users\Names”`。例如volatility -f 1.vmem –profile=Win7SP1x64 printkey -K “SAM\Domains\Account\Users\Names”

2. 查看用户名密码信息(哈希值需要john爆破),可以使用hashdump命令。例如查看当前系统ip和主机名,可以提交Flag{ip:主机名}。例如volatility -f 1.vmem –profile=Win7SP1x64 hashdump

3. 查看进程pslist。例如,要查看已知进程,可以输入`pslist`。

4. 隐藏或解链的进程psscan。例如,要查看服务名称,可以输入`svcscan`。

5. 查看浏览器历史记录,获取当前系统浏览器搜索过的关键词,可以使用iehistory命令。例如,要获取当前系统浏览器搜索过的关键词,可以输入`iehistory`。

6. 查看网络连接,可以使用netscan命令。例如,要获取当前系统的IP和主机名,可以输入`netscan`。

7. 查看网络连接connscan。例如,要查看网络连接,可以输入`connscan`。

8. 查看命令行操作,显示cmd历史命令,可以使用cmdscan命令。例如,要显示cmd历史命令,可以输入`cmdscan`。

9. 查看进程命令行参数(具体一些可疑进程的参数指令),可以使用cmdline命令。例如,要列出某一进程加载的所有dll文件,可以输入`dlllist -p 2588`。

10. 扫描所有的文件列表,可以使用filescan命令。例如,要扫描所有文件列表,可以输入`filescan`。

11. 查看文件内容,可以使用dmpfiles命令。例如,要查看文件内容,可以输入`dmpfiles`。

12. 查看当前展示的notepad内容,可以使用notepad命令。例如,要查看当前展示的 notepad 文本,可以输入`notepad`。

13. 显示有关编辑控件的信息,可以使用editbox命令。例如,要显示有关编辑控件的信息,可以输入`editbox`。

14. 提取进程memdump。例如,要提取指定进程,常用foremost 来分离里面的文件,需要指定进程-p [pid] 和输出目录 -D。例如,要提取进程号为332的进程,可以输入`memdump -p 332 -D XX/`。

15. 屏幕截图,可以使用screenshot命令。例如,要保存基于GDI窗口的伪截屏,可以输入`screenshot –dump-dir=./`。

16. 查看注册表配置单元hivelist。例如,要列出所有的注册表项及其虚拟地址和物理地址,可以输入`hivelist`。

17. 查看注册表键名hivedmp。例如,要查看注册表键值,可以输入`hivedump -o 0xfffff8a001032410`。

18. 获取主机名,可以使用printkey命令。例如,要获取主机名,可以输入`printkey -K “ControlSet001\Control\ComputerName\ComputerName”`。

19. 列出用户名,可以使用printkey命令。例如,要列出用户名,可以输入`printkey -K “SAM\Domains\Account\Users\Names”`。

20. 查看运行程序相关的记录,比如最后一次更新时间,运行过的次数等。可以使用userassist命令。例如,要查看运行程序相关的记录,可以输入`userassist`。

21. 最大程序提取信息timeliner。例如,要将所有操作系统事件以时间线的方式展开,可以输入`timeliner`。

22. 查看剪贴板信息clipboard。例如,要查看剪贴板信息,可以输入`clipboard`。

23. 显示关于计算机及其操作系统的详细配置信息(插件)systeminfo。例如,要显示关于计算机及其操作系统的详细配置信息,可以输入`systeminfo`。

24. 恢复被删除的文件mftparser。例如,要恢复被删除的文件,可以输入`mftparser`。

25. 查看环境变量envars。例如,要查看环境变量,可以输入`envars`。

26. 列出某一进程加载的所有dll文件dlllist。例如,要列出某一进程加载的所有dll文件,需要指定进程-p [pid]。例如,要列出进程号为2588的进程加载的所有dll文件,可以输入`dlllist -p 2588`。

27. 程序版本信息verinfo。例如,要列出PE|程序版本信息,可以输入`verinfo`。

28. 产看进程树,可以轻松了解各进程之间的关系:父进程与子进程 pstree。例如,要在进程中PPID比PID还大,那可能这个进程有异常程序。

八,例题讲解

这里我们找两个典型例题 讲解一下哦

题目一

是46届世界技能大赛湖北省选拔赛 也是今年金砖比赛的样题

链接:https://pan.baidu.com/s/1tYgIicCqJExmaMLYa3YeSA 提取码:lulu

你作为 A 公司的应急响应人员,请分析提供的内存文件按照下面的要求找到 相关关键信息,完成应急响应事件。

  1. 从内存中获取到用户admin的密码并且破解密码,以Flag{admin,password} 形式提交(密码为 6 位);
  2. 获取当前系统 ip 地址及主机名,以 Flag{ip:主机名}形式提交;
  3. 获取当前系统浏览器搜索过的关键词,作为 Flag 提交;
  4. 当前系统中存在挖矿进程,请获取指向的矿池地址,以 Flag{ip:端口}形式 提交;
  5. 恶意进程在系统中注册了服务,请将服务名以 Flag{服务名}形式提交。

上题已经看到进程

解析

1.从内存中获取到用户admin的密码并且破解密码,以Flag{admin,password} 形式提交(密码为 6 位);

不管什么题内存取证的第一步肯定是去判断当前的镜像信息,分析出是哪个操作系统 使用参数 imageinfo 查看系统信息

volatility -f 1.vmem imageinfo

volatility内存取证工具史上最全使用教程插图15

操作系统我们一般取第一个可以了接下来可以输入参数可以先查看当前内存镜像中的用户

volatility -f 1.vmem –profile=Win7SP1x64 printkey -K “SAM\Domains\Account\Users\Names”

volatility内存取证工具史上最全使用教程插图16 使用hashdump获取sam

volatility -f 1.vmem –profile=Win7SP1x64 hashdump

volatility内存取证工具史上最全使用教程插图17 可以通过john工具来进行好像跑不出来结果。应该是设定了强密码。于是只能使用了lasdump命令来查看

volatility -f 1.vmem –profile=Win7SP1x64 lsadump

volatility内存取证工具史上最全使用教程插图18

volatility内存取证工具史上最全使用教程插图19

flag{admin.dfsddew}

2.获取当前系统 ip 地址及主机名,以 Flag{ip:主机名}形式提交;

Netscan 可以查ip

volatility -f 1.vmem –profile=Win7SP1x64 netscan

volatility内存取证工具史上最全使用教程插图20 Ip:192.168.85.129

主机名需要通过查询注册表,先用hivelist

Volatility -f 1.vmem –profile=Win7SP1x64 hivelist

volatility内存取证工具史上最全使用教程插图21

然后我们需要一步一步去找键名

volatility -f 1.vmem –profile=Win7SP1x64 -o 0xfffff8a000024010 printkey

volatility内存取证工具史上最全使用教程插图22 volatility -f 1.vmem -profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K “ControlSet001”

volatility内存取证工具史上最全使用教程插图23

继续

volatility -f 1.vmem –profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K “ControlSet001\Control “

volatility内存取证工具史上最全使用教程插图24

继续

volatility -f 1.vmem –profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K “ControlSet001\Control\ComputerName”

volatility内存取证工具史上最全使用教程插图25

再来

volatility -f 1.vmem –profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K “ControlSet001\Control\ComputerName\ComputerName”

volatility内存取证工具史上最全使用教程插图26

得到主机名WIN-9FBAEH4UV8C 也可以直接通过 hivedump查询相应的键名 但比较慢

volatility -f 1.vmem –profile=Win7SP1x64 hivedump -o 0xfffff8a000024010 > system.txt

3.获取当前系统浏览器搜索过的关键词,作为 Flag 提交;

这里使用iehistory

volatility -f 1.vmem –profile=Win7SP1x64 iehistory

volatility内存取证工具史上最全使用教程插图27

flag{admin@file:///C:/Users/admin/Desktop/flag.txt}

4.当前系统中存在挖矿进程,请获取指向的矿池地址,以 Flag{ip:端口}形式 提交;

volatility -f 1.vmem –profile=Win7SP1x64 netscan

唯一一个已建立的 volatility内存取证工具史上最全使用教程插图28

flag{54.36.109.161:2222}

5.恶意进程在系统中注册了服务,请将服务名以 Flag{服务名}形式提交。

上一题中已经知道了进程号为2588

volatility -f 1.vmem –profile=Win7SP1x64 pslist -p 2588

volatility内存取证工具史上最全使用教程插图29

查到父进程是3036 然后在通过通过svcscan可以查询服务名称,找到对应服务名

volatility -f 1.vmem –profile=Win7SP1x64

svcscan

volatility内存取证工具史上最全使用教程插图30

flag{VMnetDHCP}

© 版权声明
THE END
喜欢就亲吻一下吧
分享
评论 抢沙发
头像
评论一下幻城的文章吧
提交
头像

昵称

取消
昵称代码图片

    暂无评论内容