这题大概是我做过最长的一道Misc了,题目描述是根据真实案件改编的,需要层层挖掘线索,最终找到flag。涉及到取证方面的多个知识点,主办方足足放了4个hint,可见这题的不寻常。所以整理了一下过程,分享出来。
还原镜像
首先题目描述,这是个30G的加密文件,根据压缩包中的文档提示,文件经过AES加密,秘钥是生活中常见的弱口令,那就简单尝试最常见的123456
解压结果用010 editor验证一下
看到头部有i_love_kdmv
开头的,说明解密成功。因为文件比较大,可能后面改动文件之后需要还原,最好备份一下。
我们知道KDMV是虚拟机磁盘*.vmdk格式的文件头,大胆猜测,这是一个vmdk文件,header被出题人修改,那么尝试还原文件,挂到虚拟机里看看。
我们可以拿一个正常的vmdk文件观察一下header的值,把修改了的部分还原回去。
修复完vmdk文件,我们在VMware中创建一个虚拟机试试,根据这文件30G的大小,我估计是windows镜像了,而且说了是真实案例,win10的使用率应该是最高的,创建一个win10的虚拟机,选择使用现有vmdk。因为windows10默认都是UEFI启动的,创建时引导选择UEFI就好。
进入系统
开机之后进入win10的输入密码界面
尝试几次密码都不正确,看到提示header,还记得一开始文件的开头那个字符串么,i_love_kdmv
,试试看,成功登陆!
桌上一大堆乱七八糟的文件,几经搜寻,都没找到线索,这些都和flag无关,此时觉得这个桌面便签和提示中的win+w都指向windows10的工作区特性,就是这个
我们看到草图里有个bitlock字样的图片,打开来发现里面写着一个密码
linj920623!@#
打开我的电脑,果然发现一个bitlock加密的磁盘。
解密分区
把上面发现的密码输入,成功解密
这个用户的文件看起来有大问题,各种身份证信息,赌博信息,看起来就像是个搞黑产的,浏览的网页也都是彩票,赌博之类的。
ETH钱包
浏览一下文件,在backup文件夹下找到一个eth钱包信息,和弱口令字典。
{
"id": "1371827b-d81b-443b-935c-42ec6f53b335",
"address": "266ed8970d4713e8f2701cbe137bda2711b78d57",
"crypto": {
"ciphertext": "233459a4a2daad7c30fdc191159e13d0f911287116860107758c1ab636af2f05",
"cipherparams": {
"iv": "c1543f562e98ad6b791bebd3ab86db4d"
},
"kdf": "pbkdf2",
"mac": "dcd544f8ad51865894a5c1a8e67b60e6ba1513b3217eaed7fc1da82a2476650b",
"cipher": "aes-128-ctr",
"kdfparams": {
"c": 1000000,
"prf": "hmac-sha256",
"salt": "91b354bde364b917114a25a4f685da11",
"dklen": 3
}
},
"version": 3
}
看起来是要爆破密码了,在真实情况下,可能硬盘里不会又一个字典,但弱口令还是广泛存在的,这里去github搜搜看,果然有很多爆破工具,证明还是有很多人会忘记自己密码的23333.因为python工具装库的时候版本冲突,干脆选用go实现的一个工具,github在这,就用它的字典开始爆,这时候就可以去喝一杯java,爆出来结果是nevada
,此时,hint又提示eth privatekey,我们得导出他的私钥。用metamask扩展,就很方便。
登录之后可以看到导入私钥的选项。导出的私钥是一串16进制数
56657261437279707420506173733A2056335261317353653375726532333333
转换一下可以看到新的线索VeraCrypt Pass: V3Ra1sSe3ure2333
。
VeraCrypt
这个怎么用呢,这时题目给出的hint还有startup 启动目录没使用,去找找看,win10下有好几个startup文件夹,只能挨个看看,最终在C:WindowsSystem32GroupPolicyMachineScriptsStartup
找到一个可疑脚本。
开机会删除云音乐文件夹下的.vera后缀的文件,我们去一探究竟
果然不见了
不过问题不大,我们在开机的时候才会执行脚本,我们可以使用静态的方法提取出这个文件。因为我们这台虚拟机已经开机了,所以文件已经不在了,所以之前说到,解密出来的文件可以备份一下,这时候就派上用场了。直接把没开机的vmdk文件丢到Diskgenius中挂载成虚拟磁盘,进入C盘CloudMusic下就可以找到.mylife.vera文件了。结合之前私钥还原出的线索,这是个被加密的文件,vera解密的密码就是V3Ra1sSe3ure2333
然后使用VeraCrypt工具,加载这个文件,输入密码解密,可以看到挂载了一个A盘
NTFS隐写
本以为到这就差不多了,没想到还是连环线索,分区中有一个readme文档。
提示说一共有185个文件,183张是照片,那加上readme才184个文件,还有一个去哪了呢,而ntfs ads正是这样一种常见的隐写方法。
使用lads工具检测一下,果然发现有东西
将镜像导出,直接使用好压这个工具就能看到这个隐藏文件(没想到好压还有这种功能)。txt文件内容是
F1a9ZiPInD6TABaSE
,啊又是连环线索,看来还有东西藏在数据库里。
数据库搜索
桌面上有phpstudy,为了搜寻数据库,我们得先进入,但是密码又不知道,问题不大,暴力一点,直接重置密码了。
我们看看有哪些数据库,干脆全都拖出来,用phpstudy备份一下
既然他是把zip文件存在数据库里,那就直接暴力点搜zip的文件头。而且应该是经过了编码,全都是可见字符才行,试试看把zip的文件头base64一下。然后再搜索
解密zip
到这基本就能确定这个zip被base64编码之后存在数据库中了。我们还原回来
再汇过去想想,那个提示压缩包在数据库中的字符串是不是也很像密码,F1a9ZiPInD6TABaSE
,输进去解压
这下总算看到Flag了!
总结
这道题线索环环相扣,需要层层挖掘。大概流程可以总结为:解密镜像,虚拟机开机,线索收集,eth钱包密码爆破,vera解密,ntfs隐写,数据库还原,zip包搜索。考到了隐写中很多常见的知识点,可以说是隐写中的终极俄罗斯套娃了。最后感谢大腿们帮助和脑洞,一起做完了这道题。