Video Screencast Help
Symantec to Separate Into Two Focused, Industry-Leading Technology Companies. Learn more.
Security Response

新しい手口で自動の脅威解析システムをすり抜けるマルウェア作成者

Created: 29 Oct 2012 08:00:30 GMT • Translations available: English
Hiroshi Shinotsuka's picture
0 0 Votes
Login to vote

『インターネットセキュリティ脅威レポート』(ISTR)によれば、2011 年の 1 年間に作成されたマルウェアの新しい亜種は 4 億にも達しました。平均すれば毎月 3,300 万件、1 日当たり 100 万件もの新しい亜種が生み出されている計算です。

これほど膨大な数のサンプルファイルを手作業で解析することは不可能なので、自動の脅威解析システムを使ってサンプルの動作を解析し、優先的にウイルス定義の作成が必要なファイルを決定する必要があります。

Web を検索すると、サンドボックスでファイルを実行してその動作を表示するサービスが見つかります。そうしたサービスを使えば、疑わしいファイルについて、コンピュータ上で実行する前にその動作を確認することが可能です。

どちらのシステムも、指定されたファイルをサンドボックスで実行してシステムの動作を記録する点は同じです。

マルウェアが自動の脅威解析システムから自身を隠せるとしたら、何百万というサンプルファイルに紛れ込んでしまい、ウイルス対策アプリケーションで悪質と判定できなくなる可能性があります。そこで、マルウェアやパッカープログラムの作成者は、いろいろな手法を駆使して、悪質なファイルを自動の脅威解析システムに見つからないようにします。

マルウェアが自身の動作している環境を検出し、自動の脅威解析システムから自身を隠す機能は新しいものではありません。マルウェアが動的な解析システムによる検出の目をくぐり抜ける手口を、以下に示します。

  • レジストリで特定のエントリを確認し、仮想環境で動作していることを検出した場合には動作を停止する。
  • ビデオやマウスのドライバを確認し、仮想環境で動作していることを検出した場合には動作を停止する。
  • システムサービスのリストを列挙し、仮想環境で動作していることを検出した場合には動作を停止する。
  • 特別なアセンブラコードを実行し、仮想環境で動作していることを検出した場合には動作を停止する。
  • レジストリで通信ポートを確認し、仮想環境で動作していることを検出した場合には動作を停止する。
  • 特定のプロセス名を確認し、監視されていることを検出した場合には動作を停止する。

仮想環境で動作していることを検出してマルウェアが自身を停止すると、自動の脅威解析システムはそれを正常なプログラムと誤認する恐れがあります。特定のプロセス名を発見し、監視されていることを検出した場合にも、自身の動作を停止します。つまり、マルウェアは自動の脅威解析システムだけでなく、マルウェアに侵入されたコンピュータがないか警戒している企業のシステム管理者をも欺く可能性があるということです。

マルウェアの作成者は最近、別の方法でも自動の脅威解析システムを出し抜こうとしています。この手口のうち 2 つを紹介します。

図 1. マウスを利用して自身を隠すマルウェア

システムのメッセージ処理メカニズムにおいて、システムのメッセージトラフィックを監視するサブルーチンをアプリケーションがインストールできるポイントをフックと言います。上の図に出現している SetWindowsHookExA API 関数は、マウスのメッセージトラフィックを監視する _main_routine サブルーチンをインストールします。したがってこのマルウェアは、マウスからメッセージを受信した時点で、つまりマウスを動かしたりボタンをクリックしたりした時点で、実行されることになります。Windows の操作にはマウスを使うのが一般的なので、_main_routine サブルーチンの仕組みは有効です。ところが、自動の脅威解析システムはマウスを使わないので、コードは休眠状態のままとなり、脅威解析システムはこれをマルウェアとして検出できない可能性があります。

図 2. "sleep" を使って動的な解析システムをすり抜けるマルウェア

もうひとつのマルウェアは、コードが実行されると、300,000 ミリ秒(5 分間)待機してから DecryptCode サブルーチンを実行します(図 2)。次に、さらに 20 分間待機してから ModifyRegistry サブルーチンを実行します。Network_main サブルーチンの実行後は、さらに 20 分間の待機に入ります。

自動の脅威解析システムは、1 つのファイルに対して短時間しか費やさないため、こうしたコードはマルウェアとして検出されない可能性があります。

これまでマルウェア作成者は、仮想環境を検出するために非常に難しい手法を使っていました。そのため、アセンブラコードを作成する技術や、仮想マシンについての知識、CPU やメモリ管理についての知識といった特殊なスキルを必要としていたのです。

しかし、今回ここでご紹介したような手口は技術的に高度ではないため、最近のマルウェア作成者は特別なスキルがなくてもマルウェアを自動の脅威解析システムから隠しおおせることができます。それだけではなく、自動の脅威解析システムを欺くために、新しいアイデアの研究とテストにも余念がありません。

シマンテックのエンジニアは、マルウェアやパッカープログラムの作成者が今回使ったような新しい手口について、常に警戒の目を光らせていますが、皆さんも、疑わしいファイルやアプリケーションは実行しないようにしてください。また、コンピュータのオペレーティングシステムとウイルス対策ソフトウェアは常に最新の状態にすることをお勧めします。

* 日本語版セキュリティレスポンスブログの RSS フィードを購読するには、http://www.symantec.com/connect/ja/item-feeds/blog/2261/feed/all/ja にアクセスしてください。