こんにちは!Cy-PSIRTの田口です。
本記事は、11月に開催されたセキュリティイベント「Hardening 2022 DECADE」の参加レポートです。サイボウズからは、Cy-PSIRTの小西と田口が参加しました。
Hardeningとは
簡潔に表すと、システムへの堅牢化力の強さを総合的に競うチーム対抗の競技です。
各チームに脆弱なビジネスシステム(ECサイトなど)が与えられ、競技時間内で技術的な対処やビジネス的な運用を行いながら、売上の最大化を目指します。
競技時間中にはシステムに対し実際にサイバー攻撃が行われ、攻撃の影響を受けると売上の低下に直結してしまいます。そのため、インシデント対応や脆弱性対策などの技術的な対処が急務となります。また技術面だけでなく、在庫管理やメール対応などのビジネス的な運用も売上や評価に影響するため、売上を最大化するためにはチームとしての総合力が重要になります。
競技についての詳細は、以下のHardening 公式ページをご覧ください。 wasforum.jp
Hardening 2022 DECADE
Hardeningは2012年から毎年継続的に開催されています。コロナ禍ではオンライン開催が続いていましたが、今年は3年ぶりに沖縄県名護市でリアル開催となりました。スケジュールは以下の通りです。
〜11/14(月): Preparation Days
- 競技本番までの準備期間
- 場所:チームごとにオンラインなど
11/15(火): Hardening Day / Networking Party
- Hardening競技本番 / 懇親会
- 場所:沖縄県名護市 万国津梁館
11/16(水): Analysis Day
- 競技の分析および学びの共有、プレゼン資料作成
- 場所:チームごとにオンライン / コワーキングスペースなど
11/19(土): Softening Day
- 競技振り返りプレゼン(全チーム)、成績発表・表彰、競技の解説など / 記念パーティ
- 場所:オンライン / スタジオ(東京)
本記事では主にPreparation DaysとHardening Dayの模様をお届けします。
Preparation Days
9月末ごろにチームメンバーが編成され競技本番までの約1ヶ月半の間、チームビルディングや競技に向けての準備期間となります。 小西と田口はTeam10に所属し、その後「もやしオペレーションズ」というチーム名に決まりました。 チームメンバーにはエンジニアの方、営業職の方、学生さんなど年齢や職種もさまざまで、またHardening経験者の方も数名いらっしゃいました。
1ヶ月半の間、Team10が実施したことを以下に列挙します。
チームビルディング
- オンラインでの顔合わせ
- チームリーダー選出、チーム名決め
- 各自のスキルセットの共有
- チーム内の体制や役割決め
- スキルセットをもとに技術チームとビジネスチームに分かれる
- それぞれのチームにサブリーダー(技術リーダー、ビジネスリーダー)を配置
- 定期的なミーティング
- 首都圏在住のメンバーでのオフラインミーティング
競技に向けての準備
- 過去の競技の勉強会
- よく狙われる脆弱性や直近で話題になった脆弱性の調査
- 報告書やメールなどのテンプレート準備
- 技術対応に役立つコマンドチートシートの用意
- インシデントハンドリングのマニュアル作成
- シェルスクリプトの用意
- ユーザーパスワード変更
- DBのバックアップ
- ラボ環境の用意
- 競技環境でよく利用されるソフトウェア(ECCUBEなど)に慣れておく
- マーケットプレイス*1の選定
Team10では、基本的なコミュニケーションはSlackで行い、ミーティングはDiscordで実施していました。 チームメンバーのHardening経験者の方々が、競技の流れや準備すべきことなど、過去の知見をもとに詳しく説明してくださいました。さらに過去の競技をもとにした勉強会なども実施してくださったため、不安なく準備に取り掛かることができ、とても助かりました。
競技前日
競技前日に沖縄入りし、その夜にチームメンバーでオフライン懇親会を行いました。一部オンライン参加の方もいらっしゃいましたが、チームメンバーがリアルで顔を合わせ、親睦を深めるよい機会になりました。
また、この日の夕方に競技資料が配布されたため、懇親会と並行して以下のような準備も行いました。
- 購入するマーケットプレイスの決定
- 競技資料の読み合わせ
- タスクの洗い出しや対応方針の決定
- 準備物の確認と追加準備
今回の競技資料は100ページを超える大物でしたが、チームリーダーを中心に読み合わせをしながら、優先して対応すべきことの選定などチームとしての方針を決めました。
その後、技術チームとビジネスチームに分かれ、それぞれ最終準備を行いました。技術チームでは、競技環境の構成情報を整理し、担当する領域の分担を行いました。担当領域を明確にすることで、各々がやるべきタスクの解像度が上がり、より具体的なコミュニケーションが取れていたように思います。
Hardening Day
いよいよ競技本番です。会場の万国津梁館に集合し、まずはネットワーク設定や競技環境への疎通確認を行いました。
競技開始後、技術チームは各サーバのユーザーパスワード変更およびバックアップの対応に取り掛かりました。
準備していたスクリプトの効果もあり、素早く対応することができました。
その後、技術チームでは主に以下のような対応を継続的に実施していました。
- 攻撃検知・インシデントの検出
- サーバ監視・巡回
- 実行プロセス、ユーザー、コンテナ、ファイルの監視
- ログ監視
- サービス稼働状況の外形監視
- サーバ監視・巡回
- 検出した挙動の調査・封じ込め
- インシデント対応
- マーケットプレイス対応
- 担当者とのコミュニケーションや調整
現状把握や作業の重複防止のため、作業を実施したらその都度Slackの記録チャンネルに作業ログを残しながら対応を行いました。
またインシデントや攻撃を検知した場合は、Slackのインシデントチャンネル(または口頭で)で迅速にインシデントを宣言し、メンバーに共有していました。主にリーダーがトリアージと対応策の決定を行い、技術メンバーはそれに基づいて対処を行いました。
発生した主なインシデント
- 不審なファイルの設置
- 大量のWebShellの設置
- ADサーバのアカウントが無効化される
- 販売サイトへの攻撃
- 一部商品が不正に削除される
- サイトが改竄される、アクセスできなくなる
- プレスリリースの漏洩
競技中様々なインシデントが発生しましたが、技術チームで常に監視や巡回を行なっていたため、素早く検知し対処することができました。
ただ、手動での監視は対応コストが高く他の作業に手が回らなくなってしまうため、ある程度自動化しておくべきだったという反省点はあります。
ルーターの乗っ取りやランサムウェアによる攻撃もあったようですが、技術チームで実施した堅牢化やマーケットプレイスで導入したWAFの効果もあり、攻撃はかなり防御できていたようです。
自爆によるサービスレベル低下
攻撃を防御できた一方で、やり過ぎたセキュリティ対策によりサービスレベルが低下してしまったという側面もあります。
- WAFの導入により不必要に通信が遮断され、売上が上がらなくなってしまった
- 販売サイトのコンテナを堅牢化しようとしたが、起動ができなくなってしまった
上記のような結果を受けて、セキュリティ対策の加減や運用面とのバランスの考え方について難しさを感じました。
また、設定変更や対応のミスによって不要にインシデントに発展してしまうケースもありました。
特にインシデント対応では、時間的な余裕もなく焦ってしまう場合が多いため、手順を確立しておくことの重要性を改めて感じました。
成績
後日行われた表彰式にて、成績が発表されました。Team10は賞を取ることはできませんでしたが、「技術力」と「対応力」は全チームの中で1位の成績を収めることができました。競技時間中、チームメンバーで協力しながら地道に実施した堅牢化やインシデント対応が評価され、非常に嬉しかったです!
学んだこと
Hardeningに参加し、実際に手を動かして対応することで非常に多くの学びがありました。 今後のPSIRTでのインシデントレスポンスの活動を見据え、特に大きかった学びを以下に記載します。
情報共有
Team10では、気づいたことや実施したことはその都度報告し、オープンな場所でやりとりをしていました。そのため、チームメンバー全員が現状を把握しリーダーの指示や対応方針を認識しており、スムーズに連携しながら対応ができていました。迅速に対応を行うためには、対応にあたる全員が共通の認識を持つ必要があり、そのために小さなことでも欠かさず情報共有することが重要だと改めて感じました。そして、混乱を防ぐため情報共有する手順や場所などを事前に決めておくとよいという学びも得ることができました。
優先度の明確化
今回のHardeningでは、インシデント発生時いかに素早く対応できるか、また重要な資産を守りきれるかが損失に大きく影響することを痛感しました。 Team10では、事前に資産の重要度を明確にし優先度を定めていたため、技術対応の要否やサービス停止の判断など対応方針の決定が迷いなくできました。戦略的にトリアージしながら技術対応を進めることができ、結果的に迅速なインシデント対応につながっていました。 ビジネス面・技術面の両面で特に守るべきものを明確にし、事前に優先度や方針を決めておくことで、より効果的なインシデント対応に繋がることを学びました。
役割分担、コマンダーの設置
Team10では、チームリーダーやサブリーダーがコマンダーとして指示を出したり、メンバーの報告や相談の窓口として対応してくださっていました。エスカレーション先が明確になっていることでコミュニケーションがとりやすく、またコマンダーの指示によりタスクが分散することなく対応ができていたように思います。ハンドリングする際、コマンダーの熟練度によって対応の精度が変わってしまうこともあるため、PSIRTでもインシデント対応時のコマンダーの訓練が必要だと感じました。
おわりに
インシデントを実際に体験し手を動かして対応をするという経験は非常に貴重で、大きな学びを得ることができました。 PSIRT内でもインシデントレスポンスの訓練を定期的に実施していく必要があると改めて感じました。 今回Hardeningで得た学びは、PSIRTのインシデントレスポンスの取り組みに活かしていきたいです。
最後に、このような機会を作っていただいた競技関係者の皆様に深く感謝を申し上げます。
また、Team10メンバーの皆様に多くの刺激を受け、よい学びの場になりました。短い間でしたが、一緒に活動し繋がりを持てたことを嬉しく思います。ありがとうございました。
さらに、沖縄現地のチームメンバーの皆様には送迎や機材準備などを多くのご支援をいただきました。重ねてお礼申し上げます。
*1:マーケットプレイス:各チームが保有している予算の中からツールやプロの手を借りるなど他のリソースを調達できる制度