一:镜像
1. 内存
用于暂时存放CPU中的运算数据,计算机中程序运行在内存中,只要计算机开始运行,操作系统就会把需要运算的数据从内存调到 CPU中进行运算,运算完成后 CPU将结果传送出来。当机器电源关闭时,存于其中的数据就会丢失。
2. 内存镜像
内存镜像是将内存中数据做个内存快照,将当前内存保存到磁盘 (内存镜像)中。保存内存镜像是临时证据和易失信息的宝贵来源。系统上运行的进程和程序、可能包含解密的文件和密钥(TrueCrypt、BitLocker、PGP 磁盘);网络邮件和社交网络服务(如 Gmail、Yahoo、Mail、Hotmail)的帐户登录凭据;脸书、推特、谷歌加;文件共享服务,如 Dropbox、Flickr、SkyDrive ;网络连接、恶意软件入侵的证据、注册表配置单元、用户名和密码、以及通常不存储在本地硬盘上的活动证据等 ……;有了内存镜像我们就可以对运行内存进行分析,还原一些其中的数据信息。
3. 获取内存镜像
我们可以使用一些工具,如 Winpmem、DumpIt、Belkasoft RAMCapturer、Magnet RAM Capture等……
二:安装分析工具
Volatility是一款非常强大的内存取证工具框架 ,支持Windows、Linux、Mac以及Android的内存取证分析。它由python编写而成,集成了大量插件。使用该工具,你可以从内核模块、进程信息、文件对象、网络连接、DLL、注册表、内核SSDT、LM/NTLM、等提取信息。此外,它还支持从Windows故障转储文件和休眠文件中提取信息。
从github.com上我们发现Volatility分为两个版本,新版本Volatility3正在开发中。
1. Volatility下载
新版本:
链接 https://github.com/volatilityfoundation/Volatility3
稳定版:
链接 https://github.com/volatilityfoundation/Volatility
2. 使用环境
Volatility3:
Python 3.5.3或更高版本
Volatility:
Python 2.6或更高版本,低于3.0
3. 可选依赖项
Volatility3:
pip install yara
pip install capstone
Volatility:
pip install distorm3
pip install yara
安装distorm3 时的坑
解决方法
distutils默认该源码中指定的编译器是 VS2008,电脑上没安装VS2008,可以打开 “[python安装目录]/Lib/distutils/msvc9compiler.py” 文件,找到find_vcvarsall函数,在该函数开头添加 version = VS版本号,例如使用VS2015,则version = 14.0。
4. 安装
下载Volatility的源码后,命令行下切换到Volatility源码包的主目录,然后执行安装命令:python setup.py install
5. 符号表
Volatility3:需要指定符号用于分析相关操作系统数据的内核符号表压缩包。
官方下载地址:
https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip
https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip
https://downloads.volatilityfoundation.org/volatility3/symbols/linux.zip
三:使用分析工具Volatility
在windows下使用Volatility、Volatility3输出信息时碰到乱码出错的坑
解决方法:cmd窗口输入命令:
1: 常规命令格式
Volatility3:
python3.8 vol.py -s <符号表目录> -f <内存镜像文件名> <插件> [插件参数]
Volatility:
python2.7 vol.py -f <内存镜像文件名> –-profile=<配置文件> <插件> [插件参数]
2: 插件
新版本:处于开发阶段插件较少
稳定版:windows自带了113个插件
四:分析强网杯2021题目CipherMan
1. 题目描述
The attacker maliciously accessed the user’s PC and encrypted specific volumes. How to decrypt the volume?
2. 题目文件
解压后查看文件memory、Secret
3. memory文件
hex工具查看后根据经验发现该内存镜像是 VMware的.vmem内存镜像文件,跟其他内存镜像格式不太一样。
验证猜测,我们找到了大量 VMware硬件信息
4. 查看memory文件
1. 内核详细信息
volatility3版本命令:python Scripts\volscript.py -s D:\tools\volatility3_sym -f c:\tmp\memory windows.info
volatility版本命令:python Scripts\vol.py -f c:\tmp\memory imageinfo
该电脑为Win7 x32, 该内存镜像系统时间2018年8月6日等信息……
2. 账号跟密码信息
volatility3版本命令:未发现该插件
volatility版本命令:python.exe Scripts\vol.py -f c:\tmp\memory --profile=Win7SP1x86_23418 hashdump
因为老版本volatility不能自动识别profile,我们需要手动填入内核信息里的 Suggested profile(s) ,所以在使用volatility版本分析前必须先使用imageinfo插件进行内核详细信息分析解析出profile。
图中可以看到暴露出来的一些出题人的计算机信息。
该命令导出了内存中的密码 (LM/NTLM) 哈希值。
存储格式为:账号:RID:LM:NTLM
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
RockAndRoll:1000:aad3b435b51404eeaad3b435b51404ee:ba723ce1369306c86934a0da52d91141:::
电脑有3个账号,分别是Administrator、Guest、RockAndRoll。
LM aad3b435b51404eeaad3b435b51404ee 值在win7已经无任何意义了。主要看后面的NTLM值。
看看是否存在弱口令或者包含出题人的信息的密码字符。我们使用https://www.cmd5.com/进行破解。
账号Administrator、Guest NTLM哈希都为31d6cfe0d16ae931b73c59d7e0c089c0
破解出来的密码为空,弱口令。
账号RockAndRoll哈希为ba723ce1369306c86934a0da52d91141
无法破解,没有发现弱密码,可能需要很长很长时间。
3. 遍历文件名信息
继续做题,该题目给出的信息是与加密磁盘有关系,所以接下来我们使用关于文件磁盘相关的插件(filescan)遍历,观察线索。因为出题人肯定会给出线索,如没给出(密码 、密钥、恢复密码等)这些关键信息,高级加密磁盘是无法解密的。
volatility3版本命令:python Scripts\volscript.py -s D:\tools\volatility3_sym -f c:\tmp\memory filescan
volatility版本命令:python.exe Scripts\vol.py -f c:\tmp\memory --profile=Win7SP1x86_23418 filescan
经过分析我们发现了有包含 BitLocker文字的信息,我们暂且判断可能是 BitLocker加密线索。先列举所有包含BitLocker信息文件。我们使用Windows的findstr过滤下。
这次我们使用volatility3(因为速度快)。volatility一样也可以查询。
volatility3版本命令:python Scripts\volscript.py -s D:\tools\volatility3_sym -f c:\tmp\memory filescan | findstr BitLocker
可疑文件名:BitLocker 복구 키 168F129182C14BF2B6349CCCEC63E9ED.txt
包含了韩文,解码如果出错,请看上面 (在windows下使用Volatility、Volatility3输出信息时碰到乱码出错的坑)解决方法。
4. 导出文件内容信息
获取了可疑文件名信息后,我们需要导出该文件内容,进一步分析。
volatility3版本命令:python Scripts\volscript.py -s D:\tools\volatility3_sym -f c:\tmp\memory DumpFiles –physaddr 0x7e02af80
volatility版本命令:python.exe Scripts\vol.py -f c:\tmp\memory --profile=Win7SP1x86_23418 dumpfiles Q 0x000000007e02af80 D ./
可以看出volatility3插件比volatility插件参数优化了不少。导出的文件内容保存在当前目录下,我们打开该文件。
经过翻译:
如图显示,包含了BitLocker密钥等信息。
5. Secret文件
惯例使用十六进制编辑器打开该文件,发现除了头部有磁盘分区出错信息外,无任何字符, BitLocker的加密盘分区文件:
使用磁盘恢复工具打开该文件扫描后输入密码 221628-533357-667392- 449185-516428-718443-190674-375100 ,打开该磁盘文件。