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:- Navigare su Registri di Windows->Applicazione.
- Nel pannello di destra, selezionare Filtra registro corrente....
- Nel campo "ID evento:", inserire '11707, 11724'.
- Nel campo "Origini evento:", selezionare 'MsiInstaller'.
- Cliccare su OK.
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.
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.
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.