
いざラスベガス、いざ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記事一覧 |
- Windows起動前後にデバイスを守る工夫、ルートキットを防ぐ (2017/7/24)
Windows 10が備える多彩なセキュリティ対策機能を丸ごと理解するには、5つのスタックに分けて順に押さえていくことが早道だ。連載第1回は、Windows起動前の「デバイスの保護」とHyper-Vを用いたセキュリティ構成について紹介する。 - WannaCryがホンダやマクドにも。中学3年生が作ったランサムウェアの正体も話題に (2017/7/11)
2017年6月のセキュリティクラスタでは、「WannaCry」の残り火にやられたホンダや亜種に感染したマクドナルドに注目が集まった他、ランサムウェアを作成して配布した中学3年生、ランサムウェアに降伏してしまった韓国のホスティング企業など、5月に引き続きランサムウェアの話題が席巻していました。 - Recruit-CSIRTがマルウェアの「培養」用に内製した動的解析環境、その目的と工夫とは (2017/7/10)
代表的なマルウェア解析方法を紹介し、自社のみに影響があるマルウェアを「培養」するために構築した動的解析環境について解説する - 侵入されることを前提に考える――内部対策はログ管理から (2017/7/5)
人員リソースや予算の限られた中堅・中小企業にとって、大企業で導入されがちな、過剰に高機能で管理負荷の高いセキュリティ対策を施すのは現実的ではない。本連載では、中堅・中小企業が目指すべきセキュリティ対策の“現実解“を、特に標的型攻撃(APT:Advanced Persistent Threat)対策の観点から考える。
![]() |
|
|
|
![]() |