Japan
サイト内の現在位置
Hardening 2022 DECADE参加記
NECセキュリティブログ2022年12月2日
皆さんこんにちは。NEC サイバーセキュリティ戦略統括部 セキュリティ技術センターのU松(ハンドルネーム)です。2022年11月15日から11月19日にかけて開催されたHardening 2022 DECADEに参加いたしました。今回はこちらについてご紹介いたします。
Hardening Projectとは
Hardening Projectとは堅牢化に関する競技会です。1チーム数名のチームに分かれ(今大会は1チーム9~10名で、全10チーム)、押し寄せる攻撃から如何にシステムを守るかを競います。参加者(チーム)は架空のECサイトの運営者となり、攻撃からサイトを守りつつ、売り上げを伸ばすことを目指します。ECサイトへは複数のクローラ(ここでは自動的に買い物をしてくれるプログラムとお考えください)が巡回しており、基本的にはこれらクローラによる商品の購入合計額で順位が決まります。売り上げを伸ばすこと以外にも競技内にはいくつかの「ミッション」が設定されており、その達成状況によって評価の加点などが行われます。この他にも顧客対応やインシデント発生時の上位組織への報告、脅威情報の他組織への共有なども必要であり(加点対象)、実際のインシデントレスポンスと同様の対応が求められる競技会となっています。参加対象は技術者に限定されず、それ以外の方の参加も可能となっています(技術者以外の方の参加も年々増えているそうで、主催者の方もそれを歓迎しています)。様々な背景を持つメンバと協力しながら、一丸となってシステムを守る経験を積むことができます。
毎回様々な場所で開催されるHardening Projectですが、10周年を迎える今回は沖縄県 名護市の万国津梁館が会場となりました。昨年はコロナ禍の影響でオンライン開催でしたが、今年は現地参加とオンライン参加のハイブリッド開催となりました。私は現地参加しました。
スケジュール
今回の競技会のスケジュールは下記の通りです。それぞれの詳細は後述いたします。
日程 | 内容 |
~9月下旬 | チームメンバ決定 |
9月下旬~11月12日 | チームごとの事前準備 |
11月13日、14日 | 競技会本番前々日、前日準備 |
11月15日 | 競技会本番 |
11月16日 | Analysis Day |
11月19日 | Softening Day |
チームメンバ決定・チームごとの事前準備
チームメンバは主催者の方が決定します。決定した各チームメンバにチームリーダの選定を促すメールが届くと、本格的な準備期間がスタートします。私が所属したチームでは9月下旬にオンライン上で初顔合わせを行い、自己紹介や今後の進め方の検討などを行いました。打合せやコミュニケーションにはDiscordを使用していました(主催者の方や他参加者の方とのコミュニケーションにもDiscordが使われていました)。初顔合わせ後は週一のペースで打合せを実施し、競技会本番に向け、準備を進めました。下記が我々のチームの主な準備内容になります。
- 過去大会の情報共有:チーム内の過去競技会参加経験者の方から、競技会当日の流れや必要なアクション、想定されるOS、ミドルウェア、CMS等の情報、評価方式やその他重要なポイントなどを初参加者含むチーム全体に共有いただきました。
- メンバの役割決め:各メンバのスキルや希望を基に、各メンバの当日の役割や事前準備の担当などを決めました。当日の役割は、大きく技術系担当要員、非技術系担当要員の二つに分けました。私は技術系担当要員でした。また私は普段の業務でAnsibleによるサーバ要塞化に取り組んでいたことから、事前準備では主にサーバ要塞化を担当しました。
- 方針や戦略検討:チームとして、今回の競技会の参加目的を話し合いました。具体的には、「勝つ」ことが最優先なのか、「学ぶ」ことが最優先なのかを話し合い、チームとして「学ぶ」ことを優先目標としました。
戦略としては、優先して準備・対策する項目や「マーケットプレイス」の購入戦略などを検討しました。Hardening Projectではマーケットプレイスと呼ばれる制度があり、競技本番中に実在する企業様からセキュリティ関連の製品・サービスを(競技会内通貨で)購入し、利用することができます。このマーケットプレイスは強力な支援になる一方、費用をかけすぎるとそれが敗因となりかねないリスクもあり、事前の戦略の立て方が重要になります。我々のチームは学びが優先ということもあり、基本的に自分たちで準備・対策を行い、それらが手薄な部分をマーケットプレイスで補う方針としました。 - 競技当日に使用するplaybookや資料の準備:競技当日に迅速に対応できるようplaybook(後述)の作成や、コマンドやセキュリティ上チェックすべき項目の整理などを行いました。私は主にサーバの要塞化担当だったため、Ansibleでサーバを自動要塞化するためのplaybook(対象サーバでどのような設定を行うのか記述したファイル)の作成やufwやfirewall-cmdなどのファイアウォール関連のコマンドを整理するなどしました。他のメンバも当日利用するためのスクリプト(特定のソフトウェアのインストールや設定を行うもの)や、WordPressやEC-CUBEのセキュリティ観点でのチェックリスト等の準備をしました。技術的な準備以外にも、当日利用する報告書や稟議書のテンプレートなど、非技術分野でも準備を進めました。
競技本番前々日、前日準備
競技本番の前々日、前日に今回の競技会の詳細な情報が参加者に公開されます。前々日には、今大会はアニメーション制作会社という設定であること、また「連合制」が導入されることが明らかにされました。連合制とは複数チームでグループ(連合)を構成する制度です。今回は5チームずつ2つの連合に分かれました(各連合は製作委員会という設定でした)。連合制ではチームとして良い成績を収めることはもちろんのこと、連合内での協力も求められます。これは、サプライチェーンなど、関連する企業同士の連携が欠かせない今日のサイバーセキュリティを反映した設定なのかもしれません。我々の連合ではこの情報が公開された後、同じ連合となったチーム同士で急遽打合せを行い、連携内容や方法について検討を行いました。
前日には競技環境、評価方式など、競技会全体の詳細が公開されます。各チームとも前日に公開されるこの資料を読み込み、事前準備していた資料やコード、戦略の修正などを行います。我々のチームも名護市のコワーキングスペースに集まり、メンバ全員で資料の読み込みや当日の戦略の検討、準備していたもの(playbookなど)の修正を行いました。
競技会本番(Hardening Day)
当日は9:00頃入場し、PCのセッティング、主催者の方からのご挨拶ののち、9:40頃、8時間に及ぶ競技がスタートしました。
例年、スタートからしばらくの間は攻撃がないとされ (あるいは控えめ)、各チームともこの時間に集中的にシステムの堅牢化に取り組みます。我々のチームもスタートからしばらくの間は環境の把握やユーザアカウントのPW変更、不要なサーバの停止、ソフトウェアのバージョンアップ、バックアップの取得など、システムの堅牢化に取り組みました。また並行して、前述したミッションにも取り組み、加点を狙いました。この他マーケットプレイスの購入や導入なども行いました。マーケットプレイスについては、CISCO様のNGFW/IPS、EDRサービスを導入することができました。不審な通信の検知や遮断、手薄となっていたエンドポイントの防御を行うことができ、非常に助かりました。
私はサーバ要塞化担当であったため、この時間にAnsible playbookで一気に堅牢化を行う予定でした。しかし当日の環境でAnsibleを動作させることが予想以上に困難であることが判明し、悪戦苦闘することになりました。Ansibleを動作させるべく様々な方法を検討しましたが、結局時間の都合もあり、playbookの一部をシェルスクリプトに書き直し、対応しました(私のチーム含め、今回Ansibleを実行できたチームはいなかったようです)。Ansibleが使えなかった場合に備え、シェルスクリプトなど代わりとなる方法を事前に準備するべきでした。
各チームが堅牢化対応に追われる中、ついに攻撃が始まります。攻撃が始まると、インシデントレスポンスを最優先に、空いた時間で堅牢化の続きやミッションに取り組むなど、各チームとも慌ただしくなっていきます。我々のチームも様々な攻撃(攻撃と考えられる事象)を受けました。攻撃の例としては、下記が挙げられます。
- サーバに不審なファイルが置かれる
- サイトの一つへのXSS
- 情報漏えい(ファイルの流出)
- ページの改ざん
- ランサムウェア(ファイル暗号化)
これらの事象が発生する度に、手の空いているメンバが、ファイルの削除(移動)やApacheの再起動、バックアップからの復旧などサイトを稼働し続けるために必要な様々な対応を実施しました。これらの対応は必ずしも根本的な解決とはならず、暫定的な対応も多くありましたが、限られた競技時間内で詳細な原因を調査することは困難なため、やむを得ない部分でもあります。
この他、競技内ではこうした技術的な対応以外にも、ECサイトの在庫補充、JPCERT/CC様等への情報共有、顧客対応、インシデント発生に伴う上位組織への報告など、様々な対応を行わなければなりません。我々のチームでも情報漏えい(とみられる事象)が発生し、上位組織への報告を行いました。
また連合制となった今大会では、情報共有や協力を活発に行いました。我々の連合では注意が必要な情報や困りごとをDiscord等で共有していたほか、困っているチームに自チームからメンバを派遣するなどしていました。
次々に行われる攻撃に対応しつつ、ミッションやその他必要な対応等に取り組んでいるうちに競技終了時間となりました。あっという間の8時間でした。
余談ですが、競技中は連合対抗の「瓦割り対決」も開催されました。沖縄が空手発祥の地ということにちなんで行われたイベントで、連合の代表一名が割れると思う枚数を宣言し、その枚数にどれだけ近い枚数を実際に割れるかを競います(宣言した枚数をオーバしてはいけません)。勝った連合には加点が行われることもあり、盛り上がりました。
Analysis Day
Analysis Dayはその名の通り競技当日の分析や、後述するSoftening Dayの発表資料を作成する日です。競技当日はインシデントレスポンスに忙しく、なかなか攻撃や状況の分析まで手が回らないため、この日に行います。そのため、学びという意味では競技当日より重要な日と言えます。我々のチームも名護市のコワーキングスペースに集まり、分析や資料の作成などを行いました。購入したマーケットプレイスによっては報告書(およびその説明のための打合せ)やログの提供を受けることができ、我々のチームもCISCO様から報告やログの提供を受けました。こうした情報などから当日行われた攻撃や障害の原因を分析し、発表資料へとつなげていきました。
Softening Day
Softening Dayは、各チームで(事前準備を含む)競技期間を通して取り組んだ内容の発表、主催者の方からの説明(種明かし)・講評、順位発表等が行われる日です。
各チームによる発表では、チームごとに特色のある準備、当日の動き等を知ることができ、勉強になりました。例えば事前準備では、当日の模擬環境を作成し、それにメンバ全員がアクセスして当日の訓練を行ったチームがあるなど、参考になりました。この他、マーケットプレイスの購入戦略もチームごとに様々で、各チームの戦略が結果として有効だったのか、あるいは残念ながらその逆だったのか、考察することができました。
主催者の方からの説明・講評では、実際に行われた攻撃の概要や今回の競技環境に関する説明を聞くことができます。攻撃が原因と思っていても、実際には対策のしすぎや設定ミスによる「自爆」ということもあり、この時間である程度その答え合わせができました。我々のチームは「自爆」はありませんでしたが、情報漏えいの原因が当初考えていたルートとは全く別であったなど、様々な学びを得ることができました。またこの時間には主催者の方の競技準備に関する苦労話も聞くことができます。
主催者の方からの説明・講評後は、グランプリの発表です。例年は見込み販売額が1位のチームが優勝ですが、今回は連合制のため、所属する連合が他の連合より販売額で上回り、かつその連合内で1位のチームが優勝となります。我々のチームはミッションに早々に取り組んでいたことが功を奏したとみられ、見込み販売額が連合内で1位、全体でも2位となり、また連合としても勝利していたため、優勝となりました。グランプリ以外にもスポンサー賞があり、マーケットプレイスの製品・サービスを最もうまく使いこなしたチームなどに送られます。我々のチームはCISCO様からスポンサー賞をいただくことができました。
ただ、主催者の方が仰っていた通り、競技会で優勝すること自体に大きな意味はありません(もちろん嬉しいですが)。重要なのは競技会を通して学んだことをいかに業務や自分自身のスキルアップに活かすかです。優勝しましたが我々のチームにも技術点や協調点があまり高くないなど、課題がありました。これらの課題やその他個人的な反省点などを次につなげていくことが重要と考えています。
まとめ
今回はHardening 2022 DECADEをご紹介しました。初参加でしたが、堅牢化やインシデントレスポンスなど、多くのことを学ぶことができました。リアルなセキュリティに触れてみたい方にはお勧めの大会です。
最後に、このような素晴らしい機会を提供くださったHardening 2022 DECADEの主催者の皆様、関係者の皆様、スポンサー企業の皆様、チームメンバおよび競技参加者の皆様、そしてその他関係する全ての皆様に心より感謝申し上げます。
参考
Web Application Security Forum:https://wasforum.jp/
開催概要/募集要項 – Hardening 2022 DECADE:https://wasforum.jp/hardening-decade-2022/
執筆者プロフィール
U松(ゆーまつ)※ハンドルネーム
セキュリティ技術センター セキュリティ実装技術グループ
NECグループのセキュア開発・運用を推進。主にOS・ミドルウェアの要塞化ツールの開発、セキュリティ関連ドキュメントの作成を担当。
情報処理安全確保支援士(RISS)、CISSP Associate 保持。
執筆者の他の記事を読む
アクセスランキング