【愚公系列】2022年06月 内存取证工具的使用
内存取证工具的使用
Volatility 是一款基于 GNU 协议的开源框架,使用 Python 语言编写而成的内存取证工具集,可以分析内存中的各种数据。Volatility 支持对 32 位或 64 位 Wnidows、Linux、Mac、Android 操作系统的内存数据进行提取与分析。
1、Volatility取证流程
1)、安装软件
从github上下载即可:
https://github.com/volatilityfoundation/volatility.git
vol.py 是主程序
2)、创建用户配置文件
Volatility需要从用户配置文件中读取内核的相关信息,通过这些信息来定位内存中的关键信息并对其进行解析。因此我们需要获取用户配置文件,且这些配置文件需与你要分析的内核版本相匹配,其中包含了内核数据结构以及调试符号。Volatility 自带一些 windows 系统的 profile,Linux 系统的 Profile 需要自己制作,制作的方法如下:实际是将 module.dwarf 和 system.map 打包成一个 zip 文件,接着将 zip 文件移动到 volatility/plugins/overlays/linux/ 目录中。
也可以在 https://github.com/KDPryor/LinuxVolProfiles 处直接下载已经做好的 profile 文件(zip 文件)然后复制到目录后解压缩即可。
3)、获取内存镜像
Volatility并不会抓取内存,这里使用lime(Linux Mem Extractor)抓取内存,当然它也支持安卓系统内存抓取。
内存抓取工具Lime(用法)https://github.com/504ensicsLabs/LiME.git
本实验所用内存镜像文件 /root/centos7.lime
2、Volatility基本使用命令
./vol.py ‐f [image] ‐profile=[profile] [plugin]
-f后面需要跟绝对路径
查看扫描检查、插件、地址空间等信息
./vol.py --info
查看帮助信息
./vol.py -h/–help
查看指定插件的说明
./vol.py [plugin] –help
查找插件:
不带前缀的是windows的插件,带linux前缀的是linux的插件
vol.py --info | grep -i linux_ (列出所有linux插件)
从扩展目录加载插件
./vol.py --plugins=[path][plugin]
检查结果输出
./vol.py --output-file=[file]
查看profile文件:
Linuxcentos7x64 是我们需要用到的profile文件
3、内存取证的实例
1)、查看系统ARP表:
vol.py -f /root/centos7.lime --profile=Linuxcentos7x64 linux_arp
2)、查看系统信息:
vol.py -f /root/centos7.lime --profile=Linuxcentos7x64 linux_banner
3)、检查系统进程信息:
vol.py -f /root/centos7.lime --profile=Linuxcentos7x64 linux_psaux
使用linux_pidhashtable 可以查看系统隐藏进程:
4)、查看某具体进程的情况
检查某具体进程的情况可以使用 linux_proc_maps 子命令
vol.py -f /root/centos7.lime --profile=Linuxcentos7x64 linux_proc_maps | grep httpd
5)、查看网络链接情况
vol.py -f /root/centos7.lime --profile=Linuxcentos7x64 linux_netstat
还有很多用法,就不一 一 举例说明了。
获取系统进程信息相关命令:
linux_pstree:进程树列表
linux_pslist_cache:来自的 kmem_cache 活动进程
linux_psxview:比较进程列表
linux_lsof :打开文件描述符的每个活动进程
linux_pslist :活动的进程列表
linux_psaux:活动的进程列表(输出内容包括更多的细节)
获取系统内存信息的相关命令:
linux_memmap:内存映射文件
linux_pidhashtable: Linux 内核中的 PID 散列表
linux_proc_maps::转储由-s/–vma 参数到磁盘上指定的内存范围。
linux_dump_map:进程内存的详细信息,包括堆和共享库。
linux_bash :bash 历史文件
获取网络接口信息的相关命令:
linux_arp:显示 arp 列表
linux_ifconfig:显示网络接口详细情况
linux_route_cache:显示网络路由表
linux_netstat:查看网络链接情况
获取系统硬件信息的相关命令:
linux_cpuinfo :显示 cpu 的相关命令信息。
linux_dmesg :显示内核缓存信息。
linux_iomem :显示 io 设备信息。
linux_mount :显示/proc/mouns 的相关命令信息,主要是挂载的磁盘设备。
linux_mount_cache :显示 kmem_cache 的相关命令信息。
linux_slabinfo :显示/proc/slabinfo 的相关命令信息。
rootkit 检测的相关命令:
linux_check_afinfo:检查篡改网络协议结构。
linux_check_creds:检查进程共享结构。
linux_check_fop:检查文件操作数据结构篡改情况。
linux_check_idt:检查中断描述符表(IDT)的篡改情况。
linux_check_syscall:在系统调用表检查功能情况。
linux_check_modules:检查用于从内核模块列表中缺少在 sysfs 中的项目。
获取内核模块信息的相关命令:
linux_lsmod:加载内核模块。
linux_tmpfs::tmpfs 的内容。
详细使用方法可以看在官方网站包含 Linux 的相关命令参考:
参考资料:GitHub - volatilityfoundation/volatility: An advanced memory forensics framework
- 点赞
- 收藏
- 关注作者
评论(0)