Mini #seccamp in Yokohama
○前置き
「セキュリティ・キャンプについて」 http://www.security-camp.org/outline/#index07
日曜日・月曜日と行われたセキュリティミニキャンプへと参加してきました。 今年の夏にキャンプに参加してたので、参加者側ではなくチュータとして参加しました。
本来チュータ枠はありませんでしたが、川合先生が円滑に進めたいとのことで、 コミュニティで募集をしてました。
内容は公式のpdfを見てもらえればわかると思いますが、 実習がOSとか組み込みな、低いレイヤなので、 普段はWebに住んでるぼくからすると、世界が違うのでちゃんとチュータできるかどうか…
という点も含めて、アセンブラもちらほらやってみたかったのでチュータに名乗りあげました。
/* 逆に誰も手を挙げなかったのは一体…? */
○講義内容
『プログラミング言語の歴史』 西尾講師(60分) 『セキュリティ・キャンプとCTF』 園田講師、竹迫講師(60分) 『事例に学ぶ危険なシステム設計』 園田講師(60分) 『Arduinoでの組込みOS自作体験』 坂井講師(60分) ———-Day1↑———-↓Day2———– 『超簡易PC用OS自作体験』 川合講師(160分) 『新しい暗号技術』 光成講師(110分)
ということで、 キャンプ勢のなかでもこのあたりをピンポイントに興味ある人、 横浜開催に来れる人、 になるとまったくいなかったてオチでしょうか。
結果として、タイトルのまんまで、超専門的でまったくついていけねぇなんてことはなく、 ぼくでも大丈夫だったので、逆にそれがメインの人からすれば真新しいことはないのかなあと。 むしろちょっと興味あるけど機会がなあ、みたいな人推奨みたいな感じです。
講義の話はタイトル通りなので、実習の部分を主に。
プログラミング言語~はパンチカードとか、かつてコンピュータができたころの話とかとか。 キャンプはそのままキャンプの話 事例に学ぶ~はWinnyの話でした。Winnyにはびこるウィルスを殺すには、みたいな。 暗号技術はすごい簡単に説明していたと思うのですが、やっぱり??となる部分が…数学むずかしい…
スライドが公開されています => http://www.slideshare.net/herumi/ss-27882746 数学ガール読んでたので、ある程度はついていけました。数学ガール読みましょう((
○『Arduinoでの組込みOS自作体験』
Arudinoとありますが、実際はシミュレータを使ってそれっぽいことをやる感じでした。
C言語でかかれたやつをいじくりまわして。 make でコンパイルして。 avr-elf-gdb でシミュレータを走らせて。 別のスクリーンから cuコマンドを使用して、そのデバイスに対してシリアル通信をして。 というような感じだったとおもいます!
若干プログラム周りのやることが追加されてますが、ほぼこのページ通りな気がします。 http://kozos.jp/vmimage/cui.html
・チュータポイント うまくうごかないーとか、そもそもVM動かないんですけどというあたりから見て、 一緒に悩みながら再起動したり試したりでなんとか。。
あとで聞いた話、シミュレータも完璧ではないので、 タイミングによってはうまく引っかからなくて結果がでないこともあるそうです。
・反省点 “事前にインストールしておくこと.txt"のようなものを受け取っていたので、 そこから自分で発掘して下調べをしておくべきだった。 もしくは坂井先生に個別連絡をとって、下準備を聞いておくべきだった。
screenコマンドを全くしらないのはまずい感あるので、多少なりとも勉強したい。 tmuxとかでも。
歩きまわって各自の様子を見るべきだった。
なかなか聞きづらい、手を挙げづらい、という思いがやっぱりあると思う。 なので、様子を見て、詰まってるっぽいならこっちから聞いてみる。
・良かった点 NOP
○『超簡易PC用OS自作体験』
はじめはアセンブラを書いて、動いたやったー。 途中からセクタを読み込めるようにして、 あとはC言語でそれっぽい画面をつくる、キー入力をする、という具合です。
「30日でできる! OS自作入門」をさらに説明するのに難しそうな箇所をバンバン削って 「2時間でできる!超簡易PC用OS自作体験」とのことでした。
INT 0x10 とか INT 0x13 とか、なんやねん、て質問があったんですけど、他のレジスタとの兼ね合いで やる内容が決まってるんですって返ししかできなかったので、こちらをみてください。 http://en.wikipedia.org/wiki/INT_10H http://en.wikipedia.org/wiki/INT_13H
・チュータポイント
資料をまるまるもらっていたので、事前に全部通してやりました。
ひたすら紙->目->手->PCの作業
資料にはコードだけじゃなくて、それが何を意味しているかの解説込だったので、 理解の助けになっていたとおもいます。
実施中に何人かにもいったのですけど、 フォント増やすのはかなり地道な作業になるから、 そのあたりを構造体とかポインタとかカッチョいい感じに使って、 リファクタリングとかやってみたらいいんじゃないかなー、なんて話を。 実際にしている人はいなかったっぽいですけども..w
あとは、forまわして動きをつけたりしてる人もいましたね。 他にも、sin関数移してきてゲームっぽいものを作ろうとしてたり、 Brainf*ck専用OS(?)を作ろうとしている人なんかも。 後者についてはこわすぎるので、しかるべき場所にいくべきです((
・反省点 ぼくの事前学習がちょっと不足してた。 エラー対応のパターンとか。
Terapadの行表示をさせるのを忘れていた。
・良かった点 初日からの改善で、演習始まったら見て回ってた。 抜群の目grep力(皆無)でエラーっぽいのを見つけて声をかけるようにした。
エラーが出る方がC言語側に集中していたので、対応しやすかった。
コンパイルエラー出たら紙とにらめっこするよりも、エラー文を読んだほうが色々よさそうです。
○その他
最後の人生相談の場にいなくてごめんなさい。 いつでもリプライでもDMでも顔本でもなんでも聞いてくれれば反応します。 もちろん参加者じゃなくても、ちょっとキャンプ興味あるんだよな、 参加した人の話聞きてーなー俺もいけるんかなーくらいの軽いノリでも大歓迎です。
こんなぼくの話でよければいくらでもします。
ぼくのかいた応募用紙についてもちらっと見ると参考になりそーなことが書いてあるかもしれないです。 セキュリティキャンプ2013(web)に参加します+応募用紙のあれ
キャンプ中に言うのを忘れてたことがひとつ。 いろんな知識とか技術とかを受け取ったと思うんですけど、 なにかしらの形でそれらを出力していけるといいですよね。
voidじゃなくて、せめてもbool。うんともすんとも言わねえ…というのはいささか勿体無い気も。
ぼくもここは夏キャンプ分の出力できてないので、まだまだこれからですねって話ですが..w
それともう一つ。チャンスは掴んでいけ、というところです。 最初にも書いたのですが、コミュニティのほうで募集をかけており、 1週間たっても誰も名乗り出ていなかったのでやってみるかーという思いで手を上げました。 結果、チュータのお仕事がちゃんとこなせていたかなんてわかりません (=講師陣・参加者から見てどうだったか…) が、面白い話がたくさん聞けましたし、もっとがんばらなくちゃなーって気になりました。
各地のミニキャンプはキャンプ予選みたな形だと思うのですが、 ここにチュータ参加できたのは、ある種のチュータ予選みたいな話でもあってよかったとおもいます。 いきなりLTやって!というのもいい経験ですし、LTとはいえスライドづくりや説明の甘さも思い知りました。
個人的には「にゃんぱすー [反応をみる] はい、ということで2回めのLTをー…」はよかった(やりきった感
LTで喋ったことの補足記事もかきます。 とくに二回目の方はあたふたしすぎてまったくなにがなんだかわからなかったので本当に申し訳なかったです。
○さいごに
@参加者のみなさんへ ミニキャンプはどうでしたか。 チュータ力不足につきサポートしきれない点もありましたが、 みなさんなんとかやりきったのかなーと勝手に思っています。
できる人できない人が混在していたので、1か0かでさくっと分類してぼくからのメッセージを書きますね。 脳内のメモリは限られてますし、読むだけ読んで、そのまま/dev/nullへでも送ってください。
・簡単だと思った人 もっと勉強して、もっとプログラムを書いて、もっとパケットを読んで、来夏のキャンプに備えましょう。
若干の上下幅はあるものの、同年代のすごい人達がたくさん来ます。 普段できない話や、あたらしい視点、ひらめき、人脈、etc…
キャンプで得られるものは講師陣からの卓越した技術や知識だけではないとおもいます。 過去のキャンプ生…できれば最近なほうがいいですねw、を見るとその様子が見て取れるのではないでしょうか。
そんなセキュリティキャンプ、どうですか。
・難しいと思った人
やったことはすべて与えられています。ゆっくりと復習してみましょう。 そのときに、なにがわからないか、1つずつ調べていきましょう。 必要であればお手伝いします。
そして、やっぱりキャンプなんかむりだろー、という前にまずは手を動かしてみませんか?
とはいえ新しい何かを作るのはアイデアないしなあ、というのであれば、とても素晴らしいアイテムをもっていますよね。
坂井先生のArduinoシミュレータ、川合先生の自作OS。 このプログラムをいじくり倒して、あれこれしてみてはどうでしょうか?
@講師陣、運営なみなさんへ
いろいろと至らぬ点があったかと思いますが、いずれも言い訳をして捨てることはしません。 粛々と受け止め、改善策を考え、あれこれ試して、次の機会に備えます。
ぼくの知らない世界がたくさん見えて、チュータとはいえ参加者側の気分でした。 アセンブラやOSなど、興味がでてきたので、時間をみてちょっとずつ手を出してみようとおもいます。
キャンプ以外にも、いろいろなところで今後もお世話になるかと思います。 そのときはまた、よろしくお願いします。
おまけ。
短歌を読んでみたんですが、思った以上に難しくて白目。 味わい深さどころか、57577の形になっただけの要修行なレベル。ここからがんばります。 DOSです。
C:\DOCUME~1\user\デスク~1>fib.com -d 2CE5:0100 B3 00 BF 01 00 B4 4C B2-31 B1 06 50 80 EC 4A CD ......L.1..P..J. 2CE5:0110 21 00 DA 57 89 DF 5B 90-01 FB E2 F3 58 EB F0 00 !..W..[.....X... 2CE5:0120 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 2CE5:0130 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 2CE5:0140 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 2CE5:0150 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 2CE5:0160 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 2CE5:0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ -g 112358プログラムは正常に終了しました. -q C:\DOCUME~1\user\デスク~1>
B3 00 BF 01 00B4 4C B2 31 B1 06 50 80 EC 4A CD 21 00 DA 57 89 DF 5B 90 01 FB E2 F3 58 EB F0