首页
社区
课程
招聘
[翻译]如何使用Volatility进行内存取证和分析
发表于: 2022-4-14 18:03 8087

[翻译]如何使用Volatility进行内存取证和分析

2022-4-14 18:03
8087

原文地址:https://www.varonis.com/blog/how-to-use-volatility

翻译作者:梦幻的彼岸

更新日期:2022年4月14日

Neil Fox|

Clock for time it takes to read article8 min read

|

最后更新日期:2022年4月12日

如果你在事件响应部门工作,你就会明白尽快从受损设备中提取可靠的取证证据是多么重要。这通常以日志或硬盘映像的形式出现。

这两者都可能带来挑战,而且非常耗时,如果你从设备中提取日志,那么你可能会看到数百万行日志,需要花时间理解内容,将其摄入到一个平台中,使分析更容易,或者使用Linux命令行手动查询数据。

由于磁盘的大小,硬盘映像的捕获和传输可能很耗时,这是在任何分析发生之前。由于这些原因,这就是为什么我对一个事件的第一个问题总是 "我们能捕获内存吗?"。

原因是,设备的内存,或称RAM,将比硬盘的大小小,可以很容易地捕获。一旦你有了捕获的RAM,你就可以使用我最喜欢的事件响应工具之一( Volatility)进行快速分析输出

本文将介绍什么是Volatility,如何安装Volatility,最重要的是如何使用Volatility。

由于Volatility的规模,这不是一个关于该工具功能的全面清单,相反,它将作为对该工具的介绍,给你一个强大的知识基础,并以此为基础。

在开始使用像Volatility这样的工具之前,有一些关键的话题你需要了解:

幸运的是,我已经在一份有用的指南中介绍了这一点,可以在这里找到.

如果你对上述主题已经很熟悉了,那么让我们开始学习Volatility吧!

在我们开始之前,你需要知道有不止一个版本的Volatility可用,最新的版本是Volatility 3,当我在这篇文章中提到Volatility时,我指的是Volatility 3。

在Volatility 3之前,当使用该工具分析RAM转储时,你必须指定RAM转储的机器的操作系统,以便Volatility能够工作。这通常是很耗时的,取决于设备的架构和是否安装了某个服务包。

在Volatility 3中,它将自动为你计算出操作系统,这意味着你可以直接开始分析你捕获的RAM。

要下载最新版本的Volatility,请使用以下命令:

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

现在已经创建了一个名为 "volatility3 "的文件夹,导航到这个位置,一些文件将被列出。

安装所需的依赖项,使Volatility的运行没有任何问题。

pip3 install -r requirements.txt

现在Volatility应该被成功安装,为了检查工具是否正确安装,使用下面的语法来启动帮助文件:

python3 vol.py -h

现在您已经准备好开始使用Volatility了! 

当我从一个可能潜在危害的设备接收到一个RAM转储时,我想做的第一件事是查看当RAM转储被捕获时,设备上正在运行哪些进程。

我在之前的文章中提到过这一点,但我一直坚持的一句话是“恶意软件可以隐藏,但必须运行”。查看设备的运行进程始终是尝试和识别设备上可能运行的任何恶意软件的好方法。

在Volatility中,有几个命令可以用来分析正在运行的进程,我使用的第一个命令是 "pslist"。

python3 vol.py -f <filename> windows.pslist

上述命令将产生以下输出:

在上图中,我们可以看到使用pslist的输出,当运行这些命令时,可能会产生大量的数据,所以可能值得使用下面的语法来标记输出或将其转储到一个文本文件中,这可以对Volatility中的任何命令进行操作。

python3 vol.py -f <filename> windows.pslist | less

python3 vol.py -f <filename> windows.pslist > output.txt

下面是你开始使用该工具时需要了解的'pslist'的关键标题:

使用这个功能,我喜欢看一下进程名称,看看是否有什么东西让我眼前一亮。如果有任何东西引起你的注意,那么只需用google搜索一下这个名字,你应该能够迅速了解它是看起来合法的东西还是需要进一步注意。

一旦我看了一下进程名称,我就想了解什么进程产生了另一个进程。这使得它更容易发现可疑的进程活动,因为你可以看到什么进程启动了 "cmd.exe "或 "powerhell.exe",例如,看看这是否看起来像合法活动。

我喜欢使用 "pstree "的另一个原因是,攻击者往往会以合法的Windows进程命名其恶意软件的运行进程,如 "svchost.exe"。这使得恶意软件可以隐藏在众目睽睽之下,因为它在众多的其他Windows进程中并不显眼。

使用 "pstree "是发现这些伪装成合法Windows进程的恶意进程的一个好方法。Windows进程总是从磁盘上的设定位置运行,其父进程往往是一个设定进程。例如,"taskhostw "总是从"%systemroot%\system32\taskhostw.exe "运行,其父进程总是 "svchost.exe"。因此,如果你发现 "taskhostw "从其他地方运行,或者它的父进程不一样,那么你肯定要仔细检查一下。

python3 vol.py -f <filename> windows.pstree

下图显示了“pstree”的输出,请注意,“PID”列的输出略有变化。

“PID”列的顺序现在按进程及其关联的子进程排序。然而,为了让用户更清楚地看到,每个子进程在其PID之前都被分配了一个“*”,每个后续的子进程都会收到一个附加的“*”前缀。

下图显示“系统”进程产生了“SMS”。exe”,这催生了另一个SMS。exe”,它产生了winlogon。exe’等等。

这对于事件响应者来说非常好,因为它可以更容易地查看盒子上发生了什么进程活动,并识别任何可能是恶意的进程活动。

当捕获RAM转储时,捕获时的任何网络连接也将被存储在捕获的内存中。这对事件响应者来说是非常好的,因为任何恶意的网络连接都可以被识别出来,如源端口、目标IP、目标端口以及与网络活动有关的进程。

要查看与正在分析的RAM转储相关的网络连接,使用以下命令:

python3 vol.py -f <filename> windows.netscan

运行该命令将显示以下信息:

netscan的输出是由10个栏目组成的:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 3
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//