目录
一、实验目的
1.熟悉Windows系统中电子证据获取。
2.了解Dumpit工具的原理,学习Dumpit工具的使用,可以利用Dumpit工具将一个系统的完整内存镜像下来,并用于后续的调查取证工作,了解Windows 内存镜像取证。
3.了解procdump工具的原理,学习procdump工具的使用,可以利用procdump工具在指定的条件下生成dump文件
4.了解strings工具的原理,学习strings工具的使用,可以利用strings工具还原文字或者还原图片。
5.了解Volatility工具的原理,学习Volatility工具的使用,利用Volatility工具来还原获取的镜像文件,并分析其中的进程、文件、网络连接、注册表、事件等信息。
二、实验原理
实验前请查阅资料,回答以下问题:
1.Windows dump文件产生原理是什么?
Windows dump文件是一种内存镜像文件,可以包含系统和进程的内存信息。当Windows系统遇到严重的故障,例如蓝屏、死机等,系统会自动产生一个dump文件,以便管理员对系统进行分析和修复。
2.procdump是什么?其主要目的是什么?
procdump是一个由Sysinternals公司开发的工具,主要用于导出进程的内存镜像。它的主要目的是为了帮助调试员和安全研究人员分析进程的崩溃和异常情况。
3.procdump基本用法?
procdump的基本用法为:procdump [options] target,其中target为目标进程的进程号或进程名称,options为选项参数。例如,导出进程PID为1234的内存镜像的命令为:procdump -ma 1234。
4.strings工具的工作原理是什么?
strings是一个可以从文件或内存中提取ASCII和Unicode字符串的工具。它的工作原理是扫描文件或内存,将连续的ASCII或Unicode字符序列识别出来,并输出到标准输出中。
5.strings的常用用法?
strings的常用用法为:strings [options] file,其中file为目标文件的路径,options为选项参数。例如,从文件test.exe中提取ASCII字符串的命令为:strings -a test.exe。
三、实验环境
- 虚拟机
- 操作系统:Windows7或Windows10
- 软件: Dumpit,procdump,strings,Volatility
四、实验过程
1.在虚拟机下载恶意软件或脚本模拟攻击行为
可以在GitHub上找到PowerSploit,并从GitHub - PowerShellMafia/PowerSploit: PowerSploit - A PowerShell Post-Exploitation Framework 下载该工具包并解压缩。在运行前先把杀毒防护软件给关了,如不运行不了。
以管理员模式打开powershell,输入命令Get-ExecutionPolicy ,结果显示restricted则需要解除限制。
输入Set-ExecutionPolicy Unrestricted,允许所有脚本允许。
如果出现发生覆盖的报错,则用
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
然后去到工具包里的Exfiltration目录,导入命令,执行命令获取密码
1.Import-Module .\Invoke-Mimikatz.ps1
2.Invoke-Mimikatz -Command '"privilege::debug" "
sekurlsa::logonPasswords full"' > C:\Users\doctorwho\Desktop\output.txt(可以直接显示)
如果密码输null,需要一些设置,参考链接在底下
2.利用Dumpit工具导出系统内存镜像。
下载dumpit软件,下载下来后:直接双击运行 exe 文件,输入 y 并回车,把当前的内存信息保存为raw格式的镜像:
如果不是直接运行的就用命令行
dumpit.exe <文件名>.raw
3.利用procdump工具导出进程内存镜像。
执行命令
procdump.exe -ma <PID> <DumpFileName>.dmp
其中PID是执行恶意脚本的PID,PID在执行恶意脚本的shell里用$pid获得。
这里简化了PID的寻找,现实中,获取恶意软件的PID可能需要一些手段。恶意软件通常会隐藏自己,或者使用伪装的进程名或PID,从而使其不易被发现。有时候可以通过查看系统日志或监视系统行为等手段来定位恶意软件的PID,但有时候可能需要更加专业的取证工具和技术来进行深入分析。
4.利用strings工具分析内存镜像。
执行命令
1.strings <文件路径+文件名>.raw > output.txt
2.strings <文件路径+文件名>.dmp > output2.txt
该命令将导出内存镜像中的所有可打印ASCII字符串到一个文本文件中。raw文件很大,需要等一段时间。
然后根据掌握的线索来分析得到的文本,例如我们执行的Invoke-Mimikatz.ps1脚本,就通过关键词"Mimikatz"来寻找。


因为strings工具转换时,将二进制文件中的可打印ASCII字符提取出来并输出为文本文件。因此,如果二进制文件中包含了不可打印的ASCII字符,那么它们将不会被正确的显示在文本文件中,这可能导致文本编辑器无法打开文件。 所有做好用别的编辑器打开,如Sublime Text。
5.还原内存镜像图片操作。
使用以下命令列出可用的插件:
volatility_2.6_win64_standalone.exe -h
使用以下命令查看.raw文件的文件格式:
volatility_2.6_win64_standalone.exe -f memory.raw imageinfo
确认.raw文件的操作系统版本,并选择合适的插件进行分析,例如选择对应Windows 10的插件:
volatility_2.6_win64_standalone.exe -f <文件路径>.raw --profile=Win10x64 pslist
pslist,该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以
找到执行恶意代码的进程,然后提取进程
volatility_2.6_win64_standalone.exe -f <文件路径>.raw --profile=Win10x64 memdump -p 5216 -D output/
导出了5126.dmp
memdump:提取出指定进程,常用foremost 来分离里面的文件,-p 进程号 -D 当前输出路径,-D 后面不能为空,所有先创建好一个文件夹。
导出.dmp文件,就用strings工具转出txt文本,也可以直接看
strings.exe <文件路径>\5216.dmp | grep -i mimikatz
这是简化后针对性的对内存镜像进行分析,现实中需要查看很多东西来进行分析,如分析.raw文件,例如使用malfind插件查找可疑的进程内存:
volatility_2.6_win64_standalone.exe -f memory.raw --profile=Win10x64 malfind
查看网络连接
volatility_2.6_win64_standalone.exe -f memory.raw --profile=Win10x64 netscan
查看运行程序相关的记录,比如最后一次更新时间,运行过的次数等
volatility_2.6_win64_standalone.exe -f memory.raw --profile=Win10x64 userassist