あんちういるす

このサイトはマルウェア、アンチウイルス、あとはセキュリティ全般について、素人がざっくばらんと書いていくブログです。でもあんまりしっかりと書く気はないというか、わりと適当に書いていくつもりなのでちゃんとした文章を期待している高モチベな方々向けではありません。あらかじめご了承ください。

マルウェアはなぜ作られるの?

 前回、なんかマルウェアが増えてるとか、アンチウイルスは死んだとか、あと対応策としてレピュテーションとか機械学習とかそんな感じのことを書きました。つまりは"対策を講じる側の視点"で書いたわけですね。なので今回はその逆の立場となるマルウェアを作る側の視点で書こうかと思います。

 そもそも「なぜマルウェアを作るのか?」という疑問がありますね。マルウェアを作ってる連中に聞いてみたいわけです。おまえらなんでマルウェアを作るのか?ってね。するとおそらく「いや仕事だから」みたいな感じで返ってきます。仕事というかお金儲けですね。金、すなわちマニーが欲しいわけです。ぐへへ。
 え?マルウェアを作るとお金が儲かるの?って話ですが、まぁ儲かりますね。わりとガッツリと儲かるようです。
 少し前にMITB(Man in the Browser)攻撃というのが流行りました。なにそれ?って話ですが、ブラウザに感染して入力情報などなどを盗む手法のことです。MITB攻撃っていうか、MITBマルウェアって言った方がよい気がしますが、まぁ要するにブラウザに感染するタイプのマルウェアなわけです。ブラウザに感染するとどんな良いことがあるのかというと、たとえばネットバンキングなどの情報をガッツリと盗むことができるわけですね。いまは銀行口座にオンラインでアクセスし放題、とっても便利、でもそこを利用して情報を盗もうとするのが悪い人たち、マルウェア作者なわけです。
 いやいや、でもオンラインバンキングとかって絶対SSLで暗号化されてんじゃん。盗むとか無理じゃね?って話ですが、暗号化されているのはあくまで通信であって、ブラウザの中では復号されて処理されているわけです。当然ですね。なのでブラウザに侵入すれば情報盗み放題じゃんという仕組み。素因数分解の難易度に守られているのは通信データであって、ブラウザの中じゃないんですね。

 いずれにしてもマルウェアを作ることでお金儲けができるわけです。ビジネスになるわけですね。そうなると効率化が行われます。

 大昔のマルウェア作者はビジネスでマルウェアを作ってはいませんでした(最初のマルウェア)。それは趣味だったり、ジョークだったり、自分の技術力を誇示するためだったり様々でしたが、少なくともお金儲けじゃなかった。でもいまはお金儲けなわけです。完全にビジネスなわけですね。ビジネスなので効率化のためにフレームワークを作ります。マルウェアのためのフレームワーク。そしてもちろんそれはバージョンアップが繰り返され、より洗練されていくわけですね。ビジネスのために。その果てが昨今よく使用されているRAT(Remote Administration Tool)だったりするんですね。クリック数回で好みのマルウェアを作るソフトウェアです。
 個人的には「欲しいマルウェアをより簡単に作れる環境が出来上がったから、マルウェアは増加しまくっている」という意見ですが、これはマルウェアを作ることがビジネスに直結しはじめたからそうなったんじゃないかと思うわけです。まぁ違っているかもしれませんが。

 こうなると、今度はより検知されないマルウェアを作る必要が出てきます。アンチウイルスに検知されないマルウェアですね。なんてったってお金儲けなのですから、ビジネスなのですから、手抜きは許されません。可能な限りアンチウイルスに検知されずに動作し続けるマルウェアが求められます。
 検知されないマルウェアというキーワードで調べると、ポリモーフィック型マルウェアという単語が出てきます。アンチウイルスは結局のところファイルやその動作のどこかを使って検知しなければならないので、マルウェアが自己を書き換えながら感染していけば、検知されないマルウェアが作れるんじゃないの?という考えから、ポリモーフィック型、メタモーフィック型と呼ばれるマルウェアが作られました。
 ポリモーフィズム(Polymorphism)、メタモーフィズム(Metamorphism)、オリゴモーフィズム(Oligomorphism)と手法によって名称は違うのですが、すべて自己を書き換えるという点で同じです。ファイルが改変されるが、しかし機能は変わらない、つまり等価の価値を持った異なるコードを作り続けるマルウェアというわけです。なかなか面白いですね。
 等価の価値を持った異なるコードはPackerと呼ばれるツールで実現できます。Packerとは実行ファイルを実行できる形式のままサイズのみ圧縮するツールです。たとえばPEファイルのままサイズを圧縮するわけです。有名なものにUPXASPackがありますね。本来のコードを圧縮し、その展開処理をプログラムの先頭にくっつければ(圧縮後の差分>展開処理であったなら)ファイルサイズは小さくなります。もちろん機能は変わりません。
 このようなコードをマルウェアに実装してやれば、ポリモーフィズムマルウェアとなるわけです。もちろんマルウェアで使う場合は圧縮ではなく改変が目的なので、暗号化でもよいですね。ファイルが変わればなんでもオーケー。
 でも、自己改変型のマルウェアが広まったらヤバくね?って話ですが、じつはそんなに広まってないんですね。あんまりない。まぁあるけどそんなに、みたいな。意外ですね。でもよく考えるとなんとなく分かります。
 マルウェアが簡単に作れるようになったってことは、検知されるようになったらまた新しいのを作ればいいやという話になります。別に数クリックで作れるわけですから。わざわざ検知されないマルウェアを作るのはそもそもマルウェアを作るのが大変だったからであって、大量生産、大量消費のこの時代にはそんなものは必要ないわけです。世知辛い。

 根本的な問題として、マルウェアは作る側の方が有利な状況です。検知する側はどうしても後追いになります。これはマルウェアです、と確定するまでのタイムラグがどうしてもあるわけです。アンチウイルスベンダーが検体を入手し、特定し、アンチウイルスソフトに適用するまでのラグですね。
 このラグをゼロにするには、検体がなくともそれを検知できる仕組みが必要です。マルウェアは持ってないけどマルウェアを検知できるシステムです。いわゆる未知のマルウェア検知ってやつですね。セキュリティ系の学会、国際会議、論文などを調べるとこれ系のものが山ほど出てきます。それほど研究されている分野ですし、まぁ実現したいことなのですね。
 またそういったものを売りにしているセキュリティ製品も最近は多いです。FireEyepaloaltoといったものが有名ですね。次世代うんたらかんたらというような、これまでのとはちょっと違うよ感を出してたりしますね。

 というわけで、マルウェアはなぜ作られるのか?ですが、お金儲けのためですね。はい。ちなみにいまはマルウェアに限らず、脆弱性情報もビジネスとしてやり取りされたりしていますね。こっちは(悪いことじゃないので)わりと大企業も公式にやっていて、例えばGoogleは脆弱性情報(エクスプロイト)に報奨金を出していますし、国によっては軍事目的で攻撃コードを購入したりもするそうです。戦車や戦闘機を買う感覚でエクスプロイトコードを買ってるのかなーと思うとちょっと面白いですけどね。