いざラスベガス、いざDEFCON CTF決勝へ(前編)

予選はクイズ感覚の「超高度な知恵くらべ」


福森大喜/ラウリ・コルツパルン
株式会社サイバーディフェンス研究所
上級分析官
2009/9/14


 トラブル続きの予選

 主催チームであるddtekが運営に慣れていないこともあって、競技はスムーズには進みません。正しい答えを送っているのに正解と表示されず、サーバの負荷が低いときに再び同じ答えを送信すると正解と表示されるなど、トラブルが目立ちました。問題出題サーバがクラックされてしまうことすらもあります。また、サーバの設定ミスでプログラムのソースコードをダウンロードすることができ、その中に答えがそのまま書いてあったものもあったようです。

 基本的に総当たり攻撃や、ポートスキャンのような攻撃は禁止されていたのですが、韓国からの総当たり攻撃がひどく、サーバが過負荷になっていたため、韓国のIPアドレスをすべて接続拒否するような措置が取られたそうです。また、問題は解けてもどれが答えなのか分からない問題が多くありました。

 しかし、このような不満をいっても誰も聞いてくれないので、各自で乗りこえる必要があります。

 「Pwtent Pwnablesの100」を追う

 出題された問題を少し紹介します。予選でもっとも苦戦したのが「Pwtent Pwnables 100」の問題でした。

 問題文は、

Running on pwn2.ddtek.biz

とだけ書いてあり、バイナリファイルがダウンロードできるようになっています。そのバイナリファイルはWindowsで動くプログラムで、ポート5832で待ち受けるサーバになっています。同じバイナリファイルがターゲットサーバ上で動いていて、脆弱性を攻撃できれば解答を得られると想像できます。そのサーバに接続すると、下記のような応答があります。

$ nc target.example.com 5832
Let's have a crack eh!
abcd
efgh
Better luck next time!

 これを少し解析すると、単純なバッファオーバーフローが存在することが分かりました。

図2 バッファオーバーフローが存在することが判明(クリックで拡大します)

 そこですぐに攻撃コードを作成し、手元のサーバに対して実行したところ、シェルを奪うことができました。早速対象サーバに対して実行しましたが、これは成功しませんでした。

 うまくいかなかった理由として以下の可能性を考えました。

  1. DEP(Data Execute Prevention):データ実行防止機能が働いている
  2. Wineなどを使いUNIX上でWindowsプログラムが動いている
  3. リターンアドレスが環境によって変わる可能性がある

 しかし、手元の環境ではいずれの状況でも動作する攻撃コードを作成しましたが、対象サーバでは成功しませんでした。1はDEPを解除するような攻撃コードを作成することで、DEPが有効になっていたとしても攻撃できます。2は実際に手元に環境を作り、Wine上でも攻撃コードが動くことを確認しました。3は環境に依存しない攻撃コードを作成することが可能でした。

 あとで分かったことですが、対象サーバはFreeBSDで動いており、おそらく別のバイナリが動いているということでした。問題文には同じバイナリが動いていると書いてあるのにです。結局、FreeBSD用の攻撃コードに置き換えるだけで正解できたそうです。

2/3

Index
予選はクイズ感覚の「超高度な知恵くらべ」
  Page1
今年も開催、ハッカーの祭典「DEFCON」
予選競技ルール――周りの人はみんな敵?!
CTFの進行は「ジョパディ!」形式
Page2
トラブル続きの予選
「Pwtent Pwnablesの100」を追う
  Page3
「Trivialの400」にみる証明書の重要性
いざ、決勝へ

Index
アスキーアートや単語当てゲーム、それが「問題」だ
  Page1
決勝の地に到着、そこは底冷えするホテルの一室
決勝の基本ルール:「自サーバを守りつつ、攻めよ」
まずは自分の脆弱性を直すことから
  Page2
チームの戦略は
問題1:巨大なアスキーアートが実は……
  Page3
問題2:ハングマンで単語当てゲーム……ではなく
閉幕、そして驚くべき発表

Security&Trust記事一覧


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間