Skip to main content
Windows IT Pro Center
評価してください: 

不明な自動起動プログラムの問題

翻訳元: The Case of the Unknown Autostart (英語)

数週間前、私は、使用しているシステムの 1 つに、ある有名な Internet Explorer メディア プレーヤー ActiveX コントロールの更新プログラムをインストールしました。私は、そのプラグインの更新プログラムをインストールすると必ず、何の役にも立たないように思える自動起動プログラム (起動中、ログイン中、または別の処理時に自動的に起動するように構成された実行可能ファイル) が構成されることを今までの経験から知っていたので、今までやってきたのと同様に、Sysinternals の Autoruns を起動し、オプション メニューの [Verify Code Signatures] と [Hide Signed Microsoft Entries] の両方を設定し、[Refresh] をクリックし、自動起動プログラムを見つけて削除しました。しかし、ウィンドウを閉じようとしたとき、別の項目 (下図参照) が目に付き、私の心臓は止まりそうになりました。

図 1

図 1

その項目 ("IECheck") はマルウェアの特性をすべて備えています。アイコンも説明も会社名も表示されず、Windows ディレクトリ内にあるのです。さらに、Autoruns の Search Online (オンライン検索) 機能で Web 検索を実行しても、この怪しい実行可能ファイルに関する情報は何も得られませんでした。

この項目がマルウェア感染の証拠なのかどうかを判断するためにさらに調査する必要があったので、Sysinternals の Strings (英語) ユーティリティを使用することにしました。イメージ ファイルには、多くの場合、アプリケーションを推測する手掛かりとなるプレーン テキスト文字列が含まれています。たとえば、あるプログラムがレジストリから構成情報を読み取る場合、実行可能ファイルにはレジストリ パスが埋め込まれており、通常、ベンダーやアプリケーションの名前が含まれています。Strings を実行すると、出力可能な文字列 (Unicode と Ascii の両方) を探すためにファイルがスキャンされ、見つかった文字列が出力されるので、私が次に行ったのは、コマンド プロンプトを開き、IECheck.exe 内のそのような文字列をダンプすることでした。出力が非常に長ったらしいため出力をテキスト ファイルにパイプしてメモ帳で結果を調査した方が簡単な場合もありますが、今回はコマンド プロンプトをスクロールしていると興味深いテキストが見つかりました (下図参照)。

図 2

図 2

案の定、実行可能ファイルには、おそらく同じアプリケーションの一部であると思われる他の実行可能ファイルへの文字列参照が含まれており、こうした文字列参照からアプリケーションの名前 (IconEdit2) およびベンダー ( WinAppsPlanet (英語) 外部サイトへ) が明らかになりました。そこで私は、数日前に解像度の高い Vista スタイルのアイコンを編集するために IconEdit をダウンロードしたことを思い出しました。こうして私は、この件を誤認警報に分類し、この件に決着を付けることができました。私の心臓の鼓動は通常のリズムに戻りました。

この例は、ソフトウェア ベンダーが信頼性のため、および私が経験したような混乱を避けるために従う必要があるいくつかの慣例を浮き彫りにしています。1 つ目は、ハードコーディングされた文字列ではなく環境変数と Shell の特別なパスを使用することです。IECheck (おそらく "Icon Editor Check" (アイコン エディター チェック) を表すのでしょう) は、Program Files ディレクトリを名前で参照しています。これは Windows の英語版でのみ有効なので、外国のシステムにインストールされた場合、IECheck は探している実行可能ファイルを見つけることができません。このような方法を使用するのではなく、%PROGRAMFILES% 環境変数を使用して Program Files ディレクトリの場所を特定するか、フォルダー パラメーターに CSIDL_PROGRAM_FILES を指定して ShGetFolderPath を呼び出すべきです。

セキュリティを気にするユーザーを不安がらせなくて済むように、すべての実行可能ファイルには、会社名を含むバージョン リソースと、その実行可能ファイルの目的を明確に示す説明を含める必要があります。さらに、ベンダーはコード署名証明書を入手して、提供するコードにデジタル署名する必要があります。Windows は、ユーザーが信頼性に関する判断を下すのを手助けするために署名情報にますます頼るようになっています。また、ユーザーは Process Explorer、Autoruns、 Sigcheck (英語) などのツールを活用して、実行可能ファイルがマルウェアではなく通知どおりのものであることを確認することができます。IconEdit2 の作成者に連絡したところ、このガイダンスに従うようにアプリケーションを更新してくれるとのことでした。すべてのベンダーが、この種の不必要な不安を避けるためにそれぞれの役割を果たす必要があります。

公開: 2007 年 5 月 21 日月曜日 7:00 AM 投稿者: markrussinovich (英語)

トップへ戻る

共有

ブログにコピー: ([Ctrl] + [C] でコピーしてください)

Mark's ブログ: 一覧

Mark Russinovichマーク・ルシノビッチ (Mark Russinovich)

マーク・ルシノビッチ氏は、マイクロソフトの Windows Azure チームのテクニカル フェローで、『 Windows Internals』、『 Windows Sysinternals Administrator’s Reference』、およびサイバー サスペンスの『 Zero Day: A Novel』の著者でもあります。連絡先は、 markruss@microsoft.com (英語のみ) です。

Mark's ブログ 日本語版は、 Mark's blog (英語) を翻訳したものです。