Exploit Protection のカスタマイズ

適用対象:

Exploit Protection では、オペレーティング システム プロセスと個々のアプリの両方にさまざまな悪用軽減策の手法が自動的に適用されます。

これらの設定は、個々のコンピューターの Windows セキュリティアプリを使って構成し、他のコンピューターに展開できる XML ファイルとして構成をエクスポートします。 グループ ポリシーを使用して、一度に複数のデバイスに XML ファイルを配布することができます。 PowerShell を使って軽減策を構成することもできます。

このトピックでは、exploit protection で利用可能な各対策の一覧を示します。軽減をシステム全体に適用できるか、個々のアプリに適用できるかを示し、軽減のしくみについて簡単に説明します。

また、Windows セキュリティ、PowerShell、および MDM Csp を使用して、軽減を有効または構成する方法についても説明します。 これは、ネットワーク経由で展開できる構成を作成する最初の手順です。 次の手順では、構成を生成するか、エクスポート、インポートして複数のデバイスに展開します。

警告

セキュリティ軽減テクノロジによっては、一部のアプリケーションで互換性の問題が発生することがあります。 すべてのターゲット使用シナリオで、テスト環境またはネットワークの他の部分に構成を展開する前に、監査モードを使用して、exploit protection をテストする必要があります。

Exploit Protection の軽減策

すべての軽減策は個々のアプリに構成することができます。 一部の軽減策は、オペレーティング システム レベルでも適用できます。

軽減策ごとにオン、オフに設定したり、既定値に設定したりすることができます。 表の説明に示されているように、軽減策によっては追加のオプションがあります。

既定値は、各軽減策の [既定値を使用する] オプションで必ずかっこで囲まれて明示されています。 次の例では、[データ実行防止] の既定値は [オン] です。

ご家庭で日常的に使用するための基本レベルの保護には、各軽減策の設定の [既定値を使用する] 構成を使用することをお勧めします。 エンタープライズ展開では、個々のニーズに合わせた保護を検討することが要求され、既定値とは異なる構成への変更が必要になる場合があります。

各軽減策の関連する PowerShell コマンドレットについては、このトピックの下部にある「PowerShell リファレンス表」をご覧ください。

軽減策 説明 可能な適用先 監査モードが利用可能かどうか
制御フロー ガード (CFG) 間接呼び出しに対する制御フローの整合性を確保します。 必要に応じてエクスポートを抑制し、厳密な CFG を使うことができます。 システムおよびアプリ レベル Check mark no
データ実行防止 (DEP) コードが、ヒープとスタックなどのデータ専用メモリ ページから実行されることを防ぎます。 他のすべてのアーキテクチャに対して永続的に有効になっている、32 ビット (x86) アプリでのみ構成できます。 必要に応じて ATL サンク エミュレーションを有効にすることができます。 システムおよびアプリ レベル Check mark no
イメージのランダム化の強制 (必須 ASLR) /DYNAMICBASE でコンパイルされてないイメージを強制的に再配置します。 必要に応じて、再配置情報を持たないイメージの読み込みを失敗させることができます。 システムおよびアプリ レベル Check mark no
メモリ割り当てのランダム化 (ボトムアップ ASLR) システム構造のヒープ、スタック、TEB、PEB の場所を含む、仮想メモリ割り当ての場所をランダム化します。 必要に応じて、64 ビット プロセスのより広範なランダム化分散を使うことができます。 システムおよびアプリ レベル Check mark no
例外チェーンの検証 (SEHOP) 例外のディスパッチ中に、例外のチェーンの整合性を確保します。 32 ビット (x86) アプリケーションにのみ構成できます。 システムおよびアプリ レベル Check mark no
ヒープの整合性の検証 ヒープの破損が検出された場合はプロセスを終了します。 システムおよびアプリ レベル Check mark no
任意のコード ガード (ACG) イメージ ベースでない実行可能コードの導入を禁止し、コード ページの変更を防ぎます。 必要に応じて、スレッド オプトアウトを許可し、リモート ダウングレードを許可できます (PowerShell でのみ構成可能)。 アプリ レベルのみ Check mark yes
整合性が低いイメージのブロック 整合性が低いとマークされているイメージの読み込みを防止します。 アプリ レベルのみ Check mark yes
リモート イメージのブロック リモート デバイスからのイメージの読み込みを防止します。 アプリ レベルのみ Check mark no
信頼されていないフォントのブロック システム フォント ディレクトリにインストールされていない GDI ベース フォント (特に Web のフォント) の読み込みを防止します。 アプリ レベルのみ Check mark yes
コードの整合性ガード Microsoft、WHQL、またはそれ以降で署名された画像の読み込みを制限します。 必要に応じて、Microsoft Store によって署名されたイメージも許可できます。 アプリ レベルのみ Check mark yes
拡張ポイントの無効化 AppInit DLL、ウィンドウ フック、Winsock サービス プロバイダーなど、すべてのプロセスへの DLL インジェクションを許可する各種拡張メカニズムを無効にします。 アプリ レベルのみ Check mark no
Win32k システム コールの無効化 アプリがで Win32k システム呼び出しテーブルを使うことができないようにします。 アプリ レベルのみ Check mark yes
子プロセスを許可しない アプリが子プロセスを作成できないようにします。 アプリ レベルのみ Check mark yes
エクスポート アドレス フィルター (EAF) 悪意のあるコードによって解決されている危険な操作を検出します。 必要に応じて、悪用によって一般的に使用されているモジュールによるアクセスを検証できます。 アプリ レベルのみ Check mark no
インポート アドレス フィルター (IAF) 悪意のあるコードによって解決されている危険な操作を検出します。 アプリ レベルのみ Check mark no
実行のシミュレート (SimExec) 機密性の高い API の呼び出しが正当な呼び出し元に戻るようにします。 32 ビット (x86) アプリケーションにのみ構成できます。 ACG に対応していません アプリ レベルのみ Check mark no
API 呼び出しの検証 (CallerCheck) 機密性の高い API が正当な呼び出し元によって呼び出されるようにします。 32 ビット (x86) アプリケーションにのみ構成できます。 ACG に対応していません アプリ レベルのみ Check mark no
ハンドルの使用状態の検証 例外が無効なハンドル参照で発生するようにします。 アプリ レベルのみ Check mark no
イメージ依存関係の整合性の検証 Windows イメージの依存関係の読み込みにコード署名を適用します。 アプリ レベルのみ Check mark no
スタックの整合性の検証 (StackPivot) スタックが機密性の高い API にリダイレクトされていないことを確認します。 ACG に対応していません アプリ レベルのみ Check mark no

重要

[プログラム設定] セクションにアプリを追加して個々の軽減策の設定を構成している場合、そのセクションでの設定は [システム設定] セクションで指定した同一の軽減策の構成よりも優先されます。 次の表および例は、既定の動作を説明するのに役立ちます。

[プログラム設定] で有効化 [システム設定] で有効化 動作
Check mark yes Check mark no [プログラム設定] の定義どおり
Check mark yes Check mark yes [プログラム設定] の定義どおり
Check mark no Check mark yes [システム設定] の定義どおり
Check mark no Check mark yes [既定値を使用する] オプションで定義されている既定値
  • 例 1

    Mikael は、[システム設定] セクションで [データ実行防止 (DEP)][既定でオフにする] に構成しました。

    その後、Mikael はアプリ test.exe[プログラム設定] セクションに追加しました。 そのアプリのオプションの [データ実行防止 (DEP)] で、[システム設定の上書き] オプションを有効にして、スイッチを [オン] に設定しました。 [プログラム設定] セクションに、他のアプリは表示されていません。

この結果、test.exe の DEP のみが有効になります。 他のすべてのアプリには DEP が適用されません。

  • 例 2

    Josie は、[システム設定] セクションで [データ実行防止 (DEP)][既定でオフにする] に構成しました。

    その後、Josie はアプリ test.exe[プログラム設定] セクションに追加しました。 そのアプリのオプションの [データ実行防止 (DEP)] で、[システム設定の上書き] オプションを有効にして、スイッチを [オン] に設定しました。

    Josie は、[プログラム設定] セクションにアプリ miles.exe も追加し、[制御フロー ガード (CFG)][オン] に構成しました。 そのアプリでは、DEP などの軽減策の [システム設定の上書き] オプションは有効にしていません。

この結果、test.exe の DEP は有効になります。 miles.exe を含む、他のアプリでは DEP は有効になりません。 miles.exe では CFG が有効になります。

注意

この記事で問題が見つかった場合は、Windows Server/Windows クライアントパートナーに直接報告するか、お住まいの国の Microsoft テクニカルサポート番号を使用してください。

Windows セキュリティアプリを使用してシステムレベルの緩和を構成する

  1. タスクバーの盾アイコンをクリックするか、[スタート] メニューでDefenderを検索して、Windows セキュリティアプリを開きます。

  2. アプリ & ブラウザーコントロールタイル をクリックし、[ Exploit protection] をクリックします。

  3. [システム設定] セクションで、構成する軽減策を見つけて次のいずれかを選びます。 [プログラム設定] セクションで個別に構成されていないアプリでは、ここで構成された次の設定が使用されます。

    • [既定でオンにする] - アプリ固有の [プログラム設定] セクションで目的の軽減策を設定してないアプリに対して、その軽減策が有効になります。
    • [既定でオフにする] - アプリ固有の [プログラム設定] セクションで目的の軽減策を設定してないアプリに対して、その軽減策が無効になります。
    • [既定値を使用する] - Windows 10 のインストールで設定された既定の構成に応じて、有効または無効になります。既定値 ([オン] または [オフ]) は、各軽減策の [既定値を使用する] ラベルの横に必ず明示されています。

      注意

      一部の設定を変更する場合、[ユーザー アカウント制御] ウィンドウが表示される可能性があります。 設定を適用するには管理者の資格情報を入力します。

      一部の設定を変更すると、再起動が必要になることがあります。

  4. 構成するすべてのシステム レベルの軽減策に対してこれを繰り返します。

  5. [プログラム設定] セクションに移動し、軽減策の適用先のアプリを選びます。

    1. 構成するアプリが既に一覧表示されている場合、クリックして [編集] をクリックします。
    2. アプリが一覧表示されていない場合、一覧の上部で [カスタマイズするプログラムの追加] をクリックし、アプリを追加する方法を選びます。
      • [プログラムの名前で追加] を使い、その名前を持つ実行中のプロセスすべてに軽減策を適用します。 拡張子を持つファイルを指定する必要があります。 フル パスを入力すると、特定の場所と名前のアプリのみに軽減策を制限できます。
      • [正確なファイル パスを選択] を使い、エクスプローラーの標準ファイル ピッカー ウィンドウを使って目的のファイルを選びます。
  6. アプリを選ぶと、適用できるすべての軽減策の一覧が表示されます。 軽減策を有効にするには、チェック ボックスをオンにしてスライダーを [オン] に変更します。 追加のオプションを選びます。 [監査] を選ぶと、監査モードでのみ軽減策が適用されます。 プロセスやアプリの再起動が必要な場合や、Windows を再起動する必要がある場合は、通知が表示されます。

  7. 構成するすべてのアプリの軽減策に対してこれを繰り返します。 構成のセットアップが完了したら、[適用] をクリックします。

これらの設定を XML ファイルとしてエクスポートしたり、アプリ固有の軽減策の構成を続けたりすることができるようになりました。

構成を XML としてエクスポートすると、コンピューター間で構成をコピーできるようになります。

PowerShell リファレンス

Windows セキュリティアプリを使用して、Exploit protection を構成するか、PowerShell コマンドレットを使用できます。

最後に変更された構成設定は、PowerShell と Windows セキュリティのどちらを使用するかに関係なく、常に適用されます。 つまり、アプリを使って軽減策を構成した後、PowerShell を使って同じ軽減策を構成した場合、アプリが更新され、PowerShell で行った変更内容が表示されます。 アプリを使ってもう一度を軽減策を変更した場合、その変更が適用されます。

重要

グループ ポリシーを通じてコンピューターに展開されたすべての変更によってローカル構成が上書きされます。 初期構成をセットアップするときは、変更内容によって上書きされないようにするため、グループ ポリシー構成が適用されていないコンピューターを使います。

コマンドレット ProcessMitigation と共に、PowerShell の動詞 Get または Set を使うことができます。 Get を使うと、デバイスで有効になっているすべての軽減策の現在の構成が一覧表示されます。そのアプリの軽減策だけを表示するには、-Name コマンドレットとアプリの exe を追加します。

Get-ProcessMitigation -Name processName.exe 

重要

構成されていないシステム レベルの軽減策のステータス NOTSET が表示されます。

システム レベルの設定では、NOTSET はその軽減策が適用されている既定の設定を表します。

アプリ レベルの設定では、NOTSET はその軽減策が適用されるシステム レベルの設定を表します。

システムレベルの緩和の既定の設定は、Windows セキュリティで表示できます。

Set を使って、次の形式で各軽減策を構成します。

Set-ProcessMitigation -<scope> <app executable> -<action> <mitigation or options>,<mitigation or options>,<mitigation or options>

各項目の意味は次のとおりです。

  • <Scope>:
    • -Name : 軽減策を特定のアプリに適用する必要があることを示します。 このフラグの後に、アプリの実行可能ファイルを指定します。
    • -System : 軽減策をシステム レベルで適用する必要があることを示します。
  • <Action>:
    • -Enable : 軽減策を有効にします。
    • -Disable : 軽減策を無効にします。
  • <Mitigation>:

    • 以下の軽減策コマンドレットの表で定義された軽減策のコマンドレットと、サブオプション (スペースで囲みます)。 各軽減措置はコンマで区切ります。

    たとえば、C:\Apps\LOB\tests フォルダー内の testing.exe という実行可能ファイルに対してデータ実行防止 (DEP) 軽減策と ATL サンク エミュレーションを有効にし、その実行可能ファイルが子プロセスを作成できないようにするには、次のコマンドを使用します。

    Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable DEP, EmulateAtlThunks, DisallowChildProcessCreation
    

    重要

    各軽減オプションはコンマで区切ります。

    システム レベルで DEP を適用する場合、次のコマンドを使用します。

    Set-Processmitigation -System -Enable DEP
    

    軽減策を無効にするには、-Enable-Disable で置き換えます。 ただし、アプリ レベルの軽減策の場合、そのアプリに対してのみ軽減策の無効化が強制されます。

    軽減策をシステムの既定値に戻す必要がある場合は、次の例のように -Remove コマンドレットも含める必要があります。

    Set-Processmitigation -Name test.exe -Remove -Disable DEP
    

一部の軽減策は、監査モードに設定することもできます。 軽減策に PowerShell コマンドレットを使う代わりに、以下の軽減策コマンドレットの表に示されている監査モード コマンドレットを使います。

たとえば、上の例で使用されている testing.exe に対して、監査モードで任意のコードの保護 (ACG) を有効にするには、次のコマンドを使います。

Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable AuditDynamicCode

同じコマンド (ただし、-Enable-Disable に置き換えます) を使って、監査モードを無効にすることができます。

PowerShell リファレンス表

この表は、各軽減策の構成に使うことができる PowerShell コマンドレット (および関連付けられた監査モードのコマンドレット) を示しています。

軽減策 適用対象 PowerShell コマンドレット 監査モード コマンドレット
制御フロー ガード (CFG) システムおよびアプリ レベル CFG、StrictCFG、SuppressExports 監査は使用不可
データ実行防止 (DEP) システムおよびアプリ レベル DEP、EmulateAtlThunks 監査は使用不可
イメージのランダム化の強制 (必須 ASLR) システムおよびアプリ レベル ForceRelocateImages 監査は使用不可
メモリ割り当てのランダム化 (Bottom-up ASLR) システムおよびアプリ レベル BottomUp、HighEntropy 監査は使用不可
例外チェーンの検証 (SEHOP) システムおよびアプリ レベル SEHOP、SEHOPTelemetry 監査は使用不可
ヒープの整合性の検証 システムおよびアプリ レベル TerminateOnHeapError 監査は使用不可
任意のコードの保護 (ACG) アプリ レベルのみ DynamicCode AuditDynamicCode
整合性が低いイメージのブロック アプリ レベルのみ BlockLowLabel AuditImageLoad
リモート イメージのブロック アプリ レベルのみ BlockRemoteImages 監査は使用不可
信頼されていないフォントのブロック アプリ レベルのみ DisableNonSystemFonts AuditFont、FontAuditOnly
コードの整合性の保護 アプリ レベルのみ BlockNonMicrosoftSigned、AllowStoreSigned AuditMicrosoftSigned、AuditStoreSigned
拡張ポイントの無効化 アプリ レベルのみ ExtensionPoint 監査は使用不可
Win32k システム呼び出しの無効化 アプリ レベルのみ DisableWin32kSystemCalls AuditSystemCall
子プロセスを許可しない アプリ レベルのみ DisallowChildProcessCreation AuditChildProcess
アドレス フィルタリング (EAF) のエクスポート アプリ レベルのみ EnableExportAddressFilterPlus、EnableExportAddressFilter [1] 監査は使用不可
アドレス フィルタリング (IAF) のインポート アプリ レベルのみ EnableImportAddressFilter 監査は使用不可
実行のシミュレート (SimExec) アプリ レベルのみ EnableRopSimExec 監査は使用不可
API 呼び出しの検証 (CallerCheck) アプリ レベルのみ EnableRopCallerCheck 監査は使用不可
ハンドルの使用量の検証 アプリ レベルのみ StrictHandle 監査は使用不可
イメージ依存関係の整合性の検証 アプリ レベルのみ EnforceModuleDepencySigning 監査は使用不可
スタックの整合性の検証 (StackPivot) アプリ レベルのみ EnableRopStackPivot 監査は使用不可

[1]: 次の形式を使って、プロセスの DLL で EAF モジュールを有効にします。

Set-ProcessMitigation -Name processName.exe -Enable EnableExportAddressFilterPlus -EAFModules dllName1.dll,dllName2.dll 

通知をカスタマイズする

ルールがトリガーされたときの通知のカスタマイズと、アプリまたはファイルのブロックの詳細については、「 Windows セキュリティのトピック」を参照してください。

関連トピック