近日在案件支持过程中,出现嫌疑人通过蓝牙连接散布非法信息的情况,经过排查抓捕到嫌疑人,现场缴获一台平板电脑。平板系统为Windows10,对设备进行证据固定发现其中安装了VMware虚拟机,并且对虚拟机设置了访客加密,嫌疑人拒不交代密码。那么如何对这种访客加密的虚拟机进行破解?在本文中将具体介绍其加密方式以及爆破代码的编写。
PART 1
前置准备
| 工具准备
FTK Imager:免费的镜像工具,功能强大,支持几十种镜像格式,E01、DD、L01、DMG、VMDK、VHD、AD1等。
Python:在通用应用程序、自动化插件、网站、网络爬虫、数值分析、科学计算、云计算、大数据和网络编程等领域有着极为广泛的应用。
PyCharm:一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制等。
密码生成器:一个简单的随机密码生成器。它可以生成字母,数字或字母符号密码,或者输入规定字符生成随机组合密码。
火眼仿真取证软件:一款标准化仿真系统,可将调证获取、现场获取、实验室中提取的硬盘及硬盘镜像等生成为可启动的仿真系统。帮助取证调查人员在符合规范的情况下以交互的方式和用户的视角检查及操作目标系统,支持最新的 Windows、 Linux、macOS 等操作系统。
| 使用FTK制作平板镜像
因平板配置较低选用FTK进行镜像制作。路径:文件(F)->创建磁盘映像(C)->选择源->物理驱动器(P);
通过源驱动选择,可在选项处下拉,找到需要做镜像的驱动器,点击完成;
考虑取证时间和存储容量成本,一般建议制作E01镜像,DD是不压缩的原始镜像格式,原始硬盘多大,它做出来的镜像就多大;E01是压缩格式。
选择镜像存储位置、自定义镜像名;
勾选创建后验证映像(V),校验比对镜像的哈希值;
勾选预计算进度统计数据(P),可实时显示镜像制作的进度;
勾选为映像中所有已创建的文件创建目录列表(D),为镜像中的所有已创建到的文件新建一个目录列表文档,方便查看;
点击开始即可制作镜像;
PART 2
了解访客加密
- 加密前后区别
对比虚拟机XXX.vmx文件可知此文件已被加密,此处我们可以获取到encryption.keySafe参数对应的值,后续需要对此值进行解密碰撞 设置的密码为 1a1a方便后续解密验证。
| 了解虚拟机访客加密
encryption.keySafe参数存在于虚拟机目录中的XXX.vmx文件,可以在虚拟机生成目录下找到;
.encoding指定编码格式;
encryption.keySafe是安全密匙(URL编码的密匙信息+ Base64 编码的密匙);
encryption.data为加密过的明文配置信息;
encryption.keySafe="vmware:key/list/(pair/(phrase/5LKZIRl0DnM%3d/pass2key%3dPBKDF2%2dHMAC%2dSHA%2d1%3acipher%3dAES%2d256%3arounds%3d10000%3asalt%3dlUXQj1CF1aCaBBH5ez8kdA%253d%253d,HMAC%2dSHA%2d1,GAf%2bXOXNN%2bnQgVTF2a3LlKBpLgJB8DO7pyRw3Sjvzkr%2fhYgDO6RwnsdI2CZuhsWSVMuGJuhaeBLpkKhi7FkYrL4DO8Sd%2bVqAoaXmhO%2brGoI%2bxeUYPqxMznzpaoDKAJcHTa0QPouStNlWL702RfZOFov0x38%3d))"
其中简要地说明了密匙信息,加密算法有:HMAC-SHA-1、PBKDF2-HMAC-SHA-1,密匙长度:AES-256,还加盐!
这里可以通过python加上正则表达式去匹配字段;
运行结果,以及各名词解释:
PART 3
爆破解密过程
| 解码方法部分编写
在编写方法前我们需要使用pycryptodomex库,使用pip3 install pycryptodomex进行安装,具体代码如下图:
- dict1参数为上一步得到的dict值
- salt1参数为上一步得到的salt值
分别带入正确的密码和错误密码观察,运行结果如下:
正确密码 1a1a 运行结果
错误密码 b1b1 运行结果
错误密码1b1b运行结果
可以明显的看出正确的密码中会出现解码信息,而错的没有,根据这个特性我们可以写一个循环对密码进行爆破。
| 循环爆破部分编写
首先将解码方法进行封装之后只需要调用demo()方法即可;
- 枚举爆破方法
根据data中的字符以及传入的数字进行组合,密码位数默认为6,可根据实际传入数字进行更改,顺序遍历并且调用demo()方法进行爆破并将结果写入一个1.txt文件;
调用并运行方法;
此处设置密码位数为4,运行完毕查看1.txt搜索type单词即可定位到密码;
- 利用密码生成器进行爆破
利用社工库、嫌疑人常用密码、姓名、身份证号码、手机号码等信息生成随机组合密码进行爆破。
假设嫌疑人为张三,常用手机密码为zs1a1a,出生年月1986.06.20
添加这些可能的密码进行密码字典制作;
代码部分将密码字典导入项目下,并修改对应的文件名;
运行调用时无需传入参数;
运行完毕查看1.txt搜索type单词即可定位到密码;
PART 4
总结
使用火眼仿真软件,将之前的镜像仿真过程中获取到虚拟机的配置文件,代入到代码进行爆破。
此爆破方式还可以添加字符匹配功能,使用GPU加速,找到密码立即停止,无需导出文件即可在控制台显示出结果。