沖縄の地にて極悪ハッカー集団からECサイトを護れ！～Hardening 2024 Convolutions 参加記～

# 概要

こんにちわ。<a href="https://www.z.fore-co.ltd/" target="_blank">株式会社フォアーゼット</a>にてペンテスターをしている<a href="https://x.com/AyatoShitomi" target="_blank">Ayato</a>です。弊社は主に脆弱性診断やペネトレーションテストを国内外の各種企業及び政府機関に提供しており、<a href="https://www.z.fore-co.ltd/bugbounty" target="_blank">バグバウンティプラットフォーム「ZoneZero」</a>の運営を行っている企業ですが、攻撃から護る「Hardening」と呼ばれる競技会へ参加を行いました。

詳細は以下をご覧ください。

https://www.z.fore-co.ltd/

競技会への参加に際して、非常に学びと経験になった点があったので記します。

# 競技会を知る

私はHardening競技会に参加するのが3回目ということもあり、自身が競技会へ参加するたびに成長を感じられております。

1回目の参加は2022年で、高校生の時でした。併せてこちらもご覧ください。

https://qiita.com/labpixel/items/a2780ded7533405b02a5

## Hardeningとは

Hardeningを一言で表せば「**攻撃者から自社サイトを護りながら運用を行う**」競技会です。

競技参加者は7名ほどで構成されるチームになり、2ヵ月のチームビルディング期間を経て、8時間にわたる猛烈なサイバー攻撃を受けながら自社のECサイト等を運用します。

## 競技会のタイムスタンプ

例年、Hardening競技会は10月ごろに開催され、今年の競技会当日までの流れは以下のようになりました。

|タイムスタンプ|イベント|
|---|---|
|～8月10日|熱い意気込みとともに申し込み🔥|
|8月16日ごろ|参加資格に関するメールを受理|
|～10月15日|チーム一丸となり自社サイトを護る用意をする|
|10月16日|8時間にわたる攻撃に耐える（Hardening Day）|
|10月17日|競技の振り返りをチームで行う（Analysis Day）|
|10月18日|全体での振り返りとナレッジ共有（Softening Day）|
|10月19日～|各々でHardening競技会で得たナレッジを役立てる|

それぞれに関する詳細は以下の通りです。

### 熱い意気込みとともに申し込み🔥

Hardening競技会にはITに関わるたくさんの方が応募を行います。その中で「自身が参加する理由」や「参加したらチームにどのような良い影響を与えることができるか」などの理由に関して猛アピールをする必要があるそうです。自身の強みや弱みを含めて、周りに影響を与えることができるスキルなどに関して整理すると非常に良いと思います。

### 参加資格に関するメールを受理

以下のようなメールを受け取り、正式に参加資格が得られます。この際にチームのメンバーが判明し、コミュニケーションを開始します。

![hoge.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1523062/beb7342a-e31e-68bc-a5e4-9aa32412382c.png)

### チーム一丸となり自社サイトを護る用意をする

いわゆる「チームビルディング」と呼ばれるフェーズです。2ヵ月と長い期間がありますが、私はこの期間に「いかにチームとしての目線を合わせることができるか」が重要だと考えております。

### 8時間にわたる攻撃に耐える（Hardening Day）

この「Hardening Day」が2ヵ月にわたるチームビルディングの集大成となり、Hardening競技会における一番のメインの日となります。全参加者が沖縄の会場へ集まり、極悪ハッカー集団からのサイバー攻撃を食らいます。

### 競技の振り返りをチームで行う（Analysis Day）

「Analysis Day」では前日のHardening Dayを通じたオペレーションを振り返り、翌日の「Softning Day」におけるチーム発表に備えます。チームでの振り返りのほかスライドの作成なども行います。

### 全体での振り返りとナレッジ共有（Softening Day）

「Softning Day」ではすべてのチームの取り組みを発表する他、極悪ハッカー集団による発表もあります。攻撃手順の詳細やトレンドについての解説を聞けるのもSoftning Dayの醍醐味です。

### 各々でHardening競技会で得たナレッジを役立てる

競技会が終わってもなお、学びの場となるのがHardening競技会です。参加者が各々の会社でHardening競技会にて得た知見や学びを共有する他、他の参加者の参加記やブログにて学びを深めることができます。

また、参加者のサポートを行う「メンター」の方々や参加者へ防御を行うツールを提供する「マーケットプレイス」の企業様の参加記なども見ることができます。

- メンター　carkn様のNote

https://note.com/nagatoao/n/n31d365166fcc?sub_rt=share_pb

- マーケットプレイス　バラクーダ様のブログ

https://www.barracuda.co.jp/2024-10-25-the-hardening-project-2024-overview/

# チームビルディング

> Hardeningのチームビルディングにおいて一番大切なのは「目線合わせ」

今回の競技参加者は約１００名、うち７割が初参加の方だと聞きました。チーム数は１５チームにのぼり、各チームにおけるコミュニケーションやビルディングの内容に関して困っている声を多く聞きました。

自身の参加するチームでは大前提として「競技を楽しむ」ことを掲げておりました。具体的には無理して勉強をたくさんするよりもサイバー攻撃を行う演習やインシデントレスポンスに取り組み、チーム一丸となって目標の設定やスキルを向上させていくことを行いました。

## 定例MTG

チームとして交流を深めるために定期的なミーティングを開催しました。具体的には以下のようなアジェンダに２ヵ月にわたり取り組みました。

- チームとしての目標
- チーム名およびリーダーを決定する
- 各々が競技会で取り組みたい分野の共有
- Hardening競技会について知ってることの共有
- 得意分野の共有
- サイバー攻撃演習と自分で攻撃したログを解析
- Hardening Dayまでのやること整理
- 各々のタスク確認

定例MTGの際にはMiroというホワイトボードツールを利用しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1523062/006c81d7-f875-f01d-b62f-882612553d28.png)

Miroは非常に使いやすいツールで、定例に参加できなくとも後からどのようなディスカッションが生まれたかなどの共有が安易にできます。さらにPDFやパワーポイントのスライドをそのまま共有することができ、各々がスライドへ書き込めるようになっています。

> スライドを共有し活用した例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1523062/ade33863-366a-bd7b-355b-48036d0f1fcc.png)

また、自身は「簡単な課題をチームで考える」というプロセスを何度も取ることが良いと考えています。成功しやすいチームビルディングのモデルとして「タックマンモデル」という手法が提唱されており、Hardeningにおいてのチームビルディングとはモデル中の「形成期」に部類されます。形成期では以下のようなことを行うことで、良いチームビルディングができると言われています。

- 活発なコミュニケーション
- 互いをよく知る

この際に*簡単な課題をチームで考える*ことで、*メンバー同士が意見を出しやすく課題に対する各々の考え方を共有することが可能*だと考えています。実際に、自分の参加したチームでは以下のような簡単な課題をチームとして取り組みました。

- チームロゴの選定
- チームTシャツの作成

> チームTシャツを作成した
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1523062/8fbc41c2-bb41-c6e0-e96b-06f1069e0544.png)

## Ayato Hardening 

「Hardeningとは？」を知らずにいきなりHardening競技会にてインシデントレスポンスを行うことは少し辛いと思っております。チームはランダムなメンバーにて形成されるので、インシデントレスポンスを行ったことがない方がいても不思議ではありません。そこで、自分の参加するチームでは「Ayato Hardening」を開催することにいたしました。

チームの中で２つのチームに分かれ、それぞれインシデントレスポンスを体験したもらいました。Ayato Hardeningでも、Miroを利用してチーム内での情報共有を積極的に行いました。

> Miroを利用した情報共有
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1523062/e8e4996d-ac85-1a1f-6ceb-c2e084c783a5.png)

自身が「やってよかったな」と思えたのは*チーム内で情報共有を行うことの大切さ*がチームとしての意識になったことです。Ayato Hardeningでは４回の攻撃しか行われません。しかしながら、情報共有をすることでインシデントに対する対応策を議論したり作業する上での余裕が出ることが分かりました。

詳細に関しましては以下のQiitaの記事に記載しております。

https://qiita.com/labpixel/items/3cc05a0345eefcbbfc93

また、ソースコードは以下のGitHubレポジトリにて公開しており、Dockerをインストールするだけでインシデントレスポンスの演習として「Ayato Hardening」をすることが可能です。

https://github.com/ayato-shitomi/ayato-hardening

# 競技会での学び

自身は、主にテクニカルの要員としてチームに貢献をしました。前年度ではテクニカル要因として作業を行うことに集中しておりましたが、今年は必要なオペレーションを各チームメンバーに伝えることも意識して行いました。

ここで非常に学びになった点は「チームの意思決定にて自身のタスクの進捗度を考慮してはいけない」という点です。例えば、チームとして初動対応から移るべき時に自身のタスクが完了していないとします。この時、指示を出す役割としては全員が次のステップに進めるようするべきです。他の人への指示をする前に、自分のタスクを完了させてから指示を行ってしまうとチーム全体が遅れを取ってしまいます。このようなことを避けるために以下のような対策を考える必要があります。

- 指示を出す人は重いタスクを引き受けない
- 自分のタスクの進捗よりも全体を見ることを優先する

> ありえんくらい集中して口を開けてる自分（Hardening Project提供）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1523062/fa0d26ed-81fa-02ab-2af9-4b6047adf356.png)

毎回どの参加記にも言及されますが、*８時間にわたる競技でも非常に短く*感じました。

# Fortinet賞の受賞

非常にありがたいことに、競技会にてFortinet様よりFortinet賞を頂くことができました。

Hardening競技会ではマーケットプレイスという制度があり、極悪ハッカー集団からの攻撃を緩和するための製品を導入することが可能です。製品はベンダーごとに提供数が決まっており、賞は導入を行ったチームの中で製品を競技に一番役立てたチームへ送られます。自身が参加したチームではFortinet様のNGFWとWAFを導入し、WEBとネットワークの攻撃の対策へ役立てることができました。

> 商品でいただいたFori君
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1523062/af8fb50a-6143-1580-b87a-31cb89b7b501.png)

３回目の参加にして初めて賞を受け取ることができたので非常に嬉しかったです。

# 謝辞

Hardening競技会にともに参加していただいたチームメンバーの方、無茶な質問をたくさんしても丁寧に答えてくださったメンターのcarkn様、運営の方々に深く感謝申し上げます。

# まとめ、今後やりたいこと

LinpeasやWinpeasのようなOSやサーバーの設定を読み取り、脆弱な項目が出てくるようなツールが存在しますが、同様にHardening用のツールがあったら面白そうです✨

Hardening競技会が終わると、１年が終わったような感覚になります。Hardening向けのツール開発などを通じて、学習を深めて来年もHardening競技会への参加をしようと考えております。