SECCON CTF–Web予選に参加してがんばった


にゃんぱすー。 どうもみむらです。

最近、今頃になって「のんのんびより」を見るようになりまして、
自宅付近にも無人の野菜直売所とかあるなーと、見ていてほのぼのしている今日この頃です。

 

さてさて。今回は SECCON CTF の Web予選に wasamusume として参加しました。

初日が所属する大学の中間発表日であったり、
普段使っているラップトップPC が不調になったりといろいろとありましたが、
とても楽しかったです。

運営の皆さん毎度毎度、本当にありがとうございます。

 

今回はいつものメンバーに zip さんを入れて。

やっぱりこういうのはみんなでワイワイとやるのが一番いいですね。
第一に楽しいですし、チーム内の解法は全体で共有しているので
新しく来たメンバーや既存のメンバーどっちもおいしい。
そして、交流も深まる。一石n鳥ってところでしょうか(

 

私は hyt さんと一緒に大学内に簡易CTF会場を設置して取り組みました。

BezbtJvCQAAyDn2

夜からは各々自宅にて。

なお、九州組は研究室泊まり込みでやったそうです。
次回はホテルとかを借りて、泊まり込みで CTF やりたいですね。

 

さて、こういうぶっ通しの CTF でたまに思うのは、
”休憩” と “食事” と “睡眠” でしょうか。効率よく取らないと。

さすがに初日が中間発表会であった関係で早起きしたこともあり、
終わり際はなかなかに眠くて仮眠を少し取りました。

・・だからといって、よく解けたかというと、うーん。

 

そういえば、一部ではなんでも “人権” ということで、
取得した得点によっては “ (CTF) 社会的に人間として認められる権利” が認められないことがあるそうで、怖い世の中です。

もちろん、 wasamusume 内ではチーム全員に “CTF 社会的に人間として・・” は
たとえ 0点であろうと認めます。 ・・・というか、これが剥奪されるチーム、怖すぎです。。

・・冗談はさておき。

 

 

今回紹介するのは
“Enjoy the Game”
“削除されているファイルの名前はなんですか?”
”ログインパスワードを解明せよ”
の3つを。


Enjoy the Game

image

こんな感じのゲームが起動します。
ゴールまで行けばフラグが出る、とのことですがゴールにいつまで経ってもたどり着けません。

でもって色々といじってみます。

image

画面が暗いのですが、オブジェクトの高さを0にしてみますと、
本来たどれない場所にゴールがあることに気づきます。

 

しょうが無いので、 IDA で動きを見てみますと、

image

0x1400016C7 に “cmp al,1” として、
前に進めるかどうかを判定している箇所がみつかりますので、
この先の jz を jmp に書き換えます。

一番シンプルな方法ということで、
game.exe の 0xAC9 にある 0x74 を 0xEB に書き換えます。

そうすると、 “74 04” ( jz 0x1001006 ) が “EB 04” ( jmp 0x1001006 ) となり、
壁に当たっていようがなんであろうが突進することが出来るようになります。

パッチ後:

image

すっきりですね!

 

 

でもって、ゴールの場所に直行すると、

image

このダイアログが。

 

このプログラムのデバッグ情報のファイル名が
”3D_GameAAA_is_NOT_password_Enjoy_HackingAAAAAAAA…” になっているところからも
分かるとおり、こいつは答えではありません。

 

ぐるぐる回って答えの場所に行きますと、 “3D_dUNGEAN” などいろいろと変化します。

その何れも NG でしたので、うーんと悩んでいたところ ゆったんが
”3D_dUnGEoN” として送信したところ正解。

・・・どういうルートを通ったら正しいんだろう・・。でも答えは見つかったし・・と。
ずいぶんともやもや。


削除されているファイルの名前はなんですか?

問題として、MFT のデータがもらえます。

http://malware-hunters.net/2012/09/13/mftdump-v-1-3-0-released/

ここにある MFTDump を使いますと、いい感じに tsv 形式で出してくれますので
後はその表を Excel なんかに入れて検索。

答えは SkyhookParser.exe

 


ログインパスワードを解明せよ

問題として、 1GB のメモリダンプが渡されます。

まず Volatility を使用して、 hivelist を出力して目的のファイルの場所を見つけます。

# volatility hivelist -f memorydump2.bin --profile=Win7SP1x86

Volatility Foundation Volatility Framework 2.3.1
Virtual    Physical   Name
---------- ---------- ----
0x9ff5a3c0 0x37fbb3c0 \SystemRoot\System32\Config\SECURITY
0x9ffc03a0 0x30e243a0 \SystemRoot\System32\Config\SAM
0x8f60c568 0x04bbc568 [no name]
0x8f61c008 0x005d2008 \REGISTRY\MACHINE\SYSTEM
0x8f6448d8 0x04b3c8d8 \REGISTRY\MACHINE\HARDWARE
0x90659650 0x199c0650 \??\C:\Windows\ServiceProfiles\NetworkService\NTUSER.DAT
0x906d8008 0x13200008 \??\C:\Windows\ServiceProfiles\LocalService\NTUSER.DAT
0x93cf5008 0x38814008 \Device\HarddiskVolume1\Boot\BCD
0x93d479d0 0x388c19d0 \SystemRoot\System32\Config\SOFTWARE
0x989bc008 0x37920008 \SystemRoot\System32\Config\DEFAULT
0x9e6e69d0 0x005469d0 \??\C:\Users\forensics\ntuser.dat
0x9efe5650 0x028aa650 \??\C:\Users\forensics\AppData\Local\Microsoft\Windows\UsrClass.dat 

 

次に、SYSTEM と SAM のデータを用いて hashdump を実行します。

#volatility hashdump -f Memorydump2.bin --profile=Win7SP1x86 -y 0x8f61c008 -s 0x9ffc03a0

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
forensics:1000:aad3b435b51404eeaad3b435b51404ee:98ffdb1b29e7c88954326cd4011141d8:::

ここまで来れば、後は Ophcrack ( http://ophcrack.sourceforge.net/ ) を利用して、

パスワードを求めます。

手元のノートPCで数秒。 答えは “Kani3”


今回の CTF を通して、猛勉強しないとマズいなと強く実感した今日この頃です。。


 

関連記事