マルウェアのロードポイントが複雑さのレベルを上げる


By アンドリュー・ブラント / Andrew Brandt

マルウェアがコンピューターに感染して最初に実行する動作の 1 つは、被害者がコンピューターを再起動した後で、マルウェアが確実に再度実行されるようにすることです。これは犯罪者にとって理にかなった行為です。そもそも、再起動後にマルウェアが動作を停止しては何にもなりませんから。

マルウェアがささやかながらも重要なこのタスクを実現する方法が Windows にはたくさん存在し、そのほとんどがレジストリに関連しています。技術者諸氏は、この目的で使用されるレジストリを「ロード ポイント」または「自動起動の場所」と呼んでいます。マイクロソフトからは、これらのロード ポイントのいずれかを使用して自動起動されるように構成された項目をすべて表示する、非常に優れたアプリケーションも無償で提供されています。

当社の脅威調査アナリストは、ロード ポイントに関する知識を駆使して定義を微調整していますが、マルウェアを削除するために、ロード ポイントを停止してコンピューターを再起動しなければならないケースが増えてきました。最近のロード ポイントに関する奇妙な傾向を見ると、ロード ポイントがドミノのように連なり、実行プロセスを開始するアクションが、いくつかの手順を隔てて実際の実行プロセスにたどり着く、という点です。この点に注意してください。

どちらの手法も、Windows 自体の機能を悪用しています。レジストリは非常に強力なツールです。その主な理由は、目立たないキーとその値が、Windows のユーザー操作の大半を制御していることです。

Control the shell\open\command, Control the Box

ここに示した Wireshark Antivirus と呼ばれるソフトウェア (同名の完全に合法的なネットワーク分析ツールとは違います) などの偽セキュリティ製品が、再起動後に自動起動する方法の 1 つが、「実行キー」の使用です。

レジストリには、新しい値を作成して、その値にプログラムへのパスを設定することにより、再起動後に Windows がそのプログラムを起動する場所がいくつかあり、非常によく使用されています。次のような場所がそれにあたります。

HKEY_LOCAL_MACHINE\software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\software\microsoft\windows nt\currentversion\windows

レジストリのこの部分のエントリを十分に確認すれば、悪意のあるエントリは奇妙さが際立っていることが多いため、それらを容易に特定できるようになります。たとえば、多くの偽ウイルス対策プログラムのインストーラーは、通常とは異なる場所にランダムな 3 文字の名前のファイルを作成し、起動時にアプリケーションを実行する、ランダムな 3 文字の実行キーを生成します。

コンポーネントが「ランダム」であっても、この種の動作を特定することは非常に簡単なため、最近の不正プログラムには、ファイル クラス全体の動作に影響するレジストリ キーを変更するものがあります。たとえば Windows では、次のキーを使用して、ファイル拡張子が .EXE のプログラムを、アイコンまたはショートカットのダブル クリック、またはコマンド ラインからの起動などによって実行したときに想定されるオペレーティング システムの動作を定義します。そのキーは次のとおりです。

HKEY_LOCAL_MACHINE\software\classes\exefile\shell\open\command

このキーの値が通常の場合、Windows は単にそのプログラムを開始します。しかし、一部の不正プログラムはこの値を変更して、ユーザー (または Windows) が任意の .EXE ファイルを実行しようとするたび、最初に偽のウイルス対策プログラムが実行されるようにします。

その動作により、不正プログラムが常にアクティブになるだけではなく、どのアプリケーションを起動可能 (または起動不可能) にするかを、不正プログラムが制御できるようになります。

この動作は、偽ウイルス対策プログラムによるダブル パンチです。それは、実際のウイルス対策プログラムがあれば、起動される前に即座に停止し、不正プログラムのプロセス停止に使用されるかもしれない他の各種プログラム (タスク マネージャーなど) を遮断できるだけではなく、まったく良性のプログラムに起因する動作をある種の「虚構の」脅威と見せかけ、そこからユーザーを保護しているという幻想を守り通すことができるからです。

Wireshark Antivirus は、コンポーネントの一部として QuickTime アップデートという名前の Windows サービスも作成します。正規の Windows ファイルである csrss.exe の名前を騙るこのコンポーネントは、サービス キーを使用して自動起動し、定期的に不正プログラムのインスタンスを発生させるだけではなく、良い評判を聞かないドメイン greenteeforyou.com のサブドメインから追加コンポーネントをダウンロードします。

Web ブラウザー コントロールを使用するレジストリ キーにより、同様の技術で自動起動される不正プログラムも見つかっています。次のキーはその例の一部です。

HKEY_LOCAL_MACHINE\software\clients\startmenuinternet\firefox.exe\shell\open\command
HKEY_LOCAL_MACHINE\software\clients\startmenuinternet\iexplore.exe\shell\open\command
HKEY_CURRENT_USER\software\clients\startmenuinternet\firefox.exe\shell\open\command
HKEY_CURRENT_USER\software\clients\startmenuinternet\iexplore.exe\shell\open\command

それぞれのケースでは、たとえば電子メール メッセージや IM ウィンドウ内のリンクをクリックすると、これらのキーが使用され、ブラウザーではなく不正プログラムのインスタンスが開始されます。

身を隠すのに懸命なクリッカー
先週入手したクリッカーのサンプルは、ロード ポイントを隠そうとするマルウェアとして、これまで見てきた中でもっとも悪質なもののひとつでした。漫画家のルーブ・ゴールドバーグでさえ、これ以上に複雑に入り組んだ方法を考え付くことができなかったでしょう。

ご承知のように、クリッカーは感染したシステムのバックグラウンドで実行されます。名前が示すとおり、オンライン広告を「クリック」させる方法によって、広告がクリックされる回数に基づいてアフィリエイトに広告料を支払う企業に対して詐欺を働いています。

今のところ、当社ではこのクリッカーを「Trojan-Clicker-Batserv」と呼んでいますが、読み込みの動作が奇妙なことを別にすれば、それ自体はきわめて一般的なものです。実行されると、現在のユーザーの %appdata% フォルダー内にクリッカー自体の複製が作成されます。複製されたクリッカーには manager.exe、lssas.exe、または conima.exe などの名前が付けられます。その後、クリッカーの実行プログラムへの完全パスが記述されたコマンドが 1 つ含まれるバッチ ファイルが (なぜか %appdata% フォルダー内にも) 作成されます。

さて、お楽しみはこれからです。クリッカーが初めて実行されると、いくつかの動作が相次いで実行されます。まず、ポート 88 上で指揮管理 Web サイトと通信し、命令を取得します。次に、ローカル ポリシー エンジンを使用して %appdata% フォルダー (および下位のすべてのフォルダー) を非表示にします。また、Windows ファイアウォールの例外リストにエントリを追加し、クリッカーがインターネットに接続してデータを取得するのを妨げられないようにします。さらに、Internet Explorer のさまざまなセキュリティ設定を変更し、感染したコンピューターがドライブバイ ダウンロードや他のマルウェアに感染しやすい状態にします。

最後に、クリッカーはレジストリ内にサービス キーを作成します。実際には、通常の条件下で Windows が特定の実行ファイルをサービス (通常はユーザー インターフェイスが表示されないプログラム) として実行する方法を定義し、サービス管理スナップイン (services.msc) にサービス エントリを表示する方法を定義する一連のキーです。

ある種の悪意のあるアプリケーション (パスワード スティーラーやクリッカーなど) が、アプリケーション自体をサービスとして設定することは珍しいことではありません。ほとんどの場合、感染するとサービス キーは実行キーのように動作し、悪意のある実行ファイルを直接ポイントします。サービスの説明テキストがこの例のようにもっともらしく見えることも、それほど珍しいことではありません。しかしこのクリッカーは、バッチ ファイルをポイントするようにサービス キーを設定します。Windows 起動時にサービスが開始されると、この .bat ファイルが実行され、その結果クリッカーが開始されます。

これらすべてが相まって、マルウェアを「手動で削除」する作業がさらに困難になり、マルウェアの調査作業がさらに複雑化しています。しかし、当社のプログラムを使用してマルウェアを削除したり、マルウェアによって変更されたレジストリの内容を修正したりする作業が妨げられるわけではありません。私が興味を引かれたのは、どれほど愚かなプログラムかという点だったかもしれません。しかしまた、風変わりで入り組んだプログラムであることから、大部分が機能していることも事実です。ですが、システムが複雑になればそれだけ、動作に失敗しやすくなり、私たちにとってはその尻尾をつかみやすくなります。

マルウェアの作成者は次第に腕を上げ、常に何か別のことに挑戦しようとしているものです。たとえ挑戦の目的が、今にも倒れそうなドミノを並べることだとしても。

wordpress blog stats