セキュリティ業界の各企業は以前から、現在のシステムよりも確実にマルウェアを検出し特徴付ける方法を探り続けています。そのようなシステムがあれば、マルウェアとそれが引き起こす損害に対処しなければならないすべての人々にとって、大きなメリットとなるでしょう。現在でも、ごく基本的なものから高度なものまで、マルウェアの検出には多種多彩なテクニックが使われていますが、マルウェアを完全には特徴付けていないという点で、その大半は不十分です。
その多くは手動で分解と解析を行うか、または実環境または仮想マシン(VM)環境でサンプルを実行したうえで、システムに生じる変化を記録しマルウェアの副作用として報告するかのいずれかの手段に拠っており、そのどちらにも長所と短所があります。手動による解析は時間と手間の掛かる作業であり、人的エラーも発生しがちです。副作用の自動照合は高速で、人的介在もほとんど不要、あるいはまったく不要ですが、残念なことに有用な情報が欠けていたり不完全だったりすることも少なくありません。要するに、マルウェアの自動解析は解決の難しい問題だということです。自動解析で期待どおりの結果が得られない理由は、以下の要因にまとめられます。
- 条件付きコード: 多くのマルウェアには、特定の条件が満たされたとき、たとえばユーザーがボタンをクリックしたときや所定の Web サイトにアクセスしたときにのみ起動するコードが組み込まれています。コマンド & コントロールサーバーからのコマンドを待っている場合もあります。そうした条件が満たされなければ、マルウェアは何も活動しないこともあります。
- 仮想マシンの検出: セキュリティベンダーがマルウェアのランタイム解析に仮想マシンを使用していることは、マルウェアの作成者にも知られています。ランタイム解析を避けるために、マルウェア作成者は仮想マシンの存在を確認する機能を実装して、仮想マシンを検出するとマルウェアの動作を停止してその機能を隠そうとします。それと異なる動きをするマルウェアのひとつが、W32.Crisis ワームです。このマルウェアは、仮想マシン環境でも十分に機能するほか、VM ファイルがあるかどうかを積極的に検索し、それにも感染しようとします。
- 時間: 一部のマルウェアは、一定時間が経過してから悪質な動作を開始します。自動解析システムでは毎日何万というサンプルを実行するので、時間が障壁になります。各サンプルを自動解析してデータを収集する時間はごく短く、すぐに次のサンプルの解析が始まります。つまり、すぐに悪質な機能が実行されない場合は、自動解析システムで見逃されてしまいます。たとえば、あるトロイの木馬がすべてのドライブ上のすべての .doc ファイルを削除する機能を持っていても、C ドライブ上の一部のファイルを削除する時間しかなかったとしたら、自動解析システムではそれしか報告されません。
- コンテキスト: 自動解析システムによる報告で欠けていることが多いのは、コンテキストです。たとえば、あるサンプルがドライブ上のファイルを改変し始めた場合、多くの自動解析システムは、ファイルの改変を報告するだけで、どのような改変があったかまでは指摘しません。改変はウイルスコードの感染であったり、ファイル内容の消去や暗号化であったりするかもしれません。あるいは、何らかのテキストコンテンツがファイルに挿入された可能性もあります。しかし、ほとんどの自動解析システムでは改変内容まで報告されません。コンテキスト情報が欠けているもうひとつの例が、ネットワーク接続に関する報告です。特定の URL にアクセスするマルウェアが報告されるとき、その URL の目的までは指摘されません。別のマルウェアをダウンロードするのか、命令を受信するのか、それとも盗み出した情報をアップロードするのか、単に感染を通知するのかまでは示されないのです。そのような情報を知ることは重要ですが、自動解析システムに実装するのはきわめて困難です。
- モジュール化: 最近のマルウェアのほとんどは、独立した単一のコードとして存在するのではなく、それぞれが異なる機能を備えた複数のファイル群でモジュール化されています。このようなモジュールはたいてい、インストーラを使ってパッケージ化されてはいません。そのため、最初はインストーラが拡散して、次にインストーラが実行されると、他のコンポーネントのダウンロードを試みます。ときには、追加コンポーネントのダウンロードがリモートの攻撃者によって直接制御されている場合もあり、この攻撃者は侵入先のコンピュータの状況を伺ってから、次にダウンロードするものを判断します。インストーラ自体はたくさんの機能を持っているわけではないので、自動解析ではほとんど何も報告されません。同様に、個々のモジュール自体もコードライブラリに過ぎず他のコードで呼び出される必要があるため、実行されてすぐにその機能が判明することはありません。
これらの要因がすべて絡み合って、マルウェア自動解析機能が制限されます。
そのような状況を受けて、セキュリティ研究者であるジョシュア・サックス(Joshua Saxe)氏が Black Hat で発表するのが、オープンソースとクラウドトレーニングを利用してマルウェアファイルの機能を識別できるマシンラーニングツールです。このツールは、特定のネットワークプロトコルを利用する機能やデータを盗み出す機能など、マルウェアの機能のリストを生成できるとされています。検出された機能について、適切な場合に確率スコアを示すという機能は注目に値します。断定できないマルウェアや見かけで特定できないマルウェアでも、スコアがあれば機能の有無を予測できるからです。このツールを作成するプロジェクトは、DARPA の Cyber Fast Track プログラムから資金提供を受けており、使われているアルゴリズムについても今回のプレゼンテーションで詳しく紹介される予定です。興味深いプレゼンテーションになることは間違いないでしょう(訳注: Black Hat カンファレンスでの発表はすでに終了しています)。
ちなみに、シマンテックセキュリティレスポンスでも、マルウェアサンプルを収集してその情報と機能を照合する多くの自動システムが運用されています。これらのシステムは、マルウェアサンプルの統計とランタイム解析を実行し、その副作用を記録できます。この情報をシマンテックの他のデータや遠隔測定ソースと組み合わせて、独自のマルウェアレポートサービスを通じてお客様に提供しているので、お客様がマルウェア攻撃を予防し、マルウェアの被害から回復する際に有益な情報となっています。
* 日本語版セキュリティレスポンスブログの RSS フィードを購読するには、http://www.symantec.com/connect/ja/item-feeds/blog/2261/feed/all/jaにアクセスしてください。