内存取证是分析易失性内存以发现恶意活动、恶意软件行为或系统异常的强大技术。一般情况下调查员会转储全部物理内存,并使用Volatility等工具对其进行分析。然而在许多实际场景中,由于系统限制、安全策略或紧迫性等原因,完全转储可能并不可行。
本文将探讨如何在不创建完整内存转储的情况下,使用内置或免费提供的 Windows 工具执行内存取证。
为什么要避免完全内存转储?
- 时间限制: 转存数GB的内存可能需要些时间。
- 权限: 您可能没有使用转储工具的管理员权限或许可。
- 影响: 完全转储可能会降低系统速度或引发警报。
- 存储: 完整的内存转储可能会占用数GB的空间,传输它们可能会有风险。
轻量级内存取证的目标
- 识别正在运行的恶意进程
- 调查可疑的网络连接
- 分析加载的模块(DLL)
- 检查注册表是否存在恶意软件
- 查看命令历史或痕迹
1. 识别可疑进程
工具:tasklist、WMIC、PowerShell
tasklist /v
wmic process get ProcessId,Caption,Commandline
Get-Process | Select-Object Name, Id, Path
需要注意:
- 未知进程名称
- 从临时文件夹或用户配置文件文件夹运行的可执行文件
- 被混淆的冗长命令行
2.调查网络连接
工具:Netstat, PowerShell
netstat -ano
将可疑 PID 与任务列表输出相匹配。
Get-NetTCPConnection | Select-Object LocalAddress, RemoteAddress, State, OwningProcess
检查与未知 IP 或国外 IP 的连接。
3.动态链接库和模块检查
工具: ListDLLs (Sysinternals)
从 Sysinternals 下载:https://learn.microsoft.com/en-us/sysinternals/downloads/listdlls
listdlls.exe <PID>
查找从可疑路径加载的动态链接库(如 %APPDATA%、临时文件夹)
4.持久化注册表痕迹
工具:Reg Query, PowerShell
检查 run 和 runonce 键
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run
使用 PowerShell 进行更详细的搜索:
Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run"
查找启动异常的可执行文件或脚本的值。
5.回顾历史命令和prefetch文件
历史命令(cmd):
doskey /history
Get-History
Prefetch文件:
Prefetch文件存储可执行文件的历史记录和加载时间。
位置:C:\Windows\Prefetch
使用PECmd( Eric Zimmerman )等工具来解析它们。
6.用于单个进程的迷你内存转储
如果无法进行完整的内存转储,则对单个进程进行迷你转储:
工具: ProcDump (Sysinternals)
procdump -ma <PID> <output.dmp>
在 WinDbg 或 Visual Studio 等工具中打开该 .dmp
使用 !strings 和 !peb 分析字符串和加载的模块。
7.分析可疑的计划任务
schtasks /query /fo LIST /v
查找触发隐藏或脚本有效载荷的任务。
8.使用事件日志追踪进程和脚本
Get-WinEvent -LogName "Security" | Where-Object { $_.Id -eq 4688 } | Select TimeCreated, Message
事件 ID 4688 跟踪进程创建(如果在审计策略中启用)
9.检查 WMI 持久性
Get-WmiObject -Namespace root\subscription -Class __EventFilter
Get-WmiObject -Namespace root\subscription -Class __EventConsumer
查找通过 WMI 事件触发的恶意脚本或二进制文件。
10.不需要完全内存转储的工具
工具 | 目的 |
Sysinternals (Procmon, ListDLLs, Autoruns) | 进程和动态链接库分析 |
Procdump | 定向进程转储 |
Netstat | 网络连接 |
PowerShell | 脚本和深层系统查询 |
事件查看器 | 日志分析 |
使用恰当的本地工具,无需完整内存转储也可进行内存取证,而且功能相当强大。结合使用命令行实用程序、PowerShell 和 Sysinternals,调查员也能提取可操作的情报,并对威胁做出快速反应。
作者:paritosh 翻译:Doris 转载请注明。