Visualizzazione post con etichetta registro eventi. Mostra tutti i post
Visualizzazione post con etichetta registro eventi. Mostra tutti i post

mercoledì 30 luglio 2025

Windows: Come eliminare il contenuto dei registri eventi di sistema

Esistono centinaia di file di registro eventi utilizzati in Windows da vari componenti del sistema operativo e da software di terze parti. Per impostazione predefinita, Windows memorizza i file di registro con estensione EVTX nella directory %SystemRoot%\System32\Winevt\Logs\.

È possibile cancellare i log dei registri eventi di sistema utilizzando il Visualizzatore Eventi (lo snap-in eventvwr.msc), il prompt dei comandi oppure utilizzando PowerShell. Quando si cancella il contenuto di un registro eventi, nel registro eventi Sistema viene generato un evento, con ID 104 o 1102, che indica la pulizia del log, chi l'ha eseguita e quando. È una traccia utile per l'audit.

Registro Eventi Sistema, ID evento 104, Log Clear
FIG 1 - Registro Eventi Sistema, ID evento 104, Log Clear

In questo articolo verranno mostrati in dettaglio i tre metodi più comuni per eliminare il contenuto dei registri eventi.

Metodo 1 - Visualizzatore Eventi (Event Viewer)

Per chi preferisce un approccio visivo (tramite GUI), la console Event Viewer (eventvwr.msc) è la soluzione più immediata: 
  1. Aprire la console di Visualizzatore eventi (premere la combinazione WIN+R e, nella finestra Esegui, digitare eventvwr.msc seguito Invio).
  2. Nel pannello di sinistra, navigare fino al registro eventi che si desidera ripulire (ad esempio, "Applicazione", "Sistema" o "Sicurezza").
  3. Cliccare con il tasto destro del mouse sul nome del registro eventi e selezionare "Cancella registro".

    Cancella registro
    FIG 2 - Cancella registro

  4. Verrà chiesto se si desidera salvare il contenuto del registro prima di cancellarlo. Questa è un'ottima pratica per la risoluzione dei problemi futuri o per la conformità.

    Richiesta conferma di cancellazione
    FIG 3 - Richiesta conferma di cancellazione

Questo metodo è perfetto per una pulizia rapida di un singolo log ma non è consigliato se si intende eseguire l'operazione su un numero elevato di log.


Metodo 2 - Prompt dei comandi

Per eliminare i log del registro eventi tramite il Prompt dei comandi si può utilizzare il tool wevtutil.exe.

Il primo passo consiste nell'individuare il nome del log che si intende eliminare. Per visualizzare l'elenco dei log disponibili avviare il Prompt dei comandi come amministratore e utilizzare il comando
WevtUtil enum-logs
oppure la versione breve
WevtUtil el
Elenco registri eventi
FIG 4 - Elenco registri eventi


Supponiamo di voler eliminare i log contenuti nel registro Applicazione. Il comando da utilizzare è 
WevtUtil cl Application

Per eseguire un backup prima di cancellare il contenuto del registro
WevtUtil cl Application /bu:Application_Bak.evtx
WevtUtil, Backup e cancellazione log del registro eventi Applicazione
FIG 5 - WevtUtil, Backup e cancellazione log del registro eventi Applicazione


Per pulire tutti i log presenti in tutti i registri eventi in un colpo solo, è possibile utilizzare il comando
for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"

Nel caso in cui volessimo utilizzare il comando all'interno di un file BAT la sintassi è leggermente diversa e il comando diventa
for /F "tokens=*" %%1 in ('wevtutil.exe el') DO wevtutil.exe cl "%%1"


Metodo 3 - PowerShell

Avviare la console PowerShell come amministratore. Per visualizzare l'elenco dei registri eventi
Get-WinEvent -ListLog *

Per ciascun registro eventi vengono visualizzati ulteriori dettagli come la dimensione massima, il numero di eventi contenuto e la modalità di log.
Get-WinEvent, Visualizza elenco registri eventi
FIG 6 - Get-WinEvent, Visualizza elenco registri eventi


Per eliminare il contenuto di un registro eventi si utilizza il cmdlet Clear-EventLog. Ad esempio, per eliminare il contenuto del registro eventi Applicazione:
Clear-EventLog –LogName Application
Clear-EventLog, cancellazione log del registro eventi Applicazione
FIG 7 - Clear-EventLog, cancellazione log del registro eventi Applicazione


Per eliminare il contenuto di più registri eventi basta separarli con una virgola. Ad esempio per eliminare il contenuto del registro Sicurezza e Sistema:
Clear-EventLog –LogName Security,System

Per eliminare il contenuto di tutti i registri eventi:
Get-WinEvent -ListLog * -Force | % { Wevtutil.exe cl $_.Logname }
Oppure
wevtutil el | Foreach-Object {wevtutil cl "$_"}


A volte, è possibile imbattersi in un errore di "accesso negato" con alcuni log. Questo può accadere se il log è in uso o se mancano i permessi necessari. In questi casi, un tentativo manuale tramite Event Viewer potrebbe risolvere il problema.




lunedì 21 luglio 2025

Windows: Individuare quale utente ha installato o rimosso un programma

In ambienti IT complessi e distribuiti, dove molteplici amministratori operano su un'infrastruttura condivisa, la necessità di mantenere una tracciabilità dettagliata delle modifiche al software è cruciale. Ogni modifica al parco software di un'azienda, sia essa un'installazione o una disinstallazione, può avere implicazioni significative. L'introduzione di nuove applicazioni può portare a vulnerabilità di sicurezza se non gestite correttamente, mentre la rimozione non autorizzata di software essenziale può causare interruzioni operative. Identificare rapidamente l'autore di tali azioni non solo facilita l'audit e la conformità normativa, ma permette anche una risposta tempestiva a eventuali problemi di configurazione o di sicurezza.

MsiInstaller e Registo Eventi di Windows

Il sistema operativo Windows, attraverso il suo meccanismo di logging degli eventi, registra in dettaglio le attività svolte. In particolare, quando si installano o disinstallano applicazioni "classiche" basate sul programma di installazione MSI (Microsoft Installer), eventi specifici vengono scritti nel log di sistema. Il provider `MsiInstaller` è il principale responsabile della registrazione di queste operazioni.

Due eventi chiave nel log "Applicazione" sono di particolare interesse:
  • ID Evento 11707: Indica il completamento con successo dell'installazione di un'applicazione MSI.
  • ID Evento 11724: Indica la disinstallazione di un'applicazione MSI.

Analisi Manuale tramite il Visualizzatore Eventi

Per iniziare l'indagine, è possibile utilizzare la console del Visualizzatore eventi di Windows (eventvwr.msc). Una volta aperta, seguire questi passaggi:
  1. Navigare su Registri di Windows->Applicazione.
  2. Nel pannello di destra, selezionare Filtra registro corrente....
  3. Nel campo "ID evento:", inserire '11707, 11724'.
  4. Nel campo "Origini evento:", selezionare 'MsiInstaller'.
  5. Cliccare su OK.
Filtro registro corrente
FIG 1 - Filtro registro corrente


Verrà visualizzato un elenco filtrato di eventi relativi all'installazione e alla rimozione di programmi. Ogni evento contiene una descrizione dettagliata dell'operazione, inclusi il nome del prodotto coinvolto e l'esito. Ad esempio:
Product: Python 3.13.5 Add to Path (64-bit) -- Installation completed successfully.
Prodotto: Adobe Acrobat Reader - Italiano -- Removal completed successfully.

La proprietà "Utente" di ogni evento rivela l'account che ha eseguito l'azione, fornendo immediatamente la necessaria attribuzione.
Registro Eventi Applicazione, Origine MsiInstaller
FIG 2 - Registro Eventi Applicazione, Origine MsiInstaller

Automazione con PowerShell per una Ricerca Rapida

Per ambienti con un elevato volume di eventi o per necessità di automazione, PowerShell offre un metodo più efficiente per interrogare i log degli eventi. Il seguente script PowerShell permette di filtrare rapidamente gli eventi di installazione e disinstallazione per un'applicazione specifica, fornendo il nome utente associato:

Get-WinEvent -FilterHashtable @{LogName="Application"; ID=11707,11724; ProviderName='MsiInstaller'} | Where-Object { $_.Message -like '*NomeApplicazione*' } | Select TimeCreated, @{Name='Username'; Expression={(New-Object System.Security.Principal.SecurityIdentifier($_.userid)).Translate([System.Security.Principal.NTAccount]).Value}}, Message

Sostituire `'*NomeApplicazione*'` con una parte del nome del programma che si desidera tracciare (ad esempio, `'*Python*'`).


Get-WinEvent -FilterHashtable @{...}
Questo cmdlet è utilizzato per recuperare eventi dai log di Windows.

LogName="Application"
Specifica il log degli eventi "Applicazione".

ID=11707,11724
Filtra per gli ID evento di installazione e disinstallazione.

ProviderName='MsiInstaller'
Limita la ricerca agli eventi generati dal provider MsiInstaller.

Where-Object { $_.Message -like '*NomeApplicazione*' }
Filtra ulteriormente gli eventi in base al contenuto del messaggio, cercando il nome dell'applicazione di interesse.

Select TimeCreated, @{Name='Username'; Expression={(New-Object System.Security.Principal.SecurityIdentifier($_.userid)).Translate([System.Security.Principal.NTAccount]).Value}}, Message
Seleziona le proprietà desiderate:
  • TimeCreated: L'ora in cui l'evento è stato generato.
  • Username: Questa è una proprietà calcolata. Il campo 'userid' nell'evento contiene il Security Identifier (SID) dell'utente. Questa espressione PowerShell converte il SID in un nome di account utente leggibile ('NTAccount'), rendendo l'informazione immediatamente utile.
  • Message: Il messaggio completo dell'evento, contenente i dettagli dell'operazione.
PowerShell, Get-WinEvent
FIG 3 - PowerShell, Get-WinEvent


Considerazioni Aggiuntive e Best Practices

  • Log Retention Policy: Assicurarsi che la policy di conservazione dei log degli eventi sia adeguatamente configurata per mantenere i dati per un periodo sufficiente. Una policy troppo restrittiva potrebbe causare la sovrascrittura di informazioni preziose.
  • Gestione Centralizzata dei Log: In ambienti di grandi dimensioni, è consigliabile implementare un sistema centralizzato di gestione dei log (SIEM o un log collector dedicato). Questo non solo facilita la ricerca e l'analisi su più sistemi, ma migliora anche la sicurezza dei log, proteggendoli da manipolazioni locali.
  • Alternative di Installazione: È importante notare che questo metodo è primariamente efficace per installazioni e disinstallazioni che utilizzano l'installer MSI. Software installati tramite altri metodi (ad esempio, XCOPY deployment, Windows Store Apps, o script personalizzati) potrebbero non generare eventi MsiInstaller e richiedere metodi di monitoraggio alternativi.
  • Least Privilege: Implementare sempre il principio del privilegio minimo per gli account utente e di servizio. Questo riduce la superficie di attacco e limita le possibilità di modifiche non autorizzate al software.




venerdì 18 luglio 2025

Windows: Scrivere i log nel Visualizzatore eventi di Windows con PowerShell e CMD

Il Registro Eventi di Windows è uno strumento integrato nel sistema operativo che registra eventi, errori e avvisi relativi a diverse componenti del sistema e alle applicazioni installate. Questi registri sono fondamentali per il monitoraggio del sistema, la diagnostica dei problemi e la sicurezza e sono accessibili attraverso il Visualizzatore Eventi (Event Viewer) anch'esso incluso nel sistema operativo .

Per le nostre applicazioni/script, anziché affidarci esclusivamente a file di log testuali, possiamo sfruttare le potenzialità del registro eventi di Windows.

In questo articolo vedremo come scrivere informazioni nel Registro Eventi utilizzando PowerShell e il Prompt dei Comandi (CMD), due strumenti indispensabili per ogni amministratore di sistema.

1. Scrivere Eventi con PowerShell

Il cmdlet principale per scrivere eventi nel Visualizzatore Eventi è 
Write-EventLog

Per scrivere un evento informativo nel  registro eventi Applicazione si può utilizzare il comando:
Write-EventLog -LogName Application -Source "Application" -EntryType Information -EventID 1 -Message "Messaggio personalizzato"

-LogName:
Specifica il nome del registro eventi di destinazione (es. "Application", "System", "Security").
-Source:
Definisce l'origine dell'evento. Se l'origine non esiste, PowerShell tenterà di crearla, ma è buona pratica crearla esplicitamente prima.
-EntryType:
Indica il tipo di evento. I valori accettati sono: Error, Information, FailureAudit, SuccessAudit, Warning.
-EventID:
Specifica un identificatore numerico per l'evento, utile per la categorizzazione e il filtraggio.
-Message:
Il testo descrittivo dell'evento.
PowerShell, Creare un evento nel Registro Eventi
FIG 1 - PowerShell, Creare un evento nel Registro Eventi

Visualizzatore Eventi
FIG 2 - Visualizzatore Eventi

Creazione e Utilizzo di una Origine Evento Personalizzata
Per una migliore organizzazione e identificazione, è consigliabile creare un'origine evento personalizzata per i propri script. Questo permette di filtrare facilmente gli eventi generati dalle proprie applicazioni.

Per creare una nuova origine evento:
New-EventLog -LogName Application -Source "MioScript"

Questo comando registra "MioScript" come nuova origine nel registro eventi "Applicazione".

Per scrivere un evento con l'origine personalizzata:
Write-EventLog -LogName Application -Source "MioScript" -EntryType Warning –EventID 1 –Message "Messaggio personalizzato"
Creazione e utilizzo di una origine evento personalizzata
FIG 3 - Creazione e utilizzo di una origine evento personalizzata

Dopo aver eseguito questi comandi, aprire il Visualizzatore Eventi (digitando eventvwr.msc nella finestra Esegui o nel Prompt dei Comandi), espandere "Registri di Windows" quindi selezionare il registro "Applicazione" e verificare la presenza del nuovo evento con la descrizione personalizzata.
Visualizzatore eventi, Evento con origine personalizzata
FIG 4 - Visualizzatore eventi, Evento con origine personalizzata


Gestione dei Registri Eventi Personalizzati
Oltre ai Registri Eventi predefiniti, è possibile crearne di personalizzati per raggruppare eventi specifici. Questo è particolarmente utile per applicazioni complesse o per la segregazione dei log.

Il cmdlet New-EventLog consente anche di creare un intero log eventi personalizzato, specificando più origini associate:
New-EventLog -LogName MioRegistroEventi -source 'Origine1','Origine2','Origine3'


Importante: Affinché un nuovo log eventi personalizzato appaia nel Visualizzatore Eventi, è necessario inviargli almeno un evento.

Quando si scrivono eventi in un registro eventi personalizzato, è una buona pratica verificare se il registro esiste già per evitare errori:

If ([System.Diagnostics.EventLog]::SourceExists('MioRegistroEventi') -eq $False) {
 New-EventLog -LogName MioRegistroEventi -source 'Origine1','Origine2','Origine3'
}
Write-EventLog -LogName MioRegistroEventi -Source Origine1 -EntryType Information -EventID 1 -Message "Test"

Un nuovo file .evtx verrà creato nella cartella %SystemRoot%\System32\Winevt\Logs per ogni registro personalizzato.

All'interno del Visualizzatore Eventi il nuovo registro eventi sarà visibile all'interno di "Registri applicazioni e servizi".
Nuovo Registro Eventi
FIG 5 - Nuovo Registro Eventi



2. Scrivere Eventi con CMD

Per gli script batch (.bat/.cmd), lo strumento da utilizzare è eventcreate.exe.

Per aggiungere un evento informativo al registro eventi "Applicazione":
eventcreate /t information /l application /id 1 /d "Messaggio personalizzato"

/t
Specifica il tipo di evento (es. ErrorInformationSuccessWarning).
/l:
Indica il nome del registro eventi di destinazione (es. "Application", "System", "Security").
/id:
L'ID numerico dell'evento.
/d:
La descrizione dell'evento.

EventCreate, Creazione Evento da Prompt dei Comandi
FIG 6 - EventCreate, Creazione Evento da Prompt dei Comandi



3. Query e Filtraggio dei Registri Eventi

Una volta che gli eventi sono stati registrati, il cmdlet Get-WinEvent è lo strumento più potente per cercarli e filtrarli in PowerShell. Questo cmdlet è più moderno e versatile rispetto a Get-EventLog (che opera solo sui log classici).
Get-WinEvent -FilterHashtable @{logname='MioRegistroEventi';id=1}|ft TimeCreated,Id,Message | Select-Object -First 15

Questa query filtra gli eventi nel log "MioRegistroEventi" con EventID pari a 1 e visualizza le prime 15 occorrenze, mostrando la data di creazione, l'ID e il messaggio.
PowerShell, Query registro eventi
FIG 7 - PowerShell, Query registro eventi



4. Considerazioni

Considerazioni su PowerShell Core
Nelle versioni più recenti di PowerShell Core (7.x e successive), il cmdlet Write-EventLog non è supportato nativamente per impostazione predefinita. Tentare di usarlo genererà un errore.

Per usare Write-EventLog in PowerShell Core, è necessario importare il modulo Microsoft.PowerShell.Management con l'opzione -UseWindowsPowerShell:

Import-Module Microsoft.PowerShell.Management -UseWindowsPowerShell

Questo consente a PowerShell Core di accedere ai cmdlet di gestione specifici di Windows PowerShell.


Permessi di Accesso
Per scrivere eventi nel Visualizzatore Eventi utilizzando Write-EventLog o eventcreate.exe, l'account utente che esegue lo script deve essere membro del gruppo Administrators locale. Un utente non amministratore può solo inviare eventi a log eventi personalizzati che sono stati creati da un amministratore.




venerdì 11 febbraio 2022

Windows 10: Tracciare gli accessi al FileSystem

In questo articolo verrà mostrato come tracciare gli accessi al FileSystem sul PC riprendendo quanto già visto negli articoli Windows 10: Visualizzare i tentativi di accesso al sistemaWindows 10: Verificare operazioni eseguite sugli account e cancellazione registri eventi  e Windows 10: Visualizzare i processi eseguiti da un utente sul PC.
Prima di procedere bisogna attivare l'audit (si veda l'articolo Windows 10: Attivazione audit) e, dato il numero elevato di eventi da tracciare, incrementare le dimensioni del registro eventi come indicato nell'articolo Windows 10: Aumentare la dimensione dei registri eventi.

Attivare l'audit su una cartella

Supponiamo di voler tracciare le operazioni che vengono eseguite su una cartella, ad es. C:\Test:
  • Cliccare, con il tasto destro del mouse, sulla cartella e selezionare, dal menu contestuale, la voce Proprietà.
  • Selezionare la scheda Sicurezza quindi cliccare su Avanzate.
    Proprietà cartella
    FIG 1 - Proprietà cartella

  • Selezionare la scheda Controllo quindi cliccare su Continua.
    Impostazioni avanzate di sicurezza
    FIG 2 - Impostazioni avanzate di sicurezza

  • A questo punto la finestra apparirà come in FIG 3 e saremo pronti a configurare l'audit sulla cartella. Windows consente di tracciare le operazioni eseguite da un singolo utente o da tutti gli utenti appartenenti ad un determinato gruppo. In questo articolo andremo a monitorare tutte le operazioni eseguite dagli utenti che appartengono ai gruppi Users e Administrators. Cliccare sul pulsante Aggiungi.
    Impostazioni avanzate di sicurezza, Voci di controllo
    FIG 3 - Impostazioni avanzate di sicurezza, Voci di controllo

  • Cliccare sul link Seleziona un'entità.
    Voci di controllo
    FIG 3 - Voci di controllo

  • Nella casella Immettere il nome dell'oggetto da selezionare, digitare users, cliccare sul pulsante Controlla nomi quindi confermare la scelta cliccando su OK.
    Seleziona Utente o Gruppo
    FIG 4 - Seleziona Utente o Gruppo

  • Una volta tornati alla finestra per l’impostazione dell’audit, selezionare la caselle di controllo relative alle attività che si intendono monitorare (Lettura ed esecuzione, Visualizzazione contenuto cartella, Lettura, Scrittura) e cliccare su OK per ritornare alla finestra principale dell'audit.
    Voci di controllo, Autorizzazioni di base
    FIG 5 - Voci di controllo, Autorizzazioni di base

  • Ripetere le stesse operazioni per il gruppo Administrators.
  • Ci ritroveremo in una situazione analoga a quella mostrata in FIG 6. Cliccare su OK per confermare le operazioni e chiudere la finestra Proprietà.
    Impostazioni avanzate di sicurezza
    FIG 6 - Impostazioni avanzate di sicurezza




Verifica operazioni eseguite su file o cartella (Evento ID 4656)

Per generare qualche evento da analizzare, eseguire qualche operazione all'interno della cartella come la creazione di un nuovo file di testo e la copia ed esecuzione di un file batch.
  • 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 7 - Visualizzatore eventi

  • L'evento che ci interessa è quello con ID 4656: È stato richiesto l'handle di un oggetto. L'evento viene generato ogniqualvolta un utente prova ad accedere a una risorsa (come un file oppure una directory) sottoposta ad audit. Nella casella contrassegnata dall'etichetta <Tutti gli ID evento> digitare l'ID 4656 e cliccare su OK.
    Filtro registro corrente
    FIG 8 - Filtro registro corrente

  • Se il numero dei risultati è elevato possiamo affinare ulteriormente la ricerca. Cliccare sul tasto Trova presente sul pannello destro della finestra. Inserire, nell'apposita casella, il nome della cartella (C:\Test) che si desidera controllare e cliccare su OK.
    Registro eventi, Trova
    FIG 9 - Registro eventi, Trova

  • L'evento contiene diverse informazioni suddivise per sezioni:
    Soggetto. Contiene informazioni relative all'utente che ha provato ad eseguire l'accesso. Tra i dati forniti in questa sezione troviamo ID Sicurezza, Nome Account, Dominio Account e l'ID accesso, un identificativo numerico che non viene ripetuto fino al successivo riavvio della macchina e che identifica la sessione di logon dell'utente consentendo di ricostruirne l'attività.
    Oggetto. Identifica l'oggetto del tentativo di accesso. In questa sezione vengono illustrati i campi Server dell'oggetto, il Tipo di oggetto, il Nome oggetto e il campo ID handle, un valore numerico che, come il campo ID accesso, non è ripetibile fino al successivo riavvio del sistema e che può essere utilizzato per ricostruire tutte le attività eseguite sull'oggetto nel corso di una sessione di lavoro.
    Informazioni sul processo. Identifica il processo/programma che ha effettuato, per conto dell'utente, l'accesso alla risorsa sotto audit. Viene indicato il Nome processo e l'ID processo.
    Informazioni di richiesta di accesso. In questa sezione vengono fornite informazioni aggiuntive sulla richiesta d'accesso tra cui l'ID transazione e il campo Accessi in cui vengono mostrati i permessi richiesti.
    Proprietà evento
    FIG 10 - Proprietà evento


Dalle proprietà dell'evento mostrato in FIG 11 si evince che il file c:\test\Nuovo documento di testo.txt è stato eliminato, attraverso il processo explorer.exe, dall'utente Virtual.
Evento ID 4656, File eliminato
FIG 11 - Evento ID 4656, File eliminato


L'evento mostrato in FIG 12 indica che il file batch C:\Test\fileBatch.bat è stato letto dal processo cmd.exe eseguito su richiesta dell'utente Virtual.
Evento ID 4656, File batch
FIG 12 - Evento ID 4656, File batch


Ricerca degli eventi tramite PowerShell

Vediamo come ricercare gli eventi all'interno del registro utilizzando PowerShell. Prendiamo come esempio l'evento mostrato in FIG 13 relativo ad un operazione eseguita all'interno della cartella C:\Test. L'evento ha come Handle ID 0x2fc8
Evento ID 4656, handle ID 0x2fc8
FIG 13 - Evento ID 4656, handle ID 0x2fc8

Possiamo effetture la ricera per l'Handle ID tramite il comando PowerShell
Get-WinEvent -FilterHashtable @{LogName='Security';data='0x2fc8'}| Format-List
PowerShell, Ricerca evento tramite Handle ID
FIG 14 - PowerShell, Ricerca evento tramite Handle ID

Ricostruire tutte le attività compiute su un oggetto o da un determinato utente  nell’ambito di una sessione di lavoro è complesso e leggere i risultati delle interrogazioni effettuate tramite PowerShell non è l'ideale.


Ricercare gli eventi tramite XPath

Per ricercare maggiori informazioni possiamo eseguire una query in formato XPath:
  • Da Visualizzatore eventi cliccare su Filtro registro corrente e nella casella <Tutti gli ID evento> digitare nuovamente l'ID 4656
  • 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.
  • Modificare il contenuto della query come indicato di seguito sostituendo a 0x2c30 l'handle ID da ricercare.
    <QueryList>
      <Query Id="0" Path="Security">
        <Select Path="Security">*[System[(EventID>0)]]and *[EventData[Data[@Name='HandleId']='0x2c30']]
        </Select>
      </Query>
    </QueryList>
  • Cliccando su OK verrà eseguita la query con le condizioni specificate.
    Query XPath
    FIG 15 - Query XPath
  • Dai risultati della query notiamo, oltre all'evento con ID 4656, anche nuovi eventi non osservati in precedenza con i seguenti ID:
    4663 "Tentativo di accedere a un oggetto." che viene generato quando il processo o gli utenti individuati dall'evento ID 4656 accedono all'oggetto.
    4658 "L' handle di un oggetto è stato chiuso." che viene generato quando il processo o gli utenti individuati dall'evento ID 4656 hanno terminato di utilizzare l'oggetto.
    Risultato query XPath
    FIG 16 - Risultato query XPath

  • Per verificare le operazioni eseguite dall'utente possiamo modificare la query come indicato di seguito (sostituendo Virtual con il nome dell'utente da verificare)
    <QueryList>
      <Query Id="0" Path="Security">
        <Select Path="Security">*[System[(EventID>0)]]and *[EventData[Data[@Name='SubjectUserName']='Virtual']]
    	</Select>
      </Query>
    </QueryList>
  • Se vogliamo focalizzare la nostra attenzione sull'utente e sulle operazioni eseguite mediante Esplora file possiamo affinare la query in questo modo
    <QueryList>
      <Query Id="0" Path="Security">
        <Select Path="Security">*[System[(EventID>0)]]and*[EventData[Data[@Name='SubjectUserName']='Virtual']]and
    	*[EventData[Data[@Name='ProcessName']='C:\Windows\explorer.exe']]
    	</Select>
      </Query>
    </QueryList>
  • Per visualizzare le operazioni eseguite da un particolare utente su un determinato file utilizzando Esplora file, la query da utilizzare sarà simile alla seguente
    <QueryList>
      <Query Id="0" Path="Security">
    	<Select Path="Security">
    	*[System[(EventID>0)]]and*[EventData[Data[@Name='SubjectUserName']='Virtual']]and
    	*[EventData[Data[@Name='ProcessName']='C:\Windows\explorer.exe']]and
    	*[EventData[Data[@Name='ObjectName']='C:\Test\FilePassword.txt']]
    	</Select>
      </Query>
    </QueryList>





giovedì 5 agosto 2021

Windows 10: Verificare operazioni eseguite sugli account e cancellazione registri eventi

Quest'articolo prosegue gli argomenti trattati negli articoli Windows 10: Attivazione audit e Windows 10: Visualizzare i tentativi di accesso al sistema nei quali abbiamo visto come attivare l'audit e come visualizzare gli accessi riusciti e non riusciti al nostro sistema. 

Verificare gli accessi al sistema può non bastare ed è opportuno approfondire l'indagine al fine di individuare eventuali falle di sicurezza del sistema operativo o di uno dei software presenti sulla macchina. Per tale motivo è bene indagare anche su cosa ha effettuato il malintenzionato una volta avuto accesso al sistema come:
  • Programmi eseguiti.
  • Accessi al disco.
  • Cancellazione dei registri eventi e log al fine di nascondere l'intrusione.
  • Creazione di account utente e modifica di gruppi per lasciarsi una via di accesso nel caso in cui la vulnerabilità sfruttata per ottenere l'accesso venisse patchata.
  • Cancellazione di account utente (che potrebbero ricondurre all'intrusione).

Verificare account eliminati (Evento ID 4726)
Per verificare se qualche account è stato eliminato e chi ha eseguito l'operazione possiamo procedere nel seguente modo:
  • 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 1 - Registro eventi Sicurezza

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

  • Come visibile in figura l'evento riporta l'autore della rimozione (Nella sezione Soggetto, Nome Account: Virtual), il nome e il SID dell’utente rimosso (sezione Account di destinazione, ID sicurezza:S-1-5-21....., Nome account:Test) oltre ad altre informazioni come la data e l'ora in cui l'operazione è stata eseguita.
    Un account utente è stato eliminato
    FIG 3 - Un account utente è stato eliminato


Verificare account rimossi da gruppi (Evento ID 4733)
Per verificare se qualche utente è stato rimosso da qualche gruppo:
  • 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.
  • Nella casella contrassegnata dall'etichetta <Tutti gli ID evento> digitare l'ID 4733 (l'ID corrisponde all'evento: È stato rimosso un membro da un gruppo locale con sicurezza attivata) e cliccare su OK.
  • L'evento riporta l'autore della rimozione (Nella sezione Soggetto, Nome Account: Virtual), l'account rimosso dal gruppo (sezione Membro, ID sicurezza: DELL-XPS/Test2), il gruppo da cui è stato rimosso (Sezione Gruppo, ID sicurezza: BUILTIN/Utenti desktop remoto).
    È stato rimosso un membro da un gruppo locale con sicurezza attivata
    FIG 4 - È stato rimosso un membro da un gruppo locale con sicurezza attivata


Verificare account inseriti in gruppi (Evento ID 4732)
Nei seguenti passaggi viene mostrato come verificare se un account è stato inserito all'interno di un gruppo. Un malintenzionato può aver aggiunto un normale account utente, con privilegi limitati, al gruppo amministratore, con privilegi elevati:
  • 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.
  • Nella casella contrassegnata dall'etichetta <Tutti gli ID evento> digitare l'ID 4732 (l'ID corrisponde all'evento: È stato aggiunto un membro a un gruppo locale con sicurezza attivata) e cliccare su OK.
  • L'evento riporta l'autore dell'operazione (sezione Soggetto, Nome Account: Virtual), l'account aggiunto al gruppo (sezione Membro, ID sicurezza: DELL-XPS/Test2), il gruppo da cui è stato aggiunto (sezione Gruppo, ID sicurezza: BUILTIN/Utenti desktop remoto).
    È stato aggiunto un membro a un gruppo locale con sicurezza attivata
    FIG 5 - È stato aggiunto un membro a un gruppo locale con sicurezza attivata


Verificare creazione nuovo account (Evento ID 4720)
Per verificare se sono stati creati nuovi account utente:
  • 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.
  • Nella casella contrassegnata dall'etichetta <Tutti gli ID evento> digitare l'ID 4720 (l'ID corrisponde all'evento: È stato creato un account utente) e cliccare su OK.
  • L'evento riporta l'autore dell'operazione (sezione Soggetto, Nome Account: Virtual), l'account creato (sezione Membro, ID sicurezza: DELL-XPS/Test2, Nome account: Test2)e ulteriori informazioni.
    È stato creato un account utente
    FIG 6 - È stato creato un account utente

Verifica disconnessione dell'utente (Evento ID 4647)
Per verificare quando un utente ha effettuato il logoff basta ricercare l'evento con ID 4647:
  • 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.
  • Nella casella contrassegnata dall'etichetta <Tutti gli ID evento> digitare l'ID 4647 (l'ID corrisponde all'evento: Disconnessione avviata dall'utente) e cliccare su OK.
  • L'evento riporta l'autore (sezione Soggetto, Nome Account: Virtual), la data e l'ora dell'operazione.
    Disconnessione avviata dall'utente
    FIG 7 - Disconnessione avviata dall'utente


Verifica cancellazione del registro (Evento ID 1120)
Un utente con privilegi amministrativi sulla macchina può cancellare completamente il contenuto del registro per nascondere le proprie tracce. L'operazione, tuttavia, genera un evento con ID 1120. Per verificare se il registro è stato svuotato e da chi:
  • 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.
  • Nella casella contrassegnata dall'etichetta <Tutti gli ID evento> digitare l'ID 1120 (l'ID corrisponde all'evento: Registro di controllo cancellato) e cliccare su OK.
  •  L'evento riporta l'autore (sezione Soggetto, Nome Account: Virtual), la data e l'ora dell'operazione.
    Registro di controllo cancellato
    FIG 8 - Registro di controllo cancellato