La sicurezza degli endpoint è una delle aree più critiche della cybersecurity, soprattutto in un contesto aziendale dove migliaia di dispositivi possono essere connessi alla rete aziendale.
A volte, distinguere processi legittimi da processi malevoli, soprattutto quando si tratta di file che risiedono nei Web Server come PHP o Python, risulta una sfida piuttosto ardua.
Una delle tecniche più efficaci per monitorare e proteggere questi dispositivi è la creazione di baseline. In questo articolo esploreremo cosa sono le baseline, perché sono fondamentali per la sicurezza degli endpoint e come possono essere implementate utilizzando strumenti come PowerShell
Cos’è una Baseline e Perché è Importante
Una baseline è una configurazione di riferimento che viene utilizzata per confrontare lo stato attuale di un dispositivo o sistema, come un computer o un server, al fine di identificare modifiche sospette o non autorizzate. In pratica, una baseline rappresenta lo stato “normale” e sicuro di un sistema. Una volta definita, può essere utilizzata per confrontare la configurazione corrente con quella iniziale e rilevare eventuali discrepanze che potrebbero indicare attività malevole o cambiamenti imprevisti.
In un contesto di sicurezza, le baseline sono essenziali per monitorare vari aspetti di un sistema, tra cui:
- Processi di sistema
- Servizi in esecuzione
- Driver e applicazioni installate
- Struttura dei file e contenuti delle cartelle
- Permessi e privilegi degli utenti
Tipi di Baseline da Creare
Esistono diversi tipi di baseline che possono essere utilizzati per monitorare vari aspetti della sicurezza di un endpoint. Ogni tipo di baseline offre un controllo specifico sui diversi elementi di un sistema:
- Baseline dei Servizi: Monitorano i servizi in esecuzione su un dispositivo. Creare una baseline dei servizi è fondamentale per garantire che non ci siano servizi non autorizzati o compromessi.
- Baseline dei Processi: Simile ai servizi, ma riguarda i processi attivi sul sistema. Una baseline dei processi aiuta ad individuare malware che potrebbero essere in esecuzione su un dispositivo.
- Baseline dei File e delle Cartelle: Rilevano modifiche non autorizzate nella struttura dei file o nei contenuti delle cartelle. Questo è particolarmente utile per prevenire l’installazione di malware attraverso la modifica dei file di sistema o di applicazioni.
- Baseline degli Account e dei Privilegi: È importante creare una baseline degli account utente e dei privilegi di amministratore. Eventuali modifiche non autorizzate in questi account possono portare a gravi rischi di sicurezza.
- Baseline delle Attività Pianificate: Le attività pianificate (task scheduled), come gli script di sistema o gli aggiornamenti, devono essere monitorate per garantire che non vengano eseguite operazioni malevoli.
Questi sono alcuni degli elementi chiave che, se non adeguatamente monitorati, potrebbero essere utilizzati da attaccanti per compromettere la sicurezza del sistema o della rete. Creare delle baseline consente di confrontare facilmente le configurazioni attuali con quelle sicure e predefinite.
Strumenti Utili per Creare e Gestire le Baseline
Esistono diversi strumenti che possono essere utilizzati per creare e gestire le baseline degli endpoint. Due dei più utilizzati sono PowerShell e System Center Configuration Manager (SCCM).
PowerShell Desired State Configuration (DSC)
PowerShell Desired State Configuration (DSC) è una piattaforma di gestione e configurazione basata su PowerShell progettata per automatizzare la configurazione, il deployment e la gestione dell’infrastruttura IT. Introdotta con PowerShell 4.0, DSC consente agli amministratori di definire lo “stato desiderato” di un sistema o di un ambiente, e garantisce che i sistemi mantengano tale stato nel tempo.
Principali caratteristiche di DSC
- Definizione dichiarativa: DSC utilizza un approccio dichiarativo per descrivere come un sistema deve essere configurato. Gli amministratori scrivono un file di configurazione (solitamente in formato script PowerShell) che definisce lo stato desiderato dei vari componenti di un sistema, come servizi, file, software, utenti, ecc.
- Moduli e risorse: DSC utilizza risorse che rappresentano unità di configurazione specifiche (es. file, servizi, pacchetti software). Esistono risorse predefinite (built-in) e risorse aggiuntive disponibili tramite moduli scaricabili dalla PowerShell Gallery.
- Modalità operative: DSC supporta due modalità operative principali:
- Push: L’amministratore invia manualmente la configurazione a un sistema o a un gruppo di sistemi.
- Pull: I sistemi si connettono a un Pull Server per scaricare ed applicare automaticamente le configurazioni aggiornate.
- Monitoraggio continuo: DSC non solo applica la configurazione, ma monitora continuamente i sistemi per garantire che mantengano lo stato desiderato. Se un sistema si discosta dalla configurazione, DSC può correggerlo automaticamente.
Se vuoi approfondire il tema, ti rimandiamo alla guida Microsoft.
System Center Configuration Manager (SCCM)
Un altro strumento potente per la gestione delle baseline è System Center Configuration Manager (SCCM) di Microsoft. SCCM consente di creare, distribuire e monitorare le configurazioni di sistema in modo centralizzato. Le configuration baselines in SCCM possono essere utilizzate per monitorare la conformità di un sistema con le politiche di sicurezza aziendali.
Ad esempio, le baseline di configurazione in SCCM contengono elementi di configurazione predefiniti e possono essere distribuite a dispositivi per verificarne la conformità. SCCM è particolarmente utile per le grandi aziende che necessitano di gestire migliaia di dispositivi e garantire che rimangano conformi alle politiche di sicurezza.
Se vuoi approfondire il tema, ti rimandiamo alla guida Microsoft.
Come Creare una Baseline usando PowerShell
Per alcuni tipi di analisi, come l’analisi della memoria, è utile avere una baseline dei processi o dei servizi da utilizzare per confrontare un’immagine della memoria e trovare prove di malware in esecuzione su un sistema.
Un esempio di utilizzo di PowerShell per creare una baseline dei servizi in esecuzione su un sistema potrebbe essere il seguente:
Get-Service | Where {$_.Status -eq "Running"} | Export-CliXml -Path "Baseline-Services.xml"
Questo comando estrae tutti i servizi in esecuzione e li esporta in un file XML, che può essere utilizzato successivamente per confrontare i servizi correnti su una particolare macchina con la baseline.
Lo stesso processo può essere applicato ai processi di un sistema. È sufficiente fare alcune modifiche al codice PowerShell precedente, e invece di usare Get-Service, utilizzeremo Get-Process.
Get-Process | Export-CliXml -Path "Baseline-Process.xml"
È possibile creare baseline per quasi qualsiasi aspetto. La vera domanda è: cosa si desidera definire come baseline, che potrebbe essere utile in futuro per effettuare confronti e identificare eventuali anomalie o attività sospette?
Confrontare le Baseline con lo Stato Corrente
Una volta che le baseline sono state definite, il passo successivo è monitorare e confrontare regolarmente lo stato attuale dei dispositivi con la baseline per rilevare eventuali anomalie. Utilizzando il comando Compare-Object di PowerShell, è possibile confrontare la configurazione corrente di un sistema con la baseline salvata. Se vengono rilevate modifiche non autorizzate, è possibile avviare un’indagine più approfondita.
Ad esempio, per confrontare i servizi correnti con una baseline precedentemente salvata, il comando PowerShell potrebbe essere simile a questo:
$baseline = Import-CliXml -Path "Baseline-Services.xml" $currentServices = Get-Service | Where {$_.Status -eq "Running"} Compare-Object -ReferenceObject $baseline -DifferenceObject $currentServices -Property DisplayName | Where-Object {$_.SideIndicator -eq "=>"}
Questo comando confronta la lista dei servizi correnti con quella della baseline e mostra le differenze.
Mentre per effettuare il confronto con la baseline dei processi possiamo utilizzare i seguenti comandi:
$baseline = Import-CliXml -Path "Baseline-Process.xml" $currentProcesses = Get-Process Compare-Object -ReferenceObject $baseline -DifferenceObject $currentProcesses -Property Name | Where-Object {$_.SideIndicator -eq "=>"}
Conclusioni
Creare e gestire le baseline è una delle tecniche più efficaci per garantire la sicurezza degli endpoint. Monitorando costantemente le configurazioni dei dispositivi e confrontandole con gli stati “normali”, le organizzazioni possono rilevare tempestivamente modifiche sospette e prevenire possibili attacchi o compromissioni. Sebbene strumenti avanzati come SCCM possano essere utilizzati per centralizzare e semplificare la gestione delle baseline, strumenti gratuiti come PowerShell sono altrettanto validi, soprattutto in ambienti con budget limitato.
In definitiva, implementare una strategia di baseline aiuterà le aziende a migliorare la loro sicurezza, riducendo il rischio di attacchi e garantendo che i dispositivi rimangano conformi alle politiche aziendali e alle normative di sicurezza.






