セキュリティ・キャンプ2016全国大会に参加しました

8月9日~13日の4泊5日にわたって開催されたセキュリティ・キャンプ全国大会2016に参加してきました。
大変短く、楽しくハイテンションに過ごすことができた5日間だったので、ハイテンションのままに書き連ねておきます。

講義時間割 内容
1・2-F 作って学ぶ低レイヤーネットワーク
3-C 脆弱性検出実践(ファジング技術と脆弱性報告)
4-C オンラインゲームアタック&ディフェンスチャレンジ
5-D みんなでクールなROPガジェットを探そうぜ
6-C 車載LAN上を流れるメッセージの解析
7-B 組み込みリアルタイムOSとIoTシステム演習

DAY1

会場到着まで

事情により参加が遅れたため、多くの方と同時に交流できるチャンスの1つを逃してしまうというところから私のセキュリティ・キャンプは始まりました。
遅れて参加した私にも到着早々話しかけてくださった方に本当に感謝感謝です。

特別講義

サイバーディフェンス研究所の福森さん、日本サイバー犯罪対策センター(JC3)の間仁田さんによる講義が行われました。

福森さんの講義では技術とは何か、技術を何に使うのかを考える機会になりました。
間仁田さんの講義では、犯罪とは何か、セキュリティに関する犯罪をどのように複数の機関で解決するか、といったことを考えさせられました。

DAY2

専門(1)、専門(2)

概要:前半でPC上でパケットを生成やキャプチャーするプログラムを自作することにより、パケットの構成を理解します。後半でArduinoのデジタ ル出力のみを使って10BASE-Tのフレームシーケンスを実際に送出する演習を行います。

この講義で、前半ではOSI参照モデルにおける2層のレベルでパケットに触れ、後半では1層のレベルでパケットに触れて講義が行われました。
ここではARPパケットに着目して、ARPを手元のツールで送受信を行ったり、 Arduinoのボードからパケットを送信する、といったことを行いました。 特に、普段マイコンで遊ぶことの多い私には、ArduinoからEthernetフレームが送信できていることが大変新鮮でした。
また、用いたツールに関連付けて、ARPついて起こりうる攻撃手法(ARP Spoofing)にも触れられて、大変興味深い講義でした。

午前8時30分から午後5時30分まで1日中演習を行っていたのですが、楽しくてあっという間でした。

CTF

今回のセキュリティ・キャンプにおけるCTFは、Raspberry Piを舞台にFlagを集め、得点を競うというものでした。

私は今回が初CTFでした。
まずRaspberry Piが舞台ということで、まず適当にポートスキャンした結果SSHとHTTPに加えて2つ怪しげにポートが空いていたので、そのあたりはWebあたりに強いチームメイトにお任せしました。
Raspberry Piの初期ユーザとパスワードは体が覚えていたのでSSH接続を試みた結果あっさりログイン出来てフラグがあったので驚きました。

その後はチームメイトに助言をもらいながらRaspberry Piに保存されていたバイナリの解析を行いました。
1つはどうやら引数の値からFlagの値を計算していたようで、解析すると連立方程式の解がFlagに対応することがわかりました。
連立方程式を手計算で解くと解が一意に定まらないことがわかったので、正しいFlagを求めるために 解の組み合わせをできるだけ多く試すスクリプトを書いて総当たり的にFlagを計算しました。
出力されたそれらしい値を提出すると整数解の最小の組み合わせ(基本ベクトル)がそのままFlagを生成していたらしく、正攻法とは言えないかもしれませんが総じて2問分の得点だけチームに貢献できてよかったです。

私がこれらのことをやっている間に、チームメイトが他の問題(Web系などなど)を攻めて得点につなげてくれていて、なんと私のグループは優勝できました!
チームメイトに感謝感謝、と言いながら、ひとえにCTFと言っても様々な形(問題形式)があるのだなぁ、と思い、とても興味がわきました。

DAY3

専門(3)

脆弱性検出に使われるセキュリティテスト「ファジング」や、これまでに学んだ事を活かして IoT 機器を始めとした製品に対して脆弱性発見に挑戦していただきます。そこから検証コード作成を含めた脆弱性報告の仕方についても実践していただきます。

この講義では、実際の製品に対して ファジングを行ってその結果を観察しました。

実際に脆弱性が発見された、といったことはなかったのですが、実際にツールがファジングに使っているデータが興味深いデータばかりでした。

専門(4)

オンラインゲームのプログラムなどによる自動プレイは、不正行為として禁止されているケースがほとんどです。しかし、不正行為自体はなくならず、近年では、自動化のみならずチートなどの行為も横行しており、対策に追われることも少なくありません。本講義では、オンラインWebゲームを運営する側とプレイする側に分かれて、運営側と攻撃側を体験します。

講義で使用されたゲームについてはこちらに詳しく書かれています。
講義は前半と後半に分けられ、私はプレイヤー側と運営側の両方を担当することができました。

プレイヤー側では、自分がゲームをプレイしやすいようにするためのコントローラが完成直前で時間切れになったため悔しい思いをしました。
サーバ側では、サーバのログを逐次見ながら、明らかに人為的なものではない(プログラムで実行されたような)挙動が発生した際に逐次対応できるよう努めました。

セキュリティの脆弱性以外にも、攻撃者によっていかに攻撃を効率よくさせないか、といったようなことと関連があるのでは、と思いました。

専門(5)

本講義ではReturn-oriented programming(ROP)で利用可能なコード断片(ROPガジェット)を探索するツールを自作・利用していきます。

ROP に着目した講義で、ROPガジェットを見つけて構成するという講義でした。
講義では、libcのバイナリに対してシェルを起動することを目的に、ROPガジェットをツールを用いて探し、構成しました。
ここでは4つのlibcが用意され、次のことを行う、といった演習でした。

  1. 1つのlibcに対してシェルを起動するよう、ROPガジェットを構成する×4

  2. 2つのlibcに対して1つのプログラムで両方ともシェルが起動できるようにROPガジェットを構成する

  3. 3つのlibcに対して1つのプログラムで(以下略

  4. 4つ(以下略

キャンプが始まる前までは全く未知の分野で、理解できるか大変不安でした。講義が始まってひととおり説明を受け、実際にROPガジェットを探して組み合わせ始めると、途端に楽しくなって、1つROPが完成できたときには大変興奮しました。

私はlibcに対してシェルを起動するプログラムを2つまで作ることができました。ほかの方の中には複数のlibcに対して同時に起動するものを作成できた方もいました。

講義を受けるまで不安が多かったのですが、講義後にはとても気持ちよく、引き続き勉強したくなりました。 この講義はスケジュールの都合上、他の講義より時間が短く、物足りなさも感じました。

DAY4

専門(6)

現在の自動車には数十のECU(制御コンピュータ)や、またセンサやアクチュエーターが搭載されており、それぞれCANやLINなどの通信ネットワークで結ばれてい ます。 今回は、CANの実験用ネットワークとECUのシミュレータを用意し、そこにELM327 を使ったアダプタで各人のPCからCANバスにアクセスし、流れているメッセージを受信し解析する方法を、LinuxPythonの環境を使ったハンズオン形式で行う予定です。

この講義では、CANのパケットを受信して、その内容をフォーマットに基づいて解析する、といったことを行いました。
CANのデータフォーマットについても丁寧に解説いただき、スクリプトを組んで実際にデータが解析できて大変面白かったです。

また、CANのデータフォーマットとその意味について説明があり、個人的には「なるほど…!!」と感動しました。

専門(7)

組込み/IoTシステムに搭載される組込みリアルタイムOSと通信ミドルウェアの仕組みについて、実機による演習を通して学んでいただきます。汎用システムとは 異なる、組込み/IoTシステムの世界を、ソフトウェアを中心に知ることができます。

普段マイコンをOSなしの環境下でプログラムを組む私にとっては、組込み用リアルタイムOSはまるで別の世界でした。
ふたを開けてみれば、形は違えどまるで通常のOSのようなスタイルでプログラムを組むことができて、大変便利だと感じました。
一方で組み込み特有の事情に起因する違いもあって、新鮮でした。

DAY5

グループワーク発表

私のグループは「小規模企業におけるセキュリティ対策」について考察しました。発表まで(ほとんど前日)に調査、考察をする中で、他のグループのテーマとも深く関わりがあるように思えてきて、「もともとそのような意図からこのグループワークは始まったのでは・・・?」と思いながら資料を作成しました。

実際に他のグループの発表を聞きながら自分のチームの発表を終えると、(冷静に考えれば容易にわかることかもしれないけれど)内容をうまく絞ることができていなかった、と反省しました。
他のグループの発表を聞きながら、その発想はなかった、と思うことも多々あって、個人的によい刺激になったと思います。

キャンプを終えて

セキュリティ・キャンプの5日間は本当に濃く、(感覚的に)短いものでした。
参加者の皆さん、チューター、講師の皆さんには大変感謝しております。本当にありがとうございました。

その他

食事

おいしい。

夜でも外が明るかったので、明るいと寝付けない私にとってはなかなか辛かった。