Null Thinking

ボードゲームとコンピュータを糧に生きています。

セキュリティ・キャンプ全国大会2015参加記

8月11日(火)〜15日(土)まで幕張で開催されたセキュリティ・キャンプ全国大会に参加してきました。
概要はこちら

f:id:tokky_cpp:20150821120458j:plain

f:id:tokky_cpp:20150821120605j:plain

 

来年以降の参加希望者へ

権利があるならまず応募してみよう!!
僕自身、セキュリティの知識は全くと言っていいほどありません。プログラミングには少し自信があって、アセンブリ読解したりしてるくらいで、XSSとかSQLインジェクションとかも知らないレベルでした。IPアドレスとかMACアドレスもΣ(´・д・`;)ナニソレ? って状態でも通りました(笑)。
とりあえず応募してみましょう!! 知識がなくても今後、伸びるだろうなと思ってもらえれば拾い上げてもらえます。応募用紙に思いの丈をぶつけましょう!
 
概要
参加者:50人
講師:45人
チューター:8人 
あれ、参加者より講師・チューターの方が多い……
 

参加経緯

今年チューターだったるくす氏に薦められたことがきっかけ。応募が始まったと聞いて、そういえばそんなものもあったな程度の軽い気持ちで応募してしまった。
 
時系列でどんなことしたのかや印象に残ったことをまとめていく。
非常に長ったらしいので適当に読み飛ばすことを推奨。最後のまとめは読んでね☆
 
 

Day 0 (8/10)

12時集合!? 朝早いの嫌だなーってことで都内にホテルを取って前泊。海芝浦駅に行ったり、上野動物園の夜間延長営業に行ったり好き勝手なことしてた。(前日にちょっと悲しい出来事があったのでうさはらし)
 
受講した講義
専門講義1   :1-B.AVRマイコンで作るBadUSB自作入門
専門講義2・3 :2・3-B.ツール自作で知るパケットとネットワークの仕組み
専門講義4   :4-A.HTTP2/QUIC入門
専門講義5   :5-A.JavaScriptの難読化読経
専門講義6   :6-B.一夜でできる?!PC用OS自作入門
専門講義7・8 :7・8-B.エミュレータ改造で知る様々なCPUアセンブラ
専門講義9   :9・10-B.FPGAによる独自CPU開発入門
専門講義10   :9・10-B.FPGAによる独自CPU開発入門
専門講義13・14:13・14-B.独自CPUのためのgcc,gas移植と改造
専門講義15  :15・16-C.ハードウェアセキュリティサイドチャネル攻撃の仕
組みと対策)
専門講義16  :15・16-C.ハードウェアセキュリティサイドチャネル攻撃の仕
組みと対策)
 
A,B,Cとか書いてるのはトラック。
A:高レイヤー
B:低レイヤー
C:解析
D:検知
 
 
Day 1 (8/11)
11:00 会場入り
10時頃に都内の宿を出て、11時過ぎに最寄り駅、海浜幕張到着。歩道橋を使えばアクセスが便利らしいが階段を荷物持って上がるのがつらいので下からアクセスしようとするも結局文明の利器が見つからず階段を荷物持って上がるハメに。来年行く人は諦めて階段上りましょう!(笑)
 
会場入りするとすでに半分くらいの参加者が到着済みで名刺交換会が繰り広げられていた。家が割と近いにも関わらず久しく会っていなかったるくす氏と半年ぶりに対面。
 
12:00 昼食
12時頃から会場付属のレストランでお昼ご飯。何だったか忘れたけどおいしく食べられたので良かった。緊張したり不安になったりすると食欲が無くなるのでかなり不安だったが結局出てくるものが美味しすぎて最終日までほぼ問題なく食べられた。頭フル回転なので食べないとやってられないが。
 
昼食後は再び名刺交換会。参加者50人中半数くらいと交換できた。
 
14:00~ 開講式・一般講義・チューター成果報告
開講式を挟んで一般講義。うとうとしている人もいたが、個人的には2020年のオリンピック・パラリンピック関連の話がとても面白かった。スポーツ情報学とかウェアラブルデバイスあたりの研究楽しそう。ハンマー投げの室伏選手はアスリートでもあり研究者でもあるらしい。ハンマーにセンサーをつけて音情報に変換するという研究をしているとのこと。1964年のオリンピックでのレガシー(遺産)は新幹線・高速道路・ラジオ体操などらしいが、2020年のレガシーはセキュリティ分野になるのではないかとのこと。
チューターの成果報告では、車のセキュリティについて考えるという題での発表があった。車にパケットが流れているとは知らなかった。残念ながら車は持っていないのでいじって遊べないが面白そう。組み込み系で暗号を分かる人が少ない!と言っていたので両方やってしまおうかな()
 
18:15~18:45 俺たち高レイヤーの講師だけど質問ある?
夕食の時間帯の後半で「俺たち高レイヤーの講師だけど質問ある?」というコーナーが開催された。高レイヤーは未知の領域であるが、高レイヤーの講義はほとんど取っていなくて講師の方の話を聞く機会がないので、あえて参加してみた。質問に対して答えていくというスタイル。高レイヤーの話に限らず、情報収集の話があったり、身になることはあったので参加して正解だった。ただ、夕食を大慌てで食べないといけなかったのが辛かった。
 
20:30~22:00 AVRマイコンで作るBadUSB自作入門
夕食後はいよいよトラック別の専門講義。基本的に低レイヤートラックを受講。BadUSB自作入門はワークショップ形式。マイコンの予備が無いから失敗できないというスリリングな環境の中でマイコン壊すこともなく無事何かしら入力させることに成功。

f:id:tokky_cpp:20150821120727j:plain

こんな感じで完成。USBポートに指すと勝手に入力が始まる。
 
22:00~ コンビニツアー
唯一軟禁状態から解放されるコンビニツアーには行かなかった。
 
23:00 就寝
 
 
Day 2 (8/12)
6:40 起床
 
8:30~12:30 ツール自作で知るパケットとネットワークの仕組み
2日目の午前の専門講義は「ツール自作で知るパケットとネットワークの仕組み」。
パケットのバイナリを眺めて、自分でバイナリエディタを使ってパケットを手組みして投げて観測するところまでできた。ネットワークまわりの知識がなさすぎてツール自作までは行き着かなかったがなかなかに面白かった。分からなかったら恥ずかしがらずにチューターや講師の方に聞いた方が良いと感じた。普段なら自力で調べて解決すべきだけど、講義時間が限られているので手が止まるのはもったいない。Wireshark自体初めて使うので使い方があやしかったがバイナリ見れればどうにかなるでしょって感じで進めていた。講義内容とは直接関係はないが、休憩中にツイストペアケーブルを切って中を見ることをした。ノイズが乗りにくいように物理特性まで考えてねじってあるらしい。よく考えられてるなー。断片をもらってきたので本のしおりにでもしようと思う。

f:id:tokky_cpp:20150821120717j:plain

 
13:30~15:25 HTTP2/QUIC入門
午後は第1希望の低レイヤーが通らなかったので、高レイヤートラックに出没。全く予備知識が無い状態でも基本的なところから説明があってふわーっと理解することができた。SPDYとかQUICとか初めて聞く単語がでてきたが、実際のデモを見ることでなんだかすごいんだなーということは理解できた。
 
15:35~17:30 JavaScriptの難読化読経
JSの難読化は楽しそうだが人間業ではなさそうという印象。後半は難読化されたJSからflagを探すCTF形式。結局1問も解けなくて残念な感じ(´・ω・`)
ブラウザの開発者ツールの使い方を把握しておかなかったのが敗因。
 
18:15~18:45 俺たち高レイヤートラックの講師だけど質問ある?
夕食後は再び高レイヤートラックの質疑応答イベント。実際見つけた脆弱性についての解説があったり、普段からどのようなことに気をつけていれば脆弱性を見つけやすくなるのかなど興味深い話だった。
 
19:00~20:50 一夜でできる?!PC用OS自作入門
夜は再び低レイヤーに戻ってきた。褒め上手な川合先生のおかげで文字入力ができるところまでは完成。テキストのプログラムを写経していただけだった(笑)
川合先生と『30日でできる!OS自作入門』を読むという約束をしてしまったので、近いうちに買おうと思う。(今回大量に資料もらってるので、すでに本棚がオーバーフローしている。)

f:id:tokky_cpp:20150821120715j:plain

 
21:00~22:00?? グループワーク
1時間でテーマや取材内容を決める必要があったが時間内に終わらなかった(´;ω;`)
 
Day 3 (8/13)
6:50 起床 
目覚ましより前に起きることに成功。
 
8:30~12:30 エミュレータ改造で知る様々なCPUアセンブラ
朝から坂井先生の講義。様々なアーキテクチャアセンブリを眺めてほげほげしていた。一度実行ファイルにしてからobjdumpで逆アセンブルすると眺めやすくなることは初耳だった。仕様書を見てここがこのオペランドなのかーって見てると時間がかかって仕方ないので、なんとなく読む技法を身につけようという雰囲気だった。似ている命令を見つけて、相違部分から推定すると捗る。実際にバイナリをいじって確認するという作業もなかなか面白かった。27種類のアーキテクチャがあってお腹いっぱい状態。
 
13:30~17:30 FPGAによる独自CPU開発入門
午後からは楽しみにしていたFPGAを使った講義。受講者よりも講師チューターの方が多いという状態。事前課題でちょこっとかじった程度のverilog HDLの知識ではなかなか辛かった。ほとんどアセンブリと言った感じで、乗算回路を書くのにさえ結構苦戦。CPUのコードはすでにあって、論理合成をするだけだったのだが、回路規模が大きくて30分くらいかかった。もっと高速化できないのかなー。

f:id:tokky_cpp:20150821120710j:plain

回路を記述するだけで無くてクロックとかチェック用のデータを流し込むためのテストベンチを作成しないといけないというのがなかなかやっかいなところ。一から回路を書くことを考えればverilogのプログラム(ほぼアセンブリと言った感じだが)から合成できるのはかなり画期的と言えそう。詳しくは知らないが、高位合成とかいうのもあるようで組み込み系の開発がしやすくなるのではないかと期待。それでも闇が深そうなイメージしか残らなかったが慣れれば楽しくなりそう。Alteraの安いやつだとアカデミック版で1万円ちょっと出せば手に入るらしいので、購入を検討中。ただ、この講義で使ったCPUは40000ロジックエレメント必要らしいが、Altera ED0は12000くらいしかロジックエレメントが無いらしく、動かすことはできないらしい(´・ω・`)
FPGAは回路を組むので当然だが、並列計算に向いているらしい。CPUまで行かなくとも、Cで書いて走らせたプログラムと比べてどの程度計算が高速化されるのか実験してみたい。
 
19:00~22:00 CTF4b in 幕張
夜はCTF4b。CTFとはなんぞや?って人はksnctfとか見てみると良いかも。セキュキャン通るまでCTFが何か知らなかったレベルでの参戦。開始直後に簡単な問題をささっと解いて一時的に9位だったものの、初心者だったのであとの問題はほとんど分からず、130点で撃沈。途中からお手上げ状態だったので妨害コンテンツのチュータープレゼンに聞き入っていた。来週のトレンドマイクロのCTFやら9月から3ヶ月連続で関西でCTF4bがあるようなので、それなりに勉強していきたい。
 
23:?? 就寝 
 
Day 4 (8/14)
7:00 起床
起床時間がどんどん遅くなっているが、この日も目覚ましより前に起床。
 
7:20 朝食
朝ご飯を食べていたら竹迫さんから最終日の成果発表の依頼が降ってきた。BadUSBの発表をすることにしたのだが、講義資料をよく読んでみたらきちんと動いていなかったことが判明。いろいろやってみた結果、PS/2からUSBに変換する基板の調子がおかしかったようで変換基板を交換していただいて無事動いた。発表当日の朝まで迷惑をかけてしまって申し訳ない気持ち。
 
8:30~12:30 独自CPUのためのgcc.gas移植と改造
昨日に引き続きFPGAを使った講義。セキュリティ分野ではなく、プログラミング的なのでついていけるかと思っていたが結局何やってるかイマイチ分からなかった。ふがいなさすぎる。ハードウェア的なrand命令?なるものを命令として追加してFPGAで動かしてみよう! という感じ。ハードウェア的な乱数と疑似乱数の何が違うのか正直分かってないので、今後の課題。Git使える前提で進められたのが辛かった。複数人でやるとなったら空気のように使えないと人権ないのだろうなー。一人での開発でもバージョン管理システムとして有用らしいので使い方覚えたい。
 
13:30~17:30 ハードウェアセキュリティサイドチャネル攻撃の仕組みと対策)
午後は久しぶりに低レイヤーを脱出して、解析トラックへ。この最後の時間帯は低レイヤートラックでは光ファイバーを使ってNTTまで回線通したりしててすごく楽しそうではあったが、こちらも引けを取らないくらいに楽しかった。160万円もするオシロスコープを使って計算によって発生する電気的な変化を読み取ってRSA暗号秘密鍵を読み取るというもの。アルゴリズムが単純すぎるからできるのだが、目で見て暗号が分かってしまうというのは恐ろしい。それから、キャッシュカードの中のICチップの計算挙動をみることでAES暗号を推定した。目視で確認することはできなかったが、2時間ほどツールを走らせてうまくいけば推定できてしまうというおそろしいもの。通常、大学院で15回の授業でやる内容を4時間に詰め込んでいたらしいが、それなりに(暗号の理論までは深入りしていないが)理解することができた。

f:id:tokky_cpp:20150821120501j:plain

 
19:00~20:50 企業プレゼンテーション
夕食後は企業プレゼン。しょっぱなのさくらインターネットのプレゼンがテンポ良くて印象に残っている。石狩データセンタの見学行ってみたい。あとNIRVANA KAIというネットワークの可視化ツールがすごくきれいかつ高機能ですごかった。印象に残るプレゼンとはどういうものなのか考えさせられた。
 
21:00~22:10 グループワーク
とにかく必死に取材。協力してくださった方々ありがとうございました!
 
22:40~??:?? グループワーク 
次の日の朝の発表のために26時くらいまで打ち合わせ&スライド作成。
 
26:10 就寝
 
Day 5 (8/15)
7:10 起床
目覚まし前に起きた気がする。
 
9:00~12:00 グループワーク発表
「未解決の問題」を大テーマにして、グループで解決を考えるもの。技術人材不足についての問題を考えるグループに入ることになった。話し合いの初日にテーマが決まらなかったりしてやばかったのだが、結果的にはナイスファイト賞をもらうことができて良かった。面白いアイデアを出してくれたひばり氏に圧倒的感謝。セキュリティ人材が8万人不足していると言われているが、どうやって解決しよう? ってことでインタビューを交えながら解決策を考えた。他のチーム(やチューターによる裏グループワーク)は徹夜していた人もいたようで、前日の2時に寝られただけでもよかった。
 
13:00~ 閉講式
閉講式では、もう終わってしまうのかという思いで泣きそうになってしまった。長いと思っていた5日間、あっという間に終わってしまった。帰りたくなかった。
 
15:00~ 記念撮影
写真撮影は人口密度がすごいことになっていて楽しかった。
 
最後の帰り際には出版社などからの寄付?で2冊本をいただけることになった。
グループワークの順位が高いグループから本を選べることになっていたので、かなり早い段階で好きな本を選ぶことができた。
 
1冊目はこれ
31バイトでつくるアセンブラプログラミング ?アセンブラ短歌の世界?

31バイトでつくるアセンブラプログラミング ?アセンブラ短歌の世界?

 

 内容としては、31バイトということばから推測できるようにアセンブラ短歌の話。注文してから印刷するオンデマンド形式になっていて、購入を悩んでいた本だったので手に入ってとても嬉しい。しかも竹迫さんと坂井さんのサインまで頂いてもったいなくて読めない()

電子書籍版ならすぐに手に入れることができるので、興味のある人は。

f:id:tokky_cpp:20150821120723j:plain 

 
2冊目はこれ
12ステップで作る組込みOS自作入門

12ステップで作る組込みOS自作入門

 

組み込み系やってみたいなーって気持ちとOSの勉強したいなーって気持ちがあって、両方できる!!って書名を見て手にした1冊。こちらも坂井さんのサインを頂いた。結構ハードルが高そうでおびえている。

 
 
まとめ
クラス制からトラック制に変わって、興味のある分野以外の問題も解答しないといけなくなったらしい。僕は興味のある分野がはっきり定まっていないので、応募段階でクラスに縛られなかったのはとても良かったと思う。興味のあるところだけではなく、知らないからあえて別のトラックの講義に顔を出してみるなんてことができるのがトラック制の良いところではないだろうか。「講義を選択する」ということができるようになって、今まで何も考えずに講義を決められていたのが、1つ1つ内容を見て決めるという形式になった。同じ時間帯にとても面白そうな講義が複数あるときなんかは分身したい!!と思うこともあったが、そうやって悩むことで自分自身の興味を知ることができると思う。講義選択段階で内容を見てると、低レイヤートラックばかりに目が行くので、低レイヤーに興味があるんだーってことを自分でも知ることができた。今回、自力ではやりづらいものを優先的に取ったつもりなので必然的にハードウェアを扱う低レイヤー中心となった。いろいろなトラックを分散して取ることも考えたが、結果としては、低レイヤー中心で取ることで、講師やチューターの方と長い時間関わることができてよかった。
キャンプの講義内容としては、できる人はどんどん先に進めるように作られている。基本的に時間ないにやろうとしていることは終わらない。(大学の授業15回分を4時間に詰め込んだりしているんだからそりゃそう)。入口だけやってあとはおうちに帰ってから興味があったらやってねっていう感じ。全体的に知識が圧倒的に不足していたので、講義時間中にはあまり高度なところまで踏み込まずに、基礎的なところをしっかり固めることを意識したつもり。 
 
「僕みたいなザコが来ちゃって良かったんでしょうかー」みたいな話を初日にチューターさんにしたら、「このキャンプの目的は『種をまくこと』だからこれから頑張ればいいんだよ」と言われました。他の参加者の応募用紙見てるとレベルの違いを感じてしまうが、ポテンシャルがあると思われたようなので、頑張らないとなーという感じ。キャンプで知り合いも増えたし、やりたいこともたくさん見つかったので、しばらくはその消化に追われそう。帰りの新幹線の中で書き出したら20個くらい出て来た。すぐ終わるのもあるけどわくわくする。
 
大学でものづくり系の面白さを広める団体に所属しているので、BadUSBのワークショップでセキュリティへの関心を広めていくつもり(竹迫さんへの了承は得てあるのであとはやる気を起こすだけ)
Arduino使ってマイコンに書き込む方法が分からなくて挫折中。
 
新品のノートを1冊用意して持って行くことをオススメする。あんまり周りにメモしている人がいなかったけど、聞いたことは忘れてしまうのが人間の常なので、メモした方が良いと思う。
 
近いうちに関西で何らかの勉強会を企画するつもりなので、興味ある人は手伝ってもらえると嬉しい。(めんどくさくてやらなくなりそうなので、ここで宣言してやらざるを得ない感じにする作戦)
 
もらってきた資料がすごいことになったw

f:id:tokky_cpp:20150821120722j:plain

f:id:tokky_cpp:20150821120706j:plain

 無限いろはす
 
帰りの新幹線から見えた富士山がきれいだった…… 久しぶりに空を見た。

f:id:tokky_cpp:20150821120453j:plain

 
では(*´∀`)ノシ