Tanium CTF Japan 2022を開催
本ブログでは2022年10月12日(水)から14日(金)に開催しました第2回Tanium CTF Japanイベントの準備からイベント終了まで中の人からの観点からの振り返りやいろいろな気づきを共有したいと思います。
CTFとは
CTFとはCapture The Flagの略で情報セキュリティの分野だとFLAGといわれる隠された文字列を探してスコアを得るコンピュータセキュリティの技術を競うイベントです。隠されたFLAGの文字列は脆弱なシステムやサーバからエクスプロイトして得るものからプログラムやネットワーク通信を解析して得るものや、暗号を解読するものなどさまざまなものがあります。問題のレベルに応じて初級者から上級者まで楽しめるイベントであり、最近はセキュリティのトレーニングの一環としてや技術面接の課題に使われていたりもします。
Tanium CTFの特徴
TaniumのCTFは一般的なCTFとは少し趣向が変わっており、システムなどを侵害してFLAGの文字列を探すのではなく、すでに侵害された環境から攻撃者の足跡を探すようなものになっています。事前に実世界で起こるような侵害を疑似環境で実施して用意しておき、CTFの参加者はその疑似環境で侵害調査を行うことでFLAGを見つけてスコアを得る形式となっています。
今回の弊社開催CTFは4つの目的を挙げており、その4つは、1)擬似的な環境で実世界の攻撃シナリオやインシデントを調査する。2)TaniumとThreat Responseモジュールを調査で活用してTanium製品の理解を深める。3)自分のセキュリティに関する知識、スキル、経験を試す。4)フォレンジック調査に関する新しい知識や経験を得る。としています。
そのため、参加者にはTanium製品のプラットフォームが利用できる仮想環境を参加チームごとに用意しており、CTFの問題を解くにあたって、この仮想環境でTaniumとThreat Responseモジュールの機能を利用してインシデント調査が実践的に行えるようになっています。
参加形式は1チームあたり最大5人までのチーム戦を採用しました。もちろんソロで参加したい方はソロでチームを登録していただけます。また幅広い分野から参加して頂けるよう、弊社のお客様・パートナ様だけでなく、競合他社を除いて基本的にどなたでも参加OKとしました。
CTFの準備
CTFイベントの開催にあたってやはり、準備が一番大変でした。今回Tanium Japanで開催したCTFはもともと弊社のグローバルイベントであるUSで行われたTanium Convergeで開催された過去のCTFイベントを日本の参加者向けに改良して準備したものになります。また実際のCTFイベント開催にあたり、チャレンジ問題の準備のほか、CTFプラットフォーム環境の準備から参加者募集まで想像以上にタスクがありました。
CTFチャレンジ問題の準備にあたり、まずは100問以上あるオリジナルのUS版の問題を1問ずつチャレンジして実際に自分で解いてみました。侵害調査の環境(WindowsサーバとLinuxサーバが数台ずつ存在)は仮想環境でスナップショットが作成してあり、それを復元してチャレンジ問題に取り組みます。この過程でオリジナルのイベント当時でしか解けなかった問題や、復元後自動的にパージされてしまうログのため解けないチャレンジ問題などもありましたので、それらのチャレンジ問題の排除やカスタマイズ、もしくは新規で問題作成を行いました。 次に協力メンバーにチャレンジ問題文を英語から日本語に翻訳していただき、さらに問題と解答を理解した上で超訳しました(笑)。
苦労した点は、オリジナル問題の作成者ではないので、侵害調査を通してインシデントの全体像(ストーリー)を把握するところから始めて、攻撃者の侵害の痕跡に合わせてチャレンジ問題、解答を作成・準備する点です。チャレンジ問題は調査の面白みを感じてもらえるようにできるだけ、攻撃者のIPアドレスやツール、利用コマンド、それら関連イベントの回数や個数、時間などの侵害の痕跡を見つけて、それが次の痕跡の足がかりとなり、さらに次の痕跡といった具合に繋がるように合わせました。またチャレンジ問題によっては解答が一つだけでなく複数あり回答の入力フォーマットが参加者によって異なる場合も考えられるので、入力されるであろう、さまざまなパターンを想定して解答キーを作成する必要もありました。同時に前回の第1回開催でチャレンジ問題の解答(Write-up)の公開リクエストが多かったので、解答へのヒントとなる画面キャプチャを取得して解答編の作成も行いました。ここまでの準備でかなり時間がかかってしまい、開催数日前になってようやく内部のエンジニアにQAのボランティアになってもらい実際にチャレンジしてもらいました。
チャレンジ問題の準備をしつつ、平行して準備したのがCTFで利用するプラットフォームと参加者の募集です。プラットフォームはインシデント調査で使うTaniumの仮想環境と、参加者がチームとして登録してチャレンジ問題の確認の回答を行うCTF用スコアリングプラットフォームの2つを利用します。Taniumの仮想環境は弊社の各種トレーニングで利用している環境を参加登録チームごとに払い出しが出来るように準備し、CTFのスコアリングプラットフォームへは参加チームと参加者の登録を行う必要がありました。正直なところ、Tanium CTFの認知度はほぼないと思っていたため、参加者がどのくらい集まるのかまったく予想がつきませんでした。2,3チームしか集まらなかったらどうしようかとかなり心配でしたが、イベント当日までに総勢56チーム(47社)、約170名の方に登録していただけたのは嬉しい驚きでした。
CTF開始
今回のCTFは前回より開催期間を延ばしてほしいとのリクエストがありましたので前回の28時間から延長して52時間開催としました。初日の13時から最終日の17時まで調査用のTanium仮想環境プラットフォームとCTFのスコアリングプラットフォームへ参加者はいつでもアクセス出来る環境となっています。参加者の中には参加できる時間帯がチームやチームのメンバーによって制限がある場合も考えられましたので、より多くの参加者が期間中に朝、昼、夜を問わずに3日間の間参加することが出来たのではないかと思います。
また、これらのプラットフォーム環境に慣れていない参加者への質問対応やトラブル対応のため、期間中は1日に2回オンラインでのサポートデスクを設けました。イベント初日に想定外のトラブルが発生したため、サポートデスクの時間を設けて良かったと思っています。今回、想像以上のチーム数に参加していただけたのですが、その結果Taniumの仮想環境のリソースと帯域不足となり、CTFのインシデント調査に必要な環境が立ち上がらないというトラブルが発生してしまいました。参加者チームの皆様には何度も仮想環境の再起動をお願いや、リソース不足で正常に起動しなかったTaniumサービスの手動起動などお手数をお掛けしてしまい、反省しております。状況が改善されたのが2日目以降となってしまったため、調査に十分な時間をかけれなかったチームもあったかもしれません。次回以降の開催ではこのようなことが起こらないように改善したいと思います。
各チームの名前は主催者側で動物の英語名からランダムな名前を事前に選択しました。。参加者はお互いのチーム名、スコア、順位は分かりますが、所属組織名はわからないようになっています。CTFスコアリングプラットフォームでは各参加チームのスコアと順位がリアルタイムでトラッキングされ上位10チームはスコアボードにグラフとして表示されます。この機能のおかげでより競技的な側面も感じられると思います。特に終盤の各チームの追い上げと目紛しく変わる順位は圧巻でした。
今回の結果は、昨年の第1回イベントでトップだったチームが2年連続でトップとなり首位の座を守りました。昨年に続き圧倒的な速さで全チャレンジの問題を正解されています。さらに上位3チームまでが全問正解されました。問題を提供する側としてはあまりにも短時間ですべて解かれてしまうと困るのですが、かといってだれも解けないような問題があったりしないか心配でした。そういう意味では3チームが全問正解されていましたので正直なところ安心しました。問題数、期間、レベルともちょうど良かったのかもしれません。ただ、参加者の中にはいろんなレベルの方がいらっしゃいますので、イベント終了後に解答編の資料を問題の解き方のヒントとして参加者へ公開させていただきました。
まとめ
本ブログでは2022年10月12日(水)から14日(金)に開催しました第2回Tanium CTF Japanイベントの気づきについていろいろと書かせていただきました。これまではCTFの問題を解く側であることが多かったのですが、改めて問題を準備する側になってみるといろんな気づきがありました。弊社のCTFイベントを通じて参加者の皆様がインシデント調査やデジタル・フォレンジックの学びの場となり、少しでもセキュリティ業界に貢献することができましたら幸いです。来年も第3回を企画したいと思いますので、ぜひ参加を検討していただけましたら幸いです。