Gestire e controllare Windows Defender dalla linea di comando

Il tema della sicurezza è sempre molto sentito dagli utenti, siano essi consumer o enteprise.
Da diversi anni, tutte le versioni client e server di Windows sono dotate di un sistema integrato di protezione antimalware denominato Windows Defender.
A partire dalla versione 8.1 di Windows, le funzionalità e l’interfaccia utente di questo sistema si sono evolute fino a renderlo un vero centro di protezione; di pari passo con l’interfaccia grafica, il prompt dei comandi ed un modulo di Windows PowerShell (fornito con l’installazione standard di PowerShell, quindi presente di default in Windows) possono essere utilizzati per gestire ed automatizzare Windows Defender senza la necessità della GUI, un’opzione utilie in scenari di automazione di Windows Defender, specialmente quando l’interfaccia grafica non è un’opzione disponibile come nelle installazioni Server Core di Windows.
Iniziamo a conoscere queste due modalità alternative di controllo di Windows Defender.

La linea di comando

Il controllo attarverso il classico prompt dei comandi passa attraverso l’utilizzo del comando mpcmdrun.exe, solitamente localizzato nella cartella %ProgramFiles%\Windows Defender\; è importante notare che le versioni più aggiornate di questo strumento si trovano nella cartella C:\ProgramData\Microsoft\Windows Defender\Platform\<antimalware platform version>.
Ad esempio, nel PC Windows 10 utilizzato per questo articolo, si può trovare questa struttura di cartelle

Figura 1 – La struttura delle cartelle di Windows Defender

La data indica chiaramente quale sia la versione più recente del tool; quindi, ci spostiamo al suo interno e troviamo il comando. Lo eseguiamo con il flag -? per avere una descrizione del comando stesso e delle sue opzioni.

Figura 2 – Le opzioni della liea di comando di Windows Defender

La prima operazione che effettueremo è la ricerca di aggiornamenti del database delle definizioni eseguendo il comando con lo switch -SignatureUpdate e specificando il valore “UNC” se si desidera prelevare le nuove definizioni da un folder di rete o “MMPC” (predefinito) se si preferisce scaricare gli aggiornamenti delle definizioni dal Microsoft Malware Protection Center.

Figura 3 – Verifica della disponibilità di aggiornamenti

Per eseguire una scansione, si utilizza lo switch -Scan, a cui si fa seguire uno o più switches aggiuntivi per fornire ulteriori parametri di esecuzione della scansione; ad esempio, si può scegliere il tipo di scansione da eseguire utilizzando lo switch aggiuntivo -ScanType che accetta uno dei seguenti quattro possibili valori

  • 0: impostazione predefinita, in base alla propria configurazione
  • 1: esegue una scansione rapida
  • 2: esegue una scansione completa del sistema
  • 3: esegue una scansione rapida del sistema

Ad esempio, possiamo eseguire una scansione rapida del sistema e ricevere l’esito al completamento del controllo (oltre alla classica notifica in stile Windows 10)

Figura 4 – Esecuzione di una scansione

In aggiunta a queste opzioni, possiamo dirigere la scansione verso uno specifico file o cartella utilizzando lo switch -File o eseguire la scansione del settore di avvio per mezzo dello switch -BootSectorScan.
Un’altra utile opzione è quella che permette di verificare la possibilità di connessione al Microsoft Defender Antivirus cloud service (MAPS, acronimo di Microsoft Active Protection Service, che indica la rete degli utenti di Microsoft Security Essentials e Windows Defender che aiuta nell’individuazione dei programmi classificati come spyware) utilizzando lo switch -ValidateMapsConnection.

Figura 5 – Verifica della connettività con MAPS

Come per qualsiasi sistema di protezione antimalware, abbiamo la possibilità di vedere l’elenco dei files in quarantena e di ripristinarli, nel caso in cui non costituiscano una reale minaccia

Figura 6 – Visualizzazione degli elementi in quarantena

Un’altra utile funzionalità è quella che permette di verificare lo stato di affidabilità di un file (ad esempio, di un programma di installazione scaricato da un sito web oda un server FTP) per mezzo dello switch -TrustCheck seguito dall’ulteriore switch -File e dal percorso completo del file da esaminare

Figura 7 – Controllo dell’affidabilità di un file

PowerShell

Il controllo di Windows Defender con la più moderna PowerShell passa attraverso l’utilizzo dei cmdlets messi a disposizione dal modulo denominato ConfigDefender (in precedenza, Defender): apriamo una finestra amministrativa di PowerShell e vediamo cosa abbiamo a disposizione utilizzando il cmdlet Get-Command per interrogare il modulo

Figura 8 – I cmdlets a disposizione nel modulo ConfigDefender

L’outpout del comando visualizza l’elenco dei cmdlets a disposizione presenti nel modulo; come per tutti i cmdlets PowerShell, per ognuno di essi è possibile ottenere una spiegazione più dettagliata per mezzo del cmdlet Get-Help.
Una particolarità importante da sottolineare è la disponibilità per tutti i cmdlets di tre parametri denominati AsJob, CimSession e ThrottleLimit che permettono di controllare alcuni aspetti dell’esecuzione

  • AsJob: esegue il cmdlet come un job in background e restituisce un oggetto che rappresenta il job in questione
  • CimSession: esegue il cmdlet all’interno di una sessione remota o su un computer remoto
  • ThrottleLimit: specifica il numero massimo di operazioni concorrenti per l’esecuzione del cmdlet

Esaminiamo quindi i vari cmdlets e le loro funzionalità.

Controllare lo stato della protezione antimalware

La prima operazione che eseguiremo sarà quella di verificare lo stato attuale della protezione antimalware attiva sul nostro sistema: nella finestra di PwerShell, si esegue il cmdlet Get-MpComputerStatus e si esamina l’output risultante.

Figura 9 – Controllo dello stato della protezione

Ogni valore visualizzato fornisce informazioni sullo stato della corrispondente proprietà/impostazione in Windows Defender. Ogni impostazione visualizzata corrisponde un membro della classe MSFT_MpComputerStatus, appartenente al Windows Defender WMIv2 Provider.
Esaminiamone alcune:

  • AMEngineVersion: versione dell’engine antimalware
  • NISEngineVersion: versione dell’engine del network inspection system
  • AMServiceEnabled: stato di attivazione del servizio antimalware
  • AMProductVersion: versione del prodotto
  • AMServiceVersion: versione del servizio
  • AntispywareEnabled: stato di attivazione della protezione antispyware
  • AntispywareSignatureLastUpdated: data ed ora locali dell’ultimo aggiornamento del database delle firme dell’antispiware
  • AntispywareSignatureVersion: versione del database delle firme dell’antispyware
  • AntivirusEnabled: stato di attivazione della protezione antivirus
  • AntivirusSignatureLastUpdated: data ed ora locali dell’ultimo aggiornamento del database delle firme dell’antivirus
  • AntivirusSignatureVersion: versione del database delle firme dell’antivirus
  • FullScanAge: numero di giorni trascorsi dall’ultima scansione completa
  • FullScanEndTime: ora di completamento dell’ultima scansione completa del sistema
  • FullScanStartTime: ora di inizio dell’ultima scansione completa del sistema
  • NISEnabled: stato di attivazione del network inspection system
  • NISSignatureVersion: versione del database delle firme del network inspection system
  • NISSignatureLastUpdated: data ed ora dell’ultimo aggiornamento del database delle firme del network inspection system
  • QuickScanAge: numero di giorni trascorsi dall’ultima scansione rapida del sistema
  • QuickScanEndTime: ora di completamento dell’ultima scansione rapida del sistema
  • QuickScanStartTime: ora di avvio dell’ultima scansione rapida del sistema
  • RealTimeProtectionEnabled: stato di attivazione della protezione real time

Lavorare con le preferenze di Windows Defender

Le impostazioni (o preferenze) di aggiornamento, configurazione e scansione di Windows Defender possono essere visualizzate per mezzo del cmdlet Get-MPPreference.

Figura 10 – Visualizzazione dello stato delle preferenze

Le preferenze sono definite come un insieme di proprietà della classe MSFT_MpPreference. Attualmente, la classe permette di agire sul valore di più di 50 distinte preferenze.
Possiamo visualizzare i valori impostati per specifiche preferenze utilizzando l’usuale sintassi di PowerShell per interrogare le proprietà della suddetta classe ed ottenerne il valore, come nell’esempio seguente dove abbiamo esaminato l’ordine di ricerca di aggiornamenti delle definizioni antimalware e lo stato di attivazione della protezione da applicazioni potenzialmente indesiderate.

Figura 11 – Visualizzazione dell’impostazione di specifiche preferenze

Le preferenze di Windows Defender possono essere aggiunte, eliminate o configurate per mezzo dei metodi Add, Remove e Set della classe MSFT_MpPreference precedentemente menzionata. In PowerShell questi metodi sono implementati, rispettivamente, dai cmdlets Add-MpPreference (per modificare delle preferenze), Remove-MpPreference (per rimuovere delle preferenze impostate) e Set-MpPreference (per configurare specifiche preferenze di scansione ed aggiornamento).
Ad esempio, volendo configurare Windows Defender affinchè escluda uno specifico folder del file system dalla scansione utilizzeremmo Il cmdlet Add-MpPreference con questa sintassi

Figura 12 – Aggiunta di una preferenza

Per rimuovere lo stesso folder dalla lista delle esclusioni procediamo in questo modo utilizzando il cmdlet Remove-MpPreference.

Figura 13 -Eliminazione di una preferenza

Infine, possiamo impostare preferenze relative alle attività di scansione e di aggiornamento utilizzando il cmdlet Set-MpPreference: ad esempio, possiamo impostare Windows Defender affinché esegua ogni giorno la ricerca di aggiornamenti del database delle definizioni nel modo seguente

Figura 14 – Impostazione di una preferenza

Aggiornare le definizioni

L’aggiornamento del database delle definizioni antimalware/antivirus si esegue utilizzando il cmdlet Update-MpSignature.

Figura 15 – Aggiornamento del database delle definizioni

Il cmdlet permette di specificare la sorgente dalla quale prelevare gli aggiornamenti delle definizioni per mezzo del parametro -UpdateSource, che può assumere i seguenti valori:

  • InternalDefinitionUpdateServer: Windows Software Update Services (WSUS) server
  • MicrosoftUpdateServer: Microsoft Update Server
  • MMPC: Microsoft Malware Protection Center
  • FileShares: un qualsiasi file share presente nella rete

Per impostazione predefinita, viene utilizzato il Microsoft Update Server.
Se il parametro non viene specificato, il cmdlet utilizza le sorgenti configurate per mezzo della preferenza SignatureFallbackOrder; se anche quest’impostazione non è stata configurata, il cmdlet utilizza prima il Microsoft Update Server e poi il Microsoft Malware Protection Center come sorgenti per il download.

La gestione delle minacce

Come per qualsiasi sistema di protezione antimalware, un insieme di informazioni di fondamentale importanza è quello relativo alle minacce rilevate, rilevabili e gestite da Windows Defender.
Questo compito è svolto da tre cmdlets specifici.

Possiamo ottenere un elenco delle minacce rilevate sul sistema per mezzo del cmdlet Get-MPThreat.

Figura 16 – Visualizzazione delle minacce rilevate

Per ottenere informazioni su una o più specifiche minacce rilevate, è necessario specificare l’ID della minaccia (o un array di ID di minacce) in questione passandolo al parametro -ThreatID.

Figure 17 – Visualizzare informazioni su una specifica minaccia

Utilizzando il cmdlet Get-MPThreatDetection si può ottenere un elenco delle minacce attive e passate rilevate da Windows Defender.

Figura 18 – Elencare le minacce attive e passate rilevate nel sistema

Come per il cmdlet Get-MPThreat, anche uin questo caso è possibile ottenere informazioni su una o più specifiche minacce passando uno o più valori al parametro ThreatID.
Infine, il cmdlet Get-MpThreatCatalog restituisce le informazioni sulle minacce riconosciute da Windows Defender e referenziate nel definitions catalog.

Figura 19 – Elencare le minacce riconosciute da Windows Defender

Ogni elemento restituito dall’esecuzione di questo cmdlet è un oggetto della classe MSFT_MpThreatCatalog, le cui proprietà possono essere facilmente visualizzate nel modo seguente

Figura 20 – Visualizzazione dei dettagli di una minaccia catalogata

Eseguire una scansione

Per eseguire una scansione, abbiamo a disposizione due cmdlets differenti, da utilizzare in base alla modalità di scansione che vogliamo adoperare.
Nel primo caso, utilizzeremo il cmdlet Start-MpScan per eseguire una scansione su uno specifico percorso o sull’intero sistema. Il parametro ScanType permette di specificare il tispo di scansione che si vuole eseguire scegliendo tra tre possibili valori

  • CustomScan: esegue una scansione di specifici elementi (files ed aree del sistema)
  • FullScan: esegue una scansione complete di tutti i files e di tutti i programmi in esecuzione
  • QuickScan: esegue una scansione delle cartelle dove è più usuale individuare delle minacce

Ad esempio, possiamo eseguire una scansione rapida del sistema in questo modo

Figura 21 – Esecuzione di una scansione

Il secondo caso è quello di una scansione offline: in questo caso, si utilizza il cmdlet Start-MPWDOScan che riavvia il computer in Windows Defender offline ed inizia una scansione, prima di ritornare al desktop classico di Windows una volta terminata l’operazione.

Eliminare minacce

L’eliminazione delle minacce attive sul sistema richiede semplicemente l’esecuzione del cmdlet Remove-MpThreat, senza alcun parametro da specificare.

Conclusioni

Abbiamo visto quali strumenti di automazione da linea di comando (command prompt e Windows PowerShell) ci vengono messi a disposizione da PowerShell.
L’insieme degli oggetti manipolabili e delle loro proprietà è molto vasto e permette un controllo totale sulle caratteristiche di funzionamento di Windows Defender, il che rende questi strumenti molto utili per un uso (ad esempio, quello aziendale) dove l’automazione messa a disposizione dalla linea di comando consente di gestire con notevole rapidità la protezione antimalware fornita da Windows Defender.

Riferimenti