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

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


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


 チームの戦略は

 われわれのチームは事前にファイアウォールを用意していなかったため、急きょ筆者のマシンをファイアウォールとして動かすことになり、いきなり大役を担うことになりました。すべての通信は筆者のマシンを経由するようにし、さらに通信をキャプチャすることでどのような攻撃が来ているかを観察し、脆弱性調査の糸口にできるようにしました。下手に攻撃をすると、こちらが発見した脆弱性のヒントを相手に与えてしまうことになります。ここには難しい駆け引きがあります。

 ほかのチームも防御のための細工をしているので、手元の環境では攻撃が成功するのにもかかわらず、実際に攻撃してみても成功しないことが多くありました。例えば、攻撃コードでは/bin/shを呼び出すことが一般的なため、/bin/shは消されているか書き換えられていたらしいです。また攻撃コードからの異常な通信もできないように細工を施すチームが多かったようです。

 われわれのチームはバイナリファイルごとに担当を決めて問題に当たりましたが、細かく役割分担していたわけではありません。チームのレベルは高く、誰かが脆弱性を見つけると、ものすごい勢いで攻撃コードを作成していきました。一方、ほかのチームはメンバーごとに役割分担されており、それぞれの得意分野を生かせるようにしていました。例えば、全体統括、防御、解析、攻撃コード作成、システム管理というように役割分担されており、組織として機能しているという印象を受けました。

 問題1:巨大なアスキーアートが実は……

 ラスベガスらしく、「casino」というサービスがありました。接続するとカジノゲームのようなものが始まります。

welcome to ddtek casino, what's ur name? fkmr
, welcome to ddtek casino!
what would ju like 2 du 2day?:
 1: check wallet
 2: Leave
 3: ru roulette
 4: blackjack
 5: war
 6: crappy craps
 7: war (auto)
 8: order drink
 9: current time
1
 you have 200 buckaroos

 ファイルの中身は図のようになっています。

図1 巨大なアスキーアートのファイル

 少し見えにくいですが「二進忍術」と書かれています。これは何だと思いますか? もう少し拡大してみると、図のようになっています。

図2 拡大すると……

 実はこれ、Perlのプログラムになっているのです。最近日本では、記号だけでプログラムを書くのがはやっていますが、この問題はさらに記号だけでアスキーアートを作成しています。

 さて、この難読化されたプログラムを解読していくのですが、少し解析すると難読化というほど難しいものではないことが分かりました。一度読みやすい形式にデコードされてから実行されるようになっていたので、プログラムを少し書き換えて、デコードした後にファイルに保存するようにすれば読みやすい形式のプログラムを得ることができます。

 読める形式のプログラムが出てくれば、あとはPerlで起こりそうな脆弱性を調べていくだけです。Perlで任意のコマンドを実行できるような脆弱性といえば、system()関数を実行する部分でOSコマンドインジェクションができることが多いのですが、この問題もそれに該当しました。

 if(int(rand(4)) == 0){
   $bankroll = 0;
    my @keys = keys %drinks;
    my $k = $keys[int rand ( @keys)];
    $j = $drinks{$k}{name};
    $j =~ /^(.*)$/;
    $j = $1;
    printf "\n FUCK, somebody stole your wallet\n";
    system($j);
    printf "at least you get a drink on the haus:" . $drinks{$k}{name};
  }

 しかしその部分は、4分の1の確率でしか実行されないようになっていました。手動で何度か試してもよいのですが、全チームを攻撃するとなると時間の無駄になります。そのためプログラムを作り、自動で何度も試すようにしました。

 このようにクライアントをエミュレートするような、簡単なプログラミングが必要になる場面がたくさんありました。

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 記事ランキング

本日 月間