【picoCTF】[Timeline 0] Writeup
問題概要
- Category: Forensics
Description:
Can you find the flag in this disk image? Wrap what you find in the picoCTF flag format.
Download the disk image here.
日本語訳:
このディスクイメージの中からフラグを見つけられますか?見つけたものは、picoCTFのフラグ形式で記述してください。
ディスクイメージはこちらからダウンロードしてください。
解法のプロセス(アプローチ)
1. ファイルの確認とツールの準備
まずはダウンロードしたファイル(partition4.img.gz)を解凍します。
gunzip partition4.img.gz
解凍して partition4.img を得ることが出来ました。中身を見てみようとファイルを開いてみますが……
はい、見ることが出来ません。
なぜなら、今回扱う partition4.img は普通のファイルではなく、ハードディスクやUSBメモリなどの区画(パーティション)を**「1ビットの狂いもなく丸ごとコピーしたデータ(RAWイメージ)」**だからです。
OSの標準機能では単なる「巨大な謎のデータ」としてしか認識できないため、解析専用の強力なツールである 「The Sleuth Kit (TSK)」 が必要となります。
💡 The Sleuth Kit のインストール方法 (Linux環境の場合)
ターミナルから以下のコマンドを実行してインストールしておきましょう。
sudo apt update
sudo apt install sleuthkit
これを用いて、ディスクイメージの内部を解析していきます。
2. ディスクイメージ内のタイムライン作成(fls & mactime)
まずは fls コマンドを使って、ディスクイメージの中にあるファイルやフォルダの一覧(リスト)を抽出します。
fls -m / -r partition4.img > output.txt
-
-m /:mactimeコマンドが読み込める特殊なフォーマット(ボディファイル形式)で出力する指示。 -
-r: フォルダの中身も再帰的にすべてリストアップする指示。
次に、このリストを時間軸(タイムライン)順に並べ替えるため、mactime コマンドを使用します。
mactime -b output.txt > timeline.txt
これで、同じディレクトリ内に timeline.txt という、古い情報から順に並んだテキストファイルが作成されました。
今回は「不自然な時間軸(Timeline)」が鍵になりそうなので、ファイルの先頭(古い年代)の中身を確認して怪しい年代がないか探します。
head -n 20 timeline.txt
実行結果(一部抜粋):
Wed Jan 02 1985 02:00:00 41 macb r/rrw-r--r-- 0 0 4945 /bin/bcab
Tue Oct 19 2021 02:54:17 451 ma.. r/rrw-r--r-- 0 0 64994 /usr/share/apk/keys/...
他のファイルが2021年以降に作成されている中、一番上の行にある /bin/bcab というファイルだけが 1985年 と明らかに不自然なタイムスタンプになっています。これが怪しいですね!
3. ファイルの抽出とフラグの獲得(icat)
ログの該当行を見ると、/bin/bcab のiノード番号(データの実体を指し示す番号)が 4945 であることが分かります。
The Sleuth Kitの icat コマンドを使うと、このiノード番号を指定してファイルの中身を直接覗き見ることができます。
icat partition4.img 4945
実行結果:
NzFtMzExbjNfMHU3MTEzcl9oM3JfNDNhMmU3YWYK
謎の文字列が得られました。使用されている文字の傾向から、Base64でエンコードされているっぽいです。
この文字列をコピーし、CyberChef に貼り付けて 「From Base64」 レシピでデコードしてみます。
71m311n3_0u7113r_h3r_43a2e7af が得られました。
最後に、問題文の指示通りにこの文字列を picoCTF{} の形式で包めばフラグの完成です!
Flag:
picoCTF{71m311n3_0u7113r_h3r_43a2e7af}
お疲れさまでした!

