Share via


Indicazioni sulla creazione di criteri di negazione di WDAC

Con Windows Defender controllo delle applicazioni (WDAC), è possibile creare criteri per negare in modo esplicito driver e applicazioni specifici. Per creare criteri di negazione efficaci Windows Defender controllo applicazione, è necessario comprendere l'ordine di precedenza delle regole applicato da WDAC durante la valutazione dei file rispetto ai criteri attivi.

Criteri di negazione autonomi

Quando si crea un criterio costituito esclusivamente da regole di negazione, è necessario includere regole "Consenti tutte" nelle sezioni kernel e modalità utente del criterio oltre alle regole di negazione esplicite. Le regole "Consenti tutto" garantiscono che l'esecuzione di qualsiasi elemento non esplicitamente negato dai criteri sia consentito. Se non si aggiungono regole "Consenti tutto" a un criterio di sola negazione, si rischia di bloccare tutto. Questo risultato si verifica perché il codice viene negato in modo esplicito e tutto il codice viene negato in modo implicito , perché non sono presenti regole per autorizzarlo. È consigliabile usare il modello di criteri AllowAll durante la creazione dei criteri di negazione autonomi.

<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>

L'aggiunta delle regole "Consenti tutto" precedenti non influisce sugli altri criteri WDAC distribuiti che applicano un elenco di elementi consentiti espliciti. Per illustrare, si consideri l'esempio seguente:

Policy1 è un elenco di elementi consentiti per le applicazioni firmate da Windows e Microsoft.

Policy2 è il nuovo criterio di negazione, che blocca MaliciousApp.exe e anche il wmic.exe binario del componente Windows. Include anche le regole "Consenti tutto".

  • MaliciousApp.exe è bloccato perché è presente una regola di blocco esplicita in Policy2. È anche implicitamente bloccato da Policy1 perché non esistono regole di autorizzazione che coprono il file in tale criterio.
  • Il file firmato da Windows wmic.exe è bloccato perché è presente una regola di blocco esplicita in Policy2.
  • Tutte le altre applicazioni firmate da Windows e Microsoft sono consentite perché è presente una regola di autorizzazione esplicita sia in Policy1 che in Policy2 che copre il file.
  • Tutte le altre applicazioni vengono negate in modo implicito. Ad esempio, ExampleApp.exe, non è consentito perché è considerato attendibile solo da Policy2 (a causa delle regole Consenti tutte) e non da Policy1.

Considerazioni miste relative ai criteri Consenti e Nega

Se il set di regole di negazione deve essere aggiunto a un criterio esistente che include regole di autorizzazione esplicite, non includere le regole "Consenti tutto" precedenti. Le regole di negazione devono invece essere unite ai criteri WDAC esistenti tramite la Creazione guidata WDAC o usando il comando di PowerShell seguente:

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

Procedure consigliate

  1. Test prima in modalità di controllo : come per tutti i nuovi criteri, è consigliabile implementare i nuovi criteri di rifiuto in modalità di controllo e monitorare gli eventi del blocco di controllo 3076 per garantire che vengano bloccate solo le applicazioni che si intende bloccare. Altre informazioni sul monitoraggio degli eventi di blocco tramite i log di Visualizzatore eventi e Ricerca avanzata: Gestione e risoluzione dei problemi Windows Defender criteri di controllo delle applicazioni

  2. Tipi di regole di negazione consigliati : le regole di firma e di attributo file sono consigliate dal punto di vista della sicurezza, della gestibilità e delle prestazioni. Le regole hash devono essere usate solo se necessario. Poiché l'hash di un file cambia con qualsiasi modifica al file, è difficile tenere il passo con un criterio di blocco basato su hash in cui l'utente malintenzionato può aggiornare facilmente il file. Anche se WDAC ha ottimizzato l'analisi delle regole hash, alcuni dispositivi potrebbero visualizzare effetti sulle prestazioni durante la valutazione del runtime se i criteri hanno decine di migliaia o più regole hash.

Esercitazione sulla creazione di criteri di negazione

È possibile creare regole e criteri di negazione usando i cmdlet di PowerShell o la Creazione guidata WDAC. È consigliabile creare regole del firmatario (PCACertificate, Publisher e FilePublisher) laddove possibile. Nei casi di file binari senza segno, è necessario creare regole sugli attributi del file, ad esempio il nome file originale o l'hash.

Regola di negazione basata su Server di pubblicazione software

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

Regola di negazione basata su attributi software

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

Regola di negazione basata su hash

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

Unire le regole di negazione con i criteri modello AllowAll

Dopo aver creato le regole di negazione, è possibile unirle ai criteri del modello AllowAll:

$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

Distribuire i criteri di negazione

È ora necessario disporre di un criterio di negazione pronto per la distribuzione. Vedere la Guida alla distribuzione di WDAC per distribuire i criteri negli endpoint gestiti.