マイクロソフト謹製のマルウェア対策ソフトウェアである、System Center 2012, Endpoint Protection (SCEP)は他社のマルウェア対策ソフトウェアと同じく、定義ファイルをベースにコンピューター内のマルウェアを検出する仕組みを採用しています。そのため、定義ファイルを正しく入手し、定義ファイルを正しく利用してマルウェアスキャンを行うことがとても重要になります。
そこで、SCEPがどのような仕組みで定義ファイルを取得し、実装しているか、調べてみました。
注意:私が調べた限りでは、マイクロソフトオフィシャルな情報が見当たらなかったため、自分のコンピューターにおける挙動をベースにこの投稿はまとめられています。そのため、投稿の内容の正当性についての最終的な判断はご自身で行うよう、お願いします。
■ ■ ■
定義ファイルの取得方法
SCEPで使用する定義ファイルは基本的にMicrosoft Updateから取得します。SCEPクライアントは直接Microsoft Updateから取得することもできますし、SCCMの配布ポイント経由で取得することもできます。
配布ポイント経由で取得する場合、SCEPクライアントに配布する定義ファイル自体をMicrosoft Updateから取得しなければなりません。しかし、Microsoft Updateから取得する作業を手動で行っていては面倒なので、定期的に定義ファイルをMicrosoft Updateから取得し、配布ポイントに保存しておく機能をSCCMでは使用します(これを「自動展開規則」と呼びます)。
定義ファイルの保存場所
Microsoft Updateから取得した定義ファイルはSCEPクライアントのc:ProgramDataMicrosoft AntimalwareDefinition Updatesフォルダーに保存されます。ファイルには、マルウェア対策機能用の定義ファイルである、Mp*.vdmファイル群と、IPS用の定義ファイルである、NIS*.vdmファイル群があります。
では、これらのファイルが保存されている場所を実際に見てみましょう。
c:ProgramDataMicrosoft AntimalwareDefinition Updatesフォルダーには、GUIDのような番号が割り当てられたフォルダーがいくつか作られています。このうち、更新日時が一番新しいフォルダーを開いてみると、
ありました!
↓これ↓が最新の定義ファイルになります。
前の世代の定義ファイルと比べるとわかるのですが、定義ファイルは最新版を取得しても、mpavbase.vdmファイルとmpasbase.vdmファイルは新しいファイルになっていないことがわかります。
これは定義ファイルを取得するときに前回取得した定義ファイルからの差分だけを取得するからです。
■一世代前の定義ファイル(mpasbase.vdmとmpavbase.vdmファイルの更新日時は変わっていない)
このようにして、クライアントが定義ファイルを取得するときには最低限のデータだけをダウンロードするように構成されているのですね。
定義ファイルのバックアップ
では、もう一度、Definition Updatesフォルダーに戻ってみましょう。フォルダーにはBackupという名前のフォルダーがあります。Backupフォルダーの中に入っているファイルは、*.vdmファイルで更新日時を調べてみると、最新の定義ファイルから1世代前の定義ファイルが保存されていることがわかりました。つまり、Backupフォルダーに入っている定義ファイルは、文字通り、最新バージョンの定義ファイルに対するバックアップなのです。
しかし、Backupフォルダーの活用方法についてはユーザーインターフェイスのどこを見てありません。
そのため、最新バージョンの定義ファイルが壊れたときには手動でファイルを置き換えることで対処することになると思います(推測)。
実際に、Backupフォルダーから定義ファイルを復元してみようとしたのですが、一部のファイルはSCEPクライアントによって排他制御されているため、 すべてのファイルをBackupフォルダーから最新バージョンの定義ファイルを上書きすることはできません。そのため、Movefile (Sysinternalsツール) を使用して手動で最新のファイルを削除予約しておき、一度再起動すると、最新バージョンの定義ファイルはすべて削除され、Backupフォルダーの定義ファイルに置き換えることができるようになります。
これが正しいロールバック方法なのか、よくわかりませんが、私の環境では少なくとも前のバージョンに戻すことができました。
定義ファイルの保存場所 ~ サーバーサイド
今度はSCCMのサーバーサイド (サイトシステム) に保存されている定義ファイルについて見てみましょう。
Microsoft Updateから取得した定義ファイルはSCCMの自動展開規則を作成するウィザードの[パッケージのソース]で設定した場所に保存されます。
自動展開規則を設定し、実行すると、Microsoft Updateから取得した定義ファイルが格納されます。
一つひとつのフォルダーには各定義ファイルが格納されています。
フォルダーのうちのひとつを開くと、exeの形式の定義ファイルが格納されています。
Microsoft Updateから取得したタイミングでは、vdm形式のファイルではないのです。
(SCCMでexe形式の定義ファイルを取得してから、vdm形式のファイルを生成している??)
一方、配布ポイントが取得した定義ファイルはSCCMのコンソールからは[ソフトウェアライブラリ]-[ソフトウェア更新プログラム]-[すべての更新プログラム]から確認できます。
SCCMのコンソールに表示されている更新プログラムのひとつを開くと、以下のような情報が確認できます。一つひとつの定義ファイルがどのKBに対応しているか、という情報です。
ちなみに前の画像にAM_Delta_Patch_1.155.923.0というファイルが映っていましたが、これは
下の図でいうところの「Microsoft Endpoint Protectionの定義の更新 – KB2461484 (定義 1.155.923.0)」に当たります。
さらに[コンテンツ情報]タブをクリックすると、ソースのダウンロード先URLも確認できます。
このように定義ファイルが保存されているフォルダーだけ見ると、なんだかよくわかりませんが、
SCCMのコンソールを参照することで、一つひとつの定義ファイルが
どのような効果のある定義ファイルなのかがわかるわけです。
定義ファイルを手動で取得する
ここまで、定義ファイルはMicrosoft Updateから取得する、またはSCCMの配布ポイントから取得する方法があることを確認しました。では、定義ファイルをファイルの形で手動で取得したい場合、どうすればよいでしょうか?
その場合には、マイクロソフトのサイトから直接ダウンロードします。
pMalware Protection Center
http://www.microsoft.com/security/portal/definitions/howtoforefront.aspx
既にマルウェア感染しているコンピューターで最新の定義ファイルを使ってマルウェアスキャンを行いたい、
だけど、定義ファイルをネットワーク経由で取得しなければならない、
だけど、マルウェア感染したコンピューターをネットワークに接続させたくない、
というときにお勧めです。