概要

2017年9月2日(土)13:00-18:00,仙台市青葉区一番町のコワーキングスペース「ソシラボ(正式名称:SOCiAL Laboratory)」にて,「Attack & Defense in Sendai(別名:攻防戦CTF,略称:A&D)」が仙台では初めて開催されました.この記事では,イベント当日の様子を報告します.

「攻防戦CTF」は,この記事をご覧のみなさんにとって,聞きなれない言葉かもしれませんが,平たくいえば「ハッキングのチーム対抗競技」です.
今回,企画しました「Attack & Defense in Sendai」は,本来の競技性を残しつつも,初心者にも入りやすいワークショップとしてのアレンジを試み,攻防戦に初挑戦の方や,技術に自信のない方でも,情報セキュリティ技術の基礎や攻防戦の競技をひととおり体験できる内容をめざしました.

講師は,はるばる九州,福岡からいらした服部祐一さん(株式会社セキュアサイクル 代表),菊池崇仁さん(東北情報セキュリティ勉強会 代表).
競技問題の作成,当日の環境構築はお二人がご準備くださいました.

13:00 オープニング〜チュートリアル

各自,席に着き,競技概要のスライドを聞いています.

▲服部さんから競技の概要説明

エンジニアの方々だけでなく,学生さんにもご参加いただきました.

みんなでSSHログイン.

▲チュートリアルのWebサイトに接続し,セキュリティの脆弱性を確認していきます

14:00 競技開始!

4チームに分かれ,競技が始まりました.

各チーム,ソースコードを調べています

▲まずは各チーム,Webサイトの中身を調べているようです

今回の攻防戦は,全員が同じ環境を使っているため,もし自チームのサイトに脆弱性を発見すれば,それと同じ脆弱性が他チームのサイトにも存在します.
自チームの脆弱性を塞ぎつつ,相手に悟られないよう,素早く攻撃をしかける……攻防戦では,チーム内での役割分担が重要です.

grep検索を使ってソースコードを調べています.

「このコード怪しいなぁ……」「どうやって攻撃するんだ……?」

Webサイトを隈なく調査しています.

手を動かしながら考え中……

しばらく膠着状態が続きます.

中盤〜終盤戦

時刻は,14:55 PM JSTです.

開始から約1時間,チーム2が,他のすべてのチームに対し攻撃を開始しました.

rmコマンドを使い,他チームのWebサイトを全消し

▲チーム2が「OSコマンドインジェクション」を使って攻撃!

チーム1も何か仕掛けているようです.

多重バックアップで防御しつつ,攻撃

▲クロスサイトスクリプティング(XSS)を利用し,アラートを出すコードを埋め込んで操作妨害.

5チーム目として,開催協力の小笠さん(OWASP Sendai Chapter Leader)も途中参戦! スマートフォンから攻撃を試みています.

スマートフォンから攻撃ポイントを設置

服部さん側からみた会場全体

▲全体風景

見学の今野夕貴さん,可野沙織さんから,差し入れをいただきました.ありがとうございます!

「伊達のごま丸」,「お〜いお茶」

16:30 振り返り

スライドを見ながら答え合わせ.

▲どんな脆弱性があったか,服部さんが解説しています.

「開始直後にバックアップをとりました」「全消しされたので,復旧に時間がかかってしまった」などなど

▲会場を手配くださった佐藤将太さん(OWASP Natori Chapter Leader)から総括をいただきつつ,各チームより,やってみたことの発表&質問タイム.「思いつくことは何でもやってみました」という方が多かったようです.

感想ピックアップ

攻撃
「怪しいファイルをみつけたけれど,それをどう使えばよいのかわからなかった」
「攻撃ポイントを探すには,grep検索が役立ちました」
「SQLインジェクションを試したけど,上手く突破できなかった」
防御
「開始直後にバックアップを取っていてよかった」
「ファイルの読み込み権限を変えられたのは痛手だった」
「ディレクトリの中身を全消しされてしまい,復旧に時間がかかってしまった.PHP側でポート番号を変えて再発を防ぎました」
「Apacheのログやhealth checkを参考に状況把握.受けた攻撃のログはヒントになりました」

競技結果

いち早くペアプログラミングの体制を整え,攻勢に転じたチーム2と,
開始直後に多重のバックアップを作成し,チーム2の攻撃から唯一生き延びたチーム1が接戦を繰り広げました.
終盤,自チームのWebサイトにある脆弱性を確実に修正したチーム1が得点を引き離し,優勝しました!

開始1時間は膠着状態がつづき,中盤はチーム1とチーム2が抜きつ抜かれつ,終盤はチーム2が引き離しました.

▲スコアボード

環境
競技環境 PHP, CentOS
競技時間 2時間半
参加人数 13-15人
結果(得点の高い順)
チーム名 得点[点]
チーム2 7809
チーム1 4609
チーム4 3058
チーム5 2055
チーム3 1520

競技中に活躍した知識・スキル

  • チーム内のコミュニケーション
  • Webアプリケーションのディレクトリ構造を推測する力
  • Apacheの設定ファイルやログを読む力
  • viエディタの操作
  • XSS(クロスサイトスクリプティング)の実行方法
  • SQLインジェクションの実行方法
  • Linuxコマンド(chmod, curl, grep, cat, … etc)

なお,上のような基礎知識・考え方は,OWASP SendaiのチャプターミーティングOWASP Natoriのチャプターミーティングで学ぶことができます.スキルアップの2歩目,3歩目として,こちらにも参加をお勧めします!

運営スタッフより

  • 楽しんでいただけましたでしょうか? ハッキング体験の第1歩として,少しでも持ち帰っていただけるものがありましたら幸いです(服部さん)
  • 多くの方に支援いただき,イベント開催することができましたことに感謝いたします. 参加者のみなさまを含め, 少しでも気づきやきっかけとなる場となっていましたら嬉しいです. 今後もより良い体験機会を継続して作っていきますので, みなさまよろしくお願いいたします.(佐藤将太さん)
  • ご参加,ご協力をいただきましたみなさん,ありがとうございました! 微力ながら,今後もこういった機会をつくれたらと思っていますので,楽しみにしていてください(菊池さん)
  • (当記事の筆者です) 私はエンジニア職ではないのですが,運営チームの末席に加えさせていただきました.みなさんから学ばせていただくことばかりで,感謝,感謝です(小野寺)

主催

協力/スポンサー

スペシャルサンクス

  • 今野夕貴さん
  • 可野沙織さん

次回について

次回は2018年1月20日(土) に開催させていただく予定です. 詳細が決まりましたら,connpassにてご案内いたします.

この記事と関連する外部ページ

  1. 第1回のイベント申込ページ 跡地(connpass)
  2. 仙台で攻防戦形式の勉強会 “Attack and Defense in Sendai” を開催しました(Takahito Kikuchi, Medium)
  3. OWASP Kyushu チャプターミーティング(connpass)
  4. OWASP Sendai チャプターミーティング(connpass)
  5. OWASP Natori チャプターミーティング(connpass)
  6. ソシラボ(正式名称:SOCiAL Laboratory)

スタッフ募集

Attack & Defense in Sendai は,開催にご協力いただける方も募集しています.(立ち上がったばかりのため,現役エンジニアの方にコミットいただけると,とても助かります!)
有志の個人グループですので,会員登録などは必要ありません.
少しでも興味を持っていただけましたら,お気軽にお問い合わせください.


第2回の開催レポート を読む