セキュリティ・キャンプ全国大会2017に参加してきた

8/14(月) ~ 8/18(金)の5日間、クロスウェーブ府中にて開催されたセキュリティ・キャンプ全国大会2017に参加してきたのでその感想を書こうと思います。

www.ipa.go.jp

セキュリティ・キャンプとは、22歳以下の学生を対象とした情報セキュリティに関する合宿形式のイベントです。情報セキュリティ業界の最前線で活躍する人たちから最先端の講義を受けることができます。ちなみに宿泊費や交通費等は全て主催者側で負担してくれます。

Day 1

真面目に5日分の服を準備して持っていきましたが、荷物が重すぎて会場までの移動が大変でした。会場で洗濯できるので5日分も要らないです。当日は受付開始30分前ぐらいに会場に着きましたが、既に結構たくさんの参加者が会場入りしていて、その人たちと名刺交換したり自己紹介したりしました。

開会式が行われた後、まず上野さんによる「セキュリティ基礎」という講義がありました。

AIによる自動化が進む中で、今後も残るセキュリティの仕事とは何かという議題で同じ班の人とディスカッションしました。

次にJPCERT/CCの小宮山さんによる特別講義がありました。

海外で情報セキュリティの仕事をする上での苦労話や体験秘話などを聞くことができました。あと単純にお金が欲しいだけならセキュリティエンジニアになるよりひよこ鑑定士になった方が良いという話も聞きました(笑)。 doda.jp

次にサイバーディフェンス社の大徳さんによる特別講義を受けました。

主にフォレンジックの話でした。大徳さんは本当に自分が好きなことを仕事にできているんだなという印象を受けました。

Day 2

この日から専門講義が始まります。選択コースの人は7月頃にアンケートで受けたい講義を聞かれます。自分は出来るだけ広い分野を学びたかったのでA〜Eトラックまで万遍なく選ぶようにしました。結果全講義第一希望で通ったので良かったです。

A1 Powershellベースのマルウェアとその防御手法

最初の専門講義はマクニカネットワークスの凌翔太さんによるPowershellを使ったマルウェアについての講義でした。

講義の前半は、マルウェアとは?というところから始まりPowershellの基礎やPowershellベースのマルウェアの特徴などを学びました。山手線ゲーム風にマルウェアの名前を言ったりもしました(笑)。後半は2チームに分かれ、ShinoBOTを使って実際にC2サーバと通信するPowershellスクリプトを書きました。自分はコマンドの実行結果をC2サーバに送信する部分の処理を担当しました。どちらのチームが先にPCから特定のファイルを窃取できるかを競い、チームで協力して先にファイルの内容を読み取れました。講義の終わりにはBadUSBからPowershellスクリプトを起動したり実行後Powershellスクリプトのプロンプトを見えないようにするデモを凌さんに見せてもらいました。Powershell恐ろしい・・・と言わざるを得ませんでした。凌さんに会えたのも嬉しかったですし、内容的にも一番興味がある講義だったので受けることが出来て良かったです。想像通りというか想像以上に面白かったです。

D2~3 カーネルエクスプロイトによるシステム権限奪取

後半は神戸大学の木村さんによるカーネルエクスプロイトの講義でした。正直キャンプでやるまで事前課題でしかLinuxカーネルは触れてこなかったので当日ついていけるかどうか不安でした。前半はまずLinuxメモリ管理の基礎ということでセグメント・ページング機構やリングプロテクションなどについて学んだりBadIRET(CVE-2014-9322)を使って単純にカーネルをクラッシュさせたりしました。その次にWebkit脆弱性(CVE-2014-1303)を使ってpidを取得したりファイルシステムのダンプを読み取ったりしました。ファイルシステムのダンプを取るには3つのシステムコールを呼ぶ必要があったのですがヘルパー関数があったので自分でROPを組んで実装するシステムコールは1つだけでした。それでもかなり時間がかかり、結局ファイルシステムのダンプに成功したのは制限時間ギリギリでした。BadIRETで権限昇格を行う仕組みについては理解できなかったので復習しようと思います。その後最後の1時間でカーネルエクスプロイトを防ぐ手法についてディスカッションを行いました。結構多くの人がintelのチップレベルで実装したROP防止機構について話していました。とても内容が難しくて理解できなかった部分もありましたがその分知的好奇心を刺激された感じがして面白かったです。

Day 3

E4 サイバー犯罪捜査の現場

3日目前半は千葉県警の方々によるサイバー犯罪捜査の現場に関する講義でした。

サイバー犯罪捜査班の仕事内容や現在のサイバー犯罪の現状などについて話を聞いた後、捜索・差し押さえ演習を行ってデータを解析し証拠を集めました。あまり詳しいことは書けませんがかなり面白い講義でした。来年もあれば受講することをお勧めします。

A5 Availability Challenge ~サービスの可用性を確保せよ~

3日目後半はラックの川口さんによる講義でした。いわゆるHardeningのような感じで、ECサイトが動作しているサーバーの可用性を確保し続けてチームごとに売上を競うという内容でした。サーバーには脆弱性のあるサービスがインストールされていたり定期的に様々な攻撃が飛んできます。僕はチームの中で売上の監視を担当したり時々サービスの状態を確認したりしました。最初の方でWebページの改ざんに気付くのが遅れたことが少し悔しかったですが、結果的に一番売上が高かったので楽しかったです。

専門講義が終わった後は2つのBoFとサイバーディフェンス社の企業プレゼンを受けて寝ました。

Day 4

専門講義最終日です。

C6 スマートフォン向けゲームのセキュリティ

午前中はDeNAの杉山さんによるゲームのチート対策についての講義でした。

事前課題が面白かったので講義もとても楽しみでした。Androidエミュレータを使ってゲームを動かし、メモリを改ざんして敵のHPを0にしたりなど様々なチートを行いました。途中でゲームデータがリセットされてしまったのが悲しかったです・・・。

A7 ファジング実習

IPAの小林さんとシマンテックの山下さんによるファジングの講義でした。

前半の2時間は小林さんによるpeachを使ったネットワーク経由でのファジングに関する講義でした。事前課題をあんまりしっかりやっていなかったので少々不安でしたがpeachの使い方など一から順番に説明する感じの講義だったので非常に分かりやすい内容でした。後半2時間は講師が山下さんに交代し、aflを使ってC言語のプログラムに対してのファジングを行いました。初めてaflを使ったのですが短時間で結構クラッシュが見つかったので便利だなあと思いました。CTFのpwn問でも使えそうです。

専門講義の後はCybozuの企業プレゼンを聞いてグループワークをやって寝ました。なかなか意見がまとまらなかったので深夜まで頑張ってくれた資料作成担当の人には頭が上がりません。あとサプライズプレゼントということで書籍やステッカーなどのグッズがもらえました。年齢の若い順に好きなものを取っていく感じだったので結構自分が欲しかったものが手に入りました(特にShinoBOTステッカー)。

Day 5

グループワークの発表がありました。発表担当だったのですが自分が作っていないスライドを使って発表するのは初めてだったのでちゃんと意図が伝わるか不安でした。一応形になったとは思います。その後修了証が配られたり閉会式があったりして終わりました。あと#seccampがトレンド入りしてました。

最後に

たくさんの書籍やグッズを頂きました。5日分の服にこれらが加わり、帰りの荷物が重すぎてダメでした。 f:id:tuz358:20170821212949j:plain

セキュリティ・キャンプはとにかく充実していて最高でした。今後はチューターに応募するなどしてセキュリティ・キャンプに関わり続けていきたいと思います。関係者の皆様本当にありがとうございました。