磁盘套娃-Misc取证

Posted by Elli0t on 2020-02-29

原题下载

是2020i春秋杯网络安全联赛的一道Misc题目,以前这种类型的接触比较少,在此简单记录一下。
夏风师傅的wp官方的wp

用Winhex打开文件题目文件。选择“将镜像文件转换为磁盘”,可以看到文件目录。进入分区1…

这里介绍一下偏移量的概念:
汇编语言中的定义为:
把存储单元的实际地址与其所在段的段地址之间的距离称为段内偏移,也称为“有效地址或偏移量”。 亦: 存储单元的实际地址与其所在段的段地址之间的距离。本质其实就是“实际地址与其所在段的段地址之间的距离”
更通俗一点讲,内存中存储数据的方式是:一个存储数据的“实际地址”=段首地址+偏移量,
你也可以这样理解:就像我们现实中的“家庭地址”=“小区地址”+“门牌号”
上面的“偏移量”就好比“门牌号”
其实就相当于C++的指针一样啦,指出确切的地址而已……

查看分区内容,可以看到一个名为dekart_priviate_disk的被删除的加密文件夹(题目这里其实就是提示了用工具Dekart Private Disk),还有一个名叫easy_disk的文件。导出磁盘文件easy_disk,并尝试搜索使用软件priviate disk进行加载和解密。

导出磁盘文件的方法是右键>查看器>用IE打开,就会自动下载下来。

发现有密码打不开。于是尝试在磁盘修改记录中寻找密码的线索。

NTFS中有一个特殊的文件:$Extned/$UsnJrnl/$J记录了磁盘的修改。
详细介绍:NTFS中有一个特殊的文件——名为$UsnJrnl的更新序列号(USN)日志文件,该文件中也包含有关发生在NTFS卷上的操作的大量历史信息。
虽然磁盘上会发生不同的文件操作,但在NTFS卷中,更改日志会记录文件创建、删除、加密、目录创建、删除等操作背后的原因。每个卷有一个USN更改日志——自Windows Vista起默认为启用状态,并被索引服务、文件复制服务(FRS)、远程安装服务(RIS)及远程存储等应用程序使用。不过,应用程序和管理员可以创建、删除及重新创建更改日志。更改日志文件存储在隐藏的系统文件$Extend/$UsnJrnl中。$UsnJrnl文件包含两个备用数据流(ADS),$Max和the $J。$Max数据流包含有关更改日志的信息,如最大大小。$J数据流包含更改日志的内容,包含更改日期和时间、更改原因、MFT条目、MFT父条目等信息。该信息对于调查是有用的,比如,攻击者在组织内活动时为隐藏其踪迹而删除文件和目录的情形下。要获取更改日志文件,你需要对文件系统进行原始访问。

用同样的方法将其导出,然后用一个☝️新的工具将其转换为csv文件。 UsnJrnl2Csv 工具🔧地址

打开UsnJrnl2Csv,进行格式转换。

得到的csv文件如下

可以发现,在日志中,除了以上提到过的文件外,还有对新建文本文档.txt和9o7@Xs78I0.txt的操作,猜测是修改了文件名。使用9o7@Xs78I0进行加密磁盘的解密,成功了。

但是打开之后提示磁盘格式错误,需要格式化(点击取消)。应该是引导分区出了问题,在Winhex中打开,在winhex使用快捷键F9打开此磁盘。
根据DBR可以发现扇区偏移16进制数的00-10被擦写为0,残余DBR可以看出文件系统是FAT16。
在此处有两个方法获得flag,一是直接在打开的16进制中查找关于flag的字段。

二是手动修复FAT16磁盘。手动修复又有两种方法:1、用工具Dekart Private Disk创建一个相同的加密磁盘然后进行分析。2、依据FAT分区的磁盘结构,手动恢复被擦除的DBR引导记录的字节。(第二种方法细节可以查看文章开头的链接🔗)

使用Dekart Private Disk默认设置创建一个30MB新的磁盘(因为easy_disk也是30MB),并将其格式化,然后连接上去,读取引导扇区。密码也设置为9o7@Xs78I0

读取引导扇区

进入Winhex的编辑模式然后将新的引导扇区覆盖驱动器Z的引导扇区。(我在写wp的时候又复现了一遍,结果因为虚拟机的共享文件夹的驱动器名称也是Z导致出了一个小问题)

编辑模式在选项>编辑模式中,然后修改的时候又要右键编辑>剪贴板数据>写入


保存退出Winhex,然后重新连接,再用Winhex打开查看文件,flag就出来了(很奇怪,我直接在资源管理器中打开打不开)


flag{5f1f5f73-1740-405a-a914-375a37199c79}