【PC遠隔操作事件】iesysにできること・できないこと(第4回公判メモ1)

3月20日に行われた第4回公判では、冒頭、元裁判官の木谷明弁護士が、前回の裁判長の訴訟指揮について苦言を呈し、善処を求める意見を述べた。

この日1人目の証人は、前回の岡田証人と同じく、警察庁技官で東京都警察情報通信部情報技術解析課所属の新井義之氏。平成23年4月からは、不正プログラムの解析を担当している。これまでに50~60件のプログラム解析に関わった。さらに、自身がプログラマーとしてPC解析に有用なプログラムをこれまで30~40開発した。4人が誤認逮捕されたことが判明した後の平成24年11月に新設された不正プログラム解析官のポストに就いている。

新井証人が本件捜査に関わるようになったのは、平成24年10月中頃。主にiesys.exeなどのプログラムの解析を担当した。

証言は、まずはプログラム解析の方法の説明や用語の解説から始まった。

【プログラム解析の基本】

プログラム解析には

1 表層解析

プログラムのファイルに記録された情報の確認

2 動的解析

プログラムを実際に実行して、その動作を確認

3 静的解析

1)プログラムの元となる設計図(ソースコード)そのものを解読する

2) プログラムをソースコードに戻して解読する

という方法があり、新井証人が担当したのは表層解析と静的解析。

本件では表層解析として

1)ウィンドウズの標準機能を使った解析

2)プログラムの記録内容であるバイナリデータの解析

を行った。

コンピュータが取り扱うデジタルデータは0と1の羅列でありバイナリデータと呼ばれる。たとえば漢字なども「東京都」の「東」は「10010011 10001100」と表すという決まりがある。

プログラムは、コンピュータにさせたい動作(命令)が記述されたもの。コンピュータの頭脳であるCPUがその命令を実行し、コンピュータを動作させる。プログラムに書かれた命令は、ハードディスクやCD-ROMなどの記録媒体に保存され、その命令を一つ一つ読み出して、CPUが実行する。CPUで実行する命令は0と1の羅列で表現されるバイナリデータで示される。

しかし、0と1の羅列では人間には理解しにくいため、プログラム作成には、コンピュータにさせたい動作を人間が理解しやすい単語で表現したプログラム言語が使われる。プログラム言語とは、コンピュータにさせたい動作を、人間が理解しやすい単語で表現していくものである。

その種類は多種多様だが、たとえば、C、C++、Visual Basic、Visual C#、Java、Perlなどがある。プログラム言語にも特徴や得意な分野がある。ウィンドウズを得意とする言語、ネットワークが得意な言語などがある。自分(新井証人)はこの6つの言語はいずれも経験している。

プログラムの作成は、プログラム言語を使用してソースコードを記述する。ソースコードとは、コンピュータにさせたい命令を記述した手順書である。

順番としては、ソースコードの作成→コンパイルとなる。

コンパイルとは、専用のソフトウェアを使い、ソースコードをプログラムに変換する作業である。今回の解析に当たっては、マイクロソフト社製のVisual Studio2010の有償版を使った。iesysは、Visual Studio2010 Express版が開発に使用されていた。無償版だが、プログラム開発する上では同じ機能である。

Visual Studio2010には、

1)テキストボックスやボタンなど様々な機能を持つ部品があらかじめ多数用意されている

2)部品をウィンドウを示すフォームに配置するだけで、その機能が利用できる

3)ソースをコンパイルする

などの機能がある。

【プログラム作成のデモンストレーション】

ここで新井証人が、Visual Studio2010を使って、プログラム作成の実演を行った。その動作は、裁判官や弁護人席のモニターだけでなく、法廷の壁に掲げられた2つの大きなスクリーンにも映し出された。

作成したのは1)通信先の文字列URLを書き込み、2)ボタンをクリックすることで、3)ウェブページを表示する、というウェブブラウザ。

まず、Visual Studio2010を起動し、新規に「文書作成」を開く。「新しいプロジェクト」をクリックすると、「新しいプロジェクト」と題するウィンドウが開く。Visual C#でウィンドウズ・フォーム・アプリケーションを作ることにし、プログラムの名前をつける(ここでは、カタカナで「アイシス」とした)。これで、「OK」のボタンを押すと画面が変わる。

Visual C#2010の画面(法廷での証言に使われたものではありません)
Visual C#2010の画面(法廷での証言に使われたものではありません)

左側に列挙されたものが、部品。URLを入力するテキストボックスやボタンなどをマウスで中央にドラッグし、やはりマウスで大きさを調整し、配置を決める。

その後、ボタンをクリックした時にURLをウェブページとして表示する処理を、ソースコードとして記述することになる。

「記述して下さい」と検察官に言われ、新井証人はパチパチっとキーボードを叩いて入力。数秒で「入力が完了しました」と述べた。入力したのは1行だけ。「あとは自動的に作成されます」と新井証人。

そして「ソリューションのビルド」をクリックしてコンパイル作業を行い、すぐにできあがったプログラムを実行。テキストボックスに警視庁のホームページのURLを入力してボタンをクリック。

画面に警視庁のホームページが現れる。

「このように警視庁のホームページが表示されました」

マイクロソフト社のPRさながら、驚くほどわずかな作業で、どれほど簡単に、いかに迅速に簡単にプログラムが作成できるかというデモンストレーションだった。

再び、新井証人は証言モードに戻る。その後の証言内容は次の通り。

【本件での解析結果】

表層解析としては

1)ウィンドウズの標準機能を使用した解析として、ファイルのプロパティ情報を確認し、

2)プログラムの内容であるバイナリデータの解析は、解析用ソフトウェアであるバイナリエディタなどを使用して、

解析を行った。

表層解析を行ったのは、iesys.exe本体が15件(iesys.exeやtest.datなど)、(iesys.exeの)インストールプログラムなどが17件(Timer.exeやidchanger_m.exeなど)である。

iesys.exe本体は

1)ファイルのプロパティ情報を確認したところ

会社名 Hewlett-Packard Company

著作権 Copyright(c)Hewlett-Packard Company 2012

2)バイナリデータの解析によって、プログラムを開発した日時として、

iesys.exe本体は

最も古い日時が、2012年7月23日23時24分46秒

最も新しい日時が2012年8月20日21時57分55秒であった

インストールプログラム等では

最も古い日時は、2012年7月23日23時26分12秒

最も新しい日時が2012年9月10日14時16分34秒であった

バイナリデータからは、開発した場所に関する痕跡として

F:\vproj\

C:\Users\TKY-DEV-PC07_2

で始まる文字列があった。

静的解析では、プログラムをソースコードに戻す作業を行った。開発者は、ソースコードを持っているが、我々はPCに感染したウイルスを解析する場合が多い。そのため、設計図であるソースコードがない場合は、専用のソフトウェアを使って、プログラムをソースコードに戻す作業を行う。これを逆コンパイル、またはデコンパイルという。

デコンパイルした場合、プログラムに組み込まれた機能と同じソースコードが得られるが、作成者が書いたものを全く同じものが再現できるわけではない。復元できないものとしては、コメント(作成者が任意に行う注釈で、//で始まる文字列)や計算式がある。計算式は、計算した結果のみが記述される。たとえば、60*15*1000という計算式がソースコードに書いてあった場合、デコンパイルすると900000という結果が表示される。

本件では、ソースコードは江ノ島の猫につけられたマイクロSDカードと雲取山USBから入手し、iesys.exeやTimer.exe、idchanger_m.exeから生成されたプログラムを逆コンパイルした。

その結果は2件のソースコードからは、

開発環境はVisual C# Express2010

プログラム言語はVisual C#

であることが分かった。

また、

したらば掲示板など外部への通信機能がある

iesys.exeが解釈可能な命令は最大35個ある

ことが分かった。

iesysの機能の特徴としては

a ウェブブラウザと同等の機能を有する

b 画面が表示されない

c 使用者によるインストールプログラムの実行が必要

iesysにできないこととしては、

1. iesys以外のプログラムに対するクリックの動作や文字の入力ができない

2. iesys以外のプログラムを非表示にできない

3. 自動的にPCに感染させる機能がない

などがある。

感染したPCで、iesysは表示されないが、wbgetで取得したページに文字の入力やクリック操作はできる。

iesysには、感染PCのプログラムを起動する命令(run)がある。これによって、メモ帳などのアプリケーションを起動させることはできる。ただし、PCのユーザには見える状態で起動され、非表示にすることはできない。

iesys.exeを感染させるには使用者がiesysのインストールプログラムを入手し、クリックして実行することが必要。PCが外部の記録媒体とつながっていたり、ネットワークで他のPCをつながっていたからといって、自動的に感染するものではない。

この他、iesysの特徴として

A) インターネット上に公開されたソースコードを引用して作成している

B) 専用の開発環境は不要

という点が挙げられる

A) 外部との通信、暗号化・復号化、ウェッブページを画像として保存するなどのiesysの主な機能がインターネット上のウェブページにある同じような処理内容のソースコードからの引用であった。

ユーザ(=犯人)が記述する必要があるソースコードのファイル13件であり、そのうち9件は、そのように引用したものだった。インターネット上で公開されたソースコードと江ノ島の猫につけられたSDカード内のソースコードでは、処理内容だけでなく、コメントもすべて一致したものもあった。

B)  USBから感染したり、PCの内部データを破壊するようなプログラムを開発する場合は、ウイルス開発専用の開発環境が必要になる。

しかしiesysは、自動感染やデータの破壊活動はしないうえ、実行可能な命令は限定されるため、ウイルス開発の専用環境は不要である。

また、iesysはVisual C#の正規の部品を組み合わせて作成されたプログラムであり、破壊など悪意のある活動が組み込まれていないため、ウィルス対策ソフトでは検知されなかった。ウィルス対策ソフトに検知されないようにとか、セキュリティをかいくぐる知識は必要ない。

iesysはウィルスの高度な知識がなくても開発は可能である。

【弁護側反対尋問・接続の開始時刻が終了時刻より遅い?】

弁護側は竹田真弁護士が反対尋問を行った。

――証人がiesysを開発するとしたら、どれくらいかかるか

1ヶ月程度。

――したらば掲示板のように一般の掲示板を利用する遠隔操作は一般的か

私が経験した中ではありません。

――一般の掲示板を利用するのは、開発者のオリジナルでは

考えられます

――ネット上に公開されたソースコードを引用していると証言したが、引用でない部分もあるのか

はい

――どのような部分か

iesysが実行可能な35の命令があるが、そこは引用されている部分はほとんどない。

――HTML、HTTP、タイマー処理、イベントハンドリング、キューイングなどはインターネットからの引用ではなく、プログラマーが独自に書いたものではないか。

いいえ。iesysの根底の機能はインターネットに同様の機能が見られた。

――ラックの鑑定書では、プログラマーについて「HTML、HTTP、タイマー処理、イベントハンドリング、キューイングなどについては、インターネットからソースコードを引用しただけでなく、独自に記述したと思われる部分が多いので、この分野に関して一定のC#による製造の知識、経験がある」と、(新井証言とは逆のことが)書いてあるが

私以外の者が解析したことについては、私は判断できない。

――したらば掲示板auto/6682に対するiesysの動作についての証人作成の報告書を示す。解析を行ったのは紙媒体か。

デジタルデータです……記憶が曖昧。証拠品の預かりを確認すれば答えられる。

――auto/6682の元データは確認しているか

元データは確認しておりません。

――報告書添付の資料、iesysの動作を確認したしたらば掲示板の総合ログ一覧表を示す。これが、元データと一致しているのかは分からない?

はい。

――たとえば「開始日時」が6月26日15時20分46秒となっているところは、「終了日時」が6月12日16時42分35秒となっている。開始日時の方が遅くなっている。

(見て)確認しました。

――この記載は誤りか。

私が受領した解析対象物がこうなっているということ。それについて(誤りかどうか)私は言えません。

――誤記か?

それは考えられる。

――しかも、この日のログは開始時間はまちまちなのに、終了時刻はすべて6月12日16時42分35秒となっている。間違っているのでは。

可能性はある。

――次のページの7月13日の分も、終了時刻が同じ14時28分55秒という記載がいくつも続いている。ほぼ全てのページにこういう誤りがある。

ここで検察官が立ち上がって「異議」と叫ぶ。「誤りという前提では証言していない!」と。

メモを手に公判後の記者会見に臨む片山祐輔氏
メモを手に公判後の記者会見に臨む片山祐輔氏

竹田弁護士は、大阪オタロード事件で被告人がしたらば掲示板music/27190に指令を書き込んだとされる平成24年7月29日21時45分頃の記録でも、開始時刻と終了時刻が逆転している、と指摘。さらに同年8月1日13時15~19分に同じ掲示板に被告人が指令を書き込んだとされるJAL事件でも、終了時刻は日付が7月31日となっていることも指摘した。

新井証人は、したらば掲示板のログではなく、それに対応するiesysの動作の解析結果を書き込んだものとして、元の記載についてはコメントを控えた。

続いて佐藤弁護士の尋問に対し、新井証人は、自分がiesysを作るとしたら1ヶ月かかると述べた理由について、次のように証言した。

「ほとんどの期間は、機能、仕様を定めるため。したらば掲示板に通信する機能が定まってしまえば、ソースコードを記述するのは1週間もあればいい。1日の作業は3時間程度。一日まるまるプログラム開発することは考えられません。(一日中プログラム開発に集中することが)できる人もいるかもしれませんが、私にはできません」

また、iesysの機能の1つ「run」を使って他のPCを感染させることについては、「可能性は考えられる」と述べた。

感染したPCを使っている人に分からないようにウェブページを閲覧した場合でも、PC内には何らかの痕跡が残ることも証言した。

iesysの機能について、その目的を立て続けに問われ、「私が作っているわけではないので分かりません」と答えるなど、かみ合わないやりとりもあった。

新井証人に対する弁護側の本格的な尋問は、別期日に行われる。

(午後に行われた証人尋問については、公判メモ2として後日アップします)