Micro Hardening v2、ビミョーな結果と課題

■背景

小学生の頃からセキュリティに興味があった私は、ここ数年、ハードニング関連のイベントに参加させていただいている。以前と異なる点は会社でCSIRTを立ち上げたことで有給休暇+交通費・宿泊費自己負担参加では無くなったことくらい。

2015/08/29MINI Hardening Project #1.2東京
2015/11/07Hardening 10 ValueChain沖縄
2016/11/01Hardening 100 Weakest Link沖縄
2018/07/06Hardening II Collective宮古島
2018/07/21Micro Hardening v1.x長野
2020/01/24Hardening 2020 Business Objectives沖縄

と言う具合に参加してきました。今回もデジャヴュと言いましょうか、2020年01月末の本家Hardeningに参加したけれど、私はエンジニア的な動きをする立ち位置ではなかったからかまたもや所属チームがビリになってしまい、そのリベンジとして今回、 Micro Hardening v2 (以下「MHv2」と略す)に参加しました。「セキュリティベンダーやSREなチームの第一線で活躍している人と比べるともちろん私にできることはたかが知れているけれど、そんな自分でも初心者と比較すればできることは多いし、基本的なことを教えることはできるよね」といったことを確認したくて。。。MHv2はもともとの予定では山口県で開催予定だったそうですが、昨今、日本国内でもリアルなイベント開催は難しくなってきたため、オンラインでの開催となり、交通費を考えることなく参加することができました。

■v1.xと今回のv2の違い

私は過去に、Micro Hardening v1.x@長野にも参加したことがあるので、そのときとの違いについて触れておきます。
v.1.xの内容はこちらを参照してください。

Micro Hardening v1.x@長野でドン勝!!

事細かに書いてしまうと、今後、体験する方のヒントとなってしまい学習機会を奪ってしまいますため、故意に抽象化した内容で説明します。
大きな違いはというと、守備範囲が広くなったということのように思いました。
とはいえ、守るべきサーバは1台ということには変わりはない。
つまり、1台のサーバでいろいろ動いちゃっている(v1.xのときよりも)ということです。
1セット45分で、それを3セット実施するということは一緒でした。
ゲームスタートとなる少し前から競技サーバにログインすることは許可されていて、各種パスワード変更やあやしいファイルの削除、脆弱性対策は手を付けてしまってよいので、回が進めば進むほどゲームスタート前にやることが増えていき、ゲームスタート後は監視を強化していくだけとなっていくような展開というのも一緒です。
v1.xのときはたった一人でも立ち回れる規模感だったと思いますが、v2では複数人で対応しないと把握し切れない規模感にシフトしたように思いました。

■どんなだったか

今回のMHv2ははじめてのオンライン開催となりました。
1チーム当たり6名構成でした(私の所属チーム#17は1人欠席で5名でした)。
2日前にチームが公開されましたが、実際に会うこともなく各人のスキルも不明な状況でのチーム戦というなかなか大変な状況でした。
リアルな会場であれば、はじめて会った知らない人同士でも、雰囲気とか表情、キーで何をどんな速さで入力しているかとかで、チームメンバーそれぞれのスキルはわかるものですけれど、オンラインだとはそれは無理。
本家Hardeningの場合は、もっと準備期間があり、各人のスキルのアセスメントなどもしますが、今回のMHv2ではそういうことはできませんでした。
「まあ、Micro Hardeningなんだから、初心者向けの技術のみの体験会みたいなもんだから、しっかり打ち合わせとかできなくてもなんとかなるもんじゃん」と思っていましたが、なかなか大変でした。サーバ1台なのに、いろいろ動いているので。。。
Hardeningシリーズの初心者向けに位置するのがMicroですので、本当の意味でのセキュリティ初心者、業務経験のない学生も多く参加していたように思います。Linuxコマンドもまだわからない人も多いイベントとなるため、5人いても実際に能動的にチームをリードしながら手を動かすことは困難でした。
そういう状況でしたので、一人で立ち回るべき範囲が広くなってしまいました。
「ログやプロセスを見て落ちたサービスを再起動させたり、売り上げを気にしながら、また別のログやプロセスを見る」ということを繰り返しているだけで45分x3は終わってしまいました。
1セット目と2セット目、2セット目と3セット目の間には実質30分くらい休憩時間がありますが、その時間にオンラインですと自チーム内の他のメンバーが何をしているのかさっぱりわかりません。トイレに行っているのか、次のセットのためにログを読み直しているのか、はたまたボーっとしているのか。リアルであればこの時間を使って作戦会議ができるのですが、オンラインだとそれが困難でした。
そこで私(の所属チームで)は、2セット目と3セット目の間に、新たな脆弱性対策情報をネットで調べるような余裕はなかったため、3セット目は売上アップに貢献することを試行錯誤することにし、ゲームスタート前に販売する商品の単価の変更を実施しました。しかし、それが裏目に出てしまい、3セット目スタートからしばしの間、売り上げ0円の横ばいの期間が発生してしまいました。
事前に、以下のようにチーム内アナウンスもしていましたが、誰一人としてシートに記入した人はいませんでした。

チーム内では、Slackへの報告・情報共有を徹底していたため、別のものに転記している余裕はまったくありませんでした。
(が、対応したことをしっかりシートに記入できていたチームもありました)

■どうすれば勝てる?

Microですけれど、1台のサーバで動いているものがあまりにも多いので、マネジメントに徹する人を設ける必要があるかもと思いました。
参加者というより、できることがかなり限定されてしまう見学者に近い方が多いチームの場合、数少ないメンバーで対応していくことになる。「Slackの内容をシートに転記する係」だとか、「while :; do ps -ef | grep nanika | wc -l; sleep 1; done をずーっと目視してもらって変化があったら再起動する係」みたいなことを見学者に近い方に依頼してもよいものなのか、そういうことこそ自動化すべきであるのか、では、どういうことをしてもらえればよいのだろう。。。的な他者への移譲の難しさ初心者向けのMicroならではのような気もしました。

■結局のところ

Hardeningシリーズ、共通の課題は、セキュリティインシデントへの対応力(知識だけではなく実践できる力)とコミュニケーション力でしかないと私は感じています。
極端な話、対応力があっても何言っているかわからない人は何言っているかわからないですし、喋っているだけで何の対応もできない評論家とか転載厨みたいな人はうるさいだけで集中すべき作業の邪魔となります。そういったことを気にしていると沈黙が続き、チームとしての動きができません。
競技当日前に人を知っておく→SNSなどで見ているだけでなく会話しておく→勉強会に参加したりオープンソースプロジェクトでコントリビュートするなどして人脈を拡大しておく といったことを能動的にしていって人を知っておかないと、オンラインでのチーム対応はなかなか難しいと思いました。
ちょうど今はテレワークが流行していますので、経験を通してよりよいやり方が見出されるとよいですね。。。
もちろん、終わった後の振り返りも重要ですよね。

■謝辞

同じチームになった方、このような機会を無償提供してくださった川口設計の川口洋さん、ありがとうございます。
自助→共助→公助といったスコープ(?)は、Micro→Mini→本家にも似ているように思えますし、自我確立→自己実現→自己超越とも、「一燈照隅 萬灯照国」とも同じようなことと私は理解しています。

■蛇足

なお、このブログがWordPressであるのは、勉強のためでもあります。Google Cloud Platformの無料枠で運用しています。Hardeningに参加される方は、こういったことを日常的にすることで経験を積むこともできるという一事例です。
操作方法を当日になって検索しまくるのではなく、日常として運用していれば、どこに何があるのかとかはスグわかるようになりますので。。。

Micro Hardening v1.x@長野でドン勝!!

■背景

小学生の頃からセキュリティに興味があった私は、ここ数年、ハードニング関連のイベントに参加させていただいている。参加費用はすべて自腹。

2015/08/29MINI Hardening Project #1.2東京
2015/11/07Hardening 10 ValueChain沖縄
2016/11/01Hardening 100 Weakest Link沖縄
2018/07/06Hardening II Collective宮古島
2018/07/21Micro Hardening v1.x長野

というわけで、宮古島で開催された Hardening II Collective にも参加させていただいたのですが、15時頃まで1位独走していたチームだというのに、それ以降どんどん下降していき、最終的にはビリになってしまいました。このときの私の役割はエンジニアではなかったため、不完全燃焼な結果でした。このもどかしい状況から脱すべく、急きょ、長野に向かうことにしたのです。

■結果

チームのスコアとしては1位に、つまり、ドン勝することができました。全部で6チームあって私の所属はチーム5でした。1チームあたり4人という構成でした。
とはいうものの、Micro Hardeningは表彰されるわけでもありませんし、Hardeningと比較すると、守るべきサーバは1台だけだったり、”ゲーム開始から同じタイミングで同じ攻撃がやってくる内容”を3セットやるだけですので、対策がとてもしやすかったです。

■どんなだったか

Micro Hardeningに参加するとよいであろう対象者はセキュリティの専門職の方とかではなく、フツーの会社の情シスの人だとか、フツーのSEとかが、「ちょっとセキュリティ対策ってどんなのか知りたい」と思ったら参加してみると吉。日常業務にも役立つ、エンジニアリングの基本の総復習ができるようになっているような感じでした。
Hardeningの場合は、会社経営の視点での対応が必要となるし守るべき対象もかなりの台数となりますが、Micro Hardeningは「残機3で、守るサーバは1台」なので、とても気軽に参加でき、スグに直前の結果を活かすことができ、基本的にはどなたでも、1セット目より2セット目のほうがスコアは高くなり、2セット目よりも3セット目のほうがスコアが高くなるようになっていました。

PUBGでたとえると、1回目のプレイでいきなりよくわからないままパラシュートでポチンキに降りてしまうと、武器をゲットすることもなくいきなり何者かに銃で撃たれたりぶん殴られていきなりゲームオーバーとなってしまいますが、それを経験した2回目のプレイではポチンキへの降下は避けて、敵がいないミルタとかロズホックに降りるようになって、そこで操作に慣れてレベルも上がってきてからポチンキに降りることに挑戦するようになりますよね。
Micro Hardeningは同日に3セットできるので、さっきのミスを活かした対応ができるようになるので、ゲーム感覚で慣れながら学べるようになっていました。

守るべきサーバはLinuxサーバでした。
TeraTermなどで対象サーバにSSH接続し、/var/log配下のログを見たり、ps -ef | grep なんたら みたいなことをして攻撃を知り、知ったならば、次(2セット目)はフィルタリングするなり、脆弱性対策をしていき、その次(3セット目)では、1セット目と2セット目の結果から取りこぼしている対策をしたり、2セット目のときよりもスピーディーに対策していくことになります。

■振り返り

・1セット目


チーム5のスコアは87,000。
どのチームも初回なので様子見しつつな感じ。
手作業で状態確認(監視)している状況。

・2セット目


チーム5のスコアはまた87,000。フツーは1セット目よりもよい得点になるはずだが、止めてはダメなモノを止めてしまったり、どこを変更すれば元に戻るのかがわからなくなっていました。
各チーム、監視~復旧が1セット目のときよりもスピーディーにできるようになっていたと思います。

・3セット目


チーム5のスコアは130,000。2セット目にやってしまったことを反省(活か)し、慎重な対応をしたり、古いバージョンのモノのアップデートなどもしました。

■そういえば

今回の会場は「株式会社電算」でした。私は過去にここに来たことがありました。

2017/05/27 SECCON Beginners長野

というイベントで。
長野県ではこの電算さんがセキュリティ関連イベントに会場を提供してくださる非常にありがたい会社ですね。

Micro Hardeningは、川口設計の川口さんが今年から開始されたイベントです。
「セキュリティの人材が足りない!」という大問題があるわけですが、こういったゲーム感覚でセキュリティの経験をしてもらう場を提供し、底上げをしていかれる活動はとても重要なことです。
知識があってもそうそう実践には活かせませんから、入門者向けの実践の機会としてMicro Hardeningはもっといろんな場所で開催され多くの人に体験してもらいたいと私も思いました。

■蛇足