Visualizzazione post con etichetta filesystem. Mostra tutti i post
Visualizzazione post con etichetta filesystem. Mostra tutti i post

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>