Hardening 2024 Convolutions参加レポート
2024年10月15~18日の日程で「Hardening 2024 Convolutions」が開催され、EGセキュアソリューションズ株式会社からは2名の社員が競技者として参加しました。
なお、「Hardening 2024 Convolutions」を開催している「Hardening Project」に弊社はゴールドスポンサーとして協賛しています。
Hardening Convolutions(ハードニング競技会)とは?
「Hardening Convolutions(ハードニング競技会)」とは、8時間におよぶサイバー攻撃からビジネスを守り抜く競技です。
ハードニング競技会は、サイバーセキュリティの実践的なスキルと知識を競うイベントです。参加者はチームを組み、競技会で託されるビジネス・ウェブサイト(例えばEコマースサイト)を、ビジネス目的を踏まえて運用・改善します。降りかかるあらゆる障害や攻撃に対して、考えうる手だてを尽くしてセキュリティ対応を実施しつつ、ビジネス成果が最大化できるよう準備を重ねます。
開催概要/募集要項 – Hardening 2024 Convolutions
簡潔に述べるならば、稼働しているインターネット通販サイトを攻撃から衛り、「売上」を伸ばす競技です。「売上」を伸ばすためにメール対応や謝罪会見を行うなど技術力だけでなくビジネス力も求められます(当イベントでは、「守」という一般的な漢字ではなく、「護衛」等で使われる「衛」の字が使われています)。もちろんDNSやDockerコンテナなどの環境もあるため、エンジニアの技術力も求められます。つまり、技術力だけでは勝つことができず、技術とビジネスを両立させることができたチームが勝つという仕組みです。
スケジュール
ハードニング競技会は応募者を選考し、競技者が選ばれます。今回の場合は計104名の競技者がいましたが、75%が初参加でした。初参加のメンバーが多い中、1チーム6~7名の構成で15チームが結成され、私たちEGセキュアソリューションズ株式会社の2名はチーム4として参加しました。全体スケジュールは下記のようになります。
8月10日 | 募集締め切り |
8月16日 | 社員2名が競技者として選考される |
8月17日 | 初チームミーティング、以後は毎週月木21:00-23:00の定例ミーティングを行う |
9月1日 | チームの顔合わせ会を開催 |
9月16日 | 練習環境をレンタルし演習を行う |
10月6日 | 模擬環境練習会開催 |
10月11日 | 「参加者事前配布資料(詳細未開示)」提供される |
10月15日 | Preparation Day (「参加者事前配布資料」詳細開示) |
10月16日 | Hardening Day (競技会本番) |
10月17日 | Analysis Day (チーム毎の競技会振り返り資料作成) |
10月18日 | Softening Day (チーム毎の競技会振り返り資料発表と表彰) |
競技者として選考いただいてから本番まで約2か月あります。この期間にチームビルディングと事前準備を行います。私たちのチームは小林がチームリーダーになり、各種指示・調整や資料作成を行いました。また、15回程度のミーティング及び演習を行い、本番に備えました。
事前準備
定例ミーティングと演習
私たちが参加したチームは競技初参加者のみで構成されていたため、そもそも何を行えばよいか分かりませんでした。そのため、頻繁なコミュニケーションや情報交換を行い、手探りで競技会に向けた準備を行いました。また、ZANSINなどの練習環境での演習をチーム全員で行うなどの準備を行いました。
目線合わせと担当設定
チームメンバーに技術的な経験が少ない人が多かったので、メンバー間のコミュニケーションの取りやすさを重視しました。「何があっても責めない!積極的にやろう」という目線合わせを行い、メンバーが委縮せず伸び伸び行動できるよう心掛けました。 また、パスワード変更やデータベースのバックアップといった必要になりそうな技術やタスクを列挙し、それぞれに担当者を設定して学習・準備を行いました。結果として使用しなかった技術はありますが、とても良い学びになりました。
準備の工夫ポイント
情報共有に使用するツールをなるべく 少なくすることで情報管理の一元化を行いました。主な連絡はDiscordを使用し、それ以外のツールは使用しないことで情報は必ずDiscordにある状況にし、画面共有・声かけなどの運用を決めていました。 また、他のチームに事前準備情報を秘密にせずオールオープンにすることで、ライバルではなく仲間として協力する姿勢を示しました。
競技会本番
Preparation Day(10月15日:競技会前日)
Preparation Dayは競技資料の提供日です。例年、夕方に公開されています。今回は18:04に公開されました。今回の大会から複数のチームを連合させる仕組みが新たに取り入れられたため、自チームだけではなく他チームとの連携も必要になりました。そのため、急遽連合するチームとミーティングを行い、それぞれのチームの立ち回りなどを取り決める必要がありました。
また、競技資料はサーバー構成・ID・パスワードなどの技術情報やショッピングサイト運営上のミッションといったビジネス情報まで124ページに及ぶPDFファイルのため、一読するだけでも大変です。ましてや競技開始まで残り15時間で精読することは徹夜しても困難でした。過去にHardeningに参加されていたメンターの方からの「しっかり寝てください」とのアドバイスもあり、私たちのチームでは読み合わせを23:30で切り上げました。結果として競技資料の読み合わせは完了できませんでした。それでも、競技資料を2部プリントアウトして備えておくなど、やれる範囲での準備をおこないました。
Hardening Day(10月16日:競技会本番)
いよいよ競技会本番の日です。入口にはHardening 2024 Convolutionsの看板が立てかけてあり、弊社もスポンサーとして名を連ねております。
チームで入場しノートパソコンなどのセットアップを行い、9:00の競技開始を待ちます。
来賓挨拶や開会宣言が行われ、9:00過ぎに競技が開始されました。
この競技会において私たちのチームは下記のような展開を予想していました。
- 開始1時間程度は攻撃があまりこない
- 連合チームの運用が重要になる
- 全ての攻撃から衛るよりも攻撃からの復旧が鍵になる
上記展開予想に基づき、下記方針を決め行動しました。
- 開始1時間以内にデフォルトパスワードの変更とデータベースのバックアップを行う
- 自チームよりも連合チームを優先して対応する
- ブリッジ型WAFを導入し、手間なく迅速に防御態勢を整える
しかし、ある意味予想通りではあったのですが、想定通りには行動できませんでした。 まず、競技環境への接続に時間をかけてしまったり、バックアップがうまく取得できなかったりとスタートダッシュはうまくいきませんでした。
また、脆弱なデフォルトパスワードや過剰な権限を付与されているユーザー、競技資料に記載されていないユーザーやWebshell、不必要に外部に向けて空いているポートなど、予想はしていたものの脆弱性は大量に存在し対応しきれませんでした。 さらに困ったことに、データベースの設定ミスにより運営しているサイトを止めてしまい、復旧にかなりの手間と時間をかけることになりました。
この結果、想定していた防御態勢を整えることができず、ランサムウェア感染やDNS機能の停止など、さまざまなインシデントが発生しました。
そのような状況の中でも、連合チームを組んでいる他チームと脆弱性情報を共有したりバックアップデータをいただいたりと協力できたおかげでなんとか競技を続けることができました。連合チームの協力がなければ自チームは最下位でもおかしくない状況だったと思います。皆様のご協力に大変感謝しております。
その後もインシデント対応で忙しいときにチームリーダーのインタビューが行われる、急な経営報告を求められるなど、様々なイベントが発生しました。
最後は作業報告書の提出を終了時間30秒前に完了するギリギリの勝負になりました。なんとか8時間の競技を耐え抜き、とても疲れましたが充実した一日でした。
競技の結果は2日後のSoftening Dayにて発表されます。この日はこのまま解散となりました。
Analysis Day(10月17日:競技会振り返り資料作成日)
午前中は翌日のSoftening Dayで発表する資料の作成をしました。 作成する資料には事前準備や工夫した点など、チームで行ってきたこれまでの活動内容をまとめて記載します。 資料作成後は空手演武を見せていただいたり、沖縄の伝統行事であるハーリーを体験させていただいたり楽しませていただきました。 この日の最後は競技者や運営など参加者の皆様でバーベキューを行い、各自の労をねぎらうとともに交流を深めることができ、有意義な時間を過ごすことができました。
Softening Day(10月18日:競技会振り返り資料発表と表彰)
Softening Dayは振り返りと結果発表の日です。 まず、各チームが持ち時間10分で競技会に向けて行った準備や競技当日にどういう対応をしたか等を発表します。これにより把握できていなかった脆弱性や対応方法を知ることができ、とても参考になりました。
次に攻撃者チームや競技環境の解説が行われました。 どういった攻撃が行われたか、各チームがどういった対応をしたか解説いただきました。
また、「快適にツライ競技環境」を作るため、サーバー120台とVLAN400個を用意した・電源容量が足りないため電源設計したなど、この大会の裏話を知ることができました。
最後は結果発表を含む表彰です。私たちのチームは未受賞という結果になりましたが、チームメンバー全員が初参加で手探り、かつ、想定していたコミュニケーションが取れなかった中で健闘したと自負しています。
終わりに
この競技会が気になった方には是非参加してほしいと思っています。まず、自分がこれまでに学んできたウェブサーバー・アプリケーションの技術を実践する機会が得られ、実際に仲間と協力して学習を進めることにより、自己の成長を実感しました。また、どこにどのような脆弱性があるかを事前に予測することで、新たな視点を得ることができ、今後の学びに対するモチベーションが一層高まりました。
スキルに自信がなくて迷っている方もいらっしゃると思いますが、技術面以外でもやれることは多いです。たとえば、メール対応や社員紹介ページの作成、在庫の追加発注や発送処理といったビジネス継続に欠かせない役割もあります。 また、技術面以外を担当したとしても、このような環境に身を置くことにより技術力の向上も見込めます。
ぜひチャレンジしてみてください!
最後になりますが、Hardening Projectへ関わる全ての皆様に感謝申し上げます。ありがとうございました。Hardening Projectの更なる発展を願っております!!