Visualizzazione post con etichetta Get-WinEvent. Mostra tutti i post
Visualizzazione post con etichetta Get-WinEvent. Mostra tutti i post

sabato 30 ottobre 2021

Windows 10: Visualizzare i processi eseguiti da un utente sul PC

Tramite il registro eventi di sistema è possibile monitorare i programmi eseguiti da un utente sulla macchina. Per permettere a Windows di tenere traccia di tali eventi nei log è necessario procedere all'attivazione dell'audit (si veda l'articolo Windows 10: Attivazione audit). 
Dato che verranno tracciati un numero elevato di eventi è consigliabile incrementare le dimensioni del registro eventi come indicato nell'articolo Windows 10: Aumentare la dimensione dei registri eventi.

Visualizzare i processi mandati in esecuzione

Per analizzare i log ed individuare i programmi eseguiti è possibile procedere come indicato di seguito:
  • Avviare il Visualizzatore eventi (WIN+R e digitare eventvwr.msc seguito da invio).
  • Nel riquadro sinistro espandere Registri di Windows e selezionare il registro Sicurezza. Cliccare su Filtro registro corrente.
    Visualizzatore eventi
    FIG 1 - Visualizzatore eventi

  • Nella casella contrassegnata dall'etichetta <Tutti gli ID evento> digitare l'ID 4688 (l'ID corrisponde all'evento: È stato creato un nuovo processo) e cliccare su OK.
    Filtro registro corrente
    FIG 2 - Filtro registro corrente

  • Verranno visualizzati tutti gli eventi relativi all'esecuzione di un processo.
    Eventi ID 4688
    FIG 3 - Eventi ID 4688


Ricerca per programma tramite PowerShell

Se si intende filtrare i risultati in base al programma avviato è possibile utilizzare PowerShell. Supponiamo di voler visualizzare tutti gli avvii del Prompt dei comandi (cmd.exe):
  • Una volta avviato PowerShell come amministratore digitare il seguente comando
    Get-WinEvent -FilterHashtable @{LogName='Security'; id=4688;data='C:\windows\system32\cmd.exe'} 
    verranno visualizzati tutti gli eventi relativi all'avvio del prompt dei comandi. Per maggiori dettagli possiamo aggiungere Format-List come indicato di seguito
    Get-WinEvent -FilterHashtable @{LogName='Security'; id=4688;data='C:\windows\system32\cmd.exe'} |Format-List
    Sostituendo la stringa in data= possiamo personalizzare la ricerca indicando altri processi di nostro interesse.
    PowerShell, ricerca eventi avvio Prompt dei comandi
    FIG 4 - PowerShell, ricerca eventi avvio Prompt dei comandi

    PowerShell, dettagli eventi avvio Prompt dei comandi
    FIG 5 - PowerShell, dettagli eventi avvio Prompt dei comandi

  • Per visualizzare quante volte un processo è stato eseguito, digitare il seguente comando nella finestra PowerShell 
    Get-WinEvent -FilterHashtable @{LogName='Security'; id=4688;data='C:\windows\system32\cmd.exe'} | Measure-Object 
    PowerShell, numero di avvii del Prompt dei comandi
    FIG 6 - PowerShell, numero di avvii del Prompt dei comandi


Ricercare gli eventi tramite XPath

XPath è un linguaggio che permette di individuare i nodi all'interno di un documento XML. Un sottoinsieme della versione 1.0 è supportato dal sistema di log di Windows.
Gli eventi di Windows vengono conservati in formato XML. Per verificarlo, aprire un qualsiasi evento all'interno del registro tramite doppio click, selezionare la scheda Dettagli e quindi selezionare l'opzione XML. Viene riportata la rappresentazione XML nativa dell'evento, meno leggibile rispetto a quella a cui siamo abituati.
Proprietà evento in formato XML
FIG 7 - Proprietà evento in formato XML


Per ricercare gli eventi tramite XPath:
  • Da Visualizzatore eventi cliccare su Filtro registro corrente e nella casella <Tutti gli ID evento> digitare nuovamente l'ID 4688
  • Spostarsi sulla scheda XML. Verrà visualizzata la query XPath con i criteri di filtro inseriti. Per modificare la query manualmente selezionare la casella Modifica query manualmente e rispondere affermativamente alla successiva finestra di dialogo.
    Filtro registro corrente, Query in XML
    FIG 8 - Filtro registro corrente, Query in XML

    Visualizzatore eventi, modifica manuale query
    FIG 9 - Visualizzatore eventi, modifica manuale query

  • Per ricercare solo le occorrenze relative ad un determinato utente, modificare la query come indicato di seguito in modo
    <QueryList>
      <Query Id="0" Path="Security">
        <Select Path="Security">*[System[(EventID=4688)]]and
        *[EventData[Data[@Name='SubjectUserName']='utente']]
        </Select>
      </Query>
    </QueryList>
    Dove al posto di utente va specificato l'account utente per il quale si intende effettuare la ricerca. Cliccando su OK verrà eseguita la query con le condizioni specificate.
  • È possibile aggiungere ulteriori condizioni alla ricerca. Ad esempio, per ricercare tutti i processi cmd.exe eseguiti dall'utente Virtual la query sarà analoga a
    <QueryList>
      <Query Id="0" Path="Security">
        <Select Path="Security">*[System[(EventID=4688)]]and
         *[EventData[Data[@Name='SubjectUserName']='Virtual'
    	 and Data[@Name='NewProcessName']='C:\Windows\System32\cmd.exe']]
    	</Select>
      </Query>
    </QueryList>

    Visualizzatore eventi, query XPath
    FIG 10 - Visualizzatore eventi, query XPath






lunedì 16 agosto 2021

Windows 10: Bloccare l'account dopo tentativi di accesso falliti e verifica registro eventi

Per proteggere il nostro sistema è buona norma impostare l’Account lockout policy, ovvero un criterio di gruppo che prevede il blocco temporaneo di un account a seguito di diversi tentativi di accesso con credenziali errate (indice di un attacco da parte di un malintenzionato). Generalmente si tratta di una protezione che viene attivata sulle macchine appartenenti ad un dominio (Windows Server 2019: Usare le Group Policy per impostare le password e blocco account) ma utilizzando l'Editor Criteri di gruppo locali e un'utenza amministrativa può essere attivata anche su una postazione standalone.

Attivare il criterio di blocco account
  • Avviare il l'Editor Criteri di gruppo locali (WIN+R e digitare gpedit.msc seguito da invio).
  • Posizionarsi su Configurazione computer -> Impostazioni di Windows -> Impostazioni sicurezza -> Criteri account -> Criterio di blocco account
    Criterio di blocco account
    FIG 1 - Criterio di blocco account

  • Eseguire un doppio click sul criterio Soglia di blocchi dell'account.
  • All'interno della casella L'account verrà bloccato dopo, specificare il numero di tentativi di accesso non riusciti dopo il quale l'account verrà bloccato (ad es. 3) e cliccare su OK.
    Proprietà Soglia di blocchi dell'account
    FIG 2 - Proprietà Soglia di blocchi dell'account

  • Subito dopo aver cliccato su OK, una finestra di dialogo ci avvisa che sono stati modificati automaticamente anche gli altri due criteri: Blocca account per ( criterio che specifica il numero di minuti per cui un account bloccato deve rimanere bloccato prima di essere sbloccato automaticamente) e Reimposta contatore blocco account dopo (criterio che specifica il numero di minuti che deve trascorrere dopo un tentativo di accesso non riuscito prima che il contatore dei tentativi di accesso non riusciti venga azzerato). Per entrambi i criteri viene impostato un tempo di 30 minuti che può essere modificato attraverso le loro proprietà. Cliccare su OK.
    Cambiamenti ai valori suggeriti
    FIG 3 - Cambiamenti ai valori suggeriti
Da questo momento, al terzo tentativo di accesso non riuscito, l'account verrà bloccato per 30 minuti complicando la vita ad un eventuale malintenzionato che sta tentando un attacco brute force.


Verificare account bloccati (Evento ID 4740)
  • Avviare il Visualizzatore eventi (WIN+R e digitare eventvwr.msc seguito da invio).
  • Nel riquadro sinistro espandere Registri di Windows e selezionare il registro Sicurezza. Cliccare su Filtro registro corrente.
    Registro eventi Sicurezza
    FIG 4 - Registro eventi Sicurezza

  • Nella casella contrassegnata dall'etichetta <Tutti gli ID evento> digitare l'ID 4740 (l'ID corrisponde all'evento: Un account utente è stato bloccato) e cliccare su OK.
    Filtro registro corrente
    FIG 5 - Filtro registro corrente

  • L'evento riporta l'account bloccato (sezione Soggetto, Nome Account: Test2), la data e l'ora dell'evento.
    Account bloccato
    FIG 6 - Account bloccato

  • Se intendiamo utilizzare PowerShell per ricercare tutti gli eventi con ID 4740 basta eseguire il comando
    Get-WinEvent -FilterHashtable @{LogName='Security'; id=4740;} | Format-List
    PowerShell, ricerca eventi ID 4740
    FIG 7 PowerShell, ricerca eventi ID 4740

  • Se intendiamo ricercare gli eventi ID 4740 relativi ad uno specifico utente il comando da eseguire è
    Get-WinEvent -FilterHashtable @{LogName='Security'; id=4740; data='account_bloccato'} | Format-List
    ovviamente sostituendo account_bloccato con l'account di nostro interesse.
    PowerShell, ricerca eventi ID 4740 di un account specifico
    FIG 8 - PowerShell, ricerca eventi ID 4740 di un account specifico


Sbloccare un account bloccato
L'account bloccato verrà automaticamente sbloccato trascorso l'intervallo di tempo impostato. Se si intende affrettare i tempi e sbloccare subito l'account basta procedere come indicato di seguito:
  • Eseguire il logon con un utente amministratore e avviare il tool Utenti e gruppi locali (WIN+R e digitare lusrmgr.msc seguito da invio).
  • Nel riquadro sinistro, selezionare utenti quindi cliccare, con il tasto destro del mouse, sull'account che si intende sbloccare e selezionare Proprietà dal menu contestuale.
    Utenti e gruppi locali
    FIG 9 - Utenti e gruppi locali

  • Rimuovere la spunta alla voce Account bloccato e cliccare su OK.
    Proprietà Account bloccato
    FIG 10 - Proprietà Account bloccato







mercoledì 4 agosto 2021

Windows 10: Visualizzare i tentativi di accesso al sistema

Una volta attivato l'audit (si veda l'articolo Windows 10: Attivazione audit) Windows traccerà, all'interno dei propri log, i tentativi di accesso al sistema, sia quelli avvenuti con successo sia gli accessi falliti a causa di utenza o password errata. 

Dato che verranno tracciati un numero elevato di eventi è opportuno anche valutare se non sia il caso di aumentare le dimensioni del registro eventi come indicato nell'articolo Windows 10: Aumentare la dimensione dei registri eventi

Per analizzare i log ed individuare possibili tentativi di intrusione è possibile procedere come indicato di seguito:
  • Avviare il Visualizzatore eventi (WIN+R e digitare eventvwr.msc seguito da invio).
  • Nel riquadro sinistro espandere Registri di Windows e selezionare il registro Sicurezza. In tale registro sono presenti un numero elevato di eventi. Per cercarne uno in particolare possiamo farlo tramite l'ID associato. Ciascun evento, infatti, è associato un ID che lo caratterizza e che ci permette di individuare facilmente quello di nostro interesse (la lista degli ID è pubblica).Cliccare su Filtro registro corrente.
    Registro eventi Sicurezza
    FIG 1 - Registro eventi Sicurezza

  • Nella nuova finestra è possibile specificare le caratteristiche degli eventi di nostro interesse. Per ricercare un evento con un particolare ID basta specificarlo nell'apposita casella contrassegnata dall'etichetta <Tutti gli ID evento>. Ad esempio, è possibile ricercare l'evento con ID 4776: il computer ha tentato di convalidare le credenziali per un account. Questo evento viene generato ogni volta che viene eseguita una convalida delle credenziali utilizzando l'autenticazione NTLM e tiene traccia dei tentativi di convalida delle credenziali riusciti e non riusciti. L'evento si verifica solo nel computer autorevole per le credenziali fornite dunque per gli account di dominio l'evento verrà generato sul controller di dominio mentre per gli account locali l'evento verrà generato sul computer locale. Se un tentativo di convalida delle credenziali fallisce, verrà visualizzato un evento con il valore del parametro Codice Errore diverso da "0x0" e come parola chiave Controllo non riuscito. I Codice Errore di nostro interesse sono:
    - 0x0 logon eseguito con successo;
    - 0xC0000064 tentativo di logon fallito in quanto l'utente è inesistente;
    - 0xC000006A tentativo di logon fallito a causa di password errata.
    Filtro registro corrente
    FIG 2 - Filtro registro corrente

    Controllo non riuscito, Password errata
    FIG 3 - Controllo non riuscito, Password errata (Codice Errore  0xC000006A)

    Controllo riuscito, Logon riuscito (Codice Errore 0x0)
    FIG 4 - Controllo riuscito, Logon riuscito (Codice Errore 0x0)

  • Gli accessi tracciati con evento ID 4776 sono quelli in cui l'utente si trova fisicamente dinanzi alla macchina. Per verificare se qualche utente ha eseguito l'accesso da remoto, ad esempio attraverso l'utilizzo del desktop remoto, bisogna ricercare gli eventi con ID 4624 (Accesso di un account riuscito). Con tale ricerca verranno mostrati un numero elevato di eventi molti dei quali non saranno di nostro interesse. Quello a cui dobbiamo prestare attenzione sono i campi Nome account e Tipo di accesso. In un’autenticazione di tipo interattivo il campo Tipo di accesso avrà valore 2 mentre il valore 10 è sinonimo di un accesso remoto tramite Terminal Service o Remote Desktop.
    Eventi Sicurezza ID 4624
    FIG 5 - Eventi Sicurezza ID 4624

  • PowerShell può facilitarci notevolmente la ricerca degli eventi di nostro interesse attraverso l'utilizzo del cmdlet Get-WinEvent. Basterà eseguire il comando
    Get-WinEvent -FilterHashtable @{LogName=’Security’;id=4624; data=’10’} | Format-List
    Le informazioni visualizzate ci consentono di individuare l'autore dell'accesso remoto, la data e l'ora dell'accesso e da quale IP è stata avviata la sessione di desktop remoto.
    PowerShell, Get-WinEvent
    FIG 6 - PowerShell, Get-WinEvent