日本人マルウェア開発者インタビュー（前編） プログラムの「悪意」とは

October 26, 2017 08:00

by 『THE ZERO/ONE』編集部

今回マルウェア開発者にインタビューできる貴重な機会を得た。セキュリティを守る側のコメントや意見は、いろいろな場所で発表されているが、攻撃する側の情報はなかなか表にでてこない。特にマルウェア開発者がどのような事を考え、どんな過程で作り出しているかはなかなか知ることができない。

今回は筆者がマルウェア作成者、しかも日本人女性に接触するチャンスに恵まれた。彼女が作ったマルウェアは趣味や愉快犯的な理由で作られたのではなく、組織としてビジネスの商材として生み出されたものだ。マルウェアの具体的な名前を出すことはできないが、過去に公開され、実際に被害が出ているものである。そのため、内容の性質上、情報をはっきりと記せない部分もあるので、その点はご容赦いただきたい。

組織的に生み出されたマルウェア



編集部：マルウェア「Y」（仮名）を作ったのがTさんなのは本当ですか？



Tさん：「Y」というのは私たちの呼び名ではありませんが（編集部注：基本的にマルウェアの名前はアンチウイルスメーカーなどが命名したものが一般的に使われる）、そう呼ばれているのはもちろん知っています。私が把握している限り「Y」は亜種です。それには原型・さらに原型の原型があり、私はそれら原型群の開発すべてに関わりました。



「私たち」と言われましたが、ひとりではなくグループで作られたんですか？



日本国内に説明のモデルになるような業態が少ないので、解説が難しいのですが、商業的に作られたマルウェアは、まず原型があって、それを作者以外の依頼主のオーダーによってチューニングして納品する、というのが一般的です。私が属している場所は、原型の作者とチューナーで役割分担ができており、中心となる作者がスケルトンと主流ライブラリの制作管理を行います。いわゆるコミッターですね。それをそれぞれのチューナーがワークツリーで専用のブランチを作り、コンパイルとリンケージをして、依頼主に納品する流れです。ほとんどのプログラムが、複数の手を経て作られています。



Yは亜種ということですが、そちらのチューナーによって作られたタイプのひとつなんですか。また亜種に関わることはありますか？



違います。この亜種はチューナーが納品した後、さらに外部が手を加えたものです。チューナーはその原型となった部分を作っています。亜種に関わるかどうかですが、納品後のプログラムに関与する余裕はありません。他にやることはたくさんありますからね。



全体としてはシンジケート（犯罪組織）のようなものでしょうか？



シンジケートの場合、フロント企業（反社会的勢力が関与している会社）のような組織が販売を統括しています。しかし私たちに限らず、いまこの分野で利益を出しているグループの多くは、「組合」に似ています。誰もが同じようなことをできるけど、自然に分担が決まってくるような感じですね。

作者の証明とインタビューに応じた理由



Tさんが行っているのは、そのうちの原形の原型作者、つまり主流部のコミッターということですか？



そうです。



それを証明することはできますか？



ソースコードを持ってきています。これをビルドしたバイナリがこちらで、実際に世界に拡がっているYの亜種のひとつと比較するとこうなります。



（Tさんが見せてくれた画面を見ながら）持ってきたソースとYを比較すると3割ほどしか一致していないように見えますが。



私からすれば、Yは亜種の亜種なのでオリジナルと機械的な比較をすると、そう見えるかもしれません。



Tさんが、このソースコードを書いたという証明はできますか？



（手元のソースを示しながら）定数のここに、12桁の整数が書かれているのはわかりますか？



わかります。ありますね。



プログラム上でこの定数は乱数シードに使われていますが、数値そのものは、ある数を・ある素数で割った余り(mod)です。その積のもととなる各項はこれです。



教えてもらった情報を元に計算すると……合っています。つまり、これはかんたんな電子署名になっているということですね。シードにこの定数を入れた目的は何ですか？



当時の事情によるものですが、署名替わりという以外に、いまは言えません。



言えないのは人的な理由？ それとも技術的な理由？



言えません。



このミーティングで私（THE ZERO/ONE編集部）を指名した理由は？ そして、なぜ告白をしようと考えたのですか？



あなたを指名した理由は、このようなバイナリのお話が簡単にできるからです。告白した理由は第三者に話しておくことが、これからの私たちに必要な状況である、ということです。



なにかの欲求に基づくものではなく、意図した目的があって公表しておく必要があるということですか？



そのとおりです。



公表するのであれば、自身でWebページなりSNSなりを用いることができるのではないですか？



第三者を通じることで、実在性や信頼性に一定の担保が生じると思いました。そのほかにも第三者を介すメリットはあります。



今日の私は、メディア側の立場としてお話をうかがっています。独立したメディアである以上、一方的に「利用される」ことは望ましくありません。お話については、すべてを公開するわけではなく、取捨選択はこちらに任せてもらうことになりますが、それでもかまいませんか？



承知しています。過不足があれば、自分たちで独自に補足します。



マルウェア「Y」を作るまでの経緯



Tさんがマルウェア「Y」を作ることになった経緯を教えてください。



大学卒業後に、東京にある、今でいう大手システムインテグレーターに新卒で入りました。大学はSIとは全く関係ない学部にいたのですが、時代は就職氷河期。そのため大量採用している会社は、そこぐらいだったので就職優先で入社しました。研修が終わり配属されたのが、ベンダーから納品されたシステムの検収部門でした。検収に用いるツールは当時、部内で内製していました。そこで私は Windows用にリモート（外部）から他のプロセスを開始・停止するコードを書くことになったのですが、いま思えばそれがはじまりです。Windows NT4.0が出たばかりでしたから、1996〜1997年ぐらいの話です。



なぜそのようなツールが必要だったのですか？



当時のWindowsは非常に不安定で、1日2〜3回はリセットしなきゃいけない端末も珍しくありません。業務で納品した客先PCにある不安定なプロセスを、時々、外部から切ってやる必要がありました。いまではPowerShellがあるのでWMIなどを経由して容易に行えますが、当時はそういった機能がOS側に用意されていなかったので自分で作らねばなりませんでした。



それをマルウェアにしたのはなぜですか？



マルウェアにした自覚はありません。このツールはローダーだけがSystemに常駐し、CIFSを使ってホストから呼び出せるような構造になっており、最初から許可を得たワームのような構造です。管理者にとって必要であれば、マルウェアだって普通のソフトウェアですよ。だから、当時インターネットでマルウェアのことを「悪意のあるプログラム」という表現が使われ始めたのですが、私はこの言葉に強い違和感を持ちました。「悪意」という相対的な言葉で、プログラムをカテゴライズすることに、どうしても馴染めなかったんですね。







相対的な言葉とは、どういう意味ですか？



悪意の対極には善意があるはずでしょう？ この当時、世の中ではマイナス・イオンなんて言葉が盛んにもてはやされていたのですが、仮にマイナス・イオンが機械から出て来るなら、プラス・イオンはどこにいったのかなと思いますよね。同様に「悪意のあるソフトウェア」があるとしたら、「善意のあるソフトウェア」も存在しないといけません。



このように、相対的な言葉の片方だけを、迷うことなく本気で使っている専門家という人たちは、頭が悪いなと思いました。自分が使っている言葉がわかってないのです。悪意のあるツールがあったとしたら、同時に存在しているはずの善意のあるツールがどこにいったのかまで、ちゃんと説明しなければいけないでしょう？ 知らなくて黙って誤魔化しているなら、まだ良いです。問題なのは、その人たちは本気でその種のソフトウェアには「悪意しかモチベーションが存在しない」という前提で、論理を組み立てているのですよ。少なくともそういう考えの人たちと仲間にはなりたくないと、その時に思いました。この考えはいまでも間違いなかったと考えています。



産業スパイのたまり場として有名な店



許可を得て動作するツールだったということですね。それではどうして「Y」がマルウェアとしてここまで拡がることになったのでしょうか。初めて確認されてから15年以上経ちますが。



当時、中央線沿いの とある駅の近くにあった居酒屋に、上司が連れて行ってくれたんですね。〇〇駅の■吉という個人の店ですが、（インタビュアー）さんご存知ですか？



よく知ってます。その筋では有名なお店ですね。



はい、産業スパイのたまり場だったことは後で知って驚きました。みなさん和気あいあいとしていて、その時、私が持っていたスパイのイメージとは大きく離れていました。



スパイ同士が闇で戦うのは空想の世界ですよね。



そうそう！ 戦っているのは雇い主のほうであって、末端が争うことは必ずしもないということ。盗むのではなく取引がスパイの本業であって、奪う必要性も身を隠す必然性もない。考えればその通りなのですが、この時までは考えていなかったことです



その店でどなたかと知り合って「Y」を売り込んだのでしょうか？



そうではなく、その店の常連の方で、今でいうAPT（Advanced Persistent Threat）技術を商品として販売している人を、転職先として上司が紹介してくれたんです。後でわかったんですが、私の会社はその翌月に経営破たんして、大規模な人員整理が行われることになるのですが、私の将来を案じた上司が、そうなる前に渡りをつけてくれたんです。とんでもない上司ですけど、とても助かりました。



元々のツールは社内の事情でPascalで書かれていたのですが、新しい会社ではC/C++に書き直しました。それまでの実行ファイルは中間コードが混ざっていたので、単独のネイティブコードにしてほしいというのがオーダーでした。それが「Y」のプロトタイプです。このプロトタイプを別の方すなわちチューナーが、要求仕様にあわせる形で改良していく。それを私が本体ブランチに反映していくという形でした。現在、一般に検出されている「Y」は、比較的初期のころのブランチのひとつで、本体がSystemフォルダに入るタイプのものです。エンドユーザーが操作しやすいという長所はありますが、誤った配布をしたのでウイルス扱いになったようです。

画像はイメージです



ウイルスに認定されたことがきっかけで、いまは改良を加えて発見されにくくした、ということでしょうか？



うーん、誤解があるかもしれません。発見されたことが理由で改良するということはないですね。私たちから見れば、発見されてマルウェアのリストに収載されるということは、エンドユーザーの扱い方がマズくて、せっかく買ったマルウェアの秘匿性を下げてしまった、気の毒に……という感覚です。私たちにとっては、納品済みの古いシリーズが数年たって表面化したというだけで、いまのセールスに影響はありません。



Tさんが現在リリースしているシリーズには影響ない？



ありません。何年かしたら検出されるようになるかもしれませんが。そのころには別のシリーズになっているでしょう。



（後編に続く）