freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

CTF-内存取证详解
Airely佳 2024-06-19 11:42:10 133804

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

# CTF
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Airely佳 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
Airely佳 LV.1
Hello Everyone!
  • 1 文章数
  • 1 关注者