今頃感でも、土, 01 2月 2020, 17:00 JST — 月, 03 2月 2020, 16:59 JSTに行われたHackTM CTF 2020のForensicのwriteupを記しておく。
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」を開いてみたところ次のようになった。
「1.img」と「3.img」は同じRAIDとして展開されているが、復元したファイルのみが一つのイメージとして認識されてしまい上手くいかない。と思ったが、一つ足りないという状態で展開してみるとjpeg画像見れてしまった。
flag: HackTM{1bf965b6e23e5d2cb4bdfa67b6d8b0940b5a23e98b8593bb96a4261fb8a1f66a}
回想
今思えば、OSForensicsでrebuildできなかったのは復元したイメージにRAID5を示すラベルのようなものが無かったからのような気がする。