picoCTF 2022 Sleuthkit Apprentice writeup
コンテスト中に解けなかった問題の復習です。
問題文
Download this disk image and find the flag. Note: if you are using the webshell, download and extract the disk image into /tmp not your home directory. * Download compressed disk image
disk image (disk.flag.img
)がダウンロードできます。
ヒント
なし
解法
まず、問題のタイトルである「Sleuthkit Apprentice」ですが、「Sleuth kit」という、オープンソースのファイルシステムフォレンジックツールだよというヒントになっているとのことです。
ということで、インストール方法は、
apt install sleuthkit
で入ります。いろいろコマンドが入るようです。
参考サイト:デジタルフォレンジック Sleuth Kit sleuthkitのインストール
で、このコマンドで、何ができるようになるかがよくわからないのですが、ディスクイメージの中身をいろいろ確認できるツールらしい。
# mmls disk.flag.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 0000206847 0000204800 Linux (0x83) 003: 000:001 0000206848 0000360447 0000153600 Linux Swap / Solaris x86 (0x82) 004: 000:002 0000360448 0000614399 0000253952 Linux (0x83)
スタートの数字を読み取って、 -o
につけるだけで、flsとかで中身のディレクトリがわかったりする模様。
# fls -o 0000360448 disk.flag.img d/d 11: lost+found d/d 12: boot d/d 1985: etc d/d 1986: proc d/d 1987: dev d/d 1988: tmp d/d 1989: lib d/d 1990: var d/d 3969: usr d/d 3970: bin d/d 1991: sbin d/d 451: home d/d 1992: media d/d 1993: mnt d/d 1994: opt d/d 1995: root d/d 1996: run d/d 1997: srv d/d 1998: sys d/d 2358: swap V/V 31745: $OrphanFiles
tak_recover
をやってみると、
# tsk_recover -o 0000360448 disk.flag.img ./output Files Recovered: 1170
となり、1170個のファイルが出来上がる。findして、flagみたいなファイルがないか確認する。
# find output | grep flag output/root/my_folder/flag.txt
root/my_folder/flag.txt
がヒットした。これが答えかなと思ったら、
# fcat -o 0000360448 root/my_folder/flag.txt disk.flag.img 3.449677 13.056403
となり、答えじゃなかった。
わからないので、kusuwada先生の picoCTF2022 [Forensics] writeup - 好奇心の足跡 の解説を読む。同じディレクトリに違うあった。tsk_recoverだと出力されていなかった模様(なぜ??)。
で、順番に辿って行くには、 fls
した後の、数字を後ろにつけていけばよいらしい。つまり、 上のfls
の出力で、rootは、1995なので、
# fls -o 0000360448 disk.flag.img 1995 r/r 2363: .ash_history d/d 3981: my_folder
とすると、普段 ls /root
みたいなことと同じ感じの結果が見れるらしい。ということで、my_folderは3981なので、
# fls -o 0000360448 disk.flag.img 3981 r/r * 2082(realloc): flag.txt r/r 2371: flag.uni.txt
中身を見るには、fcat
コマンドを使って、
# fcat -o 0000360448 /root/my_folder/flag.uni.txt disk.flag.img picoCTF{by73_5urf3r_2f22df38}
とする模様。フラグゲット。