/
/

Come usare PowerShell per analizzare i registri degli eventi di sicurezza e segnalare i tentativi brute force

di Team Ninja
How to Use PowerShell to Parse Security Event Logs and Flag Brute-Force Attempts blog banner image

Riepilogo

Questo post del blog NinjaOne offre un elenco completo di comandi CMD di base e un’analisi approfondita dei comandi di Windows con oltre 70 comandi cmd essenziali sia per i principianti che per gli utenti avanzati. La guida si propone si piegare in modo pratico i comandi del prompt dei comandi per la gestione dei file, la navigazione nelle directory, la risoluzione dei problemi di rete, le operazioni su disco e l’automazione, con esempi reali per migliorare la produttività. Che tu voglia imparare i comandi cmd fondamentali o padroneggiare gli strumenti avanzati della CLI di Windows, questa guida ti aiuterà a utilizzare il Prompt dei comandi in modo più efficace.

Man mano che le organizzazioni rafforzano le proprie difese contro gli attacchi brute force, le tracce di questi tentativi passano spesso inosservate, fino a quando una credenziale viene compromessa o un account viene bloccato.

Gli amministratori IT possono usare PowerShell per recuperare e analizzare i registri degli eventi di sicurezza e rafforzare così le difese dell’organizzazione. Questa guida illustra passo dopo passo come rilevare gli attacchi brute force e creare blacklist con PowerShell.

Per una rapida panoramica visiva, guarda la nostra video guida su Come usare PowerShell per analizzare i registri degli eventi di sicurezza e segnalare i tentativi brute force

Configurare i registri degli eventi di sicurezza con PowerShell

Prima di iniziare, assicurati di disporre dei seguenti prerequisiti:

📌 Prerequisiti:

  • Accesso amministrativo ai sistemi locali o remoti
  • PowerShell 5.1+
  • Registro di controllo della sicurezza di Windows abilitato tramite GPO
  • Accesso al Registro di sistema di Windows per contrassegnare lo stato di rilevamento
  • Una piattaforma RMM (ad esempio NinjaOne) per distribuire script e avvisi
  • Opzionale: inoltro degli eventi a un SIEM o a un sistema di logging centralizzato

Passaggio 1: abilita il controllo dei tentativi di accesso non riusciti tramite Criteri di gruppo

Il primo passo è assicurarsi che il controllo sia attivo su tutti gli endpoint. Puoi abilitarlo tramite Criteri di gruppo. Una volta abilitato, vengono registrati sia i tentativi di accesso riusciti sia quelli non riusciti, con ID evento come 4625 (accesso non riuscito) e 4624 (accesso riuscito).

Per abilitare il controllo dei tentativi di accesso non riusciti:

  1. Premi Win + R, digita gpmc.msc e premi Invio per aprire la Console Gestione Criteri di gruppo.
  2. Vai a Configurazione del computer > Criteri > Impostazioni di Windows > Impostazioni sicurezza > Configurazione avanzata criteri di controllo > Criteri di controllo > Accesso/Disconnessione.
  3. Modifica l’impostazione Controlla accesso – Operazioni riuscite, Operazioni non riuscite.

⚠️ Importante: impostazioni errate del controllo degli accessi possono causare problemi. Scopri di più nella sezione Aspetti a cui prestare attenzione.

Passaggio 2: usa PowerShell per analizzare gli eventi di accesso non riusciti

  1. Apri PowerShell come amministratore.
  2. Usa i seguenti comandi:
    • Analizza l’ID evento 4625 relativo alle ultime 24 ore:

$events = Get-WinEvent -FilterHashtable @{
LogName = 'Security'
Id = 4625
StartTime = (Get-Date).AddHours(-24)
} | Select-Object TimeCreated, Message

Nota: se non viene trovato alcun evento corrispondente, il comando restituisce un set di risultati vuoto.

    • Estrai le origini e i nomi utente degli accessi non riusciti:

$failedLogons = $events | ForEach-Object {

if ($_.Message -match "(?s)Account For Which Logon Failed:.*Account Name:\s+(\S+).*Source Network Address:\s+(\S+)") {

[PSCustomObject]@{

Time = $_.TimeCreated

Username = $matches[1]

SourceIP = $matches[2]

}

}

}

    • Esporta in CSV:

$failedLogons | Export-Csv "C:\Reports\FailedLogons.csv" -NoTypeInformation

Passaggio 3: individua i modelli di attacco brute force in base a soglie

Una volta che riesci ad analizzare i registri degli eventi, puoi rilevare i modelli ricorrenti e applicare soglie per gli attacchi brute force, così da rafforzare la sicurezza. Per farlo con PowerShell, usa i seguenti comandi:

Raggruppa e conta per IP di origine o nome utente:

$grouped = $failedLogons | Group-Object SourceIP | Where-Object { $_.Count -ge 10 }
$grouped | ForEach-Object {
Write-Output "Potential brute-force from $($_.Name) with $($_.Count) attempts"
}

Questo script analizza gli eventi di accesso non riusciti su un singolo computer, li raggruppa per IP di origine e segnala come potenziale attacco brute force qualsiasi IP con 10 o più tentativi non riusciti.

Nota: la soglia in questa riga è modificabile. Il numero dopo Count -ge può essere cambiato per impostare il numero di tentativi non riusciti in grado di generare un avviso di attacco brute force.

💡 Suggerimento: in alternativa, puoi raggruppare per nome utente per rilevare gli attacchi brute force mirati a un singolo account:

$groupedUsers = $failedLogons | Group-Object Username | Where-Object { $_.Count -ge 10 }

Le soglie possono essere adattate alla propensione al rischio (ad esempio, 5 o più tentativi in 10 minuti).

Passaggio 4: scrivi il rilevamento nel Registro di sistema e in log accessibili da CMD

Il passaggio 4 riguarda il collegamento degli eventi analizzati all’RMM e a log accessibili da CMD, per una maggiore visibilità e una correzione più semplice. Con le chiavi seguenti puoi generare avvisi in NinjaOne o disabilitare automaticamente l’accesso alla rete:

Tag nel Registro di sistema per l’RMM o per l’ispezione manuale:

New-Item -Path "HKLM:\SOFTWARE\Org\SecurityAlerts" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\SecurityAlerts" -Name "LastBruteForceDetected" -Value (Get-Date).ToString("u")
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\SecurityAlerts" -Name "OffendingIP" -Value $grouped[0].Name

Verifica dello stato di rilevamento da CMD:

reg query HKLM\SOFTWARE\Org\SecurityAlerts

⚠️ Aspetti a cui prestare attenzione

RischiPossibili conseguenzeCome rimediare
Impostazioni GPO errate per gli eventi di controllo degli accessiPowerShell non restituisce alcun log quando tenta di analizzare gli eventi.Verifica di nuovo le impostazioni GPO per gli eventi di controllo degli accessi e assicurati che il registro di sicurezza non venga sovrascritto a causa di una dimensione del log troppo ridotta.

Passaggi successivi: blocco degli IP o invio di avvisi

Il blocco degli indirizzi IP, l’invio di avvisi e le altre azioni di riduzione del rischio vengono di solito eseguiti dopo aver analizzato i registri degli eventi di sicurezza. Questa sezione si concentra sulle azioni che puoi intraprendere con PowerShell in caso di più tentativi di accesso non riusciti o di rilevamento di un attacco brute force.

Scrivi l’evento nel registro degli eventi:

Write-EventLog -LogName Application -Source "BruteForceDetector" -EventId 1010 -EntryType Warning -Message "Brute-force detected from $($grouped[0].Name)"
Nota: se l’origine dell’evento non esiste, puoi crearla una volta sola (come Amministratore) con:

New-EventLog -LogName Application -Source ‘BruteForceDetector’

Inoltre, gli amministratori IT possono scegliere di bloccare l’IP in locale (se l’origine è esterna):

New-NetFirewallRule -DisplayName "Block Brute IP" -Direction Inbound -RemoteAddress $grouped[0].Name -Action Block

💡 Nota: documenta nel tuo RMM tutti i blocchi IP e le policy di pulizia, per garantire coerenza su tutti i dispositivi.

Altri aspetti da considerare nel rilevamento degli attacchi brute force e nella creazione di blacklist con PowerShell

Attacchi locali e attacchi via RDP

I log dei tentativi brute force hanno un aspetto diverso a seconda dell’origine. I tentativi brute force tramite Remote Desktop Protocol (RDP) mostrano di solito un indirizzo IP esterno in Source Network Address, mentre un attacco brute force locale mostra solo 127.0.0.1. Controllare il tipo di accesso (Logon type) può fornire ulteriore contesto.

Controller di dominio

Negli ambienti Active Directory (AD), i tentativi di accesso non riusciti vengono in genere registrati sui controller di dominio (DC) e non solo sulla workstation da cui è stato tentato l’accesso. È consigliabile eseguire gli script PowerShell in modo centralizzato o tramite l’inoltro degli eventi.

Falsi positivi

Non tutti gli accessi non riusciti ripetuti sono causati da attacchi brute force. Anche gli account di servizio o gli strumenti di sincronizzazione possono occasionalmente generare accessi non riusciti. Per mantenere l’efficienza, escludi gli account sicuri noti dalle regole di rilevamento brute force (puoi farlo aggiungendo una whitelist nello script, in modo che quegli account vengano saltati automaticamente)

Integrazioni SIEM

Per le organizzazioni che dispongono di un sistema Security Information and Event Management (SIEM), integrare i dati di rilevamento degli attacchi brute force può migliorare sensibilmente la visibilità. Se possibile, invia i dati a un raccoglitore di log centralizzato per intercettare gli attacchi in tutto l’ambiente.

Risoluzione dei problemi più comuni

Le regole del firewall non vengono applicate

Se lo script tenta di bloccare un IP sospetto con una regola firewall di PowerShell ma non funziona, il problema può riguardare i profili del firewall o i permessi dello script. I firewall di Windows hanno profili separati (Dominio, Privato, Pubblico) e la regola deve essere applicata a quello corretto. Inoltre, le policy di esecuzione di PowerShell o privilegi insufficienti possono impedire l’esecuzione del comando. Esegui sempre lo script con diritti amministrativi e verifica che il firewall di sistema sia attivo e configurato correttamente.

Le voci del Registro di sistema non vengono aggiornate

La scrittura dei risultati del rilevamento nel registro di sistema richiede permessi adeguati, in particolare quando il target è HKLM:\SOFTWARE. Se lo script viene eseguito da un utente standard, le scritture nel registro falliranno in modo silenzioso o genereranno un errore di accesso. Per evitarlo, assicurati che lo script venga eseguito nel contesto Amministratore o SYSTEM, condizione che può essere imposta durante la distribuzione tramite strumenti come NinjaOne. È inoltre consigliabile verificare che la chiave di registro esista e non sia bloccata da Criteri di gruppo o da un software di sicurezza degli endpoint.

Migliora il rilevamento degli attacchi brute force con i servizi NinjaOne

Con NinjaOne, gli amministratori IT e gli MSP possono applicare un rilevamento degli attacchi brute force scalabile e integrare la risposta agli incidenti grazie a:

  • Distribuzione di script PowerShell di rilevamento su dispositivi o gruppi di clienti
  • Monitoraggio dei valori di registro o dei file di output per segnalare i rilevamenti
  • Attivazione di flussi di lavoro di correzione automatizzati (avvisi, blocco degli IP, notifiche agli utenti)
  • Generazione di report multi-cliente che mostrano i tentativi brute force e gli IP di origine
  • Invio di avvisi in caso di rilevamenti ripetuti o di account presi di mira

Usa PowerShell per recuperare il registro degli eventi di sicurezza

Usare PowerShell per analizzare i registri degli eventi di sicurezza alla ricerca di tentativi brute force offre agli MSP un metodo potente e scalabile per rilevare gli attacchi alle credenziali e rispondervi. Questa guida offre agli amministratori IT istruzioni passo dopo passo e indicazioni per risolvere i problemi più comuni.

Argomenti correlati:

Guida rapida

PowerShell e rilevamento degli attacchi brute force in NinjaOne

NinjaOne mette a disposizione uno script nativo pensato appositamente per aiutarti a rilevare i tentativi di accesso brute force. Si tratta di uno strumento basato su condizioni che aiuta a identificare potenziali minacce alla sicurezza legate ai tentativi di accesso.

Approccio consigliato:
1. Usa lo script integrato “Check for Brute Force login attempts” disponibile nella libreria di script di NinjaOne.
2. Per un’analisi più avanzata, puoi creare uno script PowerShell personalizzato che:
– Cerca nei registri degli eventi di sicurezza (ID evento 4625 per i tentativi di accesso non riusciti)
– Tiene traccia dei tentativi di accesso non riusciti in un intervallo di tempo specifico
– Imposta una soglia per i potenziali attacchi brute force

Esempio di logica PowerShell:

powershell
$failedAttempts = Get-WinEvent -FilterHashtable @{
LogName = ‘Security’
ID = 4625 # Failed Login Attempts
} | Where-Object { $_.TimeCreated -gt (Get-Date).AddHours(-1) }

$uniqueIPs = $failedAttempts | Group-Object { $_.Properties[19].Value } |
Where-Object { $_.Count -gt 10 } # Adjust threshold as needed

if ($uniqueIPs) {
# Alert or take action for potential brute force
Write-Output “Potential Brute Force Detected”
}

Best practice:
– Configura le soglie di avviso in base alle policy di sicurezza specifiche della tua organizzazione
– Integra il tutto con i meccanismi di avviso di NinjaOne
– Rivedi e adatta regolarmente i parametri di rilevamento

FAQs

L’assenza dell’IP di origine è frequente nei tentativi brute force locali. Non si tratta necessariamente di un problema, perché di solito significa che non è stata coinvolta alcuna rete esterna. Per ottenere ulteriori informazioni su un evento specifico, controlla anche il campo LogonType per capire se il tentativo era locale, di rete o via RDP.

Sì, un attacco brute force può essere rilevato se è attivo un monitoraggio adeguato. Windows può registrare i tentativi di accesso non riusciti e strumenti come PowerShell o le piattaforme RMM sono in grado di analizzare questi eventi.

Più tentativi di accesso non riusciti in un breve intervallo di tempo, soprattutto se provengono dallo stesso indirizzo IP o prendono di mira lo stesso account o dispositivo, sono un chiaro segnale di attività brute force. Altri segnali includono accessi da posizioni geografiche inattese o da intervalli IP insoliti, tentativi ripetuti contro account amministrativi o di servizio e picchi di traffico di autenticazione non coerenti con la normale attività degli utenti.

Non esiste un unico metodo migliore per proteggersi dagli attacchi brute force. Puoi però rafforzare la sicurezza combinando più metodi, tra cui il blocco geografico, l’autenticazione a più fattori e metodi di rilevamento proattivi.

Ti potrebbe interessare anche

Pronto a semplificare le parti più complesse dell'IT?