CTF-内存取证详解
2024-6-19 11:42:10 Author: www.freebuf.com(查看原文) 阅读量:6 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Volatility是一款python开发的内存取证分析工具,支持WindowsLinuxMaCAndroid等多类型操作系统系统的内存取证方式。该工具是由python开发的,目前支持python2python3环境。内存取证通常是指对计算机等智能设备运行时内存中存储的临时数据进行获取与分析,提取有价值的数据。

官网下载地址:https://www.volatilityfoundation.org/26

# 常见参数:
可以使用 -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: 将所有操作系统事件以时间线的方式展开

获取内存镜像的版本信息

volatility -f 文件名 imageinfo

image
推荐使用镜像,一般第一个最为准确。这里为Win7SP1x64

列出内存中的进程

# 列出内存中进程信息
volatility -f 文件名 --profile=Win7SP1X64 pslist
# 列出进程的位置
volatility -f 文件名 --profile=Win7SP1x64 dlllist

image

image

查看网络连接情况

volatility -f 文件名 --profile=Win7SP1x64 netscan

image

列出缓存在内存中的注册表

volatility -f 文件名 --profile=Win7SP1x64 hivelist

image

扫描内存中的文件

volatility -f 文件名 --profile=Win7SP1x64 filescan

image

由于类出的文件较多,使用grep过滤

# linux使用
volatility -f 文件名 --profile=Win7SP1x64 filescan | grep -E "txt\|jpg\|png"
# windows使用
volatility -f 文件名 --profile=Win7SP1x64 filescan | findstr "txt jpg png"
# 在ctf经常搜索flag
volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep flag

image
image

导出内存中的文件

# 导出内存中文件
volatility -f easy_dump.img --profile=Win7SP1x64 dumpfiles -Q 0x000000002408c460 -D ./ -u

-Q:指定文件在内存中的地址
-D:指定文件导出的地址
-u:指定原文件名导出(不咋好用)

导出指定进程

volatility -f easy_dump.img --profile=Win7SP1x64 memdump  -p 2616 -D ./

导出的文件名进程的`PID`,后缀名为`dmp`
可以使用`strings -e l 2616.dmp | grep flag`,筛选其中的flag
`-e`为选择字符的大小,`l`为`32bit`为一个字符

image
image

cmdscan历史命令

image

类似的也有cmdline,相对于cmdscan像是的较多一点

image

获取截图screenshot

image

printkey列出SAM用户名

# 获取用户名
volatility -f 文件名 --profile=win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"
# 获取主机名
volatility -f easy_dump.img --profile=Win7SP1x64 printkey -k "ControlSet001\Control\ComputerName\ComputerName"
# 使用hashdump也可以获取用户名,唯一的区别就是它可以获取用户hash
volatility -f 文件名 --profile=win7SP1x64 hashdump

image
image

获取浏览器历史记录

volatility -f 文件名 --profile=Win7SP1x64 iehistory

image

列举时间线

# 可以获取在某个时间线做了什么
volatility -f 文件名 --profile=Win7SP1x64 timeliner

image

列出pe文件版本信息

volatility -f 文件名 --profile=Win7SP1x64 verinfo

image

查看内存中记事本的内容

volatility -f 文件名 --profile=Win7SP1x64 editbox

image

本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022


文章来源: https://www.freebuf.com/sectool/403364.html
如有侵权请联系:admin#unsafe.sh