CTF内存取证分析
2025-1-3 09:1:0 Author: mp.weixin.qq.com(查看原文) 阅读量:6 收藏

声明:Tide安全团队原创文章,转载请声明出处!文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!

内存取证是指从计算机内存(RAM)中提取和分析数据的过程。当计算机运行时,操作系统、应用程序、网络连接和用户活动等都会在内存中留下痕迹。这些痕迹包括正在运行的进程、打开的文件、网络连接状态、登录凭证等。内存取证就是获取这些数据并将其作为证据用于调查,例如调查网络攻击、数据泄露、内部违规等事件。

在CTF中,内存取证一般指对计算机及相关智能设备运行时的物理内存中存储的临时数据进行获取与分析,提取flag或者与flag相关重要信息。

2.1安装

[https://github.com/volatilityfoundation/volatility/releases](https://github.com/volatilityfoundation/volatility/releases)

win可直接下载exe版本,相关环境依赖均已集成在exe中。

linux可下载lin版本运行,也可以下载源码版本运行setup.py安装。

源码版本需自行安装python2和相关环境依赖,建议安装Volatility2,2相对3比较好用。

2.2使用

2.2.1vol全部命令

E:\tools\volatility_2.6_win64_standalone>volatility_2.6_win64_standalone.exe -h
Volatility Foundation Volatility Framework 2.6
Usage: Volatility - A memory forensics analysis platform.

Options:
-h, --help list all available options and their default values.
Default values may be set in the configuration file
(/etc/volatilityrc)
--conf-file=.volatilityrc
User based configuration file
-d, --debug Debug volatility
--plugins=PLUGINS Additional plugin directories to use (semi-colon
separated)
--info Print information about all registered objects
--cache-directory=C:\Users\c3l3/.cache\volatility
Directory where cache files are stored
--cache Use caching
--tz=TZ Sets the (Olson) timezone for displaying timestamps
using pytz (if installed) or tzset
-f FILENAME, --filename=FILENAME
Filename to use when opening an image
--profile=WinXPSP2x86
Name of the profile to load (use --info to see a list
of supported profiles)
-l LOCATION, --location=LOCATION
A URN location from which to load an address space
-w, --write Enable write support
--dtb=DTB DTB Address
--shift=SHIFT Mac KASLR shift address
--output=text Output in this format (support is module specific, see
the Module Output Options below)
--output-file=OUTPUT_FILE
Write output in this file
-v, --verbose Verbose information
-g KDBG, --kdbg=KDBG Specify a KDBG virtual address (Note: for 64-bit
Windows 8 and above this is the address of
KdCopyDataBlock)
--force Force utilization of suspect profile
-k KPCR, --kpcr=KPCR Specify a specific KPCR address
--cookie=COOKIE Specify the address of nt!ObHeaderCookie (valid for
Windows 10 only)

Supported Plugin Commands:

amcache Print AmCache information
apihooks Detect API hooks in process and kernel memory
atoms Print session and window station atom tables
atomscan Pool scanner for atom tables
auditpol Prints out the Audit Policies from HKLM\SECURITY\Policy\PolAdtEv
bigpools Dump the big page pools using BigPagePoolScanner
bioskbd Reads the keyboard buffer from Real Mode memory
cachedump Dumps cached domain hashes from memory
callbacks Print system-wide notification routines
clipboard Extract the contents of the windows clipboard
cmdline Display process command-line arguments
cmdscan Extract command history by scanning for _COMMAND_HISTORY
connections Print list of open connections [Windows XP and 2003 Only]
connscan Pool scanner for tcp connections
consoles Extract command history by scanning for _CONSOLE_INFORMATION
crashinfo Dump crash-dump information
deskscan Poolscaner for tagDESKTOP (desktops)
devicetree Show device tree
dlldump Dump DLLs from a process address space
dlllist Print list of loaded dlls for each process
driverirp Driver IRP hook detection
drivermodule Associate driver objects to kernel modules
driverscan Pool scanner for driver objects
dumpcerts Dump RSA private and public SSL keys
dumpfiles Extract memory mapped and cached files
dumpregistry Dumps registry files out to disk
editbox Displays information about Edit controls. (Listbox experimental.)
envars Display process environment variables
eventhooks Print details on windows event hooks
evtlogs Extract Windows Event Logs (XP/2003 only)
filescan Pool scanner for file objects
gahti Dump the USER handle type information
gditimers Print installed GDI timers and callbacks
gdt Display Global Descriptor Table
getservicesids Get the names of services in the Registry and return Calculated SID
getsids Print the SIDs owning each process
handles Print list of open handles for each process
hashdump Dumps passwords hashes (LM/NTLM) from memory
hibinfo Dump hibernation file information
hivedump Prints out a hive
hivelist Print list of registry hives.
hivescan Pool scanner for registry hives
hpakextract Extract physical memory from an HPAK file
hpakinfo Info on an HPAK file
idt Display Interrupt Descriptor Table
iehistory Reconstruct Internet Explorer cache / history
imagecopy Copies a physical address space out as a raw DD image
imageinfo Identify information for the image
impscan Scan for calls to imported functions
joblinks Print process job link information
kdbgscan Search for and dump potential KDBG values
kpcrscan Search for and dump potential KPCR values
ldrmodules Detect unlinked DLLs
lsadump Dump (decrypted) LSA secrets from the registry
machoinfo Dump Mach-O file format information
malfind Find hidden and injected code
mbrparser Scans for and parses potential Master Boot Records (MBRs)
memdump Dump the addressable memory for a process
memmap Print the memory map
messagehooks List desktop and thread window message hooks
mftparser Scans for and parses potential MFT entries
moddump Dump a kernel driver to an executable file sample
modscan Pool scanner for kernel modules
modules Print list of loaded modules
multiscan Scan for various objects at once
mutantscan Pool scanner for mutex objects
notepad List currently displayed notepad text
objtypescan Scan for Windows object type objects
patcher Patches memory based on page scans
poolpeek Configurable pool scanner plugin
printkey Print a registry key, and its subkeys and values
privs Display process privileges
procdump Dump a process to an executable file sample
pslist Print all running processes by following the EPROCESS lists
psscan Pool scanner for process objects
pstree Print process list as a tree
psxview Find hidden processes with various process listings
qemuinfo Dump Qemu information
raw2dmp Converts a physical memory sample to a windbg crash dump
screenshot Save a pseudo-screenshot based on GDI windows
servicediff List Windows services (ala Plugx)
sessions List details on _MM_SESSION_SPACE (user logon sessions)
shellbags Prints ShellBags info
shimcache Parses the Application Compatibility Shim Cache registry key
shutdowntime Print ShutdownTime of machine from registry
sockets Print list of open sockets
sockscan Pool scanner for tcp socket objects
ssdt Display SSDT entries
strings Match physical offsets to virtual addresses (may take a while, VERY verbose)
svcscan Scan for Windows services
symlinkscan Pool scanner for symlink objects
thrdscan Pool scanner for thread objects
threads Investigate _ETHREAD and _KTHREADs
timeliner Creates a timeline from various artifacts in memory
timers Print kernel timers and associated module DPCs
truecryptmaster Recover TrueCrypt 7.1a Master Keys
truecryptpassphrase TrueCrypt Cached Passphrase Finder
truecryptsummary TrueCrypt Summary
unloadedmodules Print list of unloaded modules
userassist Print userassist registry keys and information
userhandles Dump the USER handle tables
vaddump Dumps out the vad sections to a file
vadinfo Dump the VAD info
vadtree Walk the VAD tree and display in tree format
vadwalk Walk the VAD tree
vboxinfo Dump virtualbox information
verinfo Prints out the version information from PE images
vmwareinfo Dump VMware VMSS/VMSN information
volshell Shell in the memory image
windows Print Desktop Windows (verbose details)
wintree Print Z-Order Desktop Windows Tree
wndscan Pool scanner for window stations
yarascan Scan process or kernel memory with Yara signatures

2.2.2vol命令翻译

amcache                打印 AmCache 信息
apihooks 检测进程和内核内存中的 API 挂钩
atoms 打印会话和窗口站原子表
atomscan 原子表的池扫描器
auditpol 从 HKLM\SECURITY\Policy\PolAdtEv 打印出审计策略
bigpools 使用 BigPagePoolScanner 转储大页面池
bioskbd 从实模式内存读取键盘缓冲区
cachedump 从内存转储缓存的域哈希
callbacks 打印系统范围的通知例程
clipboard 提取 Windows 剪贴板的内容
cmdline 显示进程命令行参数
cmdscan 通过扫描 _COMMAND_HISTORY 提取命令历史记录
connections 打印打开的连接列表 [仅限 Windows XP 和 2003]
connscan tcp 连接的池扫描器
consoles 通过扫描 _CONSOLE_INFORMATION 提取命令历史记录
crashinfo 转储崩溃转储信息
deskscan tagDESKTOP(桌面)的池扫描器
devicetree 显示设备树
dlldump 从进程地址空间转储 DLL
dlllist 打印每个进程的已加载 dll 列表
driverirp 驱动程序 IRP 挂钩检测
drivermodule 将驱动程序对象关联到内核模块
driverscan 驱动程序对象的池扫描器
dumpcerts 转储 RSA 私钥和公钥 SSL 密钥
dumpfiles 提取内存映射和缓存文件
dumpregistry 将注册表文件转储到磁盘
editbox 显示有关编辑控件的信息。(实验性列表框。)
envars 显示进程环境变量
eventhooks 打印有关 Windows 事件挂钩的详细信息
evtlogs 提取 Windows 事件日志(仅限 XP/2003)
filescan 文件对象的池扫描器
gahti 转储 USER 句柄类型信息
gditimers 打印已安装的 GDI 计时器和回调
gdt 显示全局描述符表
getservicesids 获取注册表中的服务名称并返回计算的 SID
getsids 打印拥有每个进程的 SID
handles 打印每个进程的打开句柄列表
hashdump 从内存中转储密码哈希(LM/NTLM)
hibinfo 转储休眠文件信息
hivedump 打印出配置单元
hivelist 打印注册表配置单元列表。
hivescan 注册表配置单元池扫描器
hpakextract 从 HPAK 文件中提取物理内存
hpakinfo HPAK 文件信息
idt 显示中断描述符表
iehistory 重建 Internet Explorer 缓存/历史记录
imagecopy 将物理地址空间复制为原始 DD 映像
imageinfo 识别映像信息
impscan 扫描对导入函数的调用
joblinks 打印进程作业链接信息
kdbgscan 搜索并转储潜在 KDBG 值
kpcrscan 搜索并转储潜在 KPCR 值
ldrmodules 检测未链接的 DLL
lsadump 从注册表转储(解密)LSA 机密
machoinfo 转储 Mach-O 文件格式信息
malfind 查找隐藏和注入的代码
mbrparser 扫描并解析潜在主引导记录 (MBR)
memdump 转储进程的可寻址内存
memmap 打印内存映射
messagehooks 列出桌面和线程窗口消息挂钩
mftparser 扫描并解析潜在 MFT 条目
moddump 将内核驱动程序转储到可执行文件示例
modscan 内核模块池扫描器
modules 打印已加载模块的列表
multiscan 一次扫描各种对象
mutantscan 互斥对象池扫描器
notepad 列出当前显示的记事本文本
objtypescan 扫描 Windows 对象类型对象
patcher 根据页面扫描修补内存
poolpeek 可配置池扫描器插件
printkey 打印注册表项及其子项和值
privs 显示进程权限
procdump 将进程转储到可执行文件示例
pslist 按照 EPROCESS 列表打印所有正在运行的进程
psscan 进程对象的池扫描器
pstree 将进程列表打印为树
psxview 使用各种进程列表查找隐藏进程
qemuinfo 转储 Qemu 信息
raw2dmp 将物理内存示例转换为 windbg 崩溃转储
screenshot 根据 GDI 窗口保存伪屏幕截图
servicediff 列出 Windows 服务(ala Plugx)
sessions 列出 _MM_SESSION_SPACE(用户登录会话)的详细信息
shellbags 打印 ShellBags 信息
shimcache 解析应用程序兼容性 Shim Cache 注册表项
shutdowntime 从注册表打印机器的 ShutdownTime
sockets 打印打开套接字的列表
sockscan tcp 套接字对象的池扫描器
ssdt 显示 SSDT 条目
strings 将物理偏移量与虚拟地址匹配(可能需要一段时间,非常冗长)
svcscan 扫描 Windows 服务
symlinkscan 符号链接对象的池扫描器
thrdscan 线程的池扫描器对象
threads 调查 _ETHREAD 和 _KTHREADs
timeliner 根据内存中的各种工件创建时间线
timers 打印内核计时器和相关模块 DPC
truecryptmaster Recover 恢复 TrueCrypt 7.1a 主密钥
truecryptpassphrase TrueCrypt 缓存密码查找器
truecryptsummary TrueCrypt 摘要
unloadedmodules 打印未加载模块列表
userassist 打印 userassist 注册表项和信息
userhandles 转储 USER 句柄表
vaddump 将 vad 部分转储到文件
vadinfo 转储 VAD 信息
vadtree 遍历 VAD 树并以树格式显示
vadwalk 遍历 VAD 树
vboxinfo 转储虚拟盒信息
verinfo 从 PE 映像打印出版本信息
vmwareinfo 转储 VMware VMSS/VMSN 信息
volshell 内存映像中的 Shell
windows 打印桌面窗口(详细信息)
wintree 打印 Z 顺序桌面窗口树
wndscan 窗口站的池扫描仪
yarascan 使用 Yara 签名扫描进程或内核内存

2.2.3vol常用命令举例

2.2.3.1imageinfo

vol使用首先需要知道内存镜像是什么类型的系统,因此要首先使用imageinfo获取镜像信息。常见的内存文件格式有img、dmp、raw、vmem等。

volatility.exe -f 1.dmp imageinfo

Suggested Profile(s)里面就是镜像系统对应的版本号,大部分是第一个版本。有时Suggested Profile后面会有Instantiated with ...(类似下图的形式),这时可以直接使用工具提供的这个版本。

2.2.3.2pslist

pslist用于查询系统进程。这个命令无法检测列出隐藏或未链接的进程。

例如:2022蓝帽杯

volatility.exe -f 1.dmp --profile=Win7SP1x64 pslist

2.2.3.3pstree

pstree用于查看进程列表的树状形式。可以很方便的看到父子进程,更快速的判断恶意进程。一般PPID大于PID的进程比较可以,有很大可能进程有异常程序。

例如otterctf Memory Forensics

volatility.exe -f G:\取证赛题\OtterCTF.vmem --profile=Win7SP1x64 pstree

2.2.3.4psscan

psscan用于查询已终止(非活动)的进程以及被rootkit隐藏或解除链接的进程。

volatility.exe -f G:\工作\数信杯\加密大附件\secret\data.raw --profile=Win7SP1x64 psscan

2.2.3.5psxview

psxview用于查找带有隐藏进程的所有进程列表。

volatility.exe -f 1.vmem --profile=Win7SP1x64 psxview

例如:第二届山东省数据安全职业技能竞赛

2.2.3.6filescan

filescan用于扫描所有的文件。

volatility.exe -f 1.vmem --profile=Win7SP1x64 filescan

命令可结合grep使用,例如第二届山东省数据安全职业技能竞赛。

volatility.exe -f 1.vmem --profile=Win7SP1x64 filescan | grep "vds_ps.exe"

2.2.3.7dumpfiles

dumpfiles用于提取内存映射和缓存的文件。需结合filescan结果使用。

例如数信杯初赛

volatility.exe -f WIN-T89OD3C9LOC-20231229-081734.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000007e4556a0 -D E:/tools/volatility_2.6_win64_standalone

2.2.3.8netscan

netscan用于查看网络连接和获取本机ip。

例如数信杯初赛

volatility.exe -f WIN-T89OD3C9LOC-20231229-081734.raw --profile=Win7SP1x64 netscan

2.2.3.9connections/connscan

connections/connscan也是用于查看网络连接,可作为netscan命令的替代。该命令仅能用在x86和x64 Windows XP和Windows 2003 Server。

2.2.3.10hashdump

hashdump用于查看用户名和密码的hash值,用于爆破。

例如2022蓝帽杯

volatility.exe -f 1.dmp --profile=Win7SP1x64 hashdump

2.2.3.11lsadump

lsadump用于从注册表中转储(解密)LSA机密。Local Security Authority(LSA):它是 Windows 操作系统中的一个关键组件,主要负责本地安全策略、用户认证以及安全相关的管理工作。

例如46届世界技能大赛湖北省选拔赛

volatility.exe -f "G:\取证赛题\46届世界技能大赛湖北省选拔赛\worldskills3.vmem" --profile=Win7SP1x64 lsadump

2.2.3.12mimikatz

mimikatz用于使用mimikatz插件获取明文密码。该命令需要额外安装mimikatz插件才能使用。下载地址https://github.com/volatilityfoundation/community/blob/master/FrancescoPicasso/mimikatz.py。使用时指定对应的插件目录即可。--plugin=/home/kali/Desktop/volatility-2.6/volatility/plugins/

插件需要安装construct库pip install construct,可能存在报错。

这是construct库版本问题,使用以下命令即可正常使用。

pip2 uninstall construct
pip2 install construct==2.5.5-reupload

例如2022蓝帽杯

vol.py --plugin=/home/kali/Desktop/volatility-2.6/volatility/plugins/ -f '/home/kali/Desktop/2022蓝帽杯.dmp' --profile=Win7SP1x64 mimikatz

2.2.3.13iehistory

iehistory用于查看浏览器缓存和历史记录。

例如46届世界技能大赛湖北省选拔赛

获取当前系统浏览器搜索过的关键词,作为 Flag 提交

volatility.exe -f G:\取证赛题\46届世界技能大赛湖北省选拔赛\worldskills3.vmem --profile=Win7SP1x64 iehistory

2.2.3.14memdump

memdump用于提取指定的进程内容,需和pslist等配合使用。

例如otterctf Memory Forensics

volatility.exe -f G:\取证赛题\OtterCTF.vmem --profile=Win7SP1x64 memdump -p 708 -D E:\tools\volatility_2.6_win64_standalone

dump出来的进程文件,可以结合 foremost 来分离。还可以使用strings '/home/kali/Desktop/708.dmp' | grep Lunar-3 -A 5 -B 5来搜索关键字。

2.2.3.15procdump

procdump用于将进程转储到可执行文件。

例如otterctf Memory Forensics

首先导出恶意勒索程序。

volatility.exe -f G:\取证赛题\OtterCTF.vmem --profile=Win7SP1x64 procdump -p 3720 -D E:\tools\volatility_2.6_win64_standalone

strings -e l '/home/kali/Desktop/executable.3720.exe' | grep -A 5 -B 5 "paid"

2.2.3.16cmdscan

cmdscan用于查看cmd历史命令记录。

例如2022鹏城杯

volatility.exe -f G:\取证赛题\2022鹏城杯.raw --profile=WinXPSP2x86 cmdscan

2.2.3.17consoles

consoles类似于cmdscan命令,它不仅打印出攻击者输入的命令,还收集整个屏幕缓冲区(输入和输出)。

例如2022鹏城杯

volatility.exe -f G:\取证赛题\2022鹏城杯.raw --profile=WinXPSP2x86 consoles

2.2.3.18cmdline

cmdline用于显示进程命令行参数。

例如2022鹏城杯

volatility.exe -f G:\取证赛题\2022鹏城杯.raw --profile=WinXPSP2x86 cmdline

2.2.3.19hivelist

hivelist用于查看注册表配置单元。

例如46届世界技能大赛湖北省选拔赛

获取当前系统 ip 地址及主机名,以 Flag{ip:主机名}形式提交

volatility.exe -f G:\取证赛题\46届世界技能大赛湖北省选拔赛\worldskills3.vmem --profile=Win7SP1x64 hivelist

2.2.3.20hivedump

hivedump用于查看注册表键名。

例如46届世界技能大赛湖北省选拔赛

获取当前系统 ip 地址及主机名,以 Flag{ip:主机名}形式提交

volatility.exe -f G:\取证赛题\46届世界技能大赛湖北省选拔赛\worldskills3.vmem --profile=Win7SP1x64 hivedump -o 0xfffff8a000024010

2.2.3.21printkey

printkey用于打印注册表项及其子项和值。可配合hivelist使用。

例如46届世界技能大赛湖北省选拔赛

获取当前系统 ip 地址及主机名,以 Flag{ip:主机名}形式提交

volatility.exe -f G:\取证赛题\46届世界技能大赛湖北省选拔赛\worldskills3.vmem --profile=Win7SP1x64 printkey -o 0xfffff8a000024010

volatility.exe -f G:\取证赛题\46届世界技能大赛湖北省选拔赛\worldskills3.vmem --profile=Win7SP1x64 printkey -o 0xfffff8a000024010 -K ControlSet001

volatility.exe -f G:\取证赛题\46届世界技能大赛湖北省选拔赛\worldskills3.vmem --profile=Win7SP1x64 printkey -o 0xfffff8a000024010 -K ControlSet001\Control

volatility.exe -f G:\取证赛题\46届世界技能大赛湖北省选拔赛\worldskills3.vmem --profile=Win7SP1x64 printkey -o 0xfffff8a000024010 -K ControlSet001\Control\ComputerName

volatility.exe -f G:\取证赛题\46届世界技能大赛湖北省选拔赛\worldskills3.vmem --profile=Win7SP1x64 printkey -o 0xfffff8a000024010 -K ControlSet001\Control\ComputerName\ComputerName

2.2.3.22clipboard

clipboard命令用于获取剪切板信息。

例如otterctf Memory Forensics

volatility.exe -f G:\取证赛题\OtterCTF.vmem --profile=Win7SP1x64 clipboard

2.2.3.23dlllist

dlllist命令用于列出某一进程加载的所有dll文件。

volatility.exe -f G:\工作\2024技能兴鲁金乡\1.vmem --profile=Win7SP1x64 dlllist -o 0x000000007d336950

https://www.forensics-wiki.com/volatility/js/

https://blog.csdn.net/m0_68012373/article/details/127419463

https://www.cnblogs.com/backlion/p/17871701.html

https://github.com/volatilityfoundation/volatility

往期推荐

TscanPlus-一款红队自动化工具

潮影在线免杀平台上线了

自动化渗透测试工具开发实践

【红蓝对抗】利用CS进行内网横向

一个Go版(更强大)的TideFinger

SRC资产导航监测平台Tsrc上线了

新潮信息-Tide安全团队2022年度总结

记一次实战攻防(打点-Edr-内网-横向-Vcenter)

E

N

D


Tide团队产品及服务

团队自研平台:潮汐在线指纹识别平台 | 潮听漏洞情报平台 | 潮巡资产管理与威胁监测平台 | 潮汐网络空间资产测绘 | 潮声漏洞检测平台 | 在线免杀平台 | CTF练习平台 | 物联网固件检测平台 | SRC资产监控平台  | ......

技术分享方向:Web安全 | 红蓝对抗 | 移动安全 | 应急响应 | 工控安全 | 物联网安全 | 密码学 | 人工智能 | ctf 等方面的沟通及分享

团队知识wiki:红蓝对抗 | 漏洞武器库 | 远控免杀 | 移动安全 | 物联网安全 | 代码审计 | CTF | 工控安全 | 应急响应 | 人工智能 | 密码学 | CobaltStrike | 安全测试用例 | ......

团队网盘资料:安全法律法规 | 安全认证资料 | 代码审计 | 渗透安全工具 | 工控安全工具 | 移动安全工具 | 物联网安全 | 其它安全文库合辑  | ......


文章来源: https://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&mid=2247519162&idx=1&sn=3b94e0cea3cc0ad094a93cf56c558227&chksm=ce5da9dbf92a20cde9f6e61396dcdf02cd6b504c6ea1ebb3eabcbbded3eecbf70131524c3da0&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh