前言
内存取证是一种在计算机系统运行时获取内存数据并进行分析的技术,能获取到很多磁盘中没有的动态信息,对于调查系统异常、检测恶意软件等非常关键。
Volatility 是一款开源的内存取证工具,支持 Windows、Linux、Mac OS X、Android 等系统。它通过获取内核数据结构,使用插件获取内存的详细情况以及系统的运行状态,可用于安全事件响应、恶意软件分析等场景。
题目 & 答案
题目 | 答案 |
1.哪个Volatility配置文件最适合这台机器? | WinXPSP3x86 |
2.获取镜像时正在运行的进程有多少个? | 25 |
3.命令提示符程序(cmd.exe)的进程ID(PID)是多少? | 1960 |
4.最可疑的进程的名称是什么? | rootkit.exe |
5.哪一个进程被注入的可能性最高? | svchost.exe |
6.最近的进程中引用了一个奇怪的文件。请提供该文件的完整路径。 | \Device\HarddiskVolume1 \WINDOWS\system32\drivers\str.sys |
7.来自最近进程的加载的DLL文件的名称是什么? | msxml3r.dll |
8.注入的DLL的基址是什么? | 0x980000 |
1.哪个Volatility配置文件最适合这台机器?
imageinfo查看镜像文件信息
volatility.exe -f 5.raw imageinfo
显示了两个操作系统,一般来说是第一个,但第二个说明了是使用第一个的实例化,所以是包含在内的,因此也可以确定是第二个操作系统
答案:WinXPSP3x86
2.获取镜像时正在运行的进程有多少个?
pslist查看进程,有多少个列出来直接数
volatility.exe -f 5.raw --profile=WinXPSP3x86 pslist
答案:25
3.命令提示符程序(cmd.exe)的进程ID(PID)是多少?
由上题可知 pid为1960
答案:1960
4.最可疑的进程的名称是什么?
可利用pstree命令查看父子进程之间关系
volatility.exe -f 5.raw --profile=WinXPSP3x86 pstree
发现有一个rootkit.exe,很可疑,于是找ai问了一下
rootkit.exe是一个典型的恶意软件名称,通常用于隐藏自身或其他恶意程序的存在,并赋予攻击者对受感染系统的深度控制。
1. 隐藏自身及关联活动
隐藏进程:通过劫持系统 API 或修改内核数据结构,使恶意进程在任务管理器或
ps
命令中不可见。隐藏文件/目录:将恶意文件、配置文件或日志文件从文件系统目录列表中隐藏。
隐藏注册表项(Windows):修改注册表相关操作,隐藏恶意注册表键值。
隐藏网络连接:掩盖恶意程序的网络通信(如后门连接、C&C 服务器通信)。
2. 权限提升与持久化
提权(Privilege Escalation):利用系统漏洞获取管理员(root/System)权限。
持久化机制:
添加自启动项(如 Windows 注册表、Linux 的
cron
或systemd
)。感染引导扇区(Bootkit)或固件(如 UEFI rootkit)。
3. 后门访问
远程控制:允许攻击者通过加密通道(如反向 Shell)远程操控受感染主机。
键盘记录(Keylogger):窃取用户输入的密码、信用卡信息等敏感数据。
屏幕截图/摄像头劫持:监控用户活动或窃取隐私。
4. 对抗安全防护
禁用杀毒软件/防火墙:终止安全进程或修改其配置。
绕过安全检测:通过挂钩(Hook)系统调用或内存注入技术规避行为分析。
日志篡改:删除或伪造系统日志,掩盖入侵痕迹。
5. 网络攻击与传播
发起 DDoS 攻击:利用受控主机参与僵尸网络攻击。
横向移动:扫描内网其他设备,利用漏洞(如永恒之蓝)传播感染。
下载其他恶意模块:根据攻击者指令动态加载勒索软件、间谍软件等。
6. 数据窃取与破坏
文件窃取:上传敏感文件(如文档、数据库)到攻击者服务器。
加密勒索:加密用户文件并索要赎金(需配合勒索软件模块)。
破坏系统:删除关键系统文件导致系统崩溃。
涨知识了,hhh
答案:rootkit.exe
5.哪一个进程被注入的可能性最高?
在利用pslist查看内容时,svchost.exe出现了许多次
可能有人会问了明明他是explorer.exe的子进程,为什么不是他被注入。很多用户态的.exe文件都是explorer.exe的子进程,而以下是对于svchost.exe的解释
svchost.exe:这是 Windows 系统中的一个守护进程,通常会有多个实例运行,每个实例托管一组不同的服务。恶意软件作者利用这一点,将恶意代码注入到 svchost.exe 进程中,从而隐藏恶意活动,因为注入的代码会与正常的系统服务混合在一起,更难被发现
答案:svchost.exe
6.最近的进程中引用了一个奇怪的文件。请提供该文件的完整路径。
通常情况下rootkit会释放两个文件,一个是sys驱动文件,一个是dll文件,rootkit自身只是一个释放程序,dll文件自身功能通常为通信木马,sys驱动程序为保活文件
首先将文件导出
volatility.exe -f 5.raw --profile=WinXPSP3x86 psscan
volatility.exe -f 5.raw --profile=WinXPSP3x86 memdump -p 880 -D ./
用notepad打开搜索sys
答案:\Device\HarddiskVolume1\WINDOWS\system32\drivers\str.sys
7.来自最近进程的加载的DLL文件的名称是什么?
使用ldrmodules
插件检查进程的加载器信息,也可以发现隐藏或未被正常列出的DLL文件。
volatility.exe -f 5.raw --profile=WinXPSP3x86 -p 880 ldrmodules | findstr /v /i "TRUE"
.
简单分析一下这个命令:
ldrmodules
:是Volatility的一个插件,用于检查进程加载的模块(DLLs和驱动程序)。它特别有用于寻找那些在正常的加载器列表中未列出(即隐藏模块),或者那些路径、内存映像、加载顺序不一致的模块。-p 880
:指定只分析PID为880的进程。|findstr /v /i "TRUE"
:搜索命令 /v过滤包含TRUE的关键字,/i参数使得搜索不区分大小写。
因此,这个命令的作用是:分析指定内存映像文件中PID为880的进程,寻找那些加载异常或可能被隐藏的模块。
那为什么就可以确认三个False就是呢?
在
ldrmodules
的上下文中,输出中的"false"通常指的是三个关键属性(是否在加载器列表中,是否在内存中,是否在磁盘上)之间的一致性检查。如果某个模块的某项检查结果为"false",这可能表明该模块被隐藏或以异常方式加载到进程中,这是恶意软件常用的技巧之一。
答案:msxml3r.dll
8.注入的DLL的基址是什么?
volatility.exe -f 5.raw --profile=WinXPSP3x86 -p 880 malfind
命令解析:
malfind
:这是一个Volatility插件,用于在内存中搜索可能的恶意软件注入行为。malfind
可以帮助识别异常的内存段,这些内存段可能包含执行代码(如shellcode)或者被恶意软件修改以隐藏其存在。- 作用:这个命令的作用是在内存转储文件
2.raw
中,针对PID为880的进程,使用malfind
插件来检查可能的恶意软件注入或内存篡改行为。
该命令可以检测是否含有木马
volatility.exe -f 5.raw --profile=WinXPSP3x86 dlldump -p 880 --base=0x980000 --dump-dir=.
dlldump
:这是Volatility的一个插件,用于从内存映像中提取DLL文件。当你想要分析某个进程加载的特定DLL的实际内容时,就用这个插件。
--base=0x980000
:这个选项指定了要提取的DLL的基址。基址是DLL在进程地址空间中加载的起始内存地址。这个地址必须准确,以确保正确提取目标DLL。
--dump-dir=.
:这个选项指定了提取的DLL文件保存的目录。在这个例子中,.
表示当前目录,也就是说,提取的DLL将会被保存在Volatility命令执行的当前目录中。总结:这个命令的作用是从5
.raw
内存映像文件中,针对PID为880的进程,根据指定的基址0x980000
,提取DLL文件并将其保存在当前目录。这对于分析恶意软件的行为或确定特定DLL版本是否包含已知漏洞。
答案:0x980000