普段は札幌の高校に通いながら、個人事業主としてバックエンドエンジニアやプログラミング講師をしています。蔀(シトミ)です。
加えて、42tokyo Advent Calendar 2022の7日目を担当する、42tokyoの在校生です
先日「HARDENING 2022 DECADE」に参加してきました。
その際に得た知見やその魅力をお伝え出来たらなと思っております。
Hardeningとは
Hardening(ハードニング)とは、「護り」を重視したセキュリティのイベントです。(広義ではセキュリティの強化することを指すだとか。)
競技の参加者はチームになり、ECサイトの運営をします。ECサイトにはサイバー攻撃が仕掛けられるのでサイトを守りながら、インシデントに対応する必要があります。
Hardenig 2022 DECADE
先日開催された「Hardenig 2022 DECADE」はコロナウイルスの影響で3年ぶり(?)の現地開催だそうです。また、Hardenig Project10年目だそうです。開催地は場所は沖縄の名護にあります「万国津梁館」にて開催されました。もちろん僕も現地へ赴き参加しましたよ!
僕は普段札幌に住んでいます。札幌の学生支援団体LOCAL さん、また川口設計 さんのお力を借りて沖縄、東京に行ってまいりました。ありがとうございます 宣伝させていただきます。以下LOCAL さんと川口設計さんのホームページです。
以下、LOCAL さんの説明になります。
LOCALは、北海道のITコミュニティを支援することを通し、道内のIT技術者やそれを目指す学生さん達を応援する団体です。
「北海道で技術者として幸せになるために」地域を楽しくするためのHUBとしてLOCALを利用してもらえたらと活動しています。
大会概要とチームについて
Hardenigの流れはこんな感じです。
チーム決定
競技環境発表(競技前日)
競技当日
競技振り返り(競技翌日)
競技振り返りの発表と表彰
今回のHardenigは1チーム10人ほど、10チームで開催されました。チームでECサイトの運営をします。運営とはセキュリティインシデント対応だけではなく、発送業務や在庫管理、公的機関への対応までもするのです!そして、1チームに与えられるサーバーは30台ほど。なんと多いのでしょうか!
また、今回のHardenigでは「連合制度」と呼ばれる制度がありました。これは5チームでサプライチェーンを模したグループを作る制度のことです。競技会中には連合同士でMTGをしたり、人材を派遣して助け合ったりといった活動もありました。
チーム分けは競技の約1か月前に発表されます。様々なバックエンドを持った人が10人ランダムに集められるのですね。自身のチームにはネットワークやインフラ系に強いエンジニアさんが多かったような印象を受けました。また、競技に参加したことのある方が2人いて、とてもリードしてくださいました!
事前準備
我々のチームでは情報の共有にDiscord、Miro、Notionを利用しました。DiscordではMTGの日程合わせのほか、雑談をしたり。MiroはMTGの際にホワイトボードとして利用しました。NotionはMTGで決定したことや本番のドキュメント作成に利用しました。
そんなこんなで事前にMTGを10回ほど行いました。以下は具体的に事前に準備したことです。
- チームでの認識合わせ
- チームのバックログ共有
- チーム計画、チーム名決め
- チームのリーダー、役割決め
- 前回どのような攻撃があったか
- それぞれのできること、できないこと
- それぞれのやりたいこと、やれそうなこと
- MVVの決定
- チームのグランドルール
- 宿泊先の共有
- 沖縄でやりたいこと
- コアワーキングスペースの決定
また、事前に訓練しておいたことは以下の通りです。
- Webサイトのリストア練習
- 用意される環境が脆弱でWebサイトの改ざんがされることがわかっていた
- HTTPS証明書の発行、変更練習
- 証明書切れが起こることはいつもあるからわかっていた
個人的にはCTFに参加したり、Shellの自作もしました。
(いやー、こんなのをやっていたらあっという間に1か月が過ぎるんですね...💦)
大会前日
大会前日の日の入りには競技環境の発表があります。僕たちのチームでは競技環境発表時にMTGをしたかったので、コアワーキングスペースを予約して集まりました。ここで初めてチームメンバー全員で顔を合わせました。
日の入りの時に資料が配布されました。今回の資料は117ページでした。この資料では競技環境の模式図やパスワードなどが公開されます。この資料から想定されるサイバー攻撃やインシデントをチームで考えました。また、連合制度のためにチームから1人のCISOを選ぶ必要があり、自分が担当することになりました。
Hardening Day
ついに大会当日となります。
大会当日の競技は8時間ぶっ通しで行います。
当日の率直な感想といたしましては、記憶がありません。
本当にやることに追われて全く記憶が無いのです。
自身が主にやったことはこんな感じです。
- Windowsサーバーのパスワード変更
- かなり大変だった
- Windowsサーバーに仕掛けられたマルウエアの削除
- マルウエアと思われるファイルを2ホストから3ファイル発見
- 記録とマルウエアの削除
- Windowsサーバーのタスクスケジューラーのチェック
- マルウエアの挙動を確認
- タスクのキル
- 実行ファイルの削除
- CISOとしての会議
- サプライチェーンへの攻撃対策を複数人で検討した
- 各チームで観測された攻撃の共有
- 共有された情報をもとにサーバーから不審なユーザーの削除
- 観測したインシデント対応のお手伝い
- 配置されたPHPのWebShellの無効化
大まかに、僕たちのチームで発生したインシデントはこんな感じでした。
- 競技環境に接続できない
- Dockerで構築された環境に慣れない
- 気合で解決したらしい
- リモートのWindowsセッションの取り合い
- 使いたい人数に対してホスト数が少なかった
- 「使ってたら、奪われた!」といったケースまで
- DBのランサムウェア感染
- どこから侵入されたのだか不明
- ホームページやECサイトの改ざん
- 改ざんが検知された瞬間リストア作業をしました
- WebSellが配置される
- いくつかは手動で無効化しました
- リストアしたときに消えたものがたくさんあるはず
- FW設定に失敗しサーバーと接続できなくなる
- 永久設定じゃなかったので再起動して復活
- 証明書の発行要求に時間がかかる
- メール送ったり、適応させるのに時間がかかる
そんなこんなで、7時間と40分ほどの時間が過ぎました。ここで僕たちは報告書を作っていないことに気が付きます。この報告書も含めハードニングの評価です。必ず提出しなければいけません。何とかで急いでみんなで報告書を書き提出...。ギリギリの時間で報告書を送信できました。
CISOとして
ここで自身がCISOになった理由と感想を記しておきます。
前日のMTGでCISOを決めることになりました。
その時には、誰もやりたがらず難しそうなので自分もやりたくはありませんでした。
しかし、チームリーダーの方が「いろんな人とかかわれるよ」と仰ったので「やりたい!」と思い立候補しました。その結果、自分がCISOを務めることになりました。
先述しましたが、CISOとしてやったのは「他チームとの連携とMTG」です。
CISOのMTGは競技中に行われました。そのMTGのほかにもCISOで3回ほど打ち合わせしました。
その際に攻撃された箇所を共有したことで、それぞれのチームで対策ができました。
MTGの様子はこちらです。画面の黒い服が自分です。
実際にやってみた感想としては「チーム外の人と話せて、とても面白かった」です。
また、他のチームのCISOの方と仲良くなることもできました。
パーティー等でもたくさん話していただいてとても楽しかったです。
Analysis Day
競技の翌日です。この日はチームでコアワーキングスペースに集まり、競技の分析をします。また、発表を行うSoftning Dayへの準備もします。
「よかったー。みんな起きれたねー」と言いながら振り返りをしました。ここで僕たちのチームでは発表者が決まってないことが判明します。せっかくなので と立候補してみたら、ありがたいことに発表させていただけることになりました。
そのあとはチームで海底公園に行ったり、ご飯に行ったりしました。やっと沖縄っぽいことができたーといった感じですね!
Softening Day
もちろん、攻撃されただけでは競技は終わりません。何ができて何ができなかったかを共有しました。
また、自身のチームからは僕が発表者として登壇しました。以下動画です。
はい。割と緊張しましたー笑笑
ジョークがめっちゃシラけてるように見えますが、会場ではみんな笑ってくれましたからねっ!
発表会が終わってからもパーティーがあり、ここでもいろんな方とお話しできました。
お話ししてくださった方ありがとうございます。
主催者兼、交通費等の支援をしてくださった川口社長との2ショット。
ブレててごめんなさい。
そんなこんなでハードニングに幕が閉じました。
振り返り
僕自身の感想や様々な人の話を聞いて思ったことを書き連ねます。
僕は”コミュニケーション”力の大切さを実感しました。具体的には「何をして、何ができないから、何を助けてほしいのか」を明確化する必要があります。34台というサーバーを素早く管理するにあたり、チームでの協力をおろそかにすることはできません。自分が困ったときにも他の人を手伝うときにも、問題を素早く具体的に伝えることの大切さを実感しました。
また、攻撃のシュミレーションでこれだけ焦っていては、実際の攻撃にあったときに何もできないと感じました。実際に焦りすぎてログインの方法を度忘れしたなどがありました。実際の攻撃も怖いですが、それによる2次被害にも注意を払わなくてはいけません。
ハードニングはたったの8時間の競技をきっかけに、様々な経験と交流を2か月間もできるいいイベントだと思います。来年も参加します!
番外編
沖縄で遊びたかった僕は大会の前週から沖縄に行っていました。英検の2次試験がちょうど沖縄に行っている期間だったため、沖縄で受けることにした結果...
英検2級に合格しました!
いやー、危なかったです。
これで落ちてたら「ほら、遊びすぎでしょ」と怒られてしまうところでした。
次は準1級に挑戦します!
これからもいろんなことをたくさん学んでいきます!!