
DEFCONでは、メインイベントとなる世界各地のセキュリティ技術者などによる講演以外にも、セキュリティの各種テクニックを教えるワークショップや、ピッキングツールの販売ブースまである。そんな中で人気のイベントの1つがCTF(Capture The Flag)である。もちろん世界でもっとも人気のあるCTFであろう。
そのDEFCON CTFの予選では、300を超えるチームの中から日本人チーム「sutegoma2」が2位の快挙を飾り、本戦に勝ち進んだ。これまで日本人チームは予選を突破できない時期が長らく続いていたので、本戦に出場した今年は活躍を期待したい。本戦では世界各国から参加している10チームが優勝を争う。
●CTFのルール
DEFCON CTF本戦のルールは、自分のサーバーを守りながら、相手のサーバーを攻撃して攻略し、点数を競い合うという物だ。
運営者側から各チームに配布された問題には複数のバイナリファイルが含まれていて、これがサーバー上で起動するサービスとなる。ただし、実行しただけでは起動しない。起動するためにはバイナリファイルを解析し、起動に必要なオプションなどを特定する必要がある。
そしてこのバイナリファイルにはリモートバッファオーバーフローの脆弱性が含まれている。この脆弱性をお互いのチームが攻撃し合う。攻撃を防ぐためにはパッチを作成して適用したり、ネットワーク的に防ぐなどの対策をその場で講じることが必要になる。
得点の仕方は2通り。1つはサービスを起動し続けること。運営者側からはサービスが稼働しているかどうか、常にネットワーク越しにチェックされている。起動している間は得点が加点される。
もう1つは、他のチームのサービスを攻撃し、その中にあるキーを読み取ることだ。これにはボーナスもあり、他のチームに先駆けて一番先に攻略すると更に加点されるという仕組みだ。
CTFは守る一方でも勝つことができない。勝つためには相手チームのサービスを攻撃しなければならないのだ。
●CTF1日目の戦況
CTFは8月5日9時(現地時間)から開始された。例年通り運営側の準備の都合などでスタートは遅れたが、昼前にはサーバーの認証に必要な鍵や、ヒントとなるバイナリデータがUSBメモリで配布された。まずはこのバイナリファイルを解析するところから始まる。
しかし始まって早々、予想外の展開があった。運営側のネットワークはIPv6 onlyだったのだ。これまでIPv6を使ったCTFというのは経験したことがなく、インフラ関係はすべてIPv4で用意していたのだ。そのためそこからやり直す必要があった。
昼過ぎには運営側のネットワークにアクセスできるようになり、問題のバイナリファイルが配付された。sutegoma2チームは各自がこの問題を解析し、起動方法を見つけ、脆弱性を発見し、パッチを当てていくという作業を行った(写真)。
配布されたファイルは全部で15ファイル。そのうち13ファイルの起動の仕方を発見し、8ファイルにパッチを当てたという状況だ。ただしすべての脆弱性が発見できたかどうかは不明だ。未発見の脆弱性があり、そこを他チームに攻撃されるかも知れないので予断を許さない。
CTF会場のネットワークは18時で停止する。その後はサーバーにアクセスすることができなくなり、翌朝までアクセスすることができない。しかし、競技はここで終わりではない。問題として配付されたバイナリをホテルに持ち帰り、解析の続きを行うことになる。
(ScanNetSecurity)