backdoor CTF 2014 Misc 150 Writeup
彼のflagを捜索している過程で、この盗聴ファイルがH4XORによって発見された。
君はH4XORに彼のflagを取らせることができるか?
ヒント : 歴史の教訓を復習せよ。
問題のファイルは約11MBと結構大きなファイル。ダウンロードしてfileコマンドで調べてみると、zipアーカイブであることがわかります(CTFでの配布時は拡張子なしだったが、諸般の理由で上では拡張子を付けて登録してあります)。
$ file BackdoorCTF_misc150 BackdoorCTF_misc150: Zip archive data, at least v1.0 to extract
unzipコマンドでファイルを展開すると、”Misc1504.zip”というファイルが現れます。これを展開すると更に別のzipアーカイブが現れ…を繰り返すことになりますが、”Misc1504.zip” -> ”Misc1503.zip” -> ”Misc1502.zip” -> ”Misc1501.zip” -> ”Misc150.zip”と進み、最終的にMisc150というファイルを得ることができます。これをfileコマンドで調べてみると、
$ file Misc150 Misc150: Linux rev 1.0 ext2 filesystem data (mounted or unclean)
どうやらLinuxのファイルシステムのデータのようです。あるファイルシステムのデータが問題として与えられ、その解析をすることでflagを求めるタイプの問題はCTFで時々出ます。その場合、ファイルシステムのデータファイルそのものを直接解析するツールを使う場合や、ファイルシステムのフォーマットを手掛かりに地道に解析する場合などがありますが、今回はLinuxのEXT2ということで簡単にマウントできるファイルシステムなので、実際にマウントしてみます。
# mount -t ext2 -o loop ./Misc150 /mnt # ls -R /mnt /mnt: Desktop Documents Downloads Entertainment Music lost+found /mnt/Desktop: /mnt/Documents: security.pdf /mnt/Downloads: key.txt src /mnt/Downloads/src: simplecrypt /mnt/Downloads/src/simplecrypt: __init__.py example.py tests.py /mnt/Entertainment: shelltris-1.1 /mnt/Entertainment/shelltris-1.1: Makefile README getch getch.c shelltris.sh /mnt/Music: mystery.wav /mnt/lost+found: #23 hex
ディレクトリ名を見る限りでは、最近のLinux Workstationの一般ユーザのホームディレクトリといった印象です。様々なデータが置かれているの順番に見ていきました。実際に見てもらえばわかりますが、本命以外はすべてダミーです。それも、ある程度手の込んだダミーも含まれています。たとえばsecurity.pdfがオープンソースのIDSのSnortのマニュアルであることは開けば一目瞭然ですが、hexの中に詰まっているあからさまに怪しいエンコードされた文字列は、デコードしてみたらダミーテキストとして有名なLorem ipsumが出てきたりします。
結論から言うと、lost+foundにある”#23”というファイルがflagに直結するファイルでした。このファイルは697行のコマンドヒストリのリストですが、その354行目にある”curl http://paste.ubuntu.com/7130279/”というコマンドが怪しいと思えるかどうかにかかっています。実際にこのURLにアクセスしてみると、flagが書かれています。
”paste”という言葉が含まれているURLを見て怪しいと思える人は、pastebin.comを知っている人でしょう。pastebin.comは時々セキュリティインシデントの記事などでも出ることがあるサイトで、多くの場合何かの暴露に利用されています。一言で言えば、匿名で”書き逃げ”ができるサイトで、CTFでもflag置き場として利用されることがあります。今回の解答のURLも、pastebin.comの派生のように見えるサイトでした。
また、このようなコマンド履歴、もしくはpcapファイルが問題となっている場合などについては、とにかくアクセスされているURLに自分でアクセスしてみることが大事です。実際の通信であればいろいろと問題が生じる場合もあるでしょうが、CTFの問題に含まれるURLであれば基本的に問題ありません。ダメ元でやってみることがflagに近づく手がかりとなるのです。
なお、ヒントの”Brush upon your history lesson”は、直訳すると”歴史の教訓を復習せよ”ですが、”history” -> history fileと連想できれば、調べるべきファイルを一つに絞り込めたということになります。そういう意味では大ヒントですね。