取证工具volatility的下载、使用
Volatility可以还原系统崩溃或重启前的运行状态,包括进程、网络连接、文件操作等,为取证人员提供重要的线索。:Volatility可以分析被恶意软件感染的系统内存,帮助取证人员识别恶意软件的行为、进程和可能的隐藏技术。:通过内存取证,Volatility可能能够获取到用户输入到系统中的密码信息,这有助于在取证过程中破解密码。你运行命令的时候可能是你正在尝试使用Python 2的语法来运行一个
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,建议用用虚拟环境(如 venv
或 conda
)来安装和管理 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命令的输出将包括以下几个关键信息:
- 偏移地址:进程在内存中的偏移地址,通常用于进一步的分析和提取。
- 进程PID:每个进程的唯一标识符,即进程ID。
- 父进程ID号:创建当前进程的父进程的ID。
- 线程数量:当前进程所拥有的线程数量。
- 句柄数量:当前进程所拥有的句柄数量,句柄是操作系统用于表示系统资源(如文件、套接字等)的引用。
- 进程会话ID号:表示进程所属的会话ID,通常用于区分不同的用户会话。
- 进程开始和结束时间:进程的创建时间和可能的结束时间(如果进程已经结束的话)。
使用pslist命令之前,确保已经正确安装了Volatility,并且已经通过--info
命令查看了可用的系统配置文件,以便选择正确的配置文件
filescan
volatility -f [镜像文件] --profile=[系统配置文件] filescan
filescan命令的输出将包含以下关键信息:
- 文件偏移量(Offset):该文件对象在内存镜像中的起始地址,通常是一个十六进制的数值。
- 文件名(Name):文件对象的名称,可能是完整的路径名或只是文件名。
- 文件类型(Type):标识文件的类型,例如是普通的磁盘文件、设备文件、套接字等。
- 文件路径(Path):如果文件对象有完整的路径信息,这里将显示其路径。
- 其他属性:根据文件对象的不同,可能还会包含其他属性信息,如文件大小、访问时间等。
这个经常结合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
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)