2019 国际赛 De1CTF DeepInReal题解

阅读量    52798 | 评论 2   稿费 300

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

 

这题大概是我做过最长的一道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包搜索。考到了隐写中很多常见的知识点,可以说是隐写中的终极俄罗斯套娃了。最后感谢大腿们帮助和脑洞,一起做完了这道题。

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多