Freigeben über


Leitfaden zum Erstellen von WDAC-Ablehnungsrichtlinien

Mit der Windows Defender-Anwendungssteuerung (WDAC) können Sie Richtlinien erstellen, um bestimmte Treiber und Anwendungen explizit zu verweigern. Um effektive Ablehnungsrichtlinien für die Windows Defender-Anwendungssteuerung zu erstellen, sollten Sie die Reihenfolge der Regelrangfolge kennen , die von WDAC angewendet wird, wenn Dateien anhand der aktiven Richtlinien ausgewertet werden.

Eigenständige Ablehnungsrichtlinie

Wenn Sie eine Richtlinie erstellen, die ausschließlich aus Ablehnungsregeln besteht, müssen Sie zusätzlich zu Ihren expliziten Ablehnungsregeln die Regeln "Alle zulassen" sowohl in den Kernel- als auch in den Benutzermodusabschnitten der Richtlinie einschließen. Die Regeln "Alle zulassen" stellen sicher, dass alles, was von Ihrer Richtlinie nicht explizit verweigert wird, ausgeführt werden darf. Wenn Sie einer Nur-Verweigern-Richtlinie keine "Alle zulassen"-Regeln hinzufügen können, riskieren Sie, dass alles blockiert wird. Dieses Ergebnis tritt auf, weil code explizit verweigert wird und der gesamte andere Code implizit verweigert wird, da es keine Regeln gibt, um ihn zu autorisieren. Es wird empfohlen, die Richtlinienvorlage AllowAll beim Erstellen eigenständiger Ablehnungsrichtlinien zu verwenden.

<FileRules>
  <Allow ID="ID_ALLOW_A_1" FriendlyName="Allow Kernel Drivers" FileName="*" />
  <Allow ID="ID_ALLOW_A_2" FriendlyName="Allow User mode components" FileName="*" />
</FileRules>
<SigningScenarios>
    <SigningScenario Value="131" ID="ID_SIGNINGSCENARIO_DRIVERS" FriendlyName="Kernel Mode Signing Scenario">
      <ProductSigners>
        <FileRulesRef>
          <FileRuleRef RuleID="ID_ALLOW_A_1" />
        </FileRulesRef>
      </ProductSigners>
    </SigningScenario>
    <SigningScenario Value="12" ID="ID_SIGNINGSCENARIO_WINDOWS" FriendlyName="User Mode Signing Scenario">
      <ProductSigners>
        <FileRulesRef>
          <FileRuleRef RuleID="ID_ALLOW_A_2" />
        </FileRulesRef>
      </ProductSigners>
    </SigningScenario>
</SigningScenarios>

Das Hinzufügen der oben genannten "Alle zulassen"-Regeln wirkt sich nicht auf andere von Ihnen bereitgestellte WDAC-Richtlinien aus, die eine explizite Positivliste anwenden. Betrachten Sie zur Veranschaulichung das folgende Beispiel:

Policy1 ist eine Positivliste für Windows- und Microsoft-signierte Anwendungen.

Policy2 ist unsere neue Ablehnungsrichtlinie, die MaliciousApp.exe und die binäre wmic.exe der Windows-Komponente blockiert. Sie enthält auch die Regeln "Alle zulassen".

  • MaliciousApp.exe ist blockiert, da in Policy2 eine explizite Blockregel vorhanden ist. Es wird auch implizit von Policy1 blockiert, da es keine Zulassungsregeln gibt, die die Datei in dieser Richtlinie abdecken.
  • Die von Windows signierte Datei wmic.exe wird blockiert, da in Policy2 eine explizite Blockregel vorhanden ist.
  • Alle anderen von Windows und Microsoft signierten Anwendungen sind zulässig, da sowohl in Policy1 als auch in Policy2 eine explizite Zulassungsregel vorhanden ist, die die Datei abdeckt.
  • Alle anderen Anwendungen werden implizit abgelehnt. Beispielsweise ist ExampleApp.exe nicht zulässig, da sie nur von Policy2 (aufgrund der Regeln Alle zulassen) und nicht Policy1 als vertrauenswürdig eingestuft wird.

Überlegungen zur Gemischten Zulassungs- und Ablehnungsrichtlinie

Wenn der Satz von Ablehnungsregeln einer vorhandenen Richtlinie hinzugefügt werden soll, die explizite Zulassungsregeln enthält, schließen Sie die oben genannten "Alle zulassen"-Regeln nicht ein. Stattdessen sollten die Ablehnungsregeln über den WDAC-Assistenten oder mithilfe des folgenden PowerShell-Befehls mit der vorhandenen WDAC-Richtlinie zusammengeführt werden:

$DenyPolicy = <path_to_deny_policy>
$ExistingPolicy = <path_to_existing_policy>
Merge-CIPolicy -PolicyPaths $ DenyPolicy, $ExistingPolicy -OutputFilePath $ExistingPolicy

Bewährte Methoden

  1. Testen Sie zuerst im Überwachungsmodus : Wie bei allen neuen Richtlinien empfehlen wir das Rollout Ihrer neuen Ablehnungsrichtlinie im Überwachungsmodus und die Überwachung der 3076 Überwachungsblockereignisse , um sicherzustellen, dass nur die Anwendungen blockiert werden, die Sie blockieren möchten. Weitere Informationen zum Überwachen von Blockereignissen über die Protokolle der Ereignisanzeige und zur erweiterten Suche: Verwalten und Beheben von Windows Defender-Anwendungssteuerungsrichtlinien

  2. Empfohlene Verweigerungsregelntypen : Regeln für Signaturgeber und Dateiattribute werden aus Sicherheits-, Verwaltbarkeits- und Leistungsperspektiven empfohlen. Hashregeln sollten nur bei Bedarf verwendet werden. Da sich der Hash einer Datei mit jeder Änderung an der Datei ändert, ist es schwierig, mit einer hashbasierten Blockrichtlinie Schritt zu halten, bei der der Angreifer die Datei trivial aktualisieren kann. Während WDAC die Analyse von Hashregeln optimiert hat, kann es bei einigen Geräten zu Leistungseinbußen bei der Laufzeitauswertung gekommen sein, wenn Richtlinien zehntausende oder mehr Hashregeln aufweisen.

Tutorial zum Erstellen einer Ablehnungsrichtlinie

Ablehnungsregeln und Richtlinien können mithilfe der PowerShell-Cmdlets oder des WDAC-Assistenten erstellt werden. Es wird empfohlen, nach Möglichkeit Signierregeln (PCACertificate, Publisher und FilePublisher) zu erstellen. Bei nicht signierten Binärdateien müssen Regeln für Attribute der Datei erstellt werden, z. B. für den ursprünglichen Dateinamen oder den Hash.

Softwareherausgeberbasierte Ablehnungsregel

$DenyRules += New-CIPolicyRule -Level FilePublisher -DriverFilePath <binary_to_block> -Fallback SignedVersion,Publisher,Hash -Deny

Softwareattributebasierte Ablehnungsregel

$DenyRules += New-CIPolicyRule -Level FileName -DriverFilePath <binary_to_block> -Fallback Hash -Deny

Hashbasierte Ablehnungsregel

$DenyRules += New-CIPolicyRule -Level Hash -DriverFilePath <binary_to_block> -Deny

Zusammenführen von Ablehnungsregeln mit der AllowAll-Vorlagenrichtlinie

Nachdem Sie Ihre Ablehnungsregeln erstellt haben, können Sie sie mit der Vorlagenrichtlinie AllowAll zusammenführen:

$DenyPolicy = <path_to_deny_policy_destination>
$AllowAllPolicy = $Env:windir + "\schemas\CodeIntegrity\ExamplePolicies\AllowAll.xml"
Merge-CIPolicy -PolicyPaths $AllowAllPolicy -OutputFilePath $DenyPolicy -Rules $DenyRules
Set-CiPolicyIdInfo -FilePath $DenyPolicy -PolicyName "My Deny Policy" -ResetPolicyID

Bereitstellen der Ablehnungsrichtlinie

Für die Bereitstellung sollte nun eine Ablehnungsrichtlinie vorbereitet sein. Informationen zum Bereitstellen Ihrer Richtlinie für Ihre verwalteten Endpunkte finden Sie im WDAC-Bereitstellungshandbuch .