沖縄県豊見城市で開催されたHardening競技会に参加しました。
Hardening (ハードニング競技会)とは
Hardening(=システムの堅牢化)で攻撃者からサーバ・PC・IoT機器等を守る競技です。
攻撃内容は情報漏洩、ランサムウェア、DoS攻撃などさまざまです。
1チーム1企業と見立て、攻撃や情報漏洩が発見した際には企業のウェブサイトに公表するのか、官公庁に連絡するのか等企業としてどのように動くのかも重要とされます。
毎年テーマが異なり、その年にあった対応が必要です。
ハードニング競技会は、サイバーセキュリティの実践的なスキルと知識を競うイベントです。参加者はチームを組み、競技会で託されるビジネス・ウェブサイト(例えばEコマースサイト)を、ビジネス目的を踏まえて運用・改善します。降りかかるあらゆる障害や攻撃に対して、考えうる手だてを尽くしてセキュリティ対応を実施しつつ、ビジネス成果が最大化できるよう準備を重ねます。
開催概要/募集要項 – Hardening 2024 Convolutionsより抜粋
Hardening 2024 Convolutions
Hardening 2024 Convolutionsは10月15日~18日に沖縄県豊見城市の空手会館で開催されました。
4日間ずっと競技してるわけではなく、競技会資料発表日、競技日、発表資料作成日、発表日に分かれます。
今年は8月10日までに申し込み、8月16日に当落・チーム発表でした。
NEC、GMO、Skyをはじめ多くの企業・官公庁が協賛しております。
今年の競技会は下記の特徴がありました。
チーム構成
前回、前々回のYoutube動画を見ると10名程度でしたが、今回は6~7名程度と少なくなってました。
サーバ台数は変わらずなので、1人当たりで守るべきサーバが増えてました。
守るべきサーバ台数が増えると作業量が増え、すべてのサーバを守りきれなくなる場合があります。
守りきれなくなった場合、どのサーバを優先的に守るのかを考える必要があるのですが、その場で考える余裕はないです。
そのため、BCPなどチーム内であらかじめどのように運用するのか決める必要があります。
JV(Joint Venture=合弁会社)制度
今年は3チームで1つのJV(Joint Venture=合弁会社)制度が設けられ、JVごとに用意されたサーバも守る必要がありました。
優勝するにはJVで1位になる必要があったため、JVに協力しないと優勝が狙えない、協力しすぎても優勝が狙えないため、戦略を立てる必要がありました。
JV制度が判明したのは競技開始5日前でその間にリーダ決めをしたり、JV体制をどのようにするのか決めていくのに大変でした。
エリア分割
1チームの作業場を出社・在宅として分離されたので、どのように意思疎通を図るのか重要でした。
実際に意思疎通図るために小走りで駆け巡ったりしてました。
実務でもそうですが、人が離れた状態で作業するのは難しいです。
メンター制度
Hardening 2024 Convolutionsより過去競技会を参加された方が各チームをサポートするメンター制度がありました。
チームビルディングのやり方、競技会に向けての心づもりなど相談することができたのですごく助かりました。
メンター制度がなければ何をすればいいのかわからないまま競技会当日を迎えたと思うので、悲惨な結果になったと思います。
競技会準備
準備
Hardening競技会参加確定・チーム決定後、最初のミッションはチーム名・チームリーダ、チーム紹介動画の作成でした。
チームリーダは名乗りを上げていただいたかたにやっていただきました。
チーム名は2つ候補から多数決で決め、紹介動画を作成しました。
チーム紹介動画
1分のチーム紹介動画をチーム発表から10日以内で作成するミッションが課されたのでAdobe Creative Cloudを契約している私が対応することに。
チーム紹介動画は過去のHardening競技会の動画にも掲載されていたので、今年も載せるのかなと思い、フリー素材・フリー音源を探しました。
レーダチャート
レーダチャートを使いたい!という思いからAfter EffectsでYoutubeでレーダチャートの作成を勉強。
Premiere Proで動画編集はしたことがあったが、After Effectsだと簡単そうだったので初めてAfter Effectsを勉強。
下記のYoutube動画が参考になりました。
なんとか頑張って作ったのが下図
Youtubeの動画は手で図形を作っていくのですが、「7人も手で入れるのめんどくさくない?」「修正する際簡単に編集したい(楽したい)」からスクリプト化
AfterEffectsは計算処理入れれることは知ってたのですが、やり方がわからず試行錯誤・・・
提出3日前にスクリプト化することができました。
1つ1つPremire ProとAfter Effectsを行ったりしたりするのもめんどくさいし、7人も作るのもめんどくさいのでここまで作ったらテンプレート化したほうが早いんじゃ・・・?
ということでテンプレート化まで作ってました。
Premire Proからは文字と写真を入れるだけで簡単に作れるという便利さ!今後のテンプレートとして使える!ということで間違った方向性で努力しました。
右側にある入力項目を入れれば誰でも簡単に名前と意気込みとレーダーチャートが作れるという優れもの。
テンプレート作ってからBGMを除いた動画作成まではものすごく早く作れました。
※計40時間以上のうち8割以上ここに使ってしまったので供養として掲載しておきます。
次回チャレンジの時に再雇用されるでしょう。多分きっと
打合せ・タスク作成
当チームはGoogle Meetで週1回、1~2時間程度打合せしてました。
リーダとの1on1ミーティングも行い、何をしたいのか・目標等の確認をしてました。
また、やることをNotionでタスク作成し、各メンバーが対応していくことにしました。
模擬環境の操作確認
Worpressは私以外触ったことがなく、EC-Cubeは全員触ったことがないため、デモ環境を作成しました。
みんなで触るにはどこにしようかと検討した結果、Conoha VPSを新規に借りることに。
Ver.3.0からセキュリティグループで通信ポートの制御ができるようになったので気兼ねなくDocker立ち上げて操作してもらうことができました。
競技環境が判明した5日前には1年ぶりにESXiを起動させ、小規模な環境を構築。
vyOSやLinux、Windows Serverの動作検証を構築しました。
ivy bridge世代のCPU、メモリ16GBのサーバでよく10インスタンスも起動できたなと感心・・・
有志が作成したお茶会ハードニングやZANSINを使って練習しようと画策してたが、とある事情にて実現できず・・・
https://github.com/melonattacker/ochakai-hardening
https://github.com/zansin-sec/zansin
過去動画からの予習
過去のSoftning Dayで各チームが実施したこと、攻撃者がやったことなどを発表しているので
そこから攻撃内容を想定し、対策を想定してました。
Preparation Days
今回のチームは北海道、東京、神奈川、大阪、岡山、沖縄と全国各地に散らばっていました。
オフラインで顔合わせしたのは競技前々日~前日となりました。
この日の夕方に競技会資料が配布されるので、どのように取り組むのかをチーム内で話し合いしました。
またこの日はJVとなった他のチームも会議室が同じでしたので、少しだけ話をし、当日どのように動くのか話し合いしました。
Hardening Day
会場
今回の会場は沖縄空手会館内でした。
会場内は学校の体育館みたいな感じでめちゃめちゃ広かったです。
在宅組はWi-Fiを使い、出社組は有線LANを使う形でした。
有線LANはJVで1本しか払い出しされていなかったため、ハブや長い有線LANを使って3チームで共有しました。
競技開始
午前はほとんど作業ばっかり
競技開始と同時に競技資料内に記載されたサーバを確認
○○のパスワード変更しました。
○○って脆弱性あるやんな?
○○がおかれてる。
って言いながらチーム内で取り決めしてた対応を進めていました。
また、MPで購入できた企業さまとやることを話しながら作業実施してました。
あーだこーだしている間にお昼になりました。
既にKuromame6から攻撃準備完了されているが半強制的に席を外すことに。
昼からは攻撃祭り
ランサム攻撃くらった
バックドア仕込まれた
情報盗まれた
DNSサーバ落とされた
etc
たくさんの攻撃を受けながらどれを優先に対応するかチーム内で考えながら進めてました。
ランサムやインジェクション系の攻撃を受けてECショップがつぶされる。
バックアップから復旧してECショップ再開。
再度ランサムやインジェクション系の攻撃を受けてECショップがつぶされる。普通ならECショップ閉鎖させるべきなのですが、これは競技ですから知ったこっちゃありません
JVのチームも同様に攻撃を受けており
「○○」のファイルあればもらえませんか?とJVの強みを活かしながら売上を伸ばしてました。
ロールイベント
数チームピックアップで実施されるロールイベント
役員たちに売上見込みの報告、個人情報漏洩等のインシデント有無等を報告するイベントに当チームが見事当選しました。
チームリーダ1人で向かう予定だったのですが、開始数分前に急遽私も入ることに・・・
パソコン無線LANの設定していないため、資料も読めずチームリーダが移しているディスプレイで状況把握することに。
「サーバって何のことなのかわかんないよ。」
「売上上がるの下がるの?」
「情報漏洩に○○があるといってたけど、個人情報報告書に○○がないよね。嘘の報告してるの?」
などたくさん突っ込みを受けました。
うっ・・・となりますが、臆せずに物事を言い切るというのは大事だと感じました。
残り1秒前まで作業報告書送信に苦戦
刻一刻と迫ってくる競技終了時間
本競技会は何の作業を行ったのかをメールにて報告しなければいけません。
当チームは1時間前からメール送信を行っていたが、何度送信しても「550」エラーで返却される。
・何度資料と確認しても同じメールアドレス
・添付ファイルを変更してもだめ
・添付サイズを変更してもだめ
・添付なしで送ってもだめ
と迫りくる時間に焦りながら何度もメール送信をしていました。
終了3分前にDNSサーバ、メールサーバのFWを変更して、再度挑戦
カウントダウンが会場に響き渡る中、手を震えさせながら添付ファイルを設定
本文無しで終了1秒前に送信しました。
競技終了すると競技環境に入れなくなるため、ちゃんとメール送信できたのか確認できなかったのですが
作業報告書の送信されていないチームリストには入っていなかったため安堵しました。
Analysis Dayの懇親会で運営担当者に聞いたところ、作業報告書メール全て届いていたようで
どれが最新の報告書なのか運営側で混乱させたようです。
申し訳ございませんでした。
競技終了後
約200名の人が一斉に帰るのでタクシー捕まえるのに苦労しました。
チーム内メンバと打ち上げをし、翌日のAnalysisを迎えることに
Analysis Day
Softning Day発表するための資料を空手会館で作成してました。
どのような対応を行ったのか等振り返りするため、ログ情報等をHardening Dayで取得してなければ苦労します。
昼前から沖縄空手の演舞鑑賞し、ハーリー体験を行ったあと、懇親会がありました。
ハーリー体験・懇親会会場は空手会館から距離があるため、バスで移動しました。
ハーリーとは元来、航海の安全や豊漁を祈願し、サバニと呼ばれる伝統漁船で競漕を行う行事のことで、
十数人が船にのって頑張って漕いでました。
私は諸事情により参加できなかったので残念です・・・
懇親会は「豊崎海浜公園 美らSUNビーチ」でBBQを楽しみました。
雨上がりだったからか虹が見えたり、雲の合間から夕陽が見えました。
(夕日の左側にある雲はゲリラ豪雨みたいに雨柱が立ってました)
Softning Day
各チームの発表・Kuromame6の発表・競技環境の発表、表彰の順に実施しました。
これらは動画にありますので興味ある方はそちらで。
各チームのインシデントレスポンスものすごく参考になりました。
まとめ
今回よりメンター制度があり、競技会経験者からいろいろと話しをうかがうことができたのでとても大きかったです。
事前に競技環境を模した通信テストを行うことができたので、当日VPNにつながらないなどの問題が発生しなかったです。
(競技会当日にVPNに接続できない場合はそのまま競技が終わります・・・)
今回は初参加が多かったですが、セキュリティに詳しい方も多くいらっしゃいました。
そのため、どういった攻撃があるのか、どういった対応が必要なのかなどを聞いたり共有することができたのですごくいい
経験になりました。
Hardening競技会を通じて自分の知識の振り返りができました。
この状態になったらこうするといった行動が取れたのでよかった部分もあれば、攻撃を防げなかったので残念でした。
来年も競技参加できれば今回よりももっと立ち回れるようになればと思います。