iwasiblog

イワシブログ - Activity log of an iwasi -

TDUCTF 2014 Satellite in ConoHa : 運営でした

2015年3月29日にTDUCTF 2014 Satellite in ConoHaというイベントを開催しました。
初心者向けCTFという位置づけで開催しているイベントです。

前回より経ること3か月、今回はConoHa支援プログラムの後援によって会場をGMO Yoursへ移し、より一層大きなイベントとなりました。
開催の発表直後より大勢の方々より参加の申し込みを頂き、正直な所とても驚いていました。

やったこと

問題提供その他。
ここ2か月ほど別件で忙しかったこともあり、スコアサーバのリニューアルに携わることができませんでした。かといって作問数も多くないのでなんとも申し訳ない感じです。。。

スコアサーバに関しては、こたまご(@chibiegg)さんの多大なるご協力により、素晴らしいものになった一方、旧スコアサーバは事前に開催した#Practiceでボロボロになってました。

前回同様、私が作成した問題について紹介と簡単な解説を行います。

1.ASCII Art

端的に言ってしまえば、バイナリエディタでファイルを見てみようという問題です。
技術的な要求はほとんどなく、Ascii表示のできるエディタでファイルを見ることができれば解ける問題でした。

解法

まず、flag.zipというファイルが渡されます。
fileコマンドではzipと認識される(はず)けれど、開こうにも開けない。
stringsコマンドでも@くらいしか出てこない。
そこで、バイナリエディタの出番です。
f:id:kuroiwasi:20150330210514j:plain
アスキー表示部分を見ると、0xAAで埋められた中に@で書かれたFLAGが出てきます。

FLAG

TDU{HEXEDIT!}

2.Evidence

削除したファイルも実はデータとしては生きているのです、という問題。
ツールを使用することで素早く解くことができます。
また、バイナリエディタ等で見てみても、ファイルの存在は一目瞭然なので切り出すこともできます。

問題文

去年12月に問題を作成していたNomukenが背後から何者かによって刺された事件に関して、
犯行グループの一員とみられる人物を捕えることに成功した。

彼らは作戦をコードネームで呼び合い行動していたことは判明しているが、
未だ特定には至っていない。

コードネームが分かれば残りの犯人逮捕に繋がるかもしれない。
下記のリンクから押収された証拠品の一部を渡すので、何か手がかりを見つけてもらいたい。

解法

RawImageというファイルが渡されます。
拡張子はありませんが、ファイル名やfileコマンドの結果から、何らかのイメージデータだということが分かります。

イメージの中を見ると、一見画像ファイルとテキストファイルのみがあるように見えますが、
バイナリエディタや解析ツールを使用すると、削除されたフォルダとその中のpdfの存在が分かります。

pdfは完全なデータとして残っているので、保存するなどして中をみればFLAGが書いてあります。

余談

ちなみに、このイメージデータはminiSDカードのものでした。

FLAG

TDU{OIL_SARDINE}

3.Omikuji

この問題は今回出題されたバイナリ問題の中では比較的難しいものではないでしょうか。
実行ファイルの解析を行なう問題です。
IDA Pro等のツールを使うと早いと思います。

問題文

今日のあなたの運勢は? ⇒おみくじでチェック!

解法

真面目に全部解説すると長くなってしまうので要点を。

Omikujiという実行ファイルが配布されます。
実行すると、運勢のダイアログと、フラッグなぞ知らん(意訳)というダイアログが出るのみで何も起きない(実際は起きているのですが)ので、IDA Pro/Demo等のソフトに突っ込みます。

IDAを使って見るなどすると、Win32APIの関数名がそのまま載っているので、関数名で調べることで大体の流れがつかめると思います。

始点のWinMainから下ると、引数の数と内容を比較し、2つに分岐しています。
引数が無い/間違っている場合は、自分自身に正しい引数を付けて CreateProcessで別プロセスとして立ち上げています。

もう一方では、
・getenvでTEMPディレクトリのパスを取得
・10.0.2.128:12939へハッシュを送信
・帰ってきたファイルをTEMPディレクトリに保存
・CreateProcessで実行
していることが分かります。

実際にサーバにnc等で接続してハッシュを送信すると、またも実行ファイルが降ってくるので
今度はそちらを解析します。

見ると、起動して2分のSleepの後に先ほどとは別のハッシュを送信していることが分かるので、
10.0.2.128:12939に対してハッシュを送信するとFLAGが返ってきます。

余談

Omikuji.exeは取得したファイルはcsrss.exeとして保存され、実行されます。
本物のcsrss.exeはWindowsの必須プロセスであり、実際にも常にプロセスとして存在するため、これに偽装しているわけです。

また、実はこのニセcsrss、起動して2分後にサーバと通信した後は、自分自身を削除するようになっていました。

FLAG

TDU{MALWARE_SANKAKUWARE_SIKAKUWARE}

おわりに

今回もご多分に漏れず短い準備期間で、ハードスケジュールでした。
このイベントの実現のため多くの方々から助けを頂き、感謝しきれません。
皆様、ありがとうございました。
そして、もしよろしければ、今後ともよろしくお願いいたします!

次回TDUCTFの実現を願っています。