内存取证练习-2
简介
题目:
1.Which volatility profile would be best for this machine?
2.How many processes were running when the image was acquired?
3.What is the process ID of cmd.exe?
4.What is the name of the most suspicious process?
5.Which process shows the highest likelihood of code injection?
6.There is an odd file referenced in the recent process. Provide the full path of that file.
7.What is the name of the injected dll file loaded from the recent process?
8.What is the base address of the injected dll?
资源链接:
链接:https://pan.baidu.com/s/1wNYJOjLoXMKqbGgpKOE2tg?pwd=ybww
提取码:ybww
转载自https://blog.csdn.net/ntrybw/article/details/130408307
解题步骤:
1.哪个Volatility配置文件最适合这台机器?
第一步,导入镜像文件,分析当前镜像归属的操作系统类型
vol.py -f 2.raw imageinfo 拉取镜像信息

这里显示了两个,但我们无法确定,继续下一步
第二步,确定操作系统
volatility - f xxx.vmem --profile=[操作系统] volshell
但是这个镜像用不着第二步,因为在使用第二个操作系统验证时相当于使用第一个操作系统验证,括号里的内容告诉我们的,翻译一下即可,成功情况如下图

因此确定本题答案
2.获取镜像时正在运行的进程有多少个?
查看进程使用pslist参数
vol.py -f 2.raw --profile=WinXPSP3x86 pslist

统计完后进程数量为25
3.命令提示符程序(cmd.exe)的进程ID(PID)是多少?
上道题可得知答案,这里我们更换psscan参数,查看明面存在及隐藏的未运行进程和运行进程
vol.py -f 2.raw --profile=WinXPSP3x86 psscan

同样得到cmd.exe的进程IP(PID)为1960
4.最可疑的进程的名称是什么?
现在我们要从前面两个查看进程的图片分析所有进程,感觉不出什么,也只能排除些见过的软件进程
vol.py -f 2.raw --profile=WinXPSP3x86 pstree 以进程树的形式显示

这里引用他人的思路:
简单查看了下发现rootkit.exe这个进程名看起来最可疑。
因为它与常见的合法进程名不符,而且"rootkit"这个词通常与恶意软件相关。此外,rootkit.exe下面有一个子进程cmd.exe,这可能表明rootkit.exe可能已经执行了一些命令或脚本,这是恶意软件常见的行为。
补充:rootkit.exe通常指的是一种恶意软件,其名称来源于“Rootkit”,这是一种旨在隐藏其存在以及系统中其他软件或活动的恶意软件。Rootkit通常用于隐藏恶意活动,如病毒、后门等,使它们对用户和安全软件难以检测。Rootkit可以攻击操作系统的核心级别(内核模式Rootkit)或用户模式级别的应用程序和服务。
Rootkit的主要特点:
- 隐蔽性:Rootkit的主要目的是隐藏自身和其他恶意活动,使得恶意软件可以在系统上长期潜伏。
- 持久性:Rootkit往往具有很强的持久性,即使系统重启,它们也能自动激活。
- 权限提升:Rootkit常常用于获取系统的最高权限(如root或Administrator权限),以便控制整个系统。
- 监控和控制:Rootkit可能会监控用户输入、窃取敏感信息、控制系统行为,甚至远程控制受感染的计算机。
Rootkit的常见用途:
- 隐藏其他恶意软件,如病毒、木马、间谍软件。
- 维持对受感染系统的远程访问和控制。
- 监控用户行为,窃取敏感信息。
- 禁用或绕过安全软件。
防御措施:
- 使用更新的安全软件,定期扫描系统。
- 安装操作系统和应用程序的安全更新和补丁。
- 限制系统权限,避免使用管理员账户进行日常操作。
- 对异常行为保持警惕,如系统性能下降、未知进程活动等。
总结:
rootkit.exe作为一种恶意软件,其设计理念是为了隐藏其存在和恶意活动,给系统安全带来严重威胁。
5.哪一个进程被注入的可能性最高?

前面提到了可以查看到隐藏的进程,当然pslist也多次出现了svchost.exe相关的进程
由于rootkit.exe明显是一个恶意进程,它可能已经或正尝试注入代码到一个或多个svchost.exe进程中。svchost.exe进程通常会有多个实例运行,每个实例托管一组不同的服务。恶意软件作者知道这一点,并利用它来隐藏恶意活动,因为攻击者注入的代码会与正常的系统服务混合在一起,从而更难被发现。
此题其实考验对rootkit病毒的熟知程度,通常情况下rootkit病毒在windows系统中最喜欢干的事就是通过svchost进程进行捆绑,因为svchost是系统守护程序,是不能通过常规手段停止的,那么任何与之关联的程序也都没有办法通过常规杀软去清除,因为svchost启动等级高于常规杀软,所以若是想清除与svchost捆绑的程序,需要进入到系统安全模式下,并使用最小化启动,然后找到svchost注册表项清除对应捆绑关系再删掉木马。
6.最近的进程中引用了一个奇怪的文件。请提供该文件的完整路径。
我们怀疑是svchost.exe相关进程引用了文件
上图进程中与svchost.exe相关的最后一个进程IP为880
vol.py -f 2.raw --profile=WinXPSP2x86 -p 880 handles -t file
简单分析一下命令:
-p 880:-p参数指定了进程ID(PID)。这里的PID是880,命令将只针对此PID进行操作。handles:这是Volatility的一个插件,用于列出指定进程打开的句柄。句柄是Windows操作系统中用于引用资源(如文件、注册表项、进程、线程等)的标识符。-t file:这个参数与handles插件一起使用,用于过滤结果,只显示文件类型的句柄。
这个命令的作用是:使用Volatility分析名为
2.raw的内存映像文件,该文件假定来自一个运行Windows XP SP2的32位系统。命令将列出PID为880的进程打开的所有文件句柄。

此题依然考验对rootkit病毒的理解,通常情况下rootkit会释放两个文件,一个是sys驱动文件,一个是dll文件,rootkit自身只是一个释放程序,dll文件自身功能通常为通信木马,sys驱动程序为保活文件
7.来自最近进程的加载的DLL文件的名称是什么?
使用ldrmodules插件检查进程的加载器信息,也可以发现隐藏或未被正常列出的DLL文件。
vol.py -f 2.raw --profile=WinXPSP2x86 -p 880 ldrmodules | grep -i false

简单分析一下这个命令:
ldrmodules:是Volatility的一个插件,用于检查进程加载的模块(DLLs和驱动程序)。它特别有用于寻找那些在正常的加载器列表中未列出(即隐藏模块),或者那些路径、内存映像、加载顺序不一致的模块。-p 880:指定只分析PID为880的进程。|grep -i false:这部分是Linux/Unix命令行的管道和grep命令,用于从ldrmodules插件的输出中筛选包含"false"的行。-i参数使得搜索不区分大小写。
因此,这个命令的作用是:分析指定内存映像文件中PID为880的进程,寻找那些加载异常或可能被隐藏的模块。
那为什么就可以确认三个False就是呢?
在
ldrmodules的上下文中,输出中的"false"通常指的是三个关键属性(是否在加载器列表中,是否在内存中,是否在磁盘上)之间的一致性检查。如果某个模块的某项检查结果为"false",这可能表明该模块被隐藏或以异常方式加载到进程中,这是恶意软件常用的技巧之一。
8.注入的DLL的基址是什么?
首先我们要了解什么是dll的基址:
1、DLL的基址是指一个动态链接库(DLL)文件在内存中加载时预定的起始地址。当一个DLL被加载到进程的地址空间时,操作系统尝试将它放置在这个预定的基址处。
2、每个DLL文件在其映像头中都有一个基址字段,这是DLL编译时设定的。如果该基址在进程的地址空间中是可用的,那么DLL就会被加载到那个地址;如果不可用(例如,已经被其他模块占用),操作系统必须重新定位DLL,这是通过修改DLL中的地址引用来实现的,这个过程被称为基址重定位。
3、基址重定位是一个消耗资源的过程,因为它需要额外的时间来修改DLL中的地址引用,并且可能会降低代码的执行效率。因此,理想情况下,每个DLL都会有一个独特的基址,以避免基址冲突和重定位的需要。
4、在安全分析和内存取证中,了解DLL的基址很重要,因为它可以帮助分析师确定DLL是否按照预>期加载到了进程中,或者是否存在异常行为,如代码注入或DLL劫持等。
vol.py -f 2.raw --profile=WinXPSP2x86 -p 880 malfind

命令解析:
malfind:这是一个Volatility插件,用于在内存中搜索可能的恶意软件注入行为。malfind可以帮助识别异常的内存段,这些内存段可能包含执行代码(如shellcode)或者被恶意软件修改以隐藏其存在。- 作用:这个命令的作用是在内存转储文件
2.raw中,针对PID为880的进程,使用malfind插件来检查可能的恶意软件注入或内存篡改行为。
后面步骤是提取并验证此dll是否为木马,提取命令如下,具体请参考链接
vol.py -f 2.raw --profile=WinXPSP2x86 dlldump -p 880 --base=0x980000 --dump-dir=.
命令解析:
dlldump:这是Volatility的一个插件,用于从内存映像中提取DLL文件。当你想要分析某个进程加载的特定DLL的实际内容时,这个插件非常有用。--base=0x980000:这个选项指定了要提取的DLL的基址。基址是DLL在进程地址空间中加载的起始内存地址。这个地址必须准确,以确保正确提取目标DLL。--dump-dir=.:这个选项指定了提取的DLL文件保存的目录。在这个例子中,.表示当前目录,也就是说,提取的DLL将会被保存在Volatility命令执行的当前目录中。
总结:这个命令的作用是从123.raw内存映像文件中,针对PID为880的进程,根据指定的基址0x980000,提取DLL文件并将其保存在当前目录。这对于分析恶意软件的行为或确定特定DLL版本是否包含已知漏洞非常有用。
答案
| 题目 | 答案 |
|---|---|
| 哪个Volatility配置文件最适合这台机器? | flag{WinXPSP2x86} |
| 2.获取镜像时正在运行的进程有多少个? | flag{25} |
| 3.命令提示符程序(cmd.exe)的进程ID(PID)是多少? | flag{1960} |
| 4.最可疑的进程的名称是什么? | flag{rootkit.exe} |
| 5.哪一个进程被注入的可能性最高? | flag{svchost.exe} |
| 6.最近的进程中引用了一个奇怪的文件。请提供该文件的完整路径。 | flag{\Device\HarddiskVolume1\WINDOWS\system32\drivers\str.sys} |
| 7.来自最近进程的加载的DLL文件的名称是什么? | flag{msxml3r.dll} |
| 8.注入的DLL的基址是什么? | flag{0x980000} |
参考链接:
本文来自博客园,作者:kriton,转载请注明原文链接:https://www.cnblogs.com/kriton/articles/18606843

浙公网安备 33010602011771号