4ensiX

4ensiX

Forensics専門でなければ、CTFはDFIRの勉強にほとんど役立たないことをを知ったこの頃

RR - HackTM CTF 2020 Forensic writeup

今頃感でも、土, 01 2月 2020, 17:00 JST — 月, 03 2月 2020, 16:59 JSTに行われたHackTM CTF 2020のForensicのwriteupを記しておく。

ctftime.org

RR

One of my drives failed and I need help recovering all my files. As far as I know the persons who have set up my PC used something like Reusing All of Internal Disks.

Author: Legacy

直リンが良いか分からないがファイルが残っているようなのでリンクを貼っておく。

https://mega.nz/#!1MEQRCpD!YfSQZQSmKn520Jh8DCBb2Xh0ndqF_kPjgZsQIYtvH8A
https://drive.google.com/open?id=1hPBksCtm3a4wGs9cd8DYkM4mcV0aNCEJ

リンク先には「Images.zip」というファイルがあり、これを解凍すると3つの.imgファイルが現れる。これらのファイルを見てみる。

$ ls -al
-rw-r--r-- 1 root root 536870912  1月 31 22:56 1.img
-rw-r--r-- 1 root root         0  1月 31 23:30 2.img
-rw-r--r-- 1 root root 536870912  1月 31 22:56 3.img

$ file *.img
1.img:    DOS/MBR boot sector MS-MBR Windows 7 english at offset 0x163 "Invalid partition table" at offset 0x17b "Error loading operating system" at offset 0x19a "Missing operating system", disk signature 0xd7f49e5c; partition 1 : ID=0x83, start-CHS (0x0,32,33), end-CHS (0x41,69,4), startsector 2048, 1046528 sectors
2.img:    empty
3.img:    DOS/MBR boot sector MS-MBR Windows 7 english at offset 0x163 "Invalid partition table" at offset 0x17b "Error loading operating system" at offset 0x19a "Missing operating system", disk signature 0xd7f49e5a; partition 1 : ID=0x83, start-CHS (0x0,32,33), end-CHS (0x41,69,4), startsector 2048, 1046528 sectors

3つのイメージがあり、このうち「2.img」のみ空となっている。ここでなんとなく、これはRAIDに関するものではないかと推測した。
次に、パーティション情報を確認して実体を取り出し、これをfileコマンドで見る。

# mmls 1.img
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

      Slot      Start        End          Length       Description
000:  Meta      0000000000   0000000000   0000000001   Primary Table (#0)
001:  -------   0000000000   0000002047   0000002048   Unallocated
002:  000:000   0000002048   0001048575   0001046528   Linux (0x83)

# dd if=1.img of=Linux.img skip=2048
1046528+0 レコード入力
1046528+0 レコード出力
535822336 bytes (536 MB, 511 MiB) copied, 7.62211 s, 70.3 MB/s

# file Linux.img
Linux.img: Linux Software RAID version 1.2 (1) UUID=d9190a86:8c515f00:2c041f9d:7bc188b8 name=ubuntu:0 level=5 disks=3

これで、今回はRAID5のイメージが与えられていることが分かった。このRAID5では、3つのイメージを揃えて、元のディスクをrebuildして、そのディスクを解析すると思われる。次に、やるべきことは2.imgの復元である。では、どうやって復元するのかというところで次のスライドを参考にした。

www.slideshare.net

このスライドを参考に、「2.img」を「1.img」と「3.img」のXORによって復元しようとした。pythonでやろうとしたが上手くいかず、スライドで出てきたWindowsで使えるXorFilesに頼ったところ簡単にできたと思われる。そして、OSForensicsを使えばRAIDをrebuildできるというのを見たので試したところ全く上手くいかない。
色々悩んだ結果、ReclaiMeというソフトを見つけた。これでディスクマウントができるようなので、XorFilesで復元したイメージと「1.img」,「3.img」を開いてみたところ次のようになった。

f:id:Zarat:20200228204924p:plain
ReclaiMeを使って、色々開いてみた
「1.img」と「3.img」は同じRAIDとして展開されているが、復元したファイルのみが一つのイメージとして認識されてしまい上手くいかない。と思ったが、一つ足りないという状態で展開してみるとjpeg画像見れてしまった。
f:id:Zarat:20200228205520p:plain
見れてしまったflag
flag: HackTM{1bf965b6e23e5d2cb4bdfa67b6d8b0940b5a23e98b8593bb96a4261fb8a1f66a}

回想

今思えば、OSForensicsでrebuildできなかったのは復元したイメージにRAID5を示すラベルのようなものが無かったからのような気がする。