Microsoft EMET v4 徹底解説:無料で使えるWindows最強のセキュリティツール完全ガイド
Microsoft Enhanced Mitigation Experience Toolkit(EMET)が、Windowsオペレーティングシステム向けの最高のセキュリティソフトウェアであることは、すでにご存じの方も多いでしょう。その理由は数多くあります。まず、セットアップがシンプルで透過的であり、難しい専門知識を必要としないこと。そして何より、完全無料であること。さらに、その目的に対して実際に効果を発揮する点です。EMETはユーザーの愚かな行動を止めるものではなく、ソフトウェアの不正な動作を防ぐものです。この点こそがEMETの優れたところであり、有料セキュリティ業界であまり脚光を浴びない理由でもあります。
そして今回、初めて一般向けとして公開されたバージョン4.0が登場しました。確かに以前のバージョンも使用可能でしたが、それらはどちらかというとベータ版や中間リリースに近く、主に上級者向けのものでした。しかし今回のバージョンは、普通のユーザーでも安心して使える仕上がりになっています。本記事では、EMETの全体像を概観しつつ、セキュリティ環境に簡単に導入できるよう、やや詳しいチュートリアル形式で解説していきます。
インストール
インストール自体は非常に簡単ですが、一点だけ注意すべきことがあります。EMET v4を使用するには、Microsoft .NET Framework 4が必要です。なんとも皮肉な話ですね。最新版を使うには、まずこのフレームワークをインストールしておく必要があります。
次に、ウィザードの指示に従って進めるだけでOKです。細かい内容を読む必要はほとんどありません。本当に簡単です。ただし、唯一注意を払うべきステップがあります。それは、インストール直後に表示される初期設定ウィザードです。
この設定ウィザードでは、EMETが初回起動する前に事前構成を行うことができ、多くのユーザーにとって強く推奨されるステップです。ウィザードの説明にも明記されているように、以下の処理が行われます。
- 以前のインストールからのアプリケーション設定のリセット
- Internet Explorer、Adobe Reader、Oracle Javaなど、よく使われ攻撃対象になりやすいプログラムへの保護の追加
- 人気のオンラインサービスがブラウザ内で緩和策を誤発動しないよう、信頼ルールの追加
- システムログ機能による詳細なレポートの有効化
筆者のおすすめは、このウィザードを実行することです。害は一切なく、大半のユーザーは結局これらの設定を手動で行うことになるからです。しかも、ウィザードはいつでも再実行できます。
最初のステップと基本設定
ウィザードが完了すると、EMETが起動します。ここからは、ユーザーインターフェースと各種機能を見ていきましょう。左から右へ、上から下へという順序で説明します。過去にEMETを使ったことがある方なら、設定項目自体は馴染みのあるもので、見た目の配置が変わっただけだと感じるでしょう。
インポート/エクスポートと設定
「Import(インポート)」ボタンと「Export(エクスポート)」ボタンを使うと、既存のEMET設定を保存・復元できます。保存されるのはXMLファイルで、設定内容とアプリケーションルールが格納されます。大きな変更を加える前や、ウィザードを再実行する前に、必ず設定をバックアップしておくことをおすすめします。ウィザードの再実行によって、セットアップ全体がリセットされる可能性があるためです。実用面では、通常のソフトウェアにおける「保存/開く」と同じ感覚で扱えます。
「Apps(アプリ)」ボタンをクリックすると、プログラムを構成するためのウィンドウが開きます。詳細は後述します。「Trust(信頼)」ボタンでは、オンラインサービス用の証明書を構成できます。こちらも後ほど説明します。
プロファイルとレポーティング
プロファイルとは、XML形式で保存された設定の集合体であり、マシンに対する特定のルールを含みます。ただし、適用するとシステム全体の動作に影響します。現在の自分の設定(Custom=カスタムと表示)と、「Recommended(推奨)」「Maximum(最大)」の2つのプリセットを切り替えることができます。
「推奨」プロファイルは、Microsoftが「セキュリティを十分に確保しつつ、システムへの影響が最小限」と判断した形で緩和策を設定します。一方「最大」プロファイルはすべてのオプションをオンにするため、互換性のないソフトウェアが不具合を起こしたりクラッシュしたりする可能性があります。
実際のところ、筆者は「最大」プロファイルの使用をおすすめしません。あまりに厳格すぎるためです。安全で準拠した方法でコーディング・コンパイルされていないアプリケーションは数多くあり、緩和策を適用されると奇妙な挙動を示すことがあります。
例えば、Google Chromeでは「Aw, Snap!(おっと!)」エラーが発生する可能性があります。VLCメディアプレイヤーは、すべての緩和策が有効な状態では自動更新ができなくなります。また、Microsoftによる買収以前のSkypeは、一部のオプションが有効だと正常に動作しませんでした。各設定がどういうもので、オン/オフによって何が起こるのかについては、後ほど詳しく説明します。ちなみに、アプリケーションのスキン(外観テーマ)も変更できますが、これは正直どうでもいい話です。
「Reporting(レポーティング)」は左から4番目のカテゴリで、EMETが動作した際に表示されるメッセージに関する設定です。緩和策が発動した際にデスクトップにポップアップを表示させたり、イベントログに記録を残したりすることができます。参考までに、以前のEMETレビュー記事で紹介したスクリーンショットを掲載します。この機能がよく分かるでしょう。
システムステータス
次に「System Status(システムステータス)」欄について説明します。ここには、ソフトウェアに対する4種類の緩和策が一覧表示されます。デフォルトではかなり寛容な設定になっており、DEPとASLRを利用できるプログラムはそれらを使用し、SEHOP保護はデフォルトでは無効、証明書の信頼(Certificate Trust)のみ有効、といった状態です。
さて、これらの略語が何を意味するのか気になる方もいるでしょう。しかし答えはこうです――説明しません。なぜなら、プログラマーでない限り、あるい大学でコンピュータサイエンスを学んでいない限り、これらの略語は無意味だからです。言ってしまえば、カーネルやスケジューラ、メモリ管理、プロセス空間などの話を始めるのと同じことになります。
一般のユーザーが知っておくべきことは、ただひとつです。これらの緩和策は、最終的にあなたのソフトウェアの動作に影響するということ。つまり、関心を持つべきはシステムが健全かつ正しく機能しているかどうかだけです。各プロファイルで定義された「最大設定」と「寛容な設定」の間には、いくつかの選択肢があります。
- Disabled(無効):その緩和策は使用されません。
- Opt In(オプトイン):特定のシステムファイル、バイナリ、関数に対してのみ緩和策を有効化します。OS、BIOS、アプリケーションの対応状況に依存します。
- Opt Out(オプトアウト):より厳格なモードで、すべてのアプリケーションに対してすべての緩和策を適用しようとします。非対応または不具合のあるプログラムについては、個別に除外を選択できます。
- Always On(常時有効):緩和策を解除不可の状態で有効化します。理論上は最も安全ですが、正規のプログラムが大量にクラッシュする可能性もあるため、最もトラブルが起きやすい設定でもあります。
おすすめの進め方は、「推奨」プロファイルから始めるか、スキルに自信があれば独自の構成を作ることです。「最大」設定は、EMETの使い方を十分に理解し、確信を持てるようになるまで保留にしましょう。証明書の信頼についてはシンプルで、有効か無効かを選ぶだけです。
実行中のプロセス
この表には、実行中のプロセスの一覧と、それぞれがEMETの保護対象かどうかのステータスが表示されます。現時点ではそれほど重要ではありませんが、後ほど緩和策がどのように作用するかを確認する際に役立ちます。
アプリケーション
ここまではシステム側の構成を行ってきました。つまり、希望するプロファイルを選択し、それによってコアシステムファイルに対する各緩和策のオン/オフとレベルが決まり、デフォルトの動作が定義されます。次は、個々のアプリケーションを構成する段階です。
DEP、ASLR、SEHOPなどの緩和策による全体的な動作に加えて、アプリケーションごとのルールでシステム保護を細かく調整できます。これは、プログラムのツールバーにある「Apps」ボタンからアクセスします。
再度、画面の内容を簡単に確認しておきましょう。「Export(エクスポート)」と「Export Selected(選択項目をエクスポート)」で、アプリケーションのルールを保存できます。「Add Application(アプリケーションの追加)」をクリックするとウィザードが開き、フルパスで特定のプログラムを検索して登録できます。「Add Wildcard(ワイルドカードの追加)」では、汎用的なパターンを指定するだけで、それに一致するすべてのプログラムが保護対象になります。
例えば、Internet Explorerには32ビット版と64ビット版の2種類があります。フルパスで指定する場合は2つのルールが必要ですが、ワイルドカードを使えば1つのルールで両方をカバーできます。「Show Full Path(フルパスを表示)」オプションを切り替えれば、ルールがどのように記録されているかを確認できます。
なお、初回ウィザードで有効化される推奨設定は、すべてワイルドカード方式を採用しています。これにより、展開と管理が格段にシンプルになります。一括管理については後ほど触れます。
「Default Action(デフォルトアクション)」は、アプリケーションの挙動を制御します。エクスプロイトを検出した際に、ログの記録のみ(監査)にとどめるか、実行中のプロセスを停止させるかを選択します。なお、ここでの「エクスプロイト検出」は必ずしもマルウェアを意味するわけではなく、緩和策によって禁止された不正な命令全般を指します。
最後に「Mitigation Settings(緩和策の設定)」では、Deep Hooks(推奨プロファイルではデフォルトで無効)、Anti Detours、Banned Functionsなど、さまざまな種類の緩和策をオン/オフできます。これらは、いわば「健全なコーディング規範の聖杯」と考えるとよいでしょう。
「Mitigations(緩和策)」欄には、手動で追加したもの、インポートしたもの、ウィザードが自動登録したものを含め、保護対象となっているすべてのアプリケーションが一覧表示されます。緩和策にはMemory、ROP、Otherの3種類があります。繰り返しますが、カーネルの仕組みを知らないのにこれらの内部動作を理解しようとしても意味がありません。例えば、コード、データ、ヒープとは何か?スタックとは?システムコールとは?x86アーキテクチャにおける命令ポインタとは?これらにひとつでも「いいえ」と答えるなら、緩和策の内部を知る必要はないのです。
単純に、プログラムの動作に影響する設定のひとつとして扱えばよいのです。問題なく動いているならそのまま放置し、不具合が出たらひとつずつ無効化して、原因を突き止めていく。それが基本の考え方です。
アプリケーション追加後
ここにリストされていない独自のアプリケーションを追加した場合、EMETのフックが読み込まれるように、プログラムの再起動が必要になることが多いでしょう。最初の記事で、Process Explorerを使ってこれを確認する方法を紹介しています。
証明書の信頼(Certificate Trust)
このセクションでは、証明書によって保護されるべきウェブサイトを構成します。これにより、それらのサイトの挙動を信頼し、いわゆる「誤検知(false positive)」によって緩和策が発動してサイトが使えなくなる事態を防ぎます。
ここでもルールのエクスポートが可能です。ウェブサイトの追加や削除もできます。構成したサイトは、下部の「Protected Websites(保護されたウェブサイト)」テーブルに一覧表示され、「Pin Rule(ピン留めルール)」も併せて表示されます。ピン留めルールとは、そのサイトがルールに示された認証局によってデジタル署名されている場合にのみ信頼する、という仕組みです。ドロップダウンメニューでルールを変更することもできますが、変更は強くおすすめしません。ブラウザ内のデジタル証明書を手動で改ざんするようなものだからです。
ピン留めルールでは、有効期限、適用国、ブロックするハッシュ、公開鍵の一致など、細かい調整が可能です。しかし当然のことながら、これらの設定のほとんどはデフォルトで無効になっており、フィルタリングなしで証明書のデフォルト値が使われます。筆者の強い勧告は、これらに一切手を加えないことです。
賢い運用プラクティス
最も難しい問いは、「どうすればEMETを賢く使えるのか?」です。手動での変更や調整に頼りすぎると、セキュリティソフトの意味が失われます。なぜなら、人間こそがセキュリティチェーンにおける最弱のリンクになってしまうからです。EMET v4には、スムーズに、中断なく動いてほしいものです。完全に透過的であるべきで、ユーザーが意識すべきは、VLCやSkypeなど、たまに発生する例外対応くらいで十分です。
先ほどの提案に戻りますが、初回ウィザードを使い、推奨設定を適用してください。その後、自分のプログラムを追加し、すべてが期待通りに動作することを確認します。しばらくそのまま様子を見ましょう。確信が持てたら、少しずつ、一段階ずつレベルを上げながら、すべてのソフトウェアを慎重にチェックしていきます。プログラムがクラッシュしたり正常に動作しなかったりする場合は、緩和策をひとつずつ無効化していき、そのプログラムが快適に動作する最小レベルを見つけてください。
この作業は地道ですが、落胆する必要はありません。筆者の経験では、調整が必要になるのはせいぜい1〜2個のプログラム程度です。VLC、Chrome、Skypeが思い浮かびますが、それ以外で動作不良を起こしたプログラムには遭遇したことがありません。
証明書の信頼について補足すると、これは新しく、やや実験的な機能です。Webとアプリケーションの融合、そしてその組み合わせがローカルホスト上で何をしうるかに対応するためのものです。つまり、アプリストア経由で購入したソフトウェアやWebアプリとして動作するソフトウェアは、コーディングが不適切だった場合、システムに危険な変更を加えたり、悪用されたりする可能性があります。一方で、緩和策が強すぎるとユーザー体験を大きく損なう恐れがあり、そこで「信頼」という概念が登場するわけです。
筆者の短い経験では、デフォルト設定で十分に機能しました。さらに、ブラウザのセキュリティ拡張機能を使えば、追加の防御も可能です。ただし、これは別の話題です。まとめると、証明書の信頼はデフォルトのままにしておき、必要であればサイトを慎重に少しずつ追加し、ピン留めルールには絶対に手を触れないこと。そうしないと、本当に奇妙で予期しない挙動に悩まされることになります。
企業展開とプロファイルの詳細
保護プロファイルについては、EMETバージョン3の解説時に取り上げました。ここで簡単におさらいしますが、じっくり読む価値のある内容です。このセクションでは、管理を容易にするためのグループポリシーの活用方法もカバーします。
EMETのプロファイルは、デフォルトのインストールディレクトリ配下の「Deployment\Protection Profiles」にXML形式で保存されています。デフォルトで用意されているのは、「CertTrust.xml」「Recommended Software.xml」「Popular Software.xml」の3つです。
ここに追加されたプロファイルや変更は、EMETが次にルールを読み込む際に反映され、アプリケーションごとの該当する緩和策の組み合わせが生成されます。プロファイルは、EMETで実現したいあらゆるセキュリティ粒度に合わせて調整可能です。プロファイルの形式は、例えば以下のようになっています。
<Product Name="Windows Media player">
<Version Path="*\Windows Media Player\wmplayer.exe">
<Mitigation Name="SEHOP" Enabled="true" MinOS="6.1"/>
<Mitigation Name="MandatoryASLR" Enabled="false" />
<Mitigation Name="EAF" Enabled="false" />
</Version>
</Product>
<Product Name="Skype">
<Version Arch="x86" Path="*\Skype\Phone\Skype.exe">
<Mitigation Name="EAF" Enabled="false" />
</Version>
</Product>
ここには何が書かれているのでしょうか?これはXMLなので、キーと値のペアが階層構造になっており、それらが組み合わさってプロファイル全体のロジックを形成します。「Popular Software.xml」プロファイルから引用した2つのサンプルルールを簡単に見てみましょう。
Windows Media Playerの場合、まず製品名の定義があります。次にパスがあり、ワイルドカード付きで指定されています。そして3つの緩和策と、それぞれの状態(true/false)が列挙されています。SEHOPには最小OSバージョン(MinOS)も指定されており、これはこの緩和策が利用可能なWindows NTカーネルのバージョンを指します。つまり、このプロファイルをWindows XPに展開しても機能しないということです。
Skypeの場合には、もうひとつ新しいフィールドがあります。アーキテクチャ(Arch)の指定で、Intel x86です。これは、ARMベースのWindows RTなどでは、この緩和策のルールがおそらく機能しないことを意味します。また、一部の緩和策がオフになっています。Microsoft自身が「問題を起こす可能性がある」と把握しているからです。これらはあくまで推奨設定なので、もちろん変更は可能です。
さらに、defaults(デフォルト)セクションもあるため、アプリケーションごとにすべてを一から書く必要はありません。XMLファイルの冒頭にはかなり長いコメントセクションがあり、技術的な用語で仕組みが詳細に説明されていますが、これをきちんと理解するには、本記事のような平易なガイドの方がずっと役立つはずです。ちなみに、コメント部分には驚くことにスペルミスまで含まれています。
最後に、グループポリシーについては、「Deployment\Group Policy Files」配下に「EMET.adml」と「EMET.admx」のテンプレートファイルが用意されており、ドメイン内のホストの構成に利用できます。ただし、本チュートリアルは主にホームユーザー向けなので、この設定は割愛し、需要が高まれば改めて取り上げます。
関連記事
以下の記事も、ぜひじっくり読むことをおすすめします。
- Microsoft EMET v3 概要
- Microsoft EMET v2 解説
- Webとメールの一般的なセキュリティ対策プラクティス
- WindowsユーザーのためのSuRun活用法
まとめ
筆者の言葉は変わりません。Microsoft EMETは、Windows向けに最も優れたセキュリティツールボックスであり、バージョン4もその例外ではありません。EMETの狙いは、「設定して忘れる(fire-and-forget)」型のセキュリティ環境を実現することです。リアルタイムで警告を出すこともなく、システムリソースを消費することもなく、安易な「はい/いいえ」の判断ミスを犯させることもありません。それでいて、真の実績あるセキュリティを提供してくれるのです。
この重要なメッセージとともに、本記事ではソフトウェアと関連技術の詳細、そして自分のシステムとアプリケーションに合わせたEMETの構成方法を豊富に解説しました。目立たず、効率的なセキュリティ環境を楽しんでいただければ幸いです。筆者がMicrosoftに対して否定的なだけではないことも分かってもらえたでしょうか。時に、彼らは素晴らしい製品を作るのです。
それでは、また。
-
Windows 10 エクスプロイト保護 - チュートリアル
Windows 10 Fall Creators Update (ビルド 1709) のリリースにより、最も優れた洗練された Enhanced Mitigation Experience Toolkit (EMET) が利用できなくなったか、このオペレーティング システムにインストールできなくなりました。代わりに、これらの軽減策は Windows 10 の不可欠な部分になりました。 私は EMET の大ファンであり、すべての Windows マシンで EMET を使用しているため、Windows 10 で新しい軽減策を展開して調整する方法について、詳細で実用的かつ実際の使用ガイドを作成するこ
-
Microsoft EMET 5.5 レビュー ― その優秀さは変わらず
Microsoftは数多くの製品を世に送り出しています。嫌いなものもあれば、大好きなものもあります。EMETは後者に属する製品で、額にレーザー光線を装着したティラノサウルス以来のデジタル世界最大のヒットと言えるでしょう。「Enhanced Mitigation Experience Toolkit」ことEMETは、アプリケーションを厳格な実行ポリシーで包み込むフレームワークを提供する、極めて優れたセキュリティアプローチです。動作が不正であれば即座に強制終了。良し悪しの判断は一切ありません。この仕組みこそが、EMETを他のあらゆるセキュリティツールより優れた存在にしています。これまでにも何度もそ