Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come impostare una Politica di App Control per Business. È possibile configurare la politica per applicare o monitorare la regola della politica. In modalità di controllo, il comportamento di PowerShell non cambia, ma registra i messaggi dell'ID evento 16387 nel PowerShellCore/Analytic
registro eventi. In modalità di applicazione, PowerShell applica le restrizioni della politica.
Questo articolo presume che si stia usando un computer di test in modo da poter testare il comportamento di PowerShell sotto una politica di controllo delle app a livello di macchina prima di distribuire la politica nel tuo ambiente.
Creare un criterio di controllo delle app
I criteri di controllo delle app sono descritti in un file XML, che contiene informazioni sulle opzioni dei criteri, sui file consentiti e sulla firma dei certificati riconosciuti dai criteri. Quando viene applicato il criterio, è consentito caricare ed eseguire solo i file approvati. PowerShell blocca l'esecuzione o l'esecuzione di file di script non approvati in ConstrainedLanguage
modalità, a seconda delle opzioni dei criteri.
È possibile creare e modificare i criteri di controllo delle app usando il modulo ConfigCI , disponibile in tutte le versioni di Windows supportate. Questo modulo di Windows PowerShell può essere usato in Windows PowerShell 5.1 o in PowerShell 7 tramite il livello compatibilità di Windows. È più semplice usare questo modulo in Windows PowerShell. I criteri creati possono essere applicati a qualsiasi versione di PowerShell.
Passaggi per creare una politica di controllo delle applicazioni
Per i test, è sufficiente creare un criterio predefinito e un certificato di firma del codice autofirmato.
Creare un criterio predefinito
New-CIPolicy -Level PcaCertificate -FilePath .\SystemCIPolicy.xml -UserPEs
Questo comando crea un file di criteri predefinito denominato
SystemCIPolicy.xml
che consente l'esecuzione di tutti i file con firma codice Microsoft.Nota
L'esecuzione di questo comando può richiedere fino a due ore perché deve analizzare l'intero computer di test.
Disabilitare la modalità di controllo nei criteri predefiniti
Viene sempre creata una nuova politica in modalità
Audit
. Per testare l'imposizione dei criteri, è necessario disabilitare la modalità di controllo quando si applicano i criteri. Modificare ilSystemCIPolicy.xml
file usando un editor di testo comenotepad.exe
o Visual Studio Code (VS Code). Impostare come commento l'opzioneAudit mode
.<!-- <Rule> <Option>Enabled:Audit Mode</Option> </Rule> -->
Creare un certificato di firma del codice autofirmato
È necessario un certificato di firma del codice per firmare i file binari di test o script da eseguire nel computer di test. Il
New-SelfSignedCertificate
è fornito dal modulo PKI. Per ottenere risultati ottimali, è consigliabile eseguire questo comando in Windows PowerShell 5.1.$newSelfSignedCertificateSplat = @{ DnsName = $Env:COMPUTERNAME CertStoreLocation = "Cert:\CurrentUser\My\" Type = 'CodeSigningCert' } $cert = New-SelfSignedCertificate @newSelfSignedCertificateSplat Export-Certificate -Cert $cert -FilePath C:\certs\signing.cer Import-Certificate -FilePath C:\certs\signing.cer -CertStoreLocation "Cert:\CurrentUser\Root\" $cert = Get-ChildItem Cert:\CurrentUser\My\ -CodeSigningCert dir C:\bin\PowerShell\pwsh.exe | Set-AuthenticodeSignature -Certificate $cert
Aggiungere il certificato di firma del codice alla politica
Usare il comando seguente per aggiungere il nuovo certificato di firma del codice al criterio.
Add-SignerRule -FilePath .\SystemCIPolicy.xml -CertificatePath C:\certs\signing.cer -User
Convertire il file di criteri XML in un file binario di applicazione dei criteri
Infine, è necessario convertire il file XML in un file binario usato da Controllo app per applicare un criterio.
ConvertFrom-CIPolicy -XmlFilePath .\SystemCIPolicy.xml -BinaryFilePath .\SIPolicy.p7b
Applicare i criteri di controllo delle app
Per applicare la politica al computer di test, copiare il file
SIPolicy.p7b
nel percorso di sistema richiesto,C:\Windows\System32\CodeIntegrity
.Nota
Alcune definizioni di criteri devono essere copiate in una sottocartella,
C:\Windows\System32\CodeIntegrity\CiPolicies
ad esempio . Per altre informazioni, vedere Suggerimenti amministrativi su App Control e problemi noti.Disabilitare i criteri di controllo delle app
Per disabilitare il criterio, rinominare il
SIPolicy.p7b
file. Se è necessario eseguire più test, è possibile modificare nuovamente il nome per riabilitare la politica.Rename-Item -Path .\SIPolicy.p7b -NewName .\SIPolicy.p7b.off
Testare l'uso del controllo dei criteri di controllo delle app
PowerShell 7.4 ha aggiunto una nuova funzionalità per supportare i criteri di controllo delle app in modalità di controllo . In modalità di controllo PowerShell esegue gli script non attendibili in ConstrainedLanguage
modalità senza errori, ma registra invece i messaggi nel registro eventi. I messaggi di log descrivono quali restrizioni verrebbero applicate se la politica fosse in modalità di applicazione forzata.
Visualizzazione degli eventi di controllo
PowerShell registra gli eventi di controllo nel registro eventi di PowerShellCore/Analytics . Il log non è abilitato per impostazione predefinita. Per abilitare il log, aprire il Visualizzatore eventi di Windows, fare clic con il pulsante destro del mouse sul log di PowerShellCore/Analytics e scegliere Abilita log.
In alternativa, è possibile eseguire il comando seguente da una sessione di PowerShell con privilegi elevati.
wevtutil.exe sl PowerShellCore/Analytic /enabled:true /quiet
È possibile visualizzare gli eventi in Windows Visualizzatore eventi o usare il Get-WinEvent
cmdlet per recuperare gli eventi.
Get-WinEvent -LogName PowerShellCore/Analytic -Oldest |
Where-Object Id -EQ 16387 | Format-List
TimeCreated : 4/19/2023 10:11:07 AM
ProviderName : PowerShellCore
Id : 16387
Message : App Control Audit.
Title: Method or Property Invocation
Message: Method or Property 'WriteLine' on type 'System.Console' invocation will not
be allowed in ConstrainedLanguage mode.
At C:\scripts\Test1.ps1:3 char:1
+ [System.Console]::WriteLine("pwnd!")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
FullyQualifiedId: MethodOrPropertyInvocationNotAllowed
Il messaggio di evento include la posizione dello script in cui verrà applicata la restrizione. Queste informazioni consentono di comprendere dove è necessario modificare lo script in modo che venga eseguito con i criteri di Controllo app.
Importante
Dopo aver esaminato gli eventi di controllo, è necessario disabilitare il log analitico. I log analitici aumentano rapidamente e consumano grandi quantità di spazio su disco.
Visualizzazione degli eventi di controllo nel debugger di PowerShell
Se si imposta la variabile $DebugPreference
su Break
per una sessione interattiva di PowerShell, PowerShell entra nel debugger dello script della riga di comando nella posizione attuale nello script in cui si è verificato l'evento di controllo. Il punto di interruzione consente di eseguire il debug del codice ed esaminare lo stato corrente dello script in tempo reale.