Winnyの解析をしていた杉浦氏

杉浦隆幸氏(以下、杉浦):杉浦です。今日は「Winny解析技術と」ということで、(Winnyを)解析した当初(のこと)を思い出して話そうと思います。

自己紹介ですが、Winnyの暗号技術を解読した人ということで。今日はそれで十分かと思います。当時の趣味は通信の解析で、いろいろな通信を解析していました。楽しかったです。

映画『Winny』を、2月14日に舞台挨拶付きの試写会で観てきました。非常に楽しかったので、今日の発表はその伏線も入れたものとなります。

Winnyの登場、そして逮捕者の発生

(スライドを示して)20年前。47氏の書き込みがあって、ここから始まりました。今も(この書き込みは)winny.infoの中でちゃんと公開されています。Webアーカイブにもあります。

そして2003年10月のWebサイトはこんな感じでした。

いろいろとウォッチはしていたのですが、2003年11月に逮捕者が出たので、「ああ、ちゃんと対策しなきゃいけないな」と思いました。

その後、「開発者も家宅捜索を受けた。でもアップロードはしないようにしている(はずだ)よな」と。アップロードできないようにする仕組みも当時はけっこう開発されていて、「そういうのを(Winnyも)ちゃんとやってたんだな」と思っていました。「じゃあ、これだったら(Winny関連の事件は)もう大丈夫かな」という感じはしたんですが。

2chのスレッドとかをいろいろ見て、(その中に)使ってる暗号技術とかも出ていたので、それを見て、2003年10〜11月くらいにWinnyの解析をやってみたんです。

Winnyは暗号の使い方がおかしかった

まずはだいたいのパケット解析。通信の中身をキャプチャーして見ることをやっていました。当時はそんなふうにやっている人はあまり多くなかったみたいです。最近はセキュリティの勇者がたくさんいるので、こういうのが当たり前になってきてますが。

それとメモリダンプです。いくら暗号化しているからといってもパソコンの中のプログラム上のメモリはあまり暗号化しないので、それをちゃんと確認しようということで、いろいろと見ていました。

そうすると、IPアドレスとポートは平文なので「ああ、じゃあなんとか(通信は)できるかな」ということと、「少し暗号の使い方がおかしいんだな」ということに気づきました。

(私は)ネットエージェントというセキュリティ会社で、SoftEther(の解析)もやりましたが、「OnePointWall」という、(WinMXやSoftEtherなどを)止めるようなファイアウォールを作っていたんです。

(スライドを示して)今回はWinnyの話ですね。正しく暗号化をする上で、なにかおかしなことがやはりWinnyには存在していたんですね。Winnyはサーバーとして動いてたので、昔と同じようにtelnetでアクセスしてポート番号を開けると、何かデータがふってくることがわかったんです。

なにも送っていないのに、いきなりバイナリデータが送られてくるんです。(しかも)毎回違うデータが。確か最初のサイズは11バイトだったと思うんですが。

公開鍵暗号、RSAを使っているのに(おかしい)。公開鍵を送らないと最初は鍵交換できないのが当たり前だし、今の通信も当然そうなっています。公開鍵を知らずに送ることはなかなかできませんからね。

そうなると、最初のセッションは鍵を送っているのか、もしくはソフトの中にハードコーディングされてる鍵を使っているんじゃないかということが疑われました。

(しかし)実際は何をしていたかというと、鍵を送ってきて、バージョンの情報を送っていました。TCP接続をAからBにすると、鍵とバージョン情報が落ちてきたんですね。

これが本来はどうあるべきかというと、TCP接続して交換鍵を送りつける。そして暗号化された共通鍵がふってきて、そこでバージョン情報もふってきて、そこからファイル交換を始めるのが一般的です。

TLS(Transport Layer Security)の1.3とかもこんな感じで動いてます。(ただ、Winnyは)そう(いう仕組みじゃない)じゃないので、解読できるんじゃないかというのがありました。

Winny用のファイアウォールシステムの開発

少し戻りますが、12月の会社の忘年会が終わった後に(社員に)声をかけて、「なにか新しいものを作ろうぜ」という話をして、その時に(単機能のファイアウォールシステムを)作り始めました。

「じゃあ小さいサイズで簡単に動くものを作りましょう」ということで、ちょうど2週間くらいかけてそんなシステムを作りました。OS込みでちゃんと動いて、SoftEtherとWinMXとかが止まるようになる。

その後(そのシステムを)発表しました。その時いろいろな方がSoftEtherをリスクとして認識してたので、そこに対して売ったりとかして。そして流通を確保していったので、だいたい2週間くらいがたちました。

そんなことをやっていると「Winnyも」という期待が(周囲から)出てきたので、解析して出しました。遂にWinny対応ということで、当時のホームページが残ってたのでWebアーカイブから持ってきました。当時は仕組みもちゃんと公開してたんです。(これで)「やっと止めることができるぞ」と。

中身がどうなってるかというと、Ktermは一応こんな感じです。当時もLinuxで解析していました。(スライドを示して)その部分を見ると、こんな感じでWinnyを止めるような内容ができるようになってました。

最初は鍵交換で止めず、鍵を解読して次のバージョン情報を見て、(その中に)b7.1とかb6.6とか(の情報)があったので、実はそのへんをトリガーにして止めていました。そうすると、かなり高い精度でWinnyを止めることができるようになりました。確率的に、滅多に検知しないかたちになっていますね。

金子氏の逮捕、バージョンに対する危惧

時は過ぎ、「OnePointWall Winny」も発売しましたが、やはり被害はどんどん増えていきました。「京都府警さんもやられちゃうんだ」「そういえば家宅捜索したの京都府警だよな」と思いながらやってました。すみません、これは映画の伏線ですね。

47氏のホームページにも「ノートPC持っていかれた」と(書かれていました)。「(これじゃあ)解析が進まないじゃないか」と思いました。

その後に逮捕ということで、幇助は難しいはずなのに、けっこう無理筋で逮捕したなという感触を持ってました。

通常こういう対策ソフトを出すと、バージョンアップに追従することがけっこう重要(なの)で、そこがどうなるのかなと。まさかの逮捕されて起訴されてとなると、相当長い時間このバージョンで固定されちゃうんじゃないかと危惧されてました。

実際「Shere」はちゃんとバージョンアップしていろいろと対応して、どうにかそれに追従するような感じで私も開発をしていました。ただ、Winnyはぜんぜん変わらないので「困ったなぁ」と。まあ、その後「Winnyp」とかが出ていましたけどね。

Winny上のファイル共有者を特定するソフトのリリース

(逮捕の)3日後、やはりこれ以上逮捕者を出すのもよくないと思ってました。なので、少しWinnyを動かして「こういうことだよ」とちゃんと知ってもらおうということで、クローラーを書きました。簡単なノード探索とファイルリスト要求を使ってできるようにしたのですが、それがわりと効果があったかなと思っています。

(スライドを示して)確かこんなシステムでした。ノードDBとファイルDBがあって、ノードクローラー(がある)と。ISP(Internet Service Provider)をたくさん契約して、簡単に止められないようにしていました。再度ISPとのセッションを切って張り直すアイデアが使えるので、永続的に使えるようなシステムを作ってました。一応ダウンロードもあるんですが、これは2005年ぐらいに始めたものです。こんな感じでした。

(スライドを示して)「OnePointWall」でこんな調査サービスを本格的に開始しました。この時にちゃんとダウンロードとかをできるようにして、情報漏洩があったらすぐにわかるように中の文書も全部解析して、「この会社だ」と自動的にわかるような仕組みを他の社員と一緒に作り上げていきました。ISPをたくさん契約してましたね。確か、唯一So-netは止められたかなという感じです。それ以外は順調にWinnyのプロトコルが使えてました。

特許も取りました。やはり調査だけでは不十分で、いろいろな不幸を見てきたということもあります。調査サービスをやって、その時のインシデント会議をたくさんやっていたので、なんとかしてあげたいということもあり、Winnyのファイル拡散防止サービスを作りました。確か(これは)初期にファイル所有者が10名くらいなら拡散を防げるような仕組みでした。

キーを投げるだけなので、他のダウンロードにはほぼ影響しない。つまり、(情報)漏洩ファイルだけを狙い撃ちでダウンロードできなくする仕組みを作りました。Winnyユーザーにも優しいのですが、全部を理解できない方もいるので、いろいろと批判もされましたね。

Winny無罪判決

本当は、陰では金子さん(金子勇氏)を応援したかったのですが、立場的に反Winny派みたいになったので。そういう立場では(応援しているとは)言えないので難しいなと。ただ、けっこう無理筋(の逮捕)だったのに弁護士さんががんばって無罪を取ってくれて、とてもうれしく思ってました。

2009年に逆転無罪。

その後、最高裁で無罪確定ということで、これでやっと(金子さんと)直接話すことも、活躍を応援することもできると思っていました。

私も実際に金子さんと3回くらいは会っているはずです。最初は匿名でしたが、実際に依頼させてもらうこともありました。確か技術やビジネスをどうやって成功させるかとかいう話をした記憶があるのですが、なにせ10年も前なので記録を取っていなくて。あの時にちゃんと記録しとけばよかったと非常に残念に思っています。

なにかあった時にちゃんと助ける仕組みが必要

私もそうなのですが、セキュリティ関係で仕事していると、知り合いの逮捕者の累計が多くなります。40名くらい。チームでやっているのは別としても、けっこう多くあります。当然、逮捕されてから先は知らないことも多いのですが、初動で弁護士がつけば逮捕も起訴もされにくいのにというところで、非常に残念に思っていました。

やはりハッカーのような新しいことに挑戦するような人たちに、なにか支援の仕組みが必要だなと。これも確か2014年か2015年くらいに考えていた(ことな)んですが、会社もあったので、なかなかそういうことがすぐにできなかった。

特にこのITの世界。Googleなどもそうなのですが、新しいことは法的に未定義領域、つまりグレーゾーンと言われることが多くて。それだから儲かる、それだからやってみる価値がある。新しいことなんて、法律なんかに定義されてるわけないですからね。楽しいことをやろうとしても、やはり萎縮するのはよくないなと(思います)。

だから、萎縮させるかどうかというよりは、なにかあった時にちゃんと助ける仕組みが必要だなということで、数年後にハッカー協会を作りました。

私は(もう)ネットエージェントを辞めてしまいましたが、その後のP2P(調査)は2019年までサービスを提供したということなので、けっこう長く続いたなと。2004年から始めて15年くらいWinny関係のビジネスを続けていたってことで。実際にいろいろなことができる時代でした。

セキュリティ関係もいろいろなものが立ち上がっては消えていきましたが、未だに残っているところもあります。残念ながらネットエージェントはなくなってしまいましたが。

そういうところで、楽しい時代を過ごせました。もう20年前なので意外に(情報が)残っていないなと思うこともあったのですが、インターネットアーカイブとImpressWatchの部分はけっこう残っていて、とても感謝しています。

私からは以上です。