MBSD Cybersecurity Challenges 2017 に参加した

初めまして、 焼きそばメロンパン と申します。

先日 MBSD Cybersecurity Challenges 2017 に参加したので、次に参加する方の為に今回の大会について自分たちがやったことを書いておこうと思います。

目次

  • 提出したレポートと発表したスライド
  • 大会について
  • 本選の流れ
  • 問題概要・環境
  • 脆弱性を探す上での工夫
  • 審査基準・反省
  • 感想

提出したレポートと発表したスライド

提出したレポート (元がWordなので若干レイアウトが崩れている)

大会について

三井物産セキュアディレクション(MBSD) という会社が運営している、専門学校と高専が対象のセキュリティ大会です。 予選では VitrualBox にすぐ import 出来る CentOS7 が入った OVA ファイルが配布され、このサーバに対して攻撃を行いレポートを書きます。 期限は確か 1 ヶ月ほどあり、家にいる時も学校にいる時も常にこいつの脆弱性を探すために攻撃施行していました。

サーバにはパスワードが掛かっており、起動すると JSON を返す API サーバが起動するという物です。 今回の大会ではこの API サーバ及び、サーバそのものの脆弱性を探してレポートを記述するという形でした。

参考リンク: 専門学校・高等専門学校対象セキュリティコンテスト MBSD Cybersecurity Challenges 2017|専門学校と経営:専門学校の経営者・広報・就職担当者の情報サイト

本選の流れ

レポートの評価が良いと予選突破ということで、本選に出場しプレゼンを行うことが出来ます。 本選ではプレゼン大会を行い、上位3チームが表彰されます。

会場は大手町のビルで行われ、会場の雰囲気は結構ゆるふわな感じで、プレゼン中に笑いが起きることもあって楽しい感じでした。 プレゼン中、僕はずっとツイッターをしていましたが、ハッシュタグが無かったためあまり参加者の目には届かず寂しかったです。 次回は是非ハッシュタグが欲しいところですね。 ( #MBSD2017 というハッシュタグが一部参加者で利用されていた模様 )

問題概要・環境

出来ることなら問題は公開したいところでしたが、公式サイトで配布は禁止とあったので公開しません。

問題環境については僕がチームで共有していた Qiitaのprivate記事 をご参照下さい。

脆弱性を探す上での工夫

チームでの情報共有は Slack と上述した Qiita の private 記事を利用しました。
使用したツールは下記の通りです。

  • nmap (ポートスキャン)
  • Vlus (脆弱性スキャン)
  • Nessus (脆弱性スキャン)
  • BurpSuite (ローカルプロキシ)
  • Charles (ローカルプロキシ)

脆弱性を探す手順は下記の通りです。
スキャンの結果は スプレッドシート で共有しました。

  • 一通りの機能試す
  • 考えられる脆弱性を全て上げて検証
  • 各種スキャンツールでスキャン

また、一つの工夫として、VirtualBox仮想マシンは中身のファイルを任意に編集可能なので、root のパスワードを書き換えて root ログインが可能な状態にしていました。

他校のプレゼンについて

他校では下記のような団体がいました。

  • スピーカを使ってゆっくりに喋らせる
  • 脆弱性の実証を動画を使って解説
  • OSコマンドインジェクション
  • IPv6 の時のみに再現出来る脆弱性
  • 現状の環境では発火しない潜在的脆弱性
  • 報告した脆弱性が100件以上
  • プレゼンに考察を含める

審査基準・反省

審査基準は 公式サイト にある内容が本当に重視されていて、単なる技術勝負じゃないことが伺えました。 (実際、入賞していたチームはプレゼンがとても上手く、スライドの内容も論理的で、テーマも一貫していた)

僕達のチームの反省点として、次回はこれをしたいということをまとめました。

  • CVSSによる評価 ( スコープは自分で決める、数値にあまり意味はなく相対的表現に使う )
  • CWEによるカテゴリ分け
  • グラフ等を使うと良いかも
  • 潜在的脆弱性 ( Tomcatとか )
  • 実証は埋め込み動画の方が良い
  • 脆弱性の考察 ( 設計の仕方等でフレームワークを持ち出す )
  • 他のチームとの差別化 ( SQLインジェクションとか絶対被る )
  • プレゼンの構成が悪かった ( LTとは違う )
  • レポートの報告数 ( 30件以上が多い )
  • どういう流れ、観点で脆弱性を探したのか
  • 脆弱性って何?APIサーバって何?っていうのが無駄だった
  • 一つのテーマに絞ったほうが良い ( 結局何が言いたいのかわからなかった )
  • Webの場合、IPv6についても検討するべきだった
  • 図があるべき
  • 攻撃者の目的を示す

感想

今回の大会を通して、自分がまだまだ勉強不足であることが改めてわかりました。
これからの1年間でもっと勉強して、来年もまた出場したいと思います。

また大会後の懇親会で仲良くなった人達と大会が終わってからサイゼリアに行ったのですが、その時に話したプログラミングやインフラの話がとても楽しかったので、もし来年に参加する方は是非懇親会で同士を見つけてサイゼリアに行くと良いでしょう。