介绍
1、从计算机进行内存捕获可以通过多种方式完成,处于打开状态的计算机可以使用以下工具之一捕获内存:
FTK Imager
Redline
DumpIt.exe
win32dd.exe / win64dd.exe
这些工具通常会输出一个 .raw 文件,其中包含系统内存的镜像。 .raw 格式是最常见的内存文件类型之一。
2、只要驱动器未加密,处于关闭状态机器就可以相对轻松地提取内存。对于 Windows 系统,可以通过拉取以下文件来完成:%SystemDrive%/hiberfil.sys
hiberfil.sys,是Windows 休眠文件。包含上次启动的压缩内存映像。 Microsoft Windows 系统使用它来提供更快的启动时间。
步骤
cridex.vmem
打开桌面案例的neicun
文件夹,输入命令volatility -f MEMORY_FILE.raw imageinfo
,查看内存镜像的Suggested Profile
针对Suggested Profile
,依次使用命令volatility -f MEMORY_FILE.raw --profile=PROFILE pslist
查看结果
使用WinXPSP2x86
作为系统配置
使用WinXPSP3x86
作为系统配置
根据Suggested Profile
可以判断WinXPSP2x86
是此镜像对应的profile
根据pslist
命令的显示可以判断smss.exe 进程的进程 ID为368
,
输入volatility -f MEMORY_FILE.raw --profile=PROFILE psxview
查看有进程是否只有一列是False
输入volatility -f MEMORY_FILE.raw --profile=PROFILE ldrmodules
进一步查看隐藏的恶意进程的被注入情况
可以看到除System
外,只有csrss.exe
的进程三列均为False,和上一步相对应
通过volatility -f MEMORY_FILE.raw --profile=PROFILE ldrmodules | findstr False
进一步缩小范围
输入命令volatility -f MEMORY_FILE.raw --profile=PROFILE malfind
将存在恶意代码的进程显示,一共显示在屏幕上有12个进程
可以通过volatility -f MEMORY_FILE.raw --profile=PROFILE malfind -D 文件夹
将所有存在恶意代码的进程分别转储
先在同级目录下创建文件夹
输入命令volatility -f MEMORY_FILE.raw --profile=PROFILE --pid=PID dlldump -D 文件夹
,将csrss.exe
进程的dll导出
创建dlldump文件夹
总结
cridex.vmem
1、首先,需要弄清楚需要使用什么配置文件。配置文件决定了 Volatility 如何处理内存映像,因为每个版本的 Windows 都有点不同。使用命令 volatility -f MEMORY_FILE.raw imageinfo
查看推荐选项
2、在 Volatility 中运行 imageinfo 命令可能会提供许多可以测试的配置文件,但是,只有一个是正确的。可以使用 pslist 命令测试这些配置文件,通过返回结果的绝对数量来验证配置文件选择。使用命令 volatility -f MEMORY_FILE.raw --profile=PROFILE pslist
执行此操作。
3、检查镜像文件中的进程。(除了检查进程信息,还可以查看创建镜像时的网络连接。使用命令 volatility -f MEMORY_FILE.raw --profile=PROFILE netscan
来执行此操作。此镜像由于目标操作系统的年代久远,netscan 命令不支持。)
4、恶意程序试图隐藏自身及其衍生进程是相当常见的。通过命令“psxview”查看有意隐藏的进程。
5、除了通过 psxview 查看隐藏的进程,还可以通过命令“ldrmodules”更集中地检查。这里中间会出现三列,InLoad、InInit、InMem。如果其中任何一个是错误的,则该模块可能已被注入。
6、当检查计算机时,进程并不是唯一值得关心的领域。使用“apihooks”命令,我们可以查看DLL 中的意外补丁。如果看到一个 Hooking module: 的实例,那就证明计算机已经被攻击者完全利用。这个命令需要一段时间才能运行结束,但将显示恶意软件引入的所有无关代码。
7、注入的代码可能是一个巨大的问题。使用命令 malfind
来检查这一点。使用完整命令 volatility -f MEMORY_FILE.raw --profile=PROFILE malfind -D <Destination Directory>
不仅可以找到此代码,还可以将其转储到我们指定的目录中。
8、最后可以查看加载到内存中的所有 DLL。DLL 是在系统进程中使用的共享系统库。这些通常受到劫持和其他侧载攻击,是取证中关键的检查点。使用命令 dlllist
列出内存中的所有 DLL
9、可以看到所有在内存中运行的 DLL,使用命令 volatility -f MEMORY_FILE.raw --profile=PROFILE --pid=PID dlldump -D <Destination Directory>
执行此操作,其中 PID 是我们之前确定的受感染进程的进程 ID