内存取证工具Volatility学习(上)

简介: 内存取证工具Volatility学习

说明


本文参考了一下资料,感谢各位师傅的帮助:

https://github.com/volatilityfoundation/volatility
https://www.volatilityfoundation.org/
https://www.cnblogs.com/Junglezt/p/16027761.html (主要参考)
https://www.freebuf.com/articles/database/266738.html


1. Volatility介绍


Volatility是一款开源的内存取证分析工具,支持WindowsLinuxMaCAndroid等多类型操作系统系统的内存取证方式。该工具是由python开发的,目前支持python2python3环境。接下来小编将带领大家学习Volatility工具的安装及使用。

参考:http://www.hackdig.com/09/hack-484669.htm

volatility(挖楼推了推) 是一个开源的框架,能够对导出的内存镜像进行分析,能够通过获取内核的数据结构,使用插件获取内存的详细情况和运行状态,同时可以直接dump系统文件,屏幕截图,查看进程。

参考:[https://www.cnblogs.com/Junglezt/p/16027761.html](https://www.cnblogs.com/Junglezt/p/16027761.html)  
可以使用 -h 参数获取使用方法和插件介绍,列举几个常用到的命令
imageinfo:显示目标镜像的摘要信息,这常常是第一步,获取内存的操作系统类型及版本,之后可以在 –profile 中带上对应的操作系统,后续操作都要带上这一参数
pslist:该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以
pstree:以树的形式查看进程列表,和pslist一样,也无法检测隐藏或解链的进程
psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程
cmdscan:可用于查看终端记录
notepad:查看当前展示的 notepad 文本(–profile=winxp啥的低版本可以,win7的不行,可以尝试使用editbox)
filescan:扫描所有的文件列表
linux配合 grep 命令进行相关字符定向扫描,如:grep flag、grep -E ‘png|jpg|gif|zip|rar|7z|pdf|txt|doc’
dumpfiles:导出某一文件(指定虚拟地址)
需要指定偏移量 -Q 和输出目录 -D
memdump:提取出指定进程,常用foremost 来分离里面的文件
需要指定进程-p [pid] 和输出目录 -D
editbox:显示有关编辑控件(曾经编辑过的内容)的信息
screenshot:保存基于GDI窗口的伪截屏
clipboard:查看剪贴板信息
iehistory:检索IE浏览器历史记录
systeminfo:显示关于计算机及其操作系统的详细配置信息(插件)
hashdump:查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容(mimikatz插件可以获取系统明文密码)
mftparser:恢复被删除的文件
svcscan:扫描 Windows 的服务
connscan:查看网络连接
envars:查看环境变量
dlllist: 列出某一进程加载的所有dll文件
hivelist: 列出所有的注册表项及其虚拟地址和物理地址
timeliner: 将所有操作系统事件以时间线的方式展开


2. Volatility安装


目前作者已公布了两个版本的VolatilityVolatility2是基于py2环境,Volatility3是基于py3环境,目前可以在github上下载安装,也可以直接在官网下载直接运行:

github环境:

https://github.com/volatilityfoundation/volatility

官网直接下载使用:

https://www.volatilityfoundation.org/

直接下载可执行文件直接运行:

安装的话,可以从github或者官网下载,利用python2进行安装,也可以直接下载编译好的可执行文件直接运行,在这里因为我的kali出了一点问题,所以直接下载mac版的可执行文件运行。

文件下载的话,不要使用Chrome版,下载不下来,需要使用其他的浏览器来下载。

在这里使用命令看下:./volatility_2.6_mac64_standalone -h


3. volatility使用


在这里以分析vm虚拟机的镜像文件为例,在这复制下winserver2003vm暂停文件:


3.1 获取内存镜像版本信息


使用方法是:volatility -f 文件名 imageinfo

直接使用命令分析:

./volatility -f 2003.vmem imageinfo

当前可以分析出来结果:

$ ./volatility -f 2003.vmem imageinfo
Volatility Foundation Volatility Framework 2.6
INFO    : volatility.debug    : Determining profile based on KDBG search...
          Suggested Profile(s) : Win2003SP0x86, Win2003SP1x86, Win2003SP2x86
                     AS Layer1 : IA32PagedMemoryPae (Kernel AS)
                     AS Layer2 : FileAddressSpace (/Users/crow/Security/crow_tools/19_取证/volatility_2.6_mac64_standalone/2003.vmem)
                      PAE type : PAE
                           DTB : 0x503000L
                          KDBG : 0x8088e3e0L
          Number of Processors : 1
     Image Type (Service Pack) : 2
                KPCR for CPU 0 : 0xffdff000L
             KUSER_SHARED_DATA : 0xffdf0000L
           Image date and time : 2022-08-09 10:30:16 UTC+0000
     Image local date and time : 2022-08-09 18:30:16 +0800


3.2 pslist 列出内存中的进程


可以列出内存中运行的进程的pidppid等信息:

volatility -f 镜像名 --profile=第一步获取的版本信息 pslist`

在第一步获取的是Win2003SP0x86,所以命令组合以下就是:

./volatility -f 2003.vmem --profile=Win2003SP0x86 pslist

但是命令执行之后,并未获取到有效的进程信息:

在这里将镜像版本信息更换一下再试试:

./volatility -f 2003.vmem --profile=Win2003SP1x86 pslist


3.3 导出指定进程 memdump


在我们pslist后,会给出进程的PID,只需要指定PID就可以将进程导出:

当前svchost的进程为1256,运行命令为:

./volatility -f 2003.vmem --profile=Win2003SP1x86 memdump -p 1256 -D ./result

导出的文件名进程的PID,后缀名为dmp

可以使用strings -e l 2616.dmp | grep flag,筛选其中的flag

-e为选择字符的大小,l为32bit为一个字符

  • • 这段不是我的

相关文章
|
3月前
|
存储 人工智能 搜索推荐
一种专为AI代理设计的内存层,能够在交互过程中记忆、学习和进化
Mem0 是专为 AI 代理设计的内存层,支持记忆、学习与进化。提供多种记忆类型,可快速集成,适用于开源与托管场景,助力 AI 代理高效交互与成长。
430 123
一种专为AI代理设计的内存层,能够在交互过程中记忆、学习和进化
|
6月前
|
存储 Ubuntu Linux
内存卡格式化必看!4个格式化工具与注意事项
今天就给大家推荐几款经过实测的内存卡格式化工具,它们不仅使用简单、支持多种格式,而且在修复损坏卡方面也表现稳定,是实用性与安全性兼具的好帮手。
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
389 62
|
缓存 算法 Java
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
这篇文章详细介绍了Java虚拟机(JVM)中的垃圾回收机制,包括垃圾的定义、垃圾回收算法、堆内存的逻辑分区、对象的内存分配和回收过程,以及不同垃圾回收器的工作原理和参数设置。
726 4
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
1435 9
|
存储 监控 算法
JVM调优深度剖析:内存模型、垃圾收集、工具与实战
【10月更文挑战第9天】在Java开发领域,Java虚拟机(JVM)的性能调优是构建高性能、高并发系统不可或缺的一部分。作为一名资深架构师,深入理解JVM的内存模型、垃圾收集机制、调优工具及其实现原理,对于提升系统的整体性能和稳定性至关重要。本文将深入探讨这些内容,并提供针对单机几十万并发系统的JVM调优策略和Java代码示例。
308 2
|
存储 Java
JVM知识体系学习四:排序规范(happens-before原则)、对象创建过程、对象的内存中存储布局、对象的大小、对象头内容、对象如何定位、对象如何分配
这篇文章详细地介绍了Java对象的创建过程、内存布局、对象头的MarkWord、对象的定位方式以及对象的分配策略,并深入探讨了happens-before原则以确保多线程环境下的正确同步。
220 0
JVM知识体系学习四:排序规范(happens-before原则)、对象创建过程、对象的内存中存储布局、对象的大小、对象头内容、对象如何定位、对象如何分配
|
存储 JavaScript 前端开发
学习JavaScript 内存机制
【8月更文挑战第23天】学习JavaScript 内存机制
169 3
|
NoSQL Java 测试技术
Golang内存分析工具gctrace和pprof实战
文章详细介绍了Golang的两个内存分析工具gctrace和pprof的使用方法,通过实例分析展示了如何通过gctrace跟踪GC的不同阶段耗时与内存量对比,以及如何使用pprof进行内存分析和调优。
435 0
Golang内存分析工具gctrace和pprof实战
|
监控 Java 开发者
Java面试题:如何使用JVM工具(如jconsole, jstack, jmap)来分析内存使用情况?
Java面试题:如何使用JVM工具(如jconsole, jstack, jmap)来分析内存使用情况?
789 2

热门文章

最新文章