前回に続き、今回のツールもSysinternalsの有名ツール「Autoruns」です。Autorunsのスキャン結果が難解で皆目見当が付かないという人に、本当に怪しいモノを効率的に絞り込むテクニックを紹介します。
[ツール名]Autoruns for Windows
[対象]Windows
[提供元]マイクロソフト
[ダウンロード先][URL]http://technet.microsoft.com/ja-jp/sysinternals/bb963902.aspx(Autoruns.zip形式)/[URL]http://live.sysinternals.com/autoruns.exe(ツールを直接ダウンロードして実行)
今回も前回の「Process Explorer」(Procexp.exe)と同じく、「Windows Sysinternals」から「Autoruns for Windows」(Autoruns.exeおよびAutorunsC.exe)をご紹介します。
本稿執筆時点(2014年7月下旬)のAutorunsのバージョンは「v12.0」。AutorunsはProcess Explorerと同様、Windows Sysinternalsの最古参ツールの一つです。AutorunsにはGUIツールの「Autoruns.exe」とコマンドラインツールの「AutorunsC.exe」がありますが、GUIのAutoruns.exeの方が使いやすいでしょう。
Windowsには特定のプログラムを自動的に開始できる場所がたくさんあります。ログオンユーザーや全てのユーザー(All Users)の「スタートアップ」フォルダー、レジストリの「HKEY_LOCAL_MACHINE\Microsoft\Windows\CurrentVersion\Run」キーや「HKEY_CURRENT_USER\Microsoft\Windows\CurrentVersion\Run」キー、「タスクスケジューラー」に登録されたタスクなどが有名です。
こうしたプログラムの自動開始に利用できる場所は、100以上存在するといわれています。マルウェアはしばしば、これらの場所を利用して悪意のあるプログラムを実行します。
AutorunsはWindowsに存在する既知の場所を全てスキャンし、自動開始されるように構成された項目を列挙してくれます。不審なエントリがある場合は、ファイルのデジタル署名で正当性を検証したり、一時的に無効化したり、完全に削除したりすることができます。
Autorunsはログオン中のユーザーの権限で実行できますが、アクセス権のない場所の参照には失敗するので注意してください。また、管理者アカウントでログオンしている場合でも、「ユーザーアカウント制御」(User Account Control:UAC)の影響で参照できない場所があります。なお、すでにAutorunsを起動してしまった場合でも、「File」メニューの「Run as Administrator」を選択して管理者権限に昇格することで、全ての場所を参照することができます(画面1)。
マルウェア対策には専用の常駐型マルウェア対策ソフトを利用するべきですが、これでも完全に排除できるとは限りません。Autorunsはマルウェア対策ソフトをすり抜けて入り込んだ悪意のあるプログラムを探し出し、駆除するのに役立つでしょう。
Autorunsは「セーフモード」でも実行可能な上、オフラインのWindowsイメージのスキャンにも対応しています(以下の参考記事を参照)。そのため、正常に起動しなくなったシステムのトラブルシューティングや、何らかの方法で自身の存在を隠し、ひそかに動作するタイプのマルウェアへの対応も可能です。
Autorunsのスキャン結果は大量です。そして、そのほとんどは問題のない、システムやアプリケーションが必要とする項目です。正規の項目を誤って無効化したり、削除したりするとWindowsが正常に起動しなくなったり、アプリケーションの実行に不具合が生じたりする場合があります。そのため、大量のスキャン結果から不審な項目を見つけ出し、トラブルを解決に導けるかどうかは、Autorunsを使う人の“スキル次第”になります。
しかしながら、PCにあまり詳しくない人でも、効率的に不審な項目を洗い出す方法はあります。Autorunsにはスキャン結果を比較して、差分をハイライト表示してくれる機能があります。この機能をうまく活用すれば、詳しく調査すべき対象をある程度まで絞り込むことができるでしょう。
例えば、企業で使用しているクライアントであれば、同一構成のPCがたくさんあると思います。正常に稼働しているPCでAutorunsによるスキャン結果をファイル(拡張子.arn)に保存し、問題のあるPCのスキャン結果と比較すればよいのです(画面2)。問題が発生してからでは実行できない方法ですが、個人のPCの場合は正常稼働しているときにスキャン結果をファイルに保存して、問題発生時に備えておくとよいでしょう。
Autoruns(またはAutorunsC.exe)をコマンドラインから「-a」オプションを指定して実行すれば、GUIを表示せずにスキャン結果をファイルに出力できます。例えば、次のコマンドラインを実行すると、「コンピューター名_YYYYMMDD.arn」というファイル名でスキャン結果が保存されます。
autoruns(またはautorunsc) -a myautoruns_%date:~-10,4%%date:~-5,2%%date:~-2,2%.arn
このコマンドラインをタスクスケジューラーなどに登録して定期的に自動実行(管理者権限で実行)するようにしておけば、スキャン結果を自動的にファイルで蓄積することができます。
問題が発生しているPCでAutorunsを実行し、スキャンが完了したら、「File」メニューの「Compare」を選択して、別に保存しておいた正常なPCのスキャン結果のファイルを読み込みます(画面3)。
すると、Autorunsは現在のスキャン結果と比較対象の保存済みスキャン結果を比較して、変更された項目や追加された項目があれば、緑色の背景で項目をハイライト表示してくれます(画面4)。
なお、この方法では、以前は存在していたが、現在は削除されている項目はハイライト表示されません。削除された項目を調査するには、現在のスキャン結果をファイルに保存してから、「File」メニューの「Open」で過去のスキャン結果を開いて表示し、「File」メニューの「Compare」で最新のスキャン結果を比較対象として読み込みます。
不審なファイルを見つけたら、項目を選択した状態で[Ctrl]+[V]キーを押してみましょう。これで選択した項目のファイルのデジタル署名が検証されます。「Publisher」列に「Not verified」と表示された場合は、怪しさが深まります。ただし、真犯人であることを示しているわけではないことに注意してください。
項目の左にあるチェックボックスをオフにすれば、一時的にその項目を無効化できるので、PCを再起動して問題が解消されるかどうかを試すことができます。無効化した項目は、再度チェックボックスをオンにすることで復元できます。項目を右クリックして「Delete」を選択すると、その項目を完全に削除することができます。
最後に忠告です。Autorunsで怪しく見えたとしても、真犯人とは限りません。項目の削除は最後の手段にしましょう。例えば、Windows 7以降なら必ず存在する「GatherNetworkInfo.vbs」はとても怪しく見えますが、間違いなく、正規のWindowsのシステムファイルです。
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP:Hyper-V(Oct 2008 - Sep 2014)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手がける。個人ブログは『山市良のえぬなんとかわーるど』。
Copyright © ITmedia, Inc. All Rights Reserved.