イベントレポート
Hardening 2017 Fesに参加してきました!
Seiya Kobayashi
11/23 – 11/25にかけて淡路島で行われたHardening 2017 fesに 「TeamEJ + namineko」 として参加してきました。
Hardeningとは、 チーム対抗で、脆弱性のあるECサイトへのハードニング(堅牢化)力の強さを総合的に競います。最終的には売り上げでグランプリが決まります。
今回のHardening 2017 fesは過去最大規模の1チーム7名で16チームが参加しました。
0day
神戸へ
山寺さんと金子さんは別の用事で先に現地入りしていたので、それ以外のメンバーは早朝に仙台に向かい、そこから神戸へ向かいました。神戸で金子さんと合流してからは1食4000円で神戸牛を食べたり、神戸を軽く散策したりして、夜を迎えました。
前日ミーティング
夜はお好み焼き屋さんでミーティングを行い、そこでnaminekoさんを含めたメンバー全員で資料の読み合わせを行い、誰が何を担当するかなどの役割分担を行いました。前から決めていた通り、山寺さんとnaminekoさんはサポート系を担当し、金子さん・真水さん・佐藤・小林・兼澤は技術系を担当し、技術系ではさらに細かな役割分担を行い、前日ミーティングは終わりました。
Hardening Day
いよいよHardening当日です。車での移動で緊張した車内でしたが、緊張をほぐすような会話をしながら会場へ向かいました。
会場入り
会場へ到着して準備を整えて、まずはWelcome to Hardening Projectということで
・実行委員長 門林雄基さん
・兵庫県警察本部さん
・株式会社神戸デジタル・ラボさん
からお話がありました。その後、開催宣言と競技解説を経て、競技開始です!
Hardeningスタート
まずは皆、自分のPCをサーバへ繋ぐことから始まります。一度サポート端末へ繋いでから目的のサーバへアクセスするので、注意が必要です。その後、技術系のメンバーは自分の担当しているサーバへ入り、準備していたTODOリストを元に作業します。全てのサーバで共通していることは初期パスワード変更や、環境把握、不要なサービスの消去や不要なコマンドの退避、データのバックアップなどです。初期パスワードは全て「Hard-ing0」になっているので、強固なパスワードへ変更します。以前働いていた人のアカウントが残っていて、不審なプロセスが起動しているということもありました。また、競技では突然サーバを再起動されるということもあるので、shutdown・reboot・haltなどは他の場所へ退避したりしました。また、データのバックアップは非常に重要で、データを改ざん・暗号化された時、バックアップがないとどうにもならないので、定期的にバックアップするようなスクリプトを走らせたりしました。
開始1時間が経ってもメンバーの手が止まることはありません。ひたすらキーボードを叩いているぐらいやることが多いのです。パスワードの変更も、Web3とWeb4が終わっていないけどこっちの作業が・・・など、本当に忙しかったです。Team EJ + naminekoは序盤は本当に順調で、1位になった時間帯があったほどでした。
午前中にはMP(マーケットプレイス)も活用しました。MPとは、お金を払うことで様々なサービス・製品を使うことが可能で、例を挙げるとWAF・IPS・アンチウィルスソフト・人など様々です。私達のチームは人手不足ということもあり、Yahoo!様の人を買いました。2人ほど、なんでもやってくれる方が来てくれて、2時間で終了というサービスです。Yahoo!様には積極的に動いて頂いて、自ら「次は何をやりましょうか?」「他にやることはありませんか?」などお声掛け頂き、本当に感謝でした。
お昼
競技は9時間でしたが、お昼の時間が明確に確保されているわけではなく、お昼の時間帯になったら各自自由に移動してご飯を食べてくるような感じでした。そこで我々のチームは約半数のメンバーが先に食べに行き、その後残っているメンバーが食べに行くようにしました。ちなみにお昼はシェフ特製のハンバーガーで、ジューシーで非常に美味しかったです。
午後
お昼から午後にかけて、売上がなぜか上がらなくなりました。原因にいち早く気づいたのはメンバーのnaminekoさんで、Web2の商品価格が改ざんされていたのです。これでは売り上げが当然上がらないので、早急に対処します。それからしばらく経ちましたが、SLAは高く安定しているのに、なぜかまた売上は伸びません。順位もどんどん下がってしまい、チーム全体に不安が募っていきます。
原因は恐らく2つあり、「Web1のプラグインアップデートにより、クローラーとの相性が悪くなったこと」と「Web4が放置状態であったこと」でした。Web1を担当したメンバーはWordPressのプラグインをアップデートしただけでしたが、なぜかそれが影響したらしく、Web1の売り上げが上がらなくなってしまっていたようです。これも、ログを監視していれば様々な気づきがあったのですが、そこまで手が回っていませんでした。
Web4は情報提供サイトで、そこに特定の広告を貼ると売り上げが伸びる仕組みになっていたそうですが、Web1,2,3ばかりに注力してしまい、見逃していました。
「コンテンツを監視する人を置いておけば・・・」「もっとECサイトを運営しているという意識を持っていれば」など、いろいろな反省点がメンバーからは出ました。
kuromame6からの攻撃も多種多様で、頻繁に攻撃して頂きました。httpdが止まったり、Webサイトが突然「403 Forbidden」になってしまったり(/var/www/htmlの権限を000にされてしまうことが原因でした)、/var/www/html以下のファイルを~.nktsrという拡張子で暗号化されたり、index.htmlやindex.phpが改ざんされてしまったりと、インシデントレスポンスをしていたメンバーは非常に忙しそうでした。
競技終了へ
上記で挙げた、Web1の売り上げが上がらない原因は後からわかったことであり、Web4も対応が遅れてしまい、結局売り上げを伸ばすことができずに競技は終了してしまいました。
その後、メンバー間では反省点を話し合い、移動中もひたすら競技中の話をしていたりと、悔しさと疲れを残し、Hardening Dayは終わりました。
Firming Day
人事異動
今回から初の試みとして人事異動が実施されました。
チームリーダーを残して他のメンバーが別のチームに移動して新社長の下で2時間の競技を行います。そのため、新たな評価指標に引き継ぎ能力も追加されていました。
我々はチーム4へ移動しました。
私たちが移動した先のチームでもアカウント情報や引き継ぎに必要な情報はまとめられていたので引き継ぎにはそこまで困りませんでした。
そこからは、前日やっていても新チームではやっていなかった作業を行ったり、新社長の指示を受けながらそれぞれ立ち回りました。
逆に、自分たちはやっていなくて新チームでは既に行っていた業務もあり学びがありました。
面白い試みで多くの学びを得ることができたので、続けて欲しいです。
アンカンファレンス
お昼には、淡路島の名産の玉ねぎを使ったカレーをいただきました。
お昼ご飯後は、アンカンファレンスが行われました。
アンカンファレンスとは、参加者一人一人が話し合いたいトピックを提案しそれらをいくつかのテーマに分けてテーマ毎に議論し、最後に全員集まって各テーマの発表を聴きます。
今回は経営、脆弱性対応、人材育成、俺たちのHardeningの4つのテーマに分かれました。
私(小林)は、俺たちのHardeningに参加しました。その中でさらに2つのグループに分かれて議論しました。私のグループの結論としては、MINI Hardening全国制覇!を掲げました。どうしてもこういったイベントは首都圏に偏ってしまうことと、参加のハードルを下げたり、各地で特色のあるHardeningが開けるという効果が生まれると考えました。
もう片方のグループではEasy Hardeningというものを提案していました。Easy Hardeningではある分野(組み込み系や文系寄りなど)でのHardeningというものでした。Hardeningは様々な分野でも需要があるようで、もっと幅を広げていけそうで面白そうです。
私自身アンカンファレンスに参加するのは初めてで、学生やベンダーの方、警察の方などいろんな視点での深い議論ができて楽しかったです。
Softning Day
鉄は熱いうちに打て(各チームの成果報告)
Softning Dayは、各チームの競技中の出来事や感想を共有し合う1日です。
また、攻撃担当kuromame6さんからのwriteupもあり目から鱗の連続でした。各チームのプレゼンは、始め発表時間5分とされていましたが当日の0時にメールがきて、15分となり「えー!!」となりましたが全員で素早く対応できたと思いました。今思えばこれも運営が試していたのかもしれません。最後までHardeningでした。
結果発表
見込み販売力・顧客点・技術点・対応点・経済点・協調点・引継点と売り上げで評価が行われました。
TeamEJ + naminekoの売り上げは42,147,652円でした。
グランプリとなったTeam4のJST.onionは65,226,549円と素晴らしい売り上げを出していました。
隣のチームだったということもあり、悔しかったですね…
グランプリの他にスポンサー賞と、サポーター賞、MVV(Most Valuable Vendor)賞が表彰されました。
我々Team EJ + naminekoはサポーター賞をScanNetSecurity様からいただくことができました。ありがとうございます!
そして、エンディングでは地ビール片手に健闘を讃えあいました。
全体を通して
関係者のみなさまありがとうございました。
以下、メンバーの感想
兼澤
Team EJ + naminekoのメンバーとして参加させて頂いた、会津大学3年の兼澤です。普段はCTFに参加することが多いのですが、CTFとは真逆の立ち位置であるHardeningはとても新鮮で、当然学びも多かったです。求められるスキルとして、僕が普段勉強している分野とは違い、専門外でしたがそれでも少しでも貢献できればと思い参加しました。
全体を通しての感想としては、非常に濃い3日間で、学んだことが多すぎるため一言では表せません。今年の夏にセキュリティキャンプという22歳以下を対象としたイベントに参加したのですが、キャンプは勉強するきっかけを与えてくれる起爆剤のような役割であるのに対し、Hardeningは実務のようなことが多く、9時間という時間の中でひたすら攻撃されるので、メンタル面での成長もあると思います。最終日にはSoftening Dayとして、種明かしや表彰があり、まさに飴と鞭だなと感じました。
そもそも学生が少なく社会人向けのイベントでしたが、そのようなイベントに参加できたことは大変光栄であり、技術面や精神面でたくさんの学びが得られた3日間でした。Hardeningで得たことを周りの学生に対しても伝えていきたいと思います。
小林
同じく、会津大学3年の小林です。
今回Hardeningには初参加でした。Hardeningでは実際にありそうなリアルな状況でのスキルが問われていてまだまだ知識・技術・経験も足りないなと実感させられました。
また、普段開発だけしているとわからないマネジメントやタスク管理の重要さを感じました。黙々と自分のやることやインシデント対応していると、ついつい周りが見えなくなってしまいました。そんな時に全体を客観的に見れることや、見てくれる人がいると非常にやりやすいなと感じました。
なかなか学生では体験できないような9+2時間の競技とアンカンファレンスなどハードで楽しい時間を過ごさせていただきました。今回、得たことを今後生かし、周りへも積極的に発信していき全体的なスキルアップをしてリベンジできたらと思います。
佐藤
会津大学 大学院の佐藤です。
私も今回はじめてでしたが、過去の競技の情報収集をしたりシュミレーションをしたりと準備してましたがかなり甘かったです。
一番痛感したのが、チームマネージメントです。準備段階ではマネージメント担当を軽視していました。いざ、競技になると何を優先的にやるか、情報の集約はどこにするか、みんな何やってるかなど整理が全くできずログを追うにも時間と事象が整理できていなかったので解析にも影響が出ました。実務でもマネージメントが必要なので本当にHardeningは、ビジネスの縮小版だな感じました。
あとサイトのHTTPS化に気づけなかったのが悔しかったです。「堅牢化」と言えばサイトの通信の暗号化!ってくらいなのになんで浮かばなかったのか。
普段、当たり前のように使っていて気づけない自分にとても腹が立ちます。気づけなかったのが全てでそれが技術力なので精進します。
3日間通じて、「衛る」ということがどれだけ難しいか感じ、そして日頃守って当たり前のインフラエンジニアに改めて敬意を持ちました。
全ての管理者へ、いつも、ありがとうございます。
ありがとうございました。