地址

题目地址: https://buuoj.cn/challenges#[V&N2020%20%E5%85%AC%E5%BC%80%E8%B5%9B]%E5%86%85%E5%AD%98%E5%8F%96%E8%AF%81

说明

在这道题里面,最终的一个VOL加密文件,可以通过passphrase和masterkey两种方式进行解密挂载。passphrase解密挂载的方式夏风师傅的博客里面有说,接下来我介绍一下masterkey的挂载方式。

masterkey解密挂载

首先要提取出内存中保留的masterkey文件,根据这个题目的mem.raw文件,我们做了以下尝试:
dump cached password
truecrypt的进程的内存中可能保留了cached password和masterkey。

故我们先尝试password:

python vol.py -f mem.raw
--profile=Win7SP0x8 truecryptpassphrase

无果
之后尝试masterkey

 python vol.py -f mem.raw --profile=Win7SP0x8 truecryptmaster -D .


可以看到有结果,之后我们使用这个工具:
https://github.com/fjh1997/MKDecrypt
使用masterkey挂载加密分区。

MKDecrypt.py VOL  ./0x837f51a8_master.key

之后可以看到挂载成功的信息


挂载成功之后拿到key,使用这个key对VOL再次解密可以得到flag。

问题来了

那么问题来了,为什么masterkey和pasword解密之后的结果会不一样,按照truecrypt解密的原理,truecrypt先使用pasword解密加密容器的文件头,从文件头中获取这个容器的加密方式和masterkey,之后再使用这两个已知的东西对加密容器进行解密并动态挂载,即把masterkey和pasword暂存在内存中,读取一部分文件解密一部分,并不完全解密。如果这个加密容器只有一个masterkey的话,那么password解密文件头出来的masterkey应该是和之前内存中dump出来的是一致的,解密的结果也一样。那么我们先尝试dump出password解密文件头出来的masterkey。
首先还是一样的步骤,使用password挂载VOL文件,但是环境则是在vmware里面的windows虚拟机里面运行,记得内存设置小一点,挂载成功之后挂起虚拟机之后在虚拟机目录下会出现一个mem文件,使用相同方法在这个文件里面dump出masterkey和password。

发现,这个dump出来的masterkey和之前的不一样,也就是说这个password解锁的文件头里面的不包含之前那个masterkey,而是另一个masterkey,那么为什么会这样呢?这就涉及到truecrypt的隐藏分区机制了。
设想一下如下场景:

一个歹徒拿着刀逼问你加密磁盘的密码,你迫于无奈只能告诉他。或者战争时期敌军严刑拷打我方特务的时候,只有告诉密码才能赢得生机。

我们常见的truecrypt加密磁盘容器如下一图,分为文件头,加密数据区,随机数据区,通过密码解锁文件头里面的加密方式和密钥信息可以获得加密后的数据。

如上二图,在存在隐藏分区的时候,文件头里面的随机数据区则被隐藏文件头所取代,加密数据之后的随机数据出则被隐藏分区所取代,这就让我们无法区分一个加密磁盘里面是否有隐藏分区, 这也意味着同一个加密磁盘容器会对应两个password以及masterkey,当敌人自以为要到了加密的密码,实际上他们不知道这个磁盘还有另一个密码,这就起到了隐藏信息的作用。
使用相同的方式可以解锁隐藏分区,github上面的那个M
KDecrypt的原作者由于没加异常检测,所以不能解密隐藏分析,所以我稍稍改进后传到github上面了。

MKDecrypt.py VOL  ./0x818471a8_master.key

会提示Masterkey does not decrypt a normal/outer volume. Trying for a hidden volume…

参考

参考了夏风大佬的博客:
https://blog.xiafeng2333.top/ctf-25/
以及官方文档 https://www.truecrypt71a.com/documentation/plausible-deniability/hidden-volume/
** 这个PPT挺不错**
https://downloads.volatilityfoundation.org/omfw/2013/OMFW2013_Ligh.pdf

记一次奇怪的truecrypt解密,隐藏分区的MasterKey相关推荐

  1. 计算机主硬盘隐藏分区大小,容量不翼而飞 解密四类硬盘空间隐藏占用(组图)

    很多人都会发现一些同样的问题:我没有装什么东西,为何我的硬盘空间越用越挤?为何我买的硬盘标称容量和实际容量会有如此大的差距?这些问题背后都关联着我们平时并不关注的线索上,而容量的不翼而飞也正是这些隐藏 ...

  2. Linux如何隐藏分区,如何从ubuntu隐藏(n)(NTFS)分区

    问题描述 我需要在nautilus中隐藏NTFS分区.我怎样才能做到这一点? 有没有工具可以做到这一点? 如何在ubuntu中隐藏文件(除了.运算符) 最佳解决方法 通过»磁盘«隐藏Nautilus的 ...

  3. 删除windows7的隐藏分区

    相信大家有这样的经历,装完WIN7以后.想装DOS工具箱一类的系统维护工具,启动之后没有想XP那样出现启动菜单.这是因为WIN7的启动在隐藏分区里,所以不会被启动菜单而加载.所以要想启动菜单有DOS工 ...

  4. Windows 7中200M神秘隐藏分区

    裸机全新安装Windows 7的用户,在安装完成后运行diskmgmt.msc打开磁盘管理器,可以看到在系统分区(一般为C分区)之前有一个大小为200MB的隐藏分区.这个特殊的隐藏分区与Windows ...

  5. 服务器断电重启修复,WIN取消100M隐藏分区、异常断电后绕过修复模式

    1,安装win系统时取消100M的前置隐藏分区的办法: 安装系统时,进行到安装Windows界面时,不使用图形界面的新建(E)进行分区,直接按快捷键Shift+F10打开CMD命令行,输入以下命令进行 ...

  6. Windows——系统盘隐藏分区功能

    SYSTEM_DRV 260MB 用途:系统文件以及驱动程序备份分区 WINRE_DRV 1GB 用途:Windows 10 系统恢复模式.这个分区是保存是在Windows 10 系统主体本身被破坏无 ...

  7. 删除Windows 7自动创建的隐藏分区

    如果你安装了Windows 7测试版,在安装完成后发现Windows 7自动划出一个隐藏的分区,大小为200MB的.又不懂该怎样删除? 其实这个隐藏分区的删除比较麻烦的,如果贸然使用DM等分区工具来删 ...

  8. 关于在vSphere环境中,安装WindowsServer2008_R2_x64系统,分区格式为GPT,隐藏分区为200M方法心得

    1.在vSphere环境中,建好一个Windows server 2008 R2 X64的空系统,选择以后安装系统: 2.然后使用一个带有DG分区工具的PE进行引导进入: 3.打开DG,右击磁盘将磁盘 ...

  9. 笔记本删除隐藏分区 释放固态硬盘空间

    ssd这玩意,容量是个大问题.我选来选去,最后放弃了64g,选购了120GB的,本以为很够用,开机一看,就一个盘符,才86g,实在没办法,不得不折腾一下. 首先应解释一下linux.我本是铁了心要在这 ...

  10. 取消Wince App 应用启动动画和隐藏分区注册表项

    在WinCE系统中,应用启动时窗体有一个动画效果(从中间往窗体边缘扩散开). 有些人不想要此效果,可以通过修改注册表来完成. [HKEY_LOCAL_MACHINE/system/gwe] " ...

最新文章

  1. Android10.0 Binder通信原理(七)-Framework binder示例
  2. 有道编程的界面做的也太粗燥了吧!
  3. Windows Server AppFabric Beta 2 for For Vistual Studio 2010已经发布
  4. xampp apache 无法启动
  5. mysql 用户与权限
  6. cos,sina,tan,cot
  7. 用Windows Server 2003配置×××
  8. GRE over IPSec 隧道配置案例
  9. 魅族使用华为鸿蒙,魅族官宣接入华为鸿蒙,以后我们还能用魅族自家的flyme系统吗?...
  10. STM32 - L4系列芯片手册: 总线架构
  11. c51单片机学习笔记二
  12. vba msgbox html 标签,vba msgbox 换行
  13. HTML二级下拉菜单自动联动,html二级联动下拉菜单 [Excel函数如何制作二级联动下拉菜单]...
  14. 【央联众商】进行家庭投资理财选择的必要性
  15. 使用 OpenCV 和 Python 识别信用卡号
  16. Hadoop的fsck工具
  17. 如何微信多开(PC端微信多开)
  18. windows2008服务器sa密码修改,关于SQL Server 2008忘记sa密码修改sa密码的方法图解
  19. XML fragments parsed from previous mappers already contains value for 解决办法
  20. 年薪30w还是白菜价?大数据工程师凭什么?

热门文章

  1. C. Mortal Kombat Tower(DP 走台阶问题)
  2. PHP在线考试系统源码 在线答题 在线批改
  3. Web 服务器配置和管理
  4. @media用法解释
  5. Docker直接删除elasticsearch报错:Failed to obtain node locks
  6. 谷歌浏览器SwitchyOmega插件下载安装
  7. oracle minus 利用率,oracle minus用法
  8. 组织机构、权限、角色设计
  9. 浅议化学与社会的关系——兼议绿色化学重要性
  10. 缓解眼睛疲劳的一些解决方案