私の目から見た PacSec 2010 (3)

やっと PacSec Day 2。かなり飛ばし飛ばしですが、最終回です。

PacSec Day 2 : 時間の見積もり (2つの意味で)

とりあえず、そのまま喋ればオーバーになる程度*1の文章量。少々の要約はやむを得ない。大丈夫だと言い聞かせつつ、意図的に少し遅めに出発。今まで少し早く出ようという風に考えて予定を立てると、すごく早く着いてしまうという謎があることと、今年はホテルに一番近い地下鉄駅入り口を覚えていることなどなどから、ある程度遅く行ったとしても「遅刻」にはならないだろうと考える。実のところ結構ギリギリの時間だったが、それでも開始時間直前に到着。

PacSec Day 2 : 同時通訳との調整

最初の発表を聴き終わった直後*2に、個人的に呼ばれる。と思ったら、同時通訳の調整とのこと。今回日本語版が 84 枚、英語版は 85 枚*3という枚数に若干ツッコミを受けたものの、同時通訳の調整は比較的スムーズにいった。昨年はプレゼンを調整するために若干スライドの内容を (同時通訳の人があらかじめ読んでいるものから) 結構な量変えてしまったのでお叱りを受けたのだが、今回は誤字脱字の修正*4と 1 枚のスライドの「文章」を「グラフ」に変えたことだけ。具体的な訳語と「どの部分を重点的にしゃべるか」ということに関して集中的に調整した。

PacSec Day 2 : 発表 (午前)

Dong-Joo Ha & Ki-Chan Ahn - "ゲームコンソールへ転移するマルウェア : エンベッドされたデバイスマルウェアのためのアンチウィルスからの隠れ家" (Dong-Joo Ha: [twitter:@ChakYi] ; Ki-Chan Ahn: [twitter:@externalist])

AVTokyo 2010 で発表された方 (ChakYi&Externalist) だ。今回は Externalist こと Ki-Chan Ahn 氏といっしょに。交代交代で内容について喋るというスタンスのようだ。内容はほぼ同一であるものの、時間枠がそちらよりあるためかデモなどが幾つか加わっている。重要なことは前回までに説明を終えてしまっているので今回は追加の技術的解説を。Nintendo DS で自作ソフトウェア、そしてハッキング用 Metasploit を動かす方法については多分多くの方がご存知だろう。というわけで Wii にウイルスを仕込むまでの技術的過程。
Wii の実行ファイルは dol ファイルと呼ばれる形式だ。かなりシンプルなファイルフォーマットで、セクションはある程度固定。7 個のコードセグメントと 11 個のデータセグメント、そして BSS*5 が使えるとのこと。ウイルスは Wii 用の SDK、正規のものじゃなく自作ソフトウェアを作るのに使うヤツと同じものを使う。オフセットは調整するか、あるいはツールチェーンで実行ファイルを作成するときに予め PIC を生成する。ウイルスを実行させるのは簡単。

  • 使われていないオフセットにウイルスを仕込む。
  • エントリポイントをウイルス内にする。
  • ウイルス内で、オリジナルのエントリポイントを実行するように最終的な仕込みをする。

これだけ。海賊版ユーザに気づかれることなく「元のゲーム」を実行させ、その裏では破壊活動や他プラットフォームへの感染*6、ルータの設定変更、盗聴などやりたい放題だ。このケースの場合、穴はユーザが意図的に空けていることに注意しよう。まぁアレですね。

村上純一 - "Exploring the x64" ([twitter:@junichi_m])

さてフォティーンフォティ*7で有名な村上さんの発表。Exploring the x64 というタイトルからして、x64 CPU 全般について話すのかと (勝手に) 勘違いしていた。実際には、x64 版 Windows において x86 版とどれだけ変わったかに関する内容。例えばシステムコールの呼び方 (デモで、32 ビットのアプリケーションから 64 ビットのシステムコールを呼び出すというものが見れた。) や他プロセスに対する侵入 (32→64 のリモートスレッド生成だけは [通常の方法では] エラーになるなど。)、などなど。内容に関しては、64-bit プロセスの解析をやりやすくするためには役に立ちそうな感じがした。正直 x64 Windows については重点的に勉強、あるいは資料収集をしていたので、内容が (私にとっては) 既報が多かった感じがする。この辺に関して私が何か言うのは客観性に欠けるので、他の方がどのように思ったかも個人的に聞きたいところだ。

PacSec Day 2 : 発表 (自分)

「!?」
発表開始直後、トンデモナイことに気づいた。「Android タブレットがうまく動かない!?」
なぜかタッチ機能がマトモに使えなくなってしまったのだ。タッチパネルは精密というか、場合によって正常に動作してくれないときがある。多分だが、そのときの緊張による汗で指が湿っていたことが、タッチ機能が利用不能になった理由だと思う。とにかく、これによって原稿ナシで発表に臨む必要に迫られた。だが、不思議とうまくいった。体調がよかったから? 心理的にもストレスが少なかったから? 単なる偶然? …それは分からない。一応スピーチに詰まることはある*8が、去年や今年の x86 勉強会に比べれば飛躍的な進歩と言えるほどのスピーチになった。ちょっと原稿中にウィットとかジョークとかも仕込んでたのを言う余裕はなかったけどね。
発表途中でスライドの微妙な間違いや翻訳のし忘れを見つけたのは少し恥ずかしかった。ただ…マトモだった。去年は PowerPoint で作ってフォントを埋め込んだにも関わらず盛大にズレてしまったが、今回は PDF にエクスポートしておいたのでその問題はなかった。発表当日にプレゼン可能なシステムの調整で手間取ったぐらいか。
時間は元々使い切るつもりで動いた。その甲斐あって、発表はちょうど 60 分 (発表開始直後のトラブルを除けば 58 分くらい) で終了。質疑応答はそれほど無いと予想してたので、まさにピッタリと言っていい。まぁそのとき質問がまったく無かったのはちょっと寂しかったけど。まぁ無事終了。

PacSec Day 2 : 発表 (午後)

Jussipekka Leiwo - "コモンクリテリアとFIPS 140-2認定されたUSBトークンにおける認証脆弱性の分析"

コモンクライテリアは、ある一定の視点からセキュリティ設計を認証する制度だ。FIPS 140-2 が、暗号化や署名などに用いる暗号モジュールの要件を定めた規格。これらの規格に合致した USB トークン (ユーザのクライアント認証とか電子署名とか…に使うと記憶。) であっても、それが即座に安全であることを意味しない。この発表では SanDisk と Kingson の USB トークンから見つかった脆弱性より、認証制度の脆弱性を分析する…とのこと。
まず脆弱性について。これは USB トークンとホスト PC のソフトウェア間における認証プロトコルの設計が悪く、単純なリプレイ攻撃の餌食になる可能性があるとか。そしてその脆弱性を持ちつつ複数の認証を通過してしまったことについて考察が行われた。特に興味を持ったのはバージョニングの問題。検証をうけたバージョンと出荷するバージョンが食い違うことなどの問題だね。そしてこれらを防止するためのアドバイスが行われた。

Isaac Dawson - "ウェブブラウザー・テスティングシステム"

この方は (少なくとも) 発表当時日本に在住しておられる方だ。日本語でブログも書いておられる
この方の話題はいわゆるファジングの一種…と分類していいのかな? 連続したリクエストによって脆弱性を探し当てるアプローチだ。ターゲット生成からその自動化まで、統一化されたフレームワークを作り、素早く脆弱性を発見しようというものに見える。各種 OS のために自動化モジュールを作っておいて、統一化された手段で検証を行うことができる。これ以上の部分がイマイチよく分からなかったのだが、「ツールの作り込み」という点ではすごく好感が持てた。
最近会った人によく話すのだが、私は今のセキュリティのためのツールは十分に「統合」ができていないと考える。そして、少なくとも情報を保存し、連携するための強力なツールが必要だと主張している。彼のツールはまさにその点で驚きがあった。

PacSec Day 2 : コーヒーブレーク + 閉会直後

何人かの人と喋っていて、一部の人は私の VM について、「マルウェアを効率よく解析するのに最適」だと考えていることに気づいた。例えば、今のライブドアの親会社。そこで働く方の一人が、自社内のセキュリティインシデントの解析 (ここにはマルウェア解析も含まれる!) のために私が開発中のツールが使えるのではないかということを仰った。私は、自身の VM における現状の設計ではマルウェアを解析するには危険すぎるとしながらも、その可能性については認めた。マルウェアを「解析」するためには何が必要なんだろう。色々考えたり。あとは楽天の方とも喋って色々な可能性について考えてみたり。
正直なところ、こういう休憩時間に声を掛けられることが多かった。反響自体はそこそこあったようだ。前回よりもかなり。
帰る直前、あるアメリカ人に会った。質問は…少し奇妙だった。君が (侵害していることを) 知っている米国特許はどこの企業が持ってるんだ? と。私は主要な特許を保有する 2 社を挙げた。彼が何かをしたがっていたのかもしれないが、正直なところ、わからない。

PacSec Day 2 Party

まさに、「濃い」の一言に尽きる。オフレコなことも含めて、様々なことについて話し合った。…本当に色々と。
曖昧な言い方をしているのは、…ぶっちゃけ飲み会の記憶が混乱しているからだ。酒には思いっきり弱く「なってる」*9ので。断片的な情報を思い出してみると… DEFCON のパティ * 20枚バーガー、私がまだ就職できていないこと、VM、画像処理、スマートフォン、各国の IT 事情、…などなど。そしてこの場で、あのリバースエンジニアリングコンテスト、Hackers' Dream について教えてもらった。海外におけるリバースエンジニアリングのコンテストはどんなものなのかと興味を持ったし、時間があったら参加してみるよと曖昧な返事をしたことを覚えている。

私の目から見た PacSecPacSec を通して見た自分

ゆっくり変化している、といったのが正直なところ。ある面では、年々悪くなっている。他の面では、良くなっている部分もある。セキュリティの脅威もトレンドを変えていき、そこに研究対象も生まれる。いつまでも 200x 年ではいられない。そして、その中で PacSec が高いレベルを保つ反面、その変化に苦しむ一面も見受けられた。そして自分の成長は…やはり実感した。それでも、まだまだ及ばないというのが正直なところ。これを書く時点で既に 2011 年だが、今年何を頑張るべきかという明確な目標の一片が見えてきたと言っていい。自分にとって PacSec というカンファレンスは自分を整理しつつ、より高いレベルに運んでくれた恩人のようなものだ。今年こそは何らかの形で恩を返せれば、と思う。

*1:ここには私が噛むであろうことを考慮した上で。あとは質疑応答の時間はある程度使ってしまっても良いと考えている。

*2:多分そうだと思う。村上さんが前で話しているのを立って聞いていたのを覚えているからだ。

*3:スライド枚数が違うのは、英語スライドには一部文章を詰め込む必要がある部分が存在し、そこについて一枚にまとめることができなかったため。念の為に言っておくが、同時通訳付き、質疑応答時間付きで 60 分である。多分他の方より圧倒的に多い枚数。

*4:後で調べるとそれだけでは済まなかったのだが。

*5:こうやって書くと 19 個ものセグメントが使える、リッチなフォーマットと思われるかもしれないが、ELF に比べるとかなり単純、固定機能のオブジェクト形式である。

*6:脆弱な Windows PC に対する攻撃も含む。

*7:Google 日本語入力で最近候補に出るようになった!おめでとう!

*8:あとで英語圏の参加者の 1 人から、同時通訳で "it... it..." が続いてわかりにくかったこともあったよと指摘を頂いた。申し訳ない。

*9:私は元々下戸だが、それ以上にコンサータの副作用が効いている。医師にもあまり飲み過ぎないよう指導されている。