読者です 読者をやめる 読者になる 読者になる

絵を描くCTFer

CTFつよくなりたい

SECCON2016 Online 参加記&Writeup

CTF

開催期間(JST)

12/10 PM3:00 ~ 12/11 PM3:00

はじめに

大学の中間テストが終わり一段落した(まだ一つ残っているけど)ので, 書いてる.

先週開催されたSECCON2016 Onlineに, 同期の友人達と組んでいるチームであるwabisabiで参加した.

結果は以下の通り.

結果

・チーム名:wabisabi

・得点:400pt

・順位:272/1834

解いた問題

・Anti-Debugging (rev100)

・Memory Analysis (for100)

2問だけWriteup書いても寂しいので, 参加記としていろいろ書く.

開催前

・PM 2:00 起床

前日にバイト先に集まって皆でやろうみたいな話になってた.

・PM 3:05 会場到着 〜 解き始める

シャワー浴びずに寝てしまっていたので, 急いで準備してしていたけど, 遅刻. (申し訳なかった)

さぁ解き始めるぞ!と思いきや,

登録をしていなかったことに気がつく

急いで登録を済ませて, スタート.

最初はrev問が出てなくて, forensicsで解けそうな Memory Analysis があったのでそれに取り掛かる.

与えられたzipファイルはパスワードが必要(60分後には配布されるけど)なので, fcrackzipでブルートフォース.

数字だけで回してみたけどダメで, 次アルファベットで回してた.

(この時点では解けていないので, Writeupは後述)

他に解けそうなやつもなかったので暇だな〜と待っていたところ, 確かPM 3:30辺りでrev問が追加される.

・PM 3:30 Anti-Debugging を解き始める

Anti-Debugging (rev100)

問題文が

Reverse it.

ファイルの詳細.

bin: PE32 executable (console) Intel 80386, for MS Windows

EXEのほうが好きなので, 嬉しかった.

実行してみると

Input password >hoge
password is wrong.

となって, どうやらパスワードチェッカーらしい

IDAで開く.

f:id:ywkw1717:20161217085838p:plain

最初の分岐で正解かどうか判定してるっぽい.

正解ルーチンのほうを見ていくと, ファイル名から推測できる通りアンチデバッギングと思われるものがあった.

f:id:ywkw1717:20161217090134p:plain

どうするかなぁとか思ったけど,

「直接書き換えれば勝ちっしょw」

っていう風にすぐに思って, やってみる.

とりあえず最初の分岐を書き換えて, 間違っているパスワードでも全て正解ルーチンにいくようにする.

書き換える場所.

f:id:ywkw1717:20161217090817p:plain

objdumpでも確認する.

f:id:ywkw1717:20161217090918p:plain

目的箇所のマシン語が特定できたので, vimで書き換えていく.

場所.

f:id:ywkw1717:20161217091418p:plain

nop埋め.

f:id:ywkw1717:20161217091429p:plain

これでどうだろうと思って実行してみる.

Input password >hoge
Your password is correct.

認証を回避できてるけど, flagが出てこない.

もう一度IDAを見てみる.

ここ.

f:id:ywkw1717:20161217091948p:plain

このcheck!ってところをどうやら通っていないっぽかったので, 通るように上のほうの分岐をいじる.

ここを書き換える.

f:id:ywkw1717:20161217092209p:plain

f:id:ywkw1717:20161217092524p:plain

またまたnop埋め.

f:id:ywkw1717:20161217092540p:plain

実行してみると

f:id:ywkw1717:20161217092751p:plain

こんな風にウィンドウがでてきて終わり.

SECCON{check_Ascii85}

PM 4:00 〜 絶頂期

Anti-Debuggingを解き終わって, 自分はMemory Analysisに取り掛かる.

ここからの30分が絶頂期.

チームの暗号担当が Vigenere を解き, もう一人が VoIP を解いたのでこの時点で300pt.

f:id:ywkw1717:20161217093413p:plain

32位とかになっててビビる.

「やべぇよやべぇ!!!」とか騒いでて, チームでは超盛り上がる.

・PM 6:15 〜 バイト先の忘年会へ

結構調子良かったけど, バイト先の忘年会がPM 6:30 〜あったので移動を開始.

PM 6:30 〜 忘年会開始

CTFに響くし, そんな飲みすぎないようにしようと思っていてチョビチョビ飲んでいた.

お酒を飲んでいる間に順位は下がっていってたけど, 気にしない精神で.

先輩に大学院の話を聞けたり, その他普段話さないような人たちとも話せたので良かった.

AM 0:45 〜

飲み過ぎてしまった

頭が痛い

気持ち悪い

元々お酒はめっちゃ弱いので(ビール一杯でキツい), 気をつけてはいたが美味しかったのでだいぶ飲んでしまった.

AM 1:30 〜 頭痛と闘いながら気合のCTF開始

気合があればなんとかなるって誰かが言ってた気がする. 

とにかく再開.

Memory Analysis とひたすら闘う.

忘年会へ行く前にある程度のところまでは解けていて, あともう一歩って感じだった.

Memory Analysis(for100)

問題文

Memory Analysis
Find the website that the fake svchost is accessing.
You can get the flag if you access the website!!

Hint

Hint1: http://www.volatilityfoundation.org/
Hint2: Check the hosts file

偽のsvchostがあるっぽくて, system32ディレクトリ以下に無いsvchostが一つあったのでこれだろうというのはわかった.

こいつがhosts fileを改ざんしたんだろうというところまでは考えていたんだけど,

問題文の

You can get the flag if you access the website!!

これにずっと惑わされていて, hosts file に書いてある"153.127.200.178"にアクセスしてもflag降ってこないやんけ!ってずっと四苦八苦していた.

AM 4:00 〜

会場がお通夜ムードになっていて, みんな解けないし疲れているし苦しんでいた時間帯.

仮眠を取るメンバーもでてきたり, やる人はやっていたりした.

身体も結構キツかったし, 問題も詰まっていたので一旦寝ることにした.

AM 8:30 〜

起床

再開

改めて考察した.

今までの, "偽のsvchostがhosts fileを改ざんして,

153.127.200.178    crattack.tistory.com

を追加した"

ということと, "そのsvchostはsystem32ディレクトリ以下にないやつ"という考察は絶対に間違っていないと思い, では何をすればいいのかと考えた時に, svchostがhosts fileを改ざんしたのは目的があって改ざんしたのだから, svchostがどういう動きをするのか確認すればいいのではないかと思い, そのsvchostを見てみることにした.

volatility -f forensic_100.raw --profile=WinXPSP2x86 filescan |grep host

で, svchostを列挙.

0x0201ef90      1      0 R--rw- \Device\HarddiskVolume1\WINDOWS\system32\svchost.exe
0x020f0268      1      0 R--r-d \Device\HarddiskVolume1\WINDOWS\svchost.exe
0x0217b748      1      0 R--rw- \Device\HarddiskVolume1\WINDOWS\system32\drivers\etc\hosts
0x024a7a90      1      0 R--rwd \Device\HarddiskVolume1\WINDOWS\system32\svchost.exe

この2つ目が目的のsvchostなので,

volatility -f forensic_100.raw --profile=WinXPSP2x86 dumpfiles -Q 0x020f0268 -D OUTDIR --name

こうして, ファイルを取り出す.

ファイルに対して strings してみると

C:\Program Files\Internet Explorer\iexplore.exe http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd

というのが気になった.

IEで, このURLにアクセスしにいっているのがわかる.

もしやと思い

153.127.200.178/entry/Data-Science-import-pandas-as-pd

にアクセスしてみると・・・

Data-Science-import-pandas-as-pdというテキストファイルが降ってきたので見てみると, flagが書かれていた.

SECCON{h3110_w3_h4ve_fun_w4rg4m3}

AM 11:00 〜

他のrev問も出ていたので, Retrospective(rev200)を解いていたけどそのままタイムアップ.

終了のPM 3:00までご飯も食べずにみんなで頑張ってやっていた.

まとめ

集まってやると, モチベがいい感じだし, 詰まった時に気軽に相談できたりして良い. (なにより一人でやる時より楽しい)

SECCON2015 Online の時より, 300位近く上がっているので成長はしていると思う.

来年は2桁目指して頑張っていきたい.

お酒飲み過ぎ良くない.