Yabuです。
今年もHardeningに参加させていただくことができました。
応援してくださいました方々への感謝の気持ちを込めて、体験記を書きます。
Hardening競技会のご紹介
止むことのないサイバー攻撃から如何に自分たちのビジネスを衛るか。
その問いを体現したものがこの競技会だ、とYabuは解釈しています。
さまざまな攻撃から衛る体験ができるだけではなく、インシデント渦中でもビジネスを成立させ続ける方法を学び、しかもそれらは持ち帰る先のリアルの業務でも活かすことができる。
それが「Hardening」という競技です。
紹介記事
https://atmarkit.itmedia.co.jp/ait/articles/1907/31/news004.html
少し前の記事ですが、とても分かり易く書かれています。
2021年の競技会
Hardening 2021 Active Fault
https://wasforum.jp/2021/09/release-hardening-2021-active-fault/
今回は活断層がキーワードでした。
我々の足元には、いつか大きなリスクとなって発現するであろう“活断層”がそこかしこに眠っているのだ。完璧な衛りは、いったい、どこにあるのだろうか。 我々 Hardening Projectは、「それでも衛る」ことにこだわりたい。
以上が、案内内容の抜粋なのですが、こんな文章読んだらテンション上がらないはずがないでしょう!? っていうくらいに、Yabuは分かり易い性格をしているので間髪入れず申し込んじゃいました。ええ。
と言うか、案内が掲載される前から待ち遠し過ぎて、外形監視をタスクで回してサイトの差分チェックで更新確認していたくらいだったりもします。
準備期間でやってきたこと
参戦が無事決まった後、チーム3へアサインが決まったのは10月上旬頃でした。
そこからHardeningDayまでの1ヶ月強の間、僕たちのチームはどんな準備をしてきたのかをご紹介させて頂きます。
チーム構成
今回は6名でした。
良くも悪くも、往生際が悪いのが特色となっちゃったチームです。
今回もYabuはチームリーダーとならせていただきました。
ミーティング回数
18回。
その1回の打ち合わせは1.5 - 2h程度。
……他のチームから聞いたのと比べると多かったなー、という印象です。
ただ、それで足りたのかと言われると、うーん? と首を傾げたくなります。
なにせ、準備したいことは山ほどあって、それらに全部手をつけようものならば、どれだけ時間があっても足りません。
大事なのは取捨択一ですね。時間をただかければいいってものじゃあないって感じでしょうか。大変すぎるし。
ただ……、と言うものの、18回も及んだのはきっとYabuのせいです。
いや、最初の顔合わせの時に、
Yabu「前回の競技前にはミーティングを15回やりましたが全然足りませんでした!」
と煽ったりしたから。
ほんと、チームメンバーの皆さん、お疲れ様でした。
ですが、その内容は、とても濃密なものになりました。
ほんとのほんとうに、チームメンバーの皆さん、ありがとうございました。
コミュニケーション手段
会話の混線を回避するためにボイチャルームを分けたりしています。
尚、ボイチャルームのネーミングは、短い単語で分かりやすさ基準で考えています。
マ○オ、ピ○チ、ク○パ。
お陰でどれだけ切羽詰まっていてもルームを間違えることはありませんでした。が、もし問題があったとしたら、それはDiscordのサーバを覗き見た娘が、
####「ママ! パパがマ○オで遊んでる!」
とママにチクったことでしょうか。
前回も大変だった家庭内Hardeningは、今年もちゃんとやらなきゃいけなかったみたいです。
チーム3が用いたツール
-
Notionn
承認フローやタスクボードといったツールもNotion上で表現しています。
もちろん、JIRAやTrelloなどの他のツールも選択肢にあったのですが、低いコストで作れてしかもリレーションが結びやすいとかメリットがある故に選択しています。
金額面も低コストです。月額4$でファイルのアップロード制限解除やバージョン管理もできるようになるのでお勧めです。 -
Miro
オンライン版ホワイトボードのMiroは今回も大活躍しました。
アイディア出し、フロー作成に必要なブレインストーミングはこちらで行っています。
余談ですが、Yabuのいる会社でも標準ツールとしてMiroが採用されているのですが、どれだけ浸透しているかというと、オンサイトで顔合わせているにも拘わらず折角引っ張ってきたホワイトボードは放っておいてMiroを使う徹底ぷり。それくらい便利です。
運用方法
チーム3では早い段階から対応系と技術系に分かれて競技内容の検討を進めていました。
2つの役割に分けた理由は効率性を求めたからに他なりません。全員が一斉に同じことをしていても、ちょっと時間が足りませんし。
また、チームリーダー以外にHUB役となる人を用意して、2つの役割の橋渡しをして情報共有を行いました。
今回の競技会も前回同様オンラインでの参戦となったのですが、オンラインでのチームビルディングはかなり神経を使わないと容易く情報のサイロ化を生み出します。
そう言ったものを回避する意味合いで、それぞれの検討を進めつつも他の方がどんなことをやっているのかを知ることができるようにしたのです。
尚、スクラムをやるのも一つの手だったのですが、全員集まることが困難だったことからこのような手法を用いたといったところでしょうか。
Guacamole体験会
目玉の一つ。
前回の競技環境を極小単位で模倣し、チームメンバーの方々に競技環境を体験していただきました。
試みた理由は単純です。前回は、Guacamoleがやばかったから。
####Guacamoleを制するものが競技会を制する
と言った名言を耳にしたことがあるくらい、Guacamoleに前回参加者の方々は苦戦したのです。
どれだけ苦戦したかというと、前回チームではGuacamole越しだとキーバインドが狂ってしまって、どれだけ頑張ってもログオンプロンプトでパスワードが入力できない人がいたくらい。
それって初手から詰んでんじゃねぇか!? って状況だったりもしたので、まずは馴れて貰おうかな、と。
体験会そのものは好評を頂くことができました。ありがとうございます。
後、
####Guacamoleやべぇ……、
という怨嗟も競技会前に聞けて本当に良かったです。
インシデント対応訓練会
もう一つの目玉。
Guacamole体験会で用意した環境をそのまま潰すのはモッタイナイと考えて、インシデント対応を検討して貰う会を催しました。
実際にサーバへとXSSだとか攻撃を仕掛けまして、それを如何に対応してビジネスを再開させるかを考えるといった内容です。
会の内容は、かなり白熱しました。
XSSを仕掛けられて改ざんされたサイトではまともな運用ができるはずがない。だから、サーバを落とそう!
と言った意見が飛び交ったり、
JPCERT/CCへ報告したいけど報告書の書き方が分からない!
と言った発言が出てきたり、
訓練会のお陰で競技会がどれだけヤバいのか実感できた……。
と競技会前から参加したのを後悔する声が聞こえて来たり、と。
ワチャワチャとしましたが、結果として出来上がった対応フローは結構な出来となりました。
ただ、反省点をあげるとしたら、サーバを置いていたAWSのインフラ設定をミスってたのに後で気付いて、
####1万円近くの課金請求されたことでしょうか。
イエラエセキュリティ様のMP購入
虎の巻伝授。イエラエセキュリティ社にいらっしゃるHardening競技会参加経験者の方々からの有り難い助言を頂ける、と言った内容のマーケットプレイスを購入しました。
内容そのものまでは本記事には踏み込みませんが、おかげでチーム内で競技内容についての議論が加速できました。
ちょーっと提供から競技会までの期間が短かったのが残念ではあったのですが、事前MPという試みは今回が初でもありますのでやむを得なかったと納得できています。
あ、そうだ。この場を借りて、暴露させていただきたいことがあります。
それは購入するに至った理由です。
もちろん、チームビルディングのためでもありましたが、どっちかって言うと虎の巻の内容を他チームに持って行かれたくない、という意図が強かったりします。えへ。
ゲームは情報戦も大事なのですよーっ。
Activation Day(前々日・前日)
今回の競技会はActivation Dayが初めて実装されました。
MP各社のプレゼンや、事前連絡を受けるために競技参加者を含むほぼ全員が一同に介するといった内容です。
わーい、Zoomにいっぱーいいるぅ! とはしゃいだのも束の間、MP各社のみなさんが繰り出したプレゼンはどれも聞き応え抜群でした。
またウイイレのスクショ使っているよ! とか。
力入れすぎじゃね? CISCOさんっ!? とか。
夢中になってメモしていたのも良い思い出です。
但し、
競技会場接続の案内がされるまでは。
……なに?
#####Guacamoleじゃ……、ない?
#####今回はAWSのVPNを使う?
####やったー! やったー!
###ちくしょーーー!!
どうやら運営側もGuacamoleが競技での使用は不便だったとお考えだったようで、今回はAWSのVPNが採用されました。
これは競技中の話になりますが、何をするにしても快適すぎでした。本当ありがとうございました。
でも、Guacamole体験会をしたのに……、いえ、もういいです。みんなが幸せになれるならそれが正しいのです。
チーム方針変更
Guacamoleじゃない=色々できそうだ! つまり、競技環境に持ち込みができるぞ! ってことで、急遽、Splunkでの監視とAnsibleでのリモート操作を行うことになりました。
ぶっちゃけ、この準備が一番楽しかった。
Splunk
SyslogとWindowsログを全部受ける設定を計画してました。
最初はWindowsサーバに立てようとしたのですが、踏み台あるならそっちでいいか、という感じでLinux上に立てました。
これでログを取れれば何が起きたかすぐ確認出来るよね? と、はしゃいでいたわけです。
うんうん。
……うん。
####ちゃんと運用まで持ち込めていたらねー!?
結果としまして、全サーバに設定できなかったという……。
2GB以上のバイナリを持ち上げたことによるトラフィック圧迫、そんな事案だけ引き起こすだけとなりました。
Ansible
我が家のすーぱーぷろぐらまー、kiy0takaさん肝いり。
前日というか実質当日の明け方までプレイブックを作りまして、「ぼくたちがかんがえた最強Ansible」と胸を張りながら競技会に挑んだ訳です。
####結局、動かなかったけどね?
これは(も)、Yabuのミスです。と言うか、Ansibleを動かすサーバを事前に用意して下さっていたのですが、設定するのを忘れていまして……。
おかげで未検証の環境で動かさざるを得なくなりまして、んで、上手く動かなかったという……。
これが半分でも稼働していたら、初動がもっと楽だったのになー、と悔やんでも悔やみきれません。
前日のチームの動き
ちょっと前後しますが、前日のチームの動きをご紹介します。
事前共有資料の読み合わせをして、その後役割ごとにやることの整理をしたりと、結構慌ただしく動いていました。
瞬く間に時間が溶けていく感覚を味わいつつも、あれやこれやと手を動かすのはなかなか楽しいものです。
モンエナ、3本開けましたが。めっちゃ口の中が甘かったので、何度も歯磨きしましたが。
さて、そんな明け方3時頃の話です。
Yabuはモンエナを飲みながら、とある方は酒を飲みながら、事前共有資料と共に配られた契約書の読み合わせをしておりました。
その中で、この契約書のままじゃ個人情報漏えいしたら突かれるに決まっている! って話になりまして。
じゃあ、今のうちに契約書を改ざんしておう! と、契約書を勝手に書き直しをしたりしました。
終わってからならば分かるのですが、競技会の内容から相当ズレているとも気付かずに懸命に改ざんしていたという、そんな午前3時の愉快なコントのご紹介でございます。
MP購入検討
数ある議論の中で一番熱かった。
一体、Ciscoに幾らで札を入れるのか。
前回までの情報ならば3000万で買えそうだ。ちょっと足して3100万くらいでどうだろう?
######いや、確実に購入したいから4000万にしよう。
#####いやいや、皆そう考えていたらどうする? 5000万だろう?
####いやいやいや、皆もっとちゃんと考えよう。ここは7000万だろう?
###いやまじで正気に戻ろうよ、皆。
そんなやり取りの挙げ句、50004649円で札を入れることにしました。これでも高すぎるけども。
と言うか、総売上が5億程度なのに、その10%も購入費に充てるのはどうなのだろうと冷静になれば気付けるのですが、あの時はチームメンバー全員がどうにかしていたのでしょう。
さらに、酔っ払っていたとある方が他チームを煽ろうかと言いだして、誤爆した体裁で金額を晒すということまでするという。
多分、この購入検討で最も楽しんでいたのは彼ではなかろうかと、今でもそう考えています。
HardeningDay (競技当日)
####あれ!? Cisco買えてない!? つか、1億5千万って何それ!?
散々検討して、しかも他チームを煽ったにも拘わらず、CiscoのMP商品が買えなかった。
そんなところから始まりましたHardeningDayの振り返りです。
社長案件
お昼頃でしょうか。社長室呼び出しが来まして、そこから情報流出事案に巻き込まれることになりました。
ですが、結局分からず終い……。アイディアも閃きもないのまま、社長室に凸することに相成りました。
ちなみに説明資料は用意してあったのですが、その前に突貫した方が凄いパワポで弾幕張ったのにガツガツやられて大変そうだったので、よーし、下手に資料を見せるくらいならNo資料で行こうと腹を括ったりもしています。
その結果。
で、片付けてしまうことに。本当すみません、社長。守れなくてごめんね?
後、看板をお借りしちゃって、本当すみません、LAC様。
詳しくは、HardeningDay(6h10m頃)の動画をご覧下さい。
JPCERT/CCをMP購入できていなかった件
社長報告の際に、チーム3だけJPCERT/CCを買っていないのは何故だ? と詰問されたのです。
情報収集が鈍感になっているのではないかというツッコミだったのですが、その時の僕は購入担当者から報告を受けていたので、いえ、買ってますよ? と真顔で反論しちゃったのですが……、
終わった後に購入担当からこっそりと、
#####実は買えてませんでしたと報告を受けました。
社長。本当にごめんなさい。
購入担当曰く、購入したつもりのまま画面を閉じてしまったらしく、買っていないと気付かなかったようです。
オペミス、本当に怖い。
と言うか、ダブルチェックの文化をちゃんと根付かせなかったのがいけなかったと反省しております。
優しくカジュアルなランサムウェア
ランサムウェアを何度か受けたのですが、我が家のすーぱーぷろぐらまー、kiy0takaさんが瞬殺してくださいました。
その際に、彼は本物だったらこんなに簡単には直せないと前置きされた上で、
####これは優しくてカジュアルなランサムウェアだ。
というパワーワードを口にされていたのがとても印象的でした。
いや、ランサムウェアにやられる前に、何とかしていなきゃいけなかったのでは? と言うご指摘頂くような内容ではありますが。
出荷情報一括削除スクリプト
郵便番号の整形ができていなかった。このままでは正しく出荷できないかもしれない。と報告を受けまして、そこから1500件もの出荷情報の一旦キャンセルするというイベントが発生したのです。
しかも、1件ずつ手打ちで。
それを見かねた我が家のすーぱー(略)が、ささっと出荷情報一括削除を作って下さったのです。本当にありがとう! ございますっ!!
SofteningDayで、実はフォーマットは見ていなくて整形されていなくてもカウントしていたと聞かされて、不要な手間だったんじゃ……、と思ったりもしましたがっ!
本当にありがとうございました!
作業報告書が進んでいなかった事案(17:00過ぎに発覚)
マジで焦った件です。
17時過ぎに報告書が進んでいない、ってことに気付きまして、そこから慌てて作成しました。
しかも、ギリギリで提出が間に合ったはずだったのに、競技環境内のDNSが正しく動作していない影響を受けて届けられなかったという事態まで見舞われてしまいました。
この件だけではありませんが、後半は物事のコントロールが殆ど出来ていなかったが故に起きてしまったと考えています。
ああああああああ……、って、今でも後悔しております。
####ああああああああああああああああ……。
反省点
オペミスが多かったこと
JPCERT/CCの購入ができなかったことも含めて、オペミスが目立った印象です。
ダブルチェックをする暇がなかったと言い訳してしまいそうですが、忙しい時こそ他人の目は必要なのだと痛感しました。
物事のコントロールができなかった
HUB役を用意していたのに、後半になればなるほど機能不全を起こしてしまい、誰が今何をしているのかが見通せなくなっていました。
情報統制をする立場の人にはどれだけ苦しくても他の仕事を与えてはいけないんだと思います。
やって当然の対応がまったくできていなかった
FWを始めとして、まずはやるべきことをちゃんとできていませんでした。
いや、Ansibleにやらせようとしていたことなんですけどね?
Ansibleを何とかしようとする前に、まずは競技環境を何とかしなければならなかったと考えています。
次に活かすために
Linux/Windowsの基本的な操作方法の勉強会
iptablesだったら、firewall-cmdだったら、どうやって設定するのか、から始まり、バックアップからの戻し方など、基本的な操作方法の勉強会を事前にしたいと考えています。
誰もがバックアップから戻せるくらいのスキルがあればこそ、カジュアルと言えると思うのです。
いや、その前に止めろよ、という話ではありますが。ええ、分かっています。
ダブルチェック文化マジ大事
忙しくなればなるほど、ダブルチェックは必ずやる。そんな文化は絶対に必要です。
触っていないサービスは触れない
恥ずかしながらDockerがまだまだ勉強不足でして、調査一つするにしてもコストがかかってしまいました。
それ以外にも触ったことのないサービスは触れないんだと改めて認識して、幅広く色んなものを触っていかなきゃと思います。
まとめ
大変だったけれどもまたやりたい
後悔から始まる反省ばかりになりましたが、NotionやMiroに残した記録を眺めていると学びが多かったなーと実感しています。
これを糧として業務に活かしつつも、次回参加も虎視眈々と狙いたいです。
チーム名ZK2
僕たちのチームは勝利を求めて活動していました。
それを忘れないためにも、ZK2(絶対勝つ)とチーム名に刻んだのです。
ですが、それは競技に勝つことだけを求めた訳では決してありません。
もちろん勝ちたかったけれども、ですがそれ以上に、リアルでこれから起きるであろうインシデントに打ち勝つために、H2021AFに参加したのだと思っています。
だから、学びも、悔しさも、嬉しさも、何もかも……、
ここで得られたものすべては、リアルで勝利するために必要な原動力となるはずだと信じます。
ですので、多少成績が悪かろうとも、下を向かず胸を張って行かせて頂きます。
関係者の皆さま、チームメンバーを含む参加者の皆さま、貴重な経験をありがとうございました。
またお会いしましょう!
おまけ
振り返りの時にチームメンバーの皆で描いたのです。
悔しくても、後悔ばかりしていても、最後にはこういうことを前向きにできるのって、やっぱ
###控えめに言って最高!
ですよね。