web-dev-qa-db-ja.com

Windows Defender Application Controlは、2回目の再起動後にWindowsが起動しないようにします(署名付きポリシー)

みなさん、こんにちは!

一部のWindows10ターミナルをロックダウンして、承認されたソフトウェアのみを実行できるようにしたいが、このソフトウェアを更新できるようにしたい。

私の計画は、複数のCIポリシーの使用を可能にするWindows 10 1903の新機能を利用することでした(ここで説明されているように: https://docs.Microsoft.com/en-us/windows/security/threat -protection/windows-defender-application-control/deploy-multiple-windows-defender-application-control-policies )。これをテストするために、Windows 10 1903を実行しているVMware仮想マシンの「C:\ Windows\System32\CodeIntegrity\CIPolicies\Active\{PolicyID} .cip」の下に署名済みポリシーを配置しました。最初の起動後、ポリシーがアクティブ化され、すべてのアプリケーション(許可されたものを除く)が実行されないようにします。ただし、システムを再起動すると、セキュアブートを無効にするまでVMWareはWindowsの起動に失敗します。 (OSがインストールされていないようです。UEFI構成になります)署名なしで同じポリシーを使用しても問題ありませんが、それらの端末の管理者がポリシーを改ざんしたり削除したりしないようにしたいです。 、それが私がポリシーに署名したい理由です。

署名するために、ここで説明するようにコード署名証明書を生成しました: https://blogs.technet.Microsoft.com/ukplatforms/2017/05/04/create-code-integrity-signing-certificate/ その後、次のコマンドを使用して証明書をポリシーに追加しました。

Add-SignerRule -FilePath .\policy.xml -CertificatePath .\codeSigningCertificate.cer -Update

署名者ルールを設定したので、次を使用して署名されていないポリシーを受け入れるオプションを削除しました。

Set-RuleOption -FilePath .\policy.xml -Option 6 -Delete

次に、以下を使用してポリシーをバイナリ形式に変換しました。

ConvertFrom-CIPolicy -XmlFilePath .\policy.xml -BinaryFilePath .\policy.cip

最後に、ポリシーに署名するために、次のパラメーターを指定してsigntoolを使用しました。

signtool.exe sign -v /n CodeSigningCertificate -p7 . -p7co 1.3.6.1.4.1.311.79.1 -fd sha256 .\policy.cip

結果の「policy.cip.p7」ファイルを「C:\ Windows\System32\CodeIntegrity\CIPolicies\Active\{PolicyID} .cip」の下の新しいインストールにコピーし、説明されている動作を取得しました。

これが私も試したものです:

「C:\ Windows\System32\CodeIntegrity\SIPolicy.p7b」を使用して1つのポリシーを展開する:これは正常に機能しましたが、ポリシーを削除してもWindowsは気にしませんでした。非アクティブ化されました。署名されたポリシーを使用することについての私の理解は、誰かがそれを改ざんしたときにWindowsが何らかのエラーをスローするか、起動を防ぐ必要があるということです。

仮想マシンがデバイスガード機能をサポートしているかどうかの確認:dgreadinessツールを使用して、VMがデバイスガードを使用するための基準を満たしているかどうかをテストしました。ツールは次の行を報告しました。

PS C:\Users\User\Downloads\dgreadiness_v3.6> .\DG_Readiness_Tool_v3.6.ps1 -Capable
###########################################################################
Readiness Tool Version 3.4 Release.
Tool to check if your device is capable to run Device Guard and Credential Guard.
###########################################################################
###########################################################################
OS and Hardware requirements for enabling Device Guard and Credential Guard
 1. OS SKUs: Available only on these OS Skus - Enterprise, Server, Education, Enterprise IoT, Pro, and Home
 2. Hardware: Recent hardware that supports virtualization extension with SLAT
To learn more please visit: https://aka.ms/dgwhcr
###########################################################################

Checking if the device is DG/CG Capable
 ====================== Step 1 Driver Compat ======================
Driver verifier already enabled
Verifying each module please wait ....
Completed scan. List of Compatible Modules can be found at C:\DGLogs\DeviceGuardCheckLog.txt
No Incompatible Drivers found
 ====================== Step 2 Secure boot present ======================
Secure Boot is present
 ====================== Step 3 MS UEFI HSTI tests ======================
Copying HSTITest.dll
HSTI Duple Count: 0
HSTI Blob size: 0
String:
HSTIStatus: False
HSTI is absent
 ====================== Step 4 OS Architecture ======================
64 bit Arch.....
 ====================== Step 5 Supported OS SKU ======================
This PC edition is Supported for DeviceGuard
 ====================== Step 6 Virtualization Firmware ======================
Virtualization firmware check passed
 ====================== Step 7 TPM version ======================
get-tpm : Object was not found. (Exception from HRESULT: 0x80090011)
At C:\Users\User\Downloads\dgreadiness_v3.6\DG_Readiness_Tool_v3.6.ps1:818 char:21
+     $TPMLockout = $(get-tpm).LockoutCount
+                     ~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Get-Tpm], TpmWmiException
    + FullyQualifiedErrorId : Microsoft.Tpm.Commands.TpmWmiException,Microsoft.Tpm.Commands.GetTpmCommand

TPM is absent or not ready for use
 ====================== Step 8 Secure MOR ======================
Secure MOR is available
 ====================== Step 9 NX Protector ======================
NX Protector is available
 ====================== Step 10 SMM Mitigation ======================
SMM Mitigation is available
 ====================== End Check ======================
 ====================== Summary ======================
Device Guard / Credential Guard can be enabled on this machine.

The following additional qualifications, if present, can enhance the security of Device Guard / Credential Guard on this system:
HSTI is absent
TPM is absent or not ready for use

To learn more about required hardware and software please visit: https://aka.ms/dgwhc

コード署名証明書のCAを信頼されたルート証明書としてマシンの証明書ストアにインストールする:これにより、動作に何の変化もありませんでした。

誰かがこれについて私ができることについて何か提案がありますか、または私が間違ったことについていくつかのアイデアがありますか?

ご協力いただきありがとうございます

マーティン

3
gotti

説明されている複数のCIポリシーの使用 ここ はまだ完全には機能していないようです。 Windowsが起動しない問題を解決するには、基本ポリシーでGUIDを{A244370E-44C9-4C06-B551-F6016E563076}に設定する必要があります。これはすべてGUID "C:\ Windows\schemas\CodeIntegrity\ExamplePolicies"の下にあるポリシーの例で使用されます。これを使用するとGUIDポリシーがアクティブになり、署名が正しく検証されます。バージョン番号の高い他の有効なポリシーが展開されないため、誰かがポリシーファイルを削除した場合でも、古いポリシーがアクティブになります。したがって、ポリシーが改ざんされることはありません。

ただし、リンクに記載されている機能のうち、意図したとおりに機能しないものがいくつかあります(機能を完全に使用する準備がまだ整っていない可能性があります)。

  • 複数の基本ポリシーを使用する:2番目の基本ポリシーを設定すると、Windowsは起動時に、署名の検証に問題があったことを示すエラーを表示します。
  • 補足ポリシーの改ざん:Windowsは補足ポリシーの署名をチェックしますが、誰かがそれらを削除したり、古いバージョンに置き換えたりしても問題ありません。

これらの欠点があるため、現時点では、複数のポリシー機能の使用は実際には見られません。

代わりに使用するのは、独自のコード署名証明書のルールを持つ1つのCIPolicyです。そうすれば、harrymcによって提案され、説明されているように、許可されたプログラムに関する情報を保持するセキュリティカタログに署名できます ここ 。これは、より安定して使いやすいように機能するようです。

0
gotti