1.下载

可以在Linux上下载也可以在Windows上下载,这里介绍在Linux下载

      安装volatility依赖于python

克隆源代码到本地

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

安装volatility依赖

  distorm3(反编译库)

git clone https://github.com/vext01/distorm3

打开distorm3

然后运行

python2 setup.py install

下载pycryptodome(加密工具集)

 

pip2 install pycryptodome

 下载Yara(恶意软件分类工具)

pip install yara

如果不下载,就会发生错误

查看是否下载好:
 

python3 vol.py -h

2.用途

     恶意软件分析:Volatility可以分析被恶意软件感染的系统内存,帮助取证人员识别恶意软件的行为、进程和可能的隐藏技术。

     密码破解:通过内存取证,Volatility可能能够获取到用户输入到系统中的密码信息,这有助于在取证过程中破解密码。

      系统状态还原:Volatility可以还原系统崩溃或重启前的运行状态,包括进程、网络连接、文件操作等,为取证人员提供重要的线索。

     内存数据提取:该工具可以提取内存中的关键数据,如进程列表、网络连接、文件访问记录等,为取证分析提供数据支持。

     在取证比赛中,用于内存取证,适用与raw,dmp

3.常用命令

格式:

      volatility -f <image name> --profile=[profile] [plugin]

解释:

volatility:        这是主命令,用于启动 volatility 框架

-f <image name>:   -f 是一个选项,用于指定内存镜像文件的名称。<image name>是内存镜像    文件的路径和名称

--profile     是一个选项,用于指定与内存镜像匹配的操作系统和内核版本

[profile]  :是一个占位符,你需要用实际的配置文件名称替换它

[plugin] :是一个占位符,表示你要运行的 volatility 插件的名称。插件是 volatility 框架中的工具,用于执行特定的分析任务。

一个小提示:

   你运行命令的时候可能是你正在尝试使用Python 2的语法来运行一个期望Python 3语法的volatility版本。在Python 3中,print是一个函数,因此你需要使用括号来调用它,就像print(...)这样,简单来说就是你的volatility和python不匹配,要升级volatility为volatility

    为了保持系统包管理器的完整性和避免权限问题,不要用root用户身份运行pip,建议用用虚拟环境(如 venvconda)来安装和管理 Python 包。

下载:sudo apt-get install python3-venv

     创建一个新的虚拟环境:python3 -m venv myenv(其中 myenv 是虚拟环境的名称)

激活虚拟环境:对于 bash/zsh/sh 用户:source myenv/bin/activate对于 fish 用户:source myenv/bin/activate.fish

例如:

    mageinfo 是一个常用的插件,用于显示内存镜像的基本信息。

查看一个名为 memory 的 Windows 7 32 位内存镜像的基本信息,

volatility -f memory.dmp --profile=Win7SP1x86 imageinfo

volatility --info

查看volatility已安装的profile和插件

pslist

volatility -f [镜像文件] --profile=[系统配置文件] pslist

pslist命令的输出将包括以下几个关键信息:

  1. 偏移地址:进程在内存中的偏移地址,通常用于进一步的分析和提取。
  2. 进程PID:每个进程的唯一标识符,即进程ID。
  3. 父进程ID号:创建当前进程的父进程的ID。
  4. 线程数量:当前进程所拥有的线程数量。
  5. 句柄数量:当前进程所拥有的句柄数量,句柄是操作系统用于表示系统资源(如文件、套接字等)的引用。
  6. 进程会话ID号:表示进程所属的会话ID,通常用于区分不同的用户会话。
  7. 进程开始和结束时间:进程的创建时间和可能的结束时间(如果进程已经结束的话)。

    使用pslist命令之前,确保已经正确安装了Volatility,并且已经通过--info命令查看了可用的系统配置文件,以便选择正确的配置文件

filescan

volatility -f [镜像文件] --profile=[系统配置文件] filescan

filescan命令的输出将包含以下关键信息:

  1. 文件偏移量(Offset):该文件对象在内存镜像中的起始地址,通常是一个十六进制的数值。
  2. 文件名(Name):文件对象的名称,可能是完整的路径名或只是文件名。
  3. 文件类型(Type):标识文件的类型,例如是普通的磁盘文件、设备文件、套接字等。
  4. 文件路径(Path):如果文件对象有完整的路径信息,这里将显示其路径。
  5. 其他属性:根据文件对象的不同,可能还会包含其他属性信息,如文件大小、访问时间等。

这个经常结合grep命令来扫描flag

memdump

volatility -f [镜像文件] --profile=[系统配置文件] memdump -p [进程ID] -D [输出目录]

输出为一个或多个文件,文件名通常包含进程ID和内存地址

提取指定进程的内存镜像。

举例:memory的内存镜像文件进行分析,并导出进程ID为1234的进程的内存内容到/path/to/output/目录下。系统配置文件被指定为Win10x64_1903,这表示内存镜像来自一个Windows 10 64位版本1903的操作系统。

volatility -f memory.dmp --profile=Win10x64_1903 memdump -p 1234 -D /path/to/output/

profile

volatility -f [镜像文件] --profile=[系统配置文件] dumpfiles [选项]

-Q [地址]:指定要导出文件的内存地址。这通常与filescan命令结合使用,通过filescan找到文件在内存中的地址,然后使用dumpfiles导出。

-D [目录]:指定输出目录,用于存放导出的文件。

-u:在输出文件名中包含原始文件名,如果使用它的话则输出文件名将尽可能与原始文件名保持一致。

例子:memory.dmp内存镜像中导出地址为0x000000007f142f20的文件,并将其保存到当前目录下的output/文件夹中

volatility -f memory.dmp --profile=Win7SP1x64 dumpfiles -Q 0x000000007f142f20 -D ./output/ -u

内存镜像文件memory.dmp,并且我们已经知道某个文件在内存中的地址是0x000000007f142f2

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐