ふるつき

私は素直に思ったことを書いてるけど、上から目線だって言われる

セキュリティキャンプ全国大会

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

師匠のブログもあわせてどうぞ

ydfj.blogspot.jp

とりあえず↓に日記みたいなのを書いてあるので。

セキュリティキャンプ1日目

こんばんは、ふるつきです。記録を取る意味でも、今のうちに書き始めています。今回は、正直に自分の思ったことを描いていきたいとおもいます。

念願かなってセキュリティキャンプ全国大会に参加してます。知人率とかを考えると去年参加しておくのが大吉だったんですが、去年はチキン太郎になってしまったので、今年の参加になります。今年にしてよかったところは師匠が一緒に通ったところですね。実はクラスメイトからもう一人も応募していたのですが、彼は310分の82に漏れたのでいませんでした。

私は朝六時半に起きて、身支度を整えて家を出、12:15頃に会場につきました。遠い!!! おかげでけものフレンズをみてる暇なんてなかった。

そういうながい行程を経て、おしりや腰がいたくなりつつ、やっとこ会場に着いて名前をいうと、名札を渡されました。本人認証なかったの面白いな。それからお昼ごはんを食べました。いきなりお昼ごはんだったけど仲良く食べました。ホントだよ! 集合時間のことを考えても、会場でお昼ごはんを用意してくれたのはとてもありがたかったです。

ご飯を食べた後は、名刺交換会でした。多分ただの自由時間だったんだけど、みんな席をたって、気体分子のように動きまわっては挨拶をし、名刺を交換していました。

私は名刺交換にさしたる意義も感じられなかったので頑張って抵抗したのですが、その結果普通に名刺交換をしていました。途中で師匠の名刺がきれたので、一緒にノベルティに入っていたハンドスピナを回してモーメントモーメントジャイロジャイロと言っていたら、ハンドスピナのささくれが指に埋まりました。

それからやっと開会です。いろんな話を聞いてわくわくしつつ、「早く本題に入ってくれ!」と思っていました。いろんな説明を受けた後、「セキュリティ基礎」がありました。

セキュリティ基礎では、今後セキュリティ業界でどんな仕事がAIに取って代わられるだろうということをグループディスカッションしました。毎回セキュリティキャンプ系ではこういうディスカッションが最初にあるのですがこれはアイスブレイクとしてはなかなか有効だと思います。同じグループの人のキャラが探れるし、会話のハードルが下がるので。

私は理想論が好きなので、人間の営みはすべて機械で置換されて欲しいと思ってるし、そう遠くない未来であると信じてます。

その後、今度は特別講義として、2つの講義がありました。一つはJPCERTの人の話で、その人がどんな仕事をしているかという話なのですが、なんでこんなにおもしろい話ができるんだというほど面白く話をしてくれました。特に森見登美彦太陽の塔を引用したところは最高でした(これは本質じゃないけど)。

それからもうひとつは、サイバーディフェンスの型がフォレンジック系の話をしてくれたのですが、ヤマとオチがなくて眠くなりました。というか眠ってしまいました。チュータの人に起こされたような気も、そうでないような気もします。しかし、眠りを誘う話し方はともかく、内容はとても興味深いものでした。フォレンジックってお仕事ってイメージがあるけど、趣味でやりたかったらどういう道があるんだろ。

続いて、チュータの人の紹介を兼ねた発表がありました。これは三人だけだったのですが、どの人も尖り具合がすごくて、一口に言えばぶっ飛んでいました。あれに憧れてセキュリティキャンプに来たのだという気持ちになりました。

そこまでして、夕飯を食べ、それからグループワークでした。グループワークでは、数日かけて、8人程度で、何か問題を解決する姿勢を見せていこうというようなものです。いろんな人に話を聞き、どんなことを自分たちがすればいいのかを考えて、最終日に発表することになります。現状、これはとても面倒な講義に見えます。

それで22:00になりまして、解散しました。おい待て、手を動かしたいんだが。部屋は広くて快適です。師匠がやってきて、私がこうして記事を書くのを妨害してきたりしています。

Day2

おはようございます。大体六時半くらいに起きて、朝の支度をして、師匠と一緒に朝ごはんをたべようとしたのですが、師匠はまだ起きていないっぽくて、師匠の部屋もわからんで困りました。一か八かということで不確かな記憶を探って師匠の部屋と思われる番号にモーニングコールをしました。大当たり。間違えていたら舌を噛んで死ぬところでした。

朝ごはんを食べて、またけものフレンズを見逃しました。あしたは見る。朝ごはんの会場にはそこそこ人がいたのですが、そこかしこから変な話が聞こえてきて、なるほどセキュリティキャンプ、となりました。

Day3

おはようございます。眠った感覚すらないまま深く寝ててなんとか七時過ぎに起きて戦々恐々でした。師匠は起きてた。昨晩は師匠に邪魔されて(HUNGER GAMEの一ページ目をよまされてた・D2,3の資料を見てた)かけなかったので今から昨日のことを書いていくわけです。

Day2振り返り

Day2では、Dの解析トラック(カーネルのエクスプロイトまわり)の授業を受講しました。講師は、がちゃぴん先生とかるくす先生です。D1ががちゃぴん先生のカーネルエクスプロイト入門編で、D2,3がるくす先生による実践編のような位置づけでした。

D1では、まずカーネルソースの大雑把な構造から始まりました。大体この話だけで学校のオペレーティングシステムの授業を越えて行きました。

それから、カーネル周りの知識として、カーネルのダンプ(メモリ全部のダンプ)の解析(あるプロセスが脆弱性を突かれてメモリをアホほど食べているのでそれを突き止める。フォレンジックっぽい)をやったり(できなかった)、Dirty COWについて簡単な仕組みとPOCを渡されてこれをもうちょい実用的にしてくれといわれたりしました(できなかった)。あとあと、セキュリティキャンプの応募課題(るくす氏が出してた)のフォローアップがありました。私はこの課題は挑戦しかけて諦めたのでなにもわからなかった。

というわからないづくしの時間をすごしました。でも絶対無駄じゃないし、丁寧に資料が作られていたのでまた読み返してきっちり倒します。

この講義は、キャンプ最初の「洗礼」って感じでしたね。

お昼を挟んで、こんどはるくす先生のD2,3でした。これは究極的にはBadIRET(これは何に分類されるの? CVE?)で権限昇格をしようというものなのですが(さらに言えばWebKitの任意コード実行から権限昇格したい)、まず前座としてBadIRETの原理でカーネルを落とそうということをやりました。落とすだけならもうコードをるくす先生が書いていたのですが、これにちょっとだけ細工をして、レジスタをいじってから落とすとかしました。運が良いと結果が出るらしいですが、徳を積みすぎてほぼ毎回でました。

こんどはブラウザほうからアプローチして、(これも任意コード実行のところはるくす先生が書いてくれていたので、)試しに fd = open("/dev", 0); getdents(fd, buf, 4096); write(1, buf, 4096) するシェルコ―ドを書いて動かそうという演習がありました。これがいろいろはまりどころがあって、なかなか進まず、なんとかこれができたくらいで夕食になりました(ちなみに一番に出来た。私すごい)。

夕食は同じ講義の人とたべて、ちょっと仲良くなりました。

夕食後も同じことをやって、更に進んで、BadIRETでの権限昇格コードを書き始めようというところまで来ました。しかしこれがとてもむずかしく、原理が理解できず、コードもまたかけない。悩みに悩んでタイムアップでした。悔しい。○されました。

21時から22時までは、(権限昇格が難しすぎたので急遽)カーネル脆弱性の緩和策などのサーベイになりました。私はBadIRET頑張りたかったぞ。急にいわれて時間もそんなにないなかで、みんないろんなことを調べていて(しかもちょっと理解していたっぽい)、驚愕でした(私はなにもわからなかったということ)。

これでやっと講義がおわり、昨日が終わったというわけです。本当に疲れていて、疲れ of 疲れという感じでした。でも楽しかった気持ちに嘘はないし、手加減してくれなんて思ってないよ。

Day3

こんばんは、折り返し地点を過ぎました。今日もくたびれました。あと十数分で就寝推奨時間ですが、師匠とぐだぐだしているとこの日記を書くのにも一時間くらいかかるというわけです。

今日は2つの講義と、2つのBoF(??講義よりも講演に近いものだと思う)と企業講演とグループワークがありました。

午前の講義では、Dトラックの、「マルウェア x 機械学習」を受けました。機械学習系の講義を一個とっておこうかな〜くらいの気持ちでとって、事前課題がなかったので、機械学習の知識は(そしてマルウェアの知識も)一切なしで受けました。これって相当阿呆ですね。

講義としては、機械学習の簡単な説明(機械学習出ないものとの差異とか)から始まり、じゃあ機械学習マルウェア検知するならどうやってやる? みたいな話をグループでしました。ありきたりな選択肢しか出ませんでしたがまあそれは良いです。講師の人からは、バイナリのタイムスタンプがわりと効果的という話をききました。

ここまでやって、続いてデータセット(トレーニングようマルウェア・正常プログラム1000件ずつ、評価用マルウェア・正常プログラム500件ずつ)と、簡単なランダムフォレストの実装、バイナリファイルからの特徴量の抽出サンプル(ひどい特徴の選び方をしているやつ。出力フォーマットのサンプルというわけ)が渡されまして、これを改善していく(特徴の選び方を変えていく)という演習をやりました。

最初はAccurancy(確からしさ。式は割愛)が5割とか(五割くらい検知するし、五割くらい誤検知する感じ)だったわけですが、20分程度かな? の試行錯誤で、87%程度まで上がりました(7割くらい検知するし、1割くらい誤検知する感じだったと思う)。特徴としては{タイムスタンプ、バイナリサイズ、DLLのリンク量、DLLから読んでる関数の数、シンボル数}くらいを採用しました。9割行かなくて残念(これらの他に静的にぱっと取れる値を思いつかなかった)でしたが、同じ講義を受けていた人の中では一番いい値が出たようです。 私って優秀なのでは!?

そこまでで時間いっぱいでした。続いてお昼ですが、一人で黙々と食べました。おわり。

午後の講義は「信じて送り出した家庭用ルータがNetBSDにドハマリしてloginプロンプトを返してくるようになるわけがない」でした。この講義では結局VirtualBoxNetBSDを入れて、そこでラズベリーパイ用のNetBSDをビルドしました。そしてそれをラズパイに書き込んで起動ヤッターという感じです。それだけしかしていなくて、あとはこぼれ話がいろいろという感じだたのですが、私はラズベリーパイ用のイメージのクロスコンパイルで失敗しまくってうえええって言っていました。これの原因はメモリが足りないというものだったのですが、1Gじゃあ足りないんですね……。

はい、そのあと夕食ですが、割と席指定の夕食で、同じ講義を受けていた ukn さんと、昨日お世話になったるくす先生、コアキャンプに来ていた hama さんと食べました。私は静かに座っているかかりをしていました。まあみんな知っている人だったので自己紹介とかまあいらんでしょみたいな気持ちです。そういえば hama さんと以前会った時は阿呆ほど煽られたんですが今日は煽られなかったので綺麗に忘れられているっぽいですね。

夕食後はBoFと企業講演でした。BoFはあんまり書くことないと思うんですが、二個目の講義がものすごくためになるというか、セキュリティとはみたいな本質情報を突いてくれるもので、今年のキャンプで一番忘れられない話になりそうでした。ひとつだけ言っておくと私はCIAと喧嘩なんてしません。○されちゃう。企業講演もあんまり書くことない気がします。へ〜という感じだったし各企業もうちょっと短く発表して多くの人にリーチしたほうがみんな幸せ度が高いのでは? と思いました。

その後はグループワークでした。こういうことを言うと軽蔑されるし嫌なんですが、グループワークのメンバリーダが結構苦手のようです。考え方が合わないというか、地雷感がありつらい。

Day4

全講義が終わってしまい哀愁を感じてます。こんばんは。今日はゲームセキュリティに関する講義を受けてきました。午前がスマートフォンのゲームセキュリティで、午後がゲームのセキュリティでした。

午前では、はじめはブラウザ上のスマホゲーっぽいのをチートしてたのですが実は解けなかった(あると思ってたサーバ側の処理がなかったらしくてめっちゃ簡単だった。試してみればよかった……)。 続いてはAndroidエミュレータ立ち上げて、講師の人が2週間くらいで作ったと言ってたゲームのチートをやりました(ゲームとしての完成度が高くてすごかった)。メモリ書き換えとかファイル書き換えとか通信書き換えをやっていろいろチートしました。ファイル書き換えはやったことなかったので憶えました。あと、通信がxor -> base64 で難読化されてたんですが、 xor に気がつけずちょっと悔しかったです。

この講義ではどうやってチートするのかということと合わせて、開発者側の視点での話も聞けたので大変良かったです。

午後はまた別のゲームチートで、講師の人が見るからにやばそう(というか愛甲さんという方なのですが)で実際にやばく、開幕即演習というか演習しかなく、ひたすら手を動かしていました。UnityゲームのC#なdllをいじるのは一瞬だったんですが、apkの.soを解析して……となるとなかなか厳しく、有意義でつらい時間を過ごしました。

企業講演でサイボウズさんのお話を聞き(普通のいけてる会社という感想でした)、そしてグループワークでした。

グループワークのやばいところは個人的にリーダへのヘイトが溜まっていくところです。ずっと相容れなさを感じてる。

そして!! その後!! キャンプ恒例のプレゼントがありました。翌日時間がなさそうだったからこの日にあったんですかね。

Day5

講義が終わったという安堵と、前日の晩に資料作成のうち私のやるべきところは終わっていた(たたき台ばかりつくってた)のでほとんど死んでました。

師匠がそこそこ早起きしてて6:40くらいにモーニングコールが来ました。うつらうつらという感じだったので仕方なく起きて、朝ごはんを食べました。そのあと師匠が部屋に来てけものフレンズをまるまる一話みながら、師匠の午後の発表資料を見たりしていました。

そしたらちょっとおそくなっちゃってぎりぎりに部屋を出る羽目になりました。ここでついに**さんという方にお会いしました(後述よてい)。 で、ぎりぎりに部屋に入ったわけですがやっぱりというか最終日ということで人がちょっとすくない。あとみんな青いセキュリティキャンプTシャツを着てました。うちのグループでも2人くらいいませんでした。

まあ呼び出しをかけつつ進行して、ちょっと1時間くらいの調整作業の末(この間私はほとんどなにもしてない)、グループワーク資料が完成、発表と相成りました。

グループワーク発表は面白いところとか上手なところとかそうでないところとかありましたが、去年の程の面白さが合ったのかどうかは微妙じゃないかなと思っています。うちのチームもそれなりの(無難な感じで、ちょっと穴がありそうな)発表をしました。

それでお昼を食べ、午後は成果発表でした。まずは集中コースで師匠の発表とか、その他の頭のネジが飛んでそうな発表を聞いて「やっぱり集中は強い……」って思うなどしてました。選択も一応成果報告あって、書くトラックごとにプロデューサという人がいてその人が指名した人がちょっとだけしゃべるんですが、私D2、3、4あたりでそれなりに成果を出してた気がするしDトラックの成果報告することになるかなとか驕ってたんですが全然そんなことはなかった。笑ってくれ

名残惜しいですがこれでだいたい全過程が終了となりまして、あとは挨拶などを聞き、写真撮影などし、解散でした。

終わった後ご飯でもという感じだったのですが、きっと都心方面だろうとたかをくくって先に歩を進めていたら逆で、結局参加できずまっすぐホテルに来ました。とはいえ縁があればまた合うこともあるでしょう。

こぼればなし

キャンプでは毎日、健康調査票というのを提出していて、これは各食事ちゃんと摂ったかとか寝れてるかとかを丸とか三角とかで書くわけですが、そこに記述欄がありました。それで

というわけです。上述した**さんがこのお返事を書いてくれたひとで、かなり嬉しかったので、**さんには悪いなと思いつつ、ちょっとどんな内容だったかを書いていきます。

Day 2

ふるつき「体がひえる」

**さん「上着で***てください。必要であればブランケットの貸出もあるので言ってください(空調の調節等何かあればスタッフに言ってください」


Day 3

ふるつき「疲れてる」

**さん「お疲れ様です。なかなか難しいと思いますが休めるときは早めに休んでください。何かあれば連絡を……」


Day 4

ふるつき「いきてます」

**さん「良かったです!!!! コメントありがとう。体調について分かりやすかったです。今日までお疲れ様でした、ラスト一日も頑張って、そして***ください」

記述欄は書いていきましょうという話。

こぼればなし2

旅の思い出として。

帰りの電車の中で、「私はどこに宿をとってるんだっけ?」とスマホを見たら、チェックイン予定が土曜日から二泊になってて、やべーとおもって慌てて電話しました。ちょっと値段は上がりますが、宿泊予定をずらせるということだったので、そうしてもらうことに。これで一見落着、かと思ったのですが、これだと金曜日から二泊で、日曜日の宿がなくなってしまうわけです。もうチェックイン済みだったのでフロントに言ってお願いして、三泊にしてもらいました。良かった。

おまけ

セキュリティキャンプ期間の私のツイート量とインプレッションです。下がツイート量で、一番多い日が130位だと思う

f:id:Furutsuki:20170819004656p:plain

おまけ2

セキュリティキャンプ事後課題として、アンケートがあったのですが、それに、2000字以上の感想を書く欄が合ったので、それを原文ママではっつけます。むりくり2000字書かせるのはどうなんとか思ってないです。


セキュリティキャンプで過ごした五日間は、端的に言って、ものすごく楽しい時間でした。多分、今までの人生の中で最も充実していたのではないかと思います。これはひとえに講師やチュータ、事務局やスポンサーの皆様のおかげと認識しています。とても楽しい時間をありがとうございました。

一番最初の、DAY2の一時間目の講義(D1)を受けた時、とても衝撃的でした。こんなに密度の高い内容を何時間もやるのかと驚愕しました。そして膨大な情報量に圧倒されました。こんなものをセキュリティキャンプの短い時間の中で理解するのは到底無理だと感じましたし、セキュリティキャンプはただの入り口、きっかけでしかなくて、この日この時間に得た刺激を忘れずに日々研鑽しなければとても講師の方々のような、格好良い、憧れられる、最先端を走る技術者にはなれないのだとわかりました。

D1も含めて、その後のどの講義も、私に吸収できる量を遥かに上回る情報を注ぎ込んでくれました。それは自分の未熟さ、講師との技術力の圧倒的な開きを私に知らしめるものでした。自分が未熟であることを思い知らされるのがこんなにつらい、悔しいことであるとは思っていませんでした。どの講義を受けているときもぺしゃんこに押しつぶされるのを感じながら、必死で頭と手を動かしていました。

そうした時間はしんどいものでしたが、とても楽しくもありました。こういうことを自分はやりたかったのだと強く思いました。情報の世界について知りたくて高専に入学して、しかし遅々として進まない授業に不満を抱えていましたが、かと言って自分でうまく学ぶことができませんでした。それは自分が学んでいることの先の先にどんな世界が待っているのかを知らなかったからで、また目指す方向がなくて自分がどう学べば良いのかを知らなかったからです。

セキュリティキャンプで知った先の世界は、とても私をわくわくさせていて、早くそこまで手が届くようになりたい、強くなりたいという思いで一杯です。また、私のまわりの人も早く私と同じ感情を持ってほしい、一緒に技術を磨いていきたいと思いました。

そういう意味では、セキュリティキャンプでは、どの人もそういう意識を持っているし、いくらでもそういう話ができたのでとても心地よかったです。宇宙兄弟という漫画ではないですが、自分が喋っていることが相手に伝わって、相手が言っていることがわかって、共通のものに対してすごいと言えるのがとても幸せでした。

しかし、私の振る舞いを振り返ると、セキュリティキャンプという環境を活かしきれておらず、これに関してはもったいないと感じています。特に食事の時間ですが、一人で黙々と食べてしまうことが多く、もっと他の参加者と交流出来たらよかったと思っています。

思いついたことを全て書いても2000字には満たなかったので、記憶に残った講義について述べます。

まず、D1、D2、D3が強烈に印象に残っています。カーネルエクスプロイトは一番の華だと思ってこれらの講義をとったのですが、先にも述べたとおり、思いっきり鼻っ柱を叩き潰されて、セキュティキャンプを感じさせられた講義でした。そして、D2,D3は脅かされていたほどでは……と講義の前半は感じていたのに、いざBadIRETに挑戦してみると知らないことだらけで確かにこれは大変な講義で、これについていけるようならしっかり強くなれるだろうという気がしました。早いうちに講義の内容だけでもしっかり定着させたいです。

同じDの講義になりますが、最後のD7の愛甲さんの講義も印象的でした。いきなり手を動かしていくというスタイルに驚かされ、バイナリをガンガン読んでいく実践的なチート手法を体験して、本気で解析されたらゲームを作る側はたまったものではないと感じました。そして、愛甲さんのカリスマに惹かれました。愛甲さんは一種のとても格好良い大人だと思います。

それから、BoFのReal World Cyber Securityのお話がものすごくガツンと来ました。サイバーコロッセオで出題された、巨大なパケットの問題がずっと引っかかっていて実際にはどうなっているのか? というのが気になって参加したBoFですが、迂闊にCIAなどと答えてしまい散々ネタにされたからではなく、サイバーセキュリティというのはこういうことなんだなあというのを認識したからです。面白い、尖った技術が好き、楽しいからやっているというのは、それはそれで認められると思いますが、サイバーセキュリティという分野にいる以上、そこには悪意が存在していて、どんな相手がいるかわからないという恐ろしさがあることをわすれてはいけないのだと思いました。

改めてになりますが、セキュリティキャンプに参加できてよかったと思っています。このような貴重な体験をさせていただいたことを無駄にしないように、いつか恩返しができるようにやっていきたいと思います。


あーはずかし。これにてセキュリティキャンプの記事終わりです。記事の内容に関してなにかあればご連絡など

追記

思い出したことがあるので追記です。

私はコミュ症の中のコミュ症なので、名刺交換とか、そもそも交流自体をほとんどの人としていないのですが、これは明らかに損失ですよね。↑の感想にも書いてますが。

一方で、ツイッターではそこそこ騒いで(多分講義中にツイートしてた回数は一番とかだと思う)いたので、ふるつきのアイコンだけは知っているみたいな人がそれなりにいたっぽいです。せっかく知られているのだしもっと自分をアピールしていけばよかったなと思うのですが、まあそれは生来の気質みたいなものだから後悔しても仕方がないのかなぁ。

あと、うちの師匠がキャンプ中に私のツイッターを監視していたりしたらしいのですが、その画面を見た誰か(数人いるっぽい)が師匠に「ふるつきさんですか!?」と尋ねる事案が発生していたっぽいです。一体誰なんだ。

追記2

思い出したので。

全国大会に参加するまでに4つくらいのミニキャンプに参加したわけですが、わかったのはミニキャンプも全国大会と遜色ない内容でやってくれているということ。時間が短くなるのはどうしても避けられないけれど、内容の濃さは全国大会に優るとも劣らないものだったのだとわかりました。

追記3

事前に非公式Slackでパケットの人が「長袖長ズボン一着くらい持ってきたほうがいいですよ」と言ってたのですがこれが本当で、半袖半ズボンだと露出している箇所(特に肘や膝)から冷えていきます。キャンプ中ってほとんど体を動かすタイミングがないので、発熱できないんですよね。私もずっと長袖シャツをきて、長ズボンでした。

あと、今回の宿泊場所では、寝るとき冷房切っておいたほうがいい感じでした。