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

アスキーアートや単語当てゲーム、
それが「問題」だ


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

「もしDEFCONに行くなら手伝ってくれないか」……そして、いざ決勝の地へ! 予選の混乱をお伝えした前編に続き、後編では決勝の模様をレポートします。(編集部)

 決勝の地に到着、そこは底冷えするホテルの一室

 会場はラスベガスにあるリヴィエラというホテルで行われます。会場に着くと、韓国チームは開場30分前に全員そろっていてすでに腹ごしらえをしています。それに対して、われわれのチームは開場から1時間ほどたってからそろい始めるという具合。韓国チーム、気合いが入っています。

 われわれのチームは、韓国、アメリカ、エストニア、日本の混合チームです。学生が多く、若いチームでした。会場はテーブルが用意されていてチームごとに分かれて座ります。

写真1 それぞれのチームが中央のサーバに接続されている

 決勝では、1チームの人数は8人というルールがありました。しかし、ルータを用意し無線LANやインターネット経由で接続できるようにしておけば、何人でも参加できてしまいます。このルールの意味は、「会場に座って参加できるのが8人だけ」ということのようです。

 しかし、このルールも適当です。初日は9人以上座っていても何もいわれなかったのですが、2日目には人数が多いと注意されるようになりました。そして3日目には再び無制限となりました。この辺の運営も適当です。

 最大の注意点としては会場が非常に寒いことです。真夏に砂漠の中にあるラスベガスに行くので暑いというイメージがありますが、冷房がアメリカ人向けに設定されているせいか、ホテルの中は非常に寒いです。今後行かれる方は上着を持っていったほうがいいでしょう。

写真2 屋内は大変冷えている

 決勝の基本ルール:「自サーバを守りつつ、攻めよ」

 まず、運営者が昨年までとは変わったためルールを把握する必要がありました(といっても、昨年までのルールもよく知らないのですが)。

 開催時間は10時から22時までで、予選と違って徹夜ではありません。会場がリヴィエラに変わる前は夜通しでやっていたのですが、現在はホテルの規制もあり夜中は会場から出なければなりません。しかし、大抵のチームは自室で夜通し解析を続けていたと思います。

 基本的には各チーム1台ずつサーバが渡され、そのサーバ上で複数のサービスが起動しているのでお互いに攻撃と防御を競うというものです。そこで起動しているサービスというのは、例えばログインしてユーザー名などを入力しゲームをするというタイプのものが多かったです。

 まずは自分の脆弱性を直すことから

 では、出題された問題を見ていきましょう。このサーバにはバイナリが存在しており、中をみるとOSのファイルシステム一式が入っていました。どうやらサーバで動いているファイルが一通り入っているようです。homeディレクトリ以下に、運営者が作成したと思われる複数のバイナリファイルがありましたので、おそらくこれらのファイルの脆弱性を探すのだろうということで解析を始めました。

 手順としてはまずこれらのバイナリの脆弱性を見つけ、パッチを作る必要があります。これはほかのチームが脆弱性を突いて攻撃してきた場合の防御のためです。サービスを止めればいいように思われますが、サービスが起動しているかを確認するために定期的に運営者がアクセスしてきます。もしここでサービスが起動していなければ、SLA(Service Level Agreement)が低くなり減点となります。そのため安易にサービスを止めることはできません。また、本来のサービスと同じ機能を提供し続けられるようなパッチでなければ、サービスが動いていないと見なされてしまいます。

 パッチを作ったあとは、攻撃コードの作成に取り掛かります。攻撃コードを使って、パッチを適用していないチームを攻撃するためです。攻撃というのは、ほかのチームのサーバに置かれているkeyファイル(ランダムな文字列が書かれたファイル)を読み取るか、書き換えるというものになります。書き換えるほうが難易度も高く、獲得できる点数が高くなります。keyファイルは数分おきに更新される仕組みとなっているため、パーミッションを変えるというような小細工はできません。

 面白いのは、1つのバイナリファイルに存在する脆弱性は1つとは限らないという点です。つまりパッチを1つ作ったからといってサービスを起動してしまうと、そのほかの脆弱性が残っていた場合、攻撃を受けて減点になる可能性があります。かといってサービスを起動していなければSLAが下がります。この点は被害にあうリスクを考えながらサービス提供を続ける必要があり、現実のサーバ運営と似たところがあります。

 また、OSを変更しても、ファイアウォールを置いても問題ありません。その方法で攻撃と思われるリクエストは遮断することができます。例えば表示可能な文字(ASCIIコード0x20〜0x7f)や改行だけを許可するようにした場合、バッファオーバーフローを攻撃するようなコードはほぼすべて遮断することができます。しかし、表示可能な文字だけを使って攻撃コードを作成することもできるため、完全に対策となるわけではありません。

 このように、決勝が行われている間、激しいいたちごっこが繰り広げられています。毎年決勝に進出している常連チームはその辺のことに慣れていて、攻撃コードや入手したkeyファイルなどを暗号化するのは当然という感じでした。

 また、決勝でも再び主催側の不手際が目立ちました。サービスの権限が間違っており、管理者権限を取れる状態だったようです。上位のチームはすぐにこれに気付き、得点を荒稼ぎしました。また、問題が間違っていて、主催者がバイナリを無断で変更していたそうです。以前までは間違いを修正した場合には通知が来ていたのですが、今回はそれがなくてとまどいました。

写真3 スコアボードの様子

←前編へ
1/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 記事ランキング

本日 月間