Shi0shishi0

汐鹿生

Trend Micro CTF 2018 - WriteUp

はじめに

  • 昨日はトレンドマイクロ株式会社さんで開催されたIoTSecJPに参加しました。ど素人なので内容が激難しく感じたけど楽しかったです。HU●W●Iのマシン欲しい。

  • 勉強会後にトレンドマイクロ株式会社さんが開催しているTrendMicro CTF 2018に参加しました。いつもと違うチームで参加して、自分はReversing-Binary 200だけ解きました。

  • Reversing-Binary 400のWriteupください。

問題文

Category: Reversing-binary

Points: 200

The name is Injector because it does something to the system ;)

Try to find the flag. It can be done both statically or dynamiclly.

Recommend running it under Windows 10 Pro 64-bit. Have fun!.

解法

injector.exeというWindowsのバイナリが与えられる。ファイル名から推測すると、他プロセスにコードインジェクションを行いそうな雰囲気。

injector.exeを普通に実行すると"Ooops!"という文字列が出力される。これだけではよくわからないのでデバッガで中身を見る。(実行環境は VMwareWorkStation + Windows 7(32bit)環境)

中を見ていくとnotepad.exeというプロセスが動作しているかどうかを確認している。おそらくnotepad.exeがインジェクション対象。

notepad.exe を起動した状態で実行してみるとnotepad.exeがエラーを吐いて落ちた。よくわからないのでもう一度デバッガで見ると、WriteProcessMemoryでコードインジェクションを行った後にnotepad.exeが落ちている。

こういう状況は某バンキングトロイを解析している時とかに見たことあるな~と思って問題文を再度読み返すと以下のような一文があった。

Recommend running it under Windows 10 Pro 64-bit. Have fun!.

Windows 10 Pro 64bit環境で動作させた方が良いよと書かれている。開発側が想定していない環境で動かすとコードインジェクションに失敗するとかそういう感じかなと推測。

とりあえずインジェクションされるコードだけ抽出してIDAで読む。内容はよくあるシェルコードっぽいもので、最終的にMessageBoxWで以下のような内容を出力する。

6A 00            push    0
6A 7D            push    7Dh
68 61 00 74 00   push    740061h
68 78 00 76 00   push    760078h
68 62 00 62 00   push    620062h
68 5F 00 75 00   push    75005Fh
68 6E 00 67 00   push    67006Eh
68 5F 00 76 00   push    76005Fh
68 68 00 7A 00   push    7A0068h
68 5F 00 66 00   push    66005Fh
68 61 00 67 00   push    670061h
68 6A 00 6E 00   push    6E006Ah
68 53 00 7B 00   push    7B0053h
68 50 00 47 00   push    470050h
68 47 00 5A 00   push    5A0047h
54               push    rsp
5B               pop     rbx
6A 30            push    30h
6A 00            push    0
53               push    rbx
6A 00            push    0
FF D0            call    rax  ; MessageBoxW

ハードコードされている文字列を0x00を抜いて繋ぐと GZPGS{jnag_fhz_vng_ubbxvat} になっている。 Rot13でデコードすると TMCTF{want_sum_iat_hooking} になってフラグが得られる。