MBSD Cybersecurity Challenges 2018に行った話
書き出し
初めまして、あざらともうします。 12月12日に開催されたMBSD主催のMBSD Cybersecurity Challengesに1年ぶり2度目の参加をしてきました。
筆者の学校からは多くのやる気のある一年生や、昨年出場した二年生が出場することにより、合計4チームがエントリーし、互いに切磋琢磨しながらコンテストに挑みました。 筆者のチームは、1,2年各2人の構成でエントリーしました。
今年の出場チームは昨年よりも多く、下記の引用の様に全国36校から106ものチームが応募する大イベントになっていました。筆者は予選すら通らないのではとヒヤヒヤものでした。
セキュリティコンテスト「MBSD Cybersecurity Challenges 2018」には、全国36校から106チームのエントリーがありました。多数のご参加ありがとうございました。
うち、サイバー攻撃の全貌解明レポートを期限までに提出していただいた80チームについて、一次審査を行いました。厳選なる審査の結果、下記の10チームが入賞となりました。
※引用元 : 専門学校と経営:セキュリティコンテスト一次審査結果発表
さて、前置きはここまでにして本題に入っていきましょう。
予選
今年の課題は大きく分けて3つあり、攻撃の解明(Log解析)と対策の提案、そして報告書という形でまとめ上げて提出すると言うものでした。
一昨年、昨年とサービスの脆弱性を探し出すと言う物だったので今年も脆弱性診断系であろうと考えていた筆者は、この課題が発表された時に頭が真っ白と言う状態でした。 なんせLog解析なんて初めてで知識も何をすればいいのかも解らない、これはもう終わったと思うばかりでした。
しかしこの気持ちをずっと引きずっても意味がない、そしてできればburpが欲しいと気持ちを切り替え予選の準備を始めました。
マイナス10日から始まった予選
課題の概要が公開されてから2日が経ち、そろそろ準備を始めなければならないと思い始めた。 ひとまず、参考書籍を手に取りながらパラパラと読み進める。多くの攻撃のログやその読み方などが載っていて初めてログ解析をする筆者にもわかりやすく、ログを見る際の多くのコツを学べました。
粗方、読み方を理解すると次はより効率的、かつ報告書に活かせる様にログを裁くかを考え始めました。 まだ課題本体は配布されておらず、ログがどのくらいの規模かもつかめていない状態でした。その中、筆者は一度使ってみたい技術があり、予選が始まるまでにその技術の基盤を整備し始めました。
その技術というのはELKstuckという技術です。
ELKStack
ただ一度使ってみたいからと言ってもそれだけの理由で採用して失敗したくないと思い色々と調べ、この3つが筆者の中での決め手となりました。
1つめは、Logの可視化という点
これは筆者的に一番重要な箇所で、直感的かつ関連性が表現されるグラフにより、結果的に十数万件のLor解析の大きな武器になりました。
2つめは、ログデータ内の集計が容易で出力形式にCSVがあるという点
多くのアクセスログからユーザーエージェントだけ抽出し、どのログを集計したいときにこの機能に頼りました。 下の図のようにリスト形式で集計結果を表示してくれる他に、下の2枚目のようにCSV出力を行えることからExcelやワードに転機しやすく解析の本質に部分に注力が結果的にできました。
これはpipelineを通すことにより複数種のログを一纏めにも、分割にもできるということができました。
Logstashのpipelineは今回上手に描くことができませんでしたが下記のようにinputファイルごとにタグ付けを行い、そのタグやタイプごとにフィルターを通すことによってtime stampなどの画一化できる箇所の形式統一がはかれました。
またこの技術を利用するにあたりチームメンバー全員が動かせる環境が必要でした。その条件を満たすために筆者はdocker-composeを利用し環境を構築し、その構築済みの環境をチームメンバーに配布しました。
これで解析基盤を整備できたので次は情報の集積方法を整備しようと考えしました。
情報集積
情報の集積は主にgoogleスプレッドシートとgithubを利用して怪しいログの洗い出しとレポートの管理を行いました。
調査と報告
10月22日から始まった一次審査の期間中に、筆者ともう一人の二年は1週間ほど中抜けし沖縄に行くというチームの一年生にとっては大きなイベントがありましたが、結果的には報告書はボロボロの状態ではありますが提出することに成功しました。
調査の手法としては先ほどのスプレッドシートをフル活用し時系列の洗い出しや情報の共有を行い、メモ書きを残し整理をつけていくという手法で行いました。
振り返り
先の書き出しで昨年も出場したと書きましたが、昨年は4位で3位と1点差という苦い思いをしましたが、今年もそれに近い形でした。
今年は2位という好成績ではありましたが1位の同じサークルから出たチームと1点差... 悔しさもありながら、結果が出てからわかる反省点や振り返りもありそれ少しまとめていきたいと思う。
反省点
焦りすぎは禁物
今回は筆者自身のスケジュールが詰め気味で後半は焦る気持ちで同じチームの一年生にプレッシャーと不安を与えてしまいすごく反省をしている。そして余裕をなくすことにより後述する書く人がいれば読む人もいるということにも繋がりますが、誤字脱字が多くなりそれを良しとしてしまう状態になってしまいました。
実際の仕事でも期日が決まっている仕事もあるでしょうし、この大会を通しこのようなことに気づけたことは良かったのだなとおもった。
書く人がいれば読む人もいる
筆者は言語化というものに苦手意識を持っており、下書きをしてから本書きということや、読み直しを行わずに書いてしまう癖がある。
その中で、今回の講評で一番大きかったマイナス点として誤字脱字の多さがあったと指摘された。
コンテストでは必ず審査員がおり、その審査員が読むのであるからこそより細心の注意を払いながら書くべきだと今では思っている。
そして、このコンテストが本当の仕事でなかったことに安堵するばかりである。
書けばわかる訳ではない
今回2人の一年生とともに出場したが、チームのやることを書き残すことは行なっており、それを見て僕たちのいない時の作業をやってほしいと伝えた。逆を言えば、その書き残すことしか僕はやっていなかったのである。
軽くアドバイスや調査の仕方、レポートのまとめ方は説明したがそれが役に立ったのかも若干怪しいところではある。
実際に大会の後、徐々に筆者の中で緊張がほぐれ状況を整理していくうちに「もっと教えてあげれば良かった、もっとサポートしてあげれば良かった」との自責の念、そして今後はこのような方法では行なってはいけないという決心がついた。
感じたこと
初めては学びを促進する
書き出しでも述べたように、筆者自身がLog解析を行うのが初めてで何もわからないことばかりでした。だけど初めてのもの、新しいものを学ぶのはすごく楽しいしワクワクするものだなと改めて感じました。
昨年の大会の時も同じようにWebセキュリティへの憧れと楽しさを学び、感じることができました。この気持ちは多分いつまでも続いていくものであれと思うばかりです。
セキュリティエンジニアに限らず多くの先人エンジニアの方は、この気持ちがあったのかなと思いを馳せる次第でした。
まとめ
今回参加をしたことにより技術面や人間面で学ぶことが多くあり、この経験を活かしながら今後の学生生活、そして就職後の人生に役立てたらなと思っています。
この大会を主催していただいた三井物産セキュアディレクション様をはじめ、協賛の企業4社(敬称略 サイボウズ/Tanium合同/日本マイクロソフト/日本HP)、そして事務局の皆様に感謝の気持ちでいっぱいです。
来年も面白い課題が出題されることを心待ちにしています!(今年みたいに課題の趣旨変更でマルウェア解析とかが来たらすごく胃が痛いです)
また、一緒に戦ったチームメンバーにも感謝と反省の気持ちを伝えたい。ありがとう。
今回の日記で書ききれなかった技術的なことは別途気が向いたら書いていきたいと思います。
読んでくださいありがとうございました。
余談
大会で2位になった際にいただいたamazonカード1万円分で何を買おうかと悩んだ際に、ハッキングラボの本でも買おうかなとなりました。
のこり残金をどこに使おうかと考えた結果、生活が苦しいので洗剤と柔軟剤、そして備蓄用の水にでもしようかなと考えています。
大会準備・期間中に一通り読んだ本/サイト一覧
ログを見る前の勉強として読んだ本
- セキュリティのためのログ分析入門 サイバー攻撃の痕跡を見つける技術
ログを見る前の勉強として読んだ本
- データ解析基盤構築入門
ELK構築時、運用時に読んだ本
- CSIRT:構築から運用まで
対策案策定時に読んだ本
- インシデントレスポンス 第3版(一部パラパラ読み)
報告書作成時にパラパラした本
- 実践サイバーセキュリティモニタリング
攻撃等の手がかりを探した本
- 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践
対策策定時に参考にした本
- PHP manual