SiemShield

    Guide pratiche

    Event ID di Windows da monitorare: la lista corta di un SOC

    Microsoft classifica a bassa criticità gli eventi da cui nasce quasi tutto il lavoro di un SOC. La lista corta che raccogliamo, con il valore predefinito di ogni criterio di audit verificato sulla documentazione, e il rumore che copre l'unica riga che conta.

    Leopoldo OnoratoPubblicato il 22 settembre 20269 min di lettura

    In breve

    Contano una ventina di Event ID del registro Sicurezza di Windows, letti in correlazione. Accessi (4624, 4625, 4648, 4672), Kerberos sui domain controller (4768, 4769, 4771), account e gruppi (4720, 4726, 4740, 4728, 4732, 4756), esecuzione (4688, 4697, 4698, 4104), manomissione (1102, 4719, 4616). Alcuni, tra cui il 4688 e il 4769, dipendono da sottocategorie di audit che nascono non configurate.

    Il registro Sicurezza di Windows è la fonte più ricca che un SIEM riceve da una rete aziendale. In ogni onboarding fatto finora, abbiamo trovato la stessa situazione: acceso quello che Windows accende da solo, spento tutto il resto. Di hardening, nessuna traccia.

    Il punto di partenza per decidere cosa raccogliere è la documentazione di chi ha scritto il sistema operativo. Microsoft pubblica l'elenco degli eventi da monitorare in un'appendice della guida alla sicurezza di Active Directory, Appendix L, aggiornata a maggio 2025, con tre livelli di criticità. Alta significa che una sola occorrenza va investigata. Media e bassa significano che l'evento conta soltanto se compare in numero anomalo oppure correlato ad altri.

    La tabella Microsoft e la lettura che ne facciamo

    Nella colonna della criticità alta stanno eventi come il 4765 e il 4766, che registrano l'aggiunta di SID History a un account, il 4794, che segnala un tentativo di impostare la modalità di ripristino della directory, il 4964, che scatta all'accesso di un membro di un gruppo speciale. Sono i segni di una compromissione del dominio già avanzata. In una rete di cinquanta postazioni possono passare anni prima che ne compaia uno.

    Nella colonna della criticità bassa stanno il 4624, il 4625, il 4648, il 4672, il 4688, il 4720, il 4732 e il 4769. Presi uno per uno valgono poco e per questo stanno in basso. Presi insieme, sulla stessa macchina e nella stessa mezz'ora, raccontano quasi tutte le intrusioni che abbiamo gestito. Un accesso di tipo 10 da un indirizzo mai visto, i privilegi speciali assegnati a quella sessione, un processo avviato con una riga di comando codificata in base64, un'attività pianificata creata un minuto dopo. Quattro righe a criticità bassa, che lette in sequenza descrivono un'intrusione in corso.

    La tabella Microsoft dice la stessa cosa, quando definisce la criticità bassa come rilevante soltanto in correlazione. La differenza sta in quale correlazione si cerca. La documentazione suggerisce di legare gli eventi bassi a quelli medi e alti. Nelle reti delle PMI quelle due colonne restano quasi sempre vuote per mesi, quindi la correlazione che paga è tra eventi bassi, letta sulla stessa macchina in una finestra di pochi minuti. La colonna alta resta in allarme immediato, con il 4719 e il 1102 accanto, perché quando uno di quegli eventi compare la correlazione non serve più.

    Gli eventi che raccogliamo

    Ogni evento è verificato sulla pagina di documentazione Microsoft che lo descrive. Il campo che conta è quello che guardiamo per primo, perché separa una riga da tenere da una da scartare. La colonna Audit predefinito dice se quell'evento viene scritto da un Windows appena installato, secondo la stessa documentazione.

    Event IDAmbitoCosa registraIl campo che contaAudit predefinito
    4624AccessiAccesso riuscitoLogon Type (2 console, 3 rete, 10 desktop remoto, 11 credenziali in cache) con l'indirizzo di origine
    4625AccessiAccesso fallitoCodice di stato e origine, contati per finestra di tempoSì, sui client dalla versione 1809 di Windows 10
    4648AccessiAccesso con credenziali espliciteAccount usato e processo chiamante, tipico del runas e dei movimenti laterali
    4672AccessiPrivilegi speciali assegnati alla sessioneChi entra con diritti amministrativi e da dove
    4776AccessiConvalida di credenziali NTLMNTLM dove ci si aspetterebbe KerberosSolo server
    4768Kerberos, solo domain controllerRichiesta di TGTAccount e indirizzo del clientSì sui server
    4769Kerberos, solo domain controllerRichiesta di ticket di servizioTipo di cifratura 0x17 (RC4) su un account di servizio, dove ci si aspetta 0x11 oppure 0x12 (AES)No
    4771Kerberos, solo domain controllerPre-autenticazione fallitaRaffiche sullo stesso accountSì sui server
    4720, 4726Account e gruppiAccount creato, account eliminatoOrario e account che esegue l'operazione
    4740Account e gruppiAccount bloccatoPostazione da cui arriva il blocco
    4728, 4732, 4756Account e gruppiMembro aggiunto a un gruppo di sicurezza globale, locale oppure universaleI gruppi amministrativi in particolare
    4688Esecuzione e persistenzaProcesso creatoRiga di comando (se il criterio è acceso) e processo padreNo
    4697Esecuzione e persistenzaServizio installatoPercorso del binario e account di esecuzioneNo
    4698Esecuzione e persistenzaAttività pianificata creataComando e account-
    4104Esecuzione e persistenzaBlocco di script PowerShell, registro Microsoft-Windows-PowerShell/OperationalTesto dello script e presenza di codifica base64-
    1102Manomissione della tracciaRegistro di audit svuotatoOgni occorrenzaSempre
    4719Manomissione della tracciaCriterio di audit modificatoOgni occorrenzaSempre
    4616Manomissione della tracciaOra di sistema modificataSalti superiori a pochi secondiSempre
    6416PeriferichePeriferica collegata o rimossaChiavette e dischi esterni sulle postazioni-
    4663PerifericheAccesso ai file di un supporto rimovibileChiavette e dischi esterni sulle postazioni-

    Nella colonna Audit predefinito, Sì significa che la sottocategoria da cui l'evento dipende è attiva nell'installazione standard, No che nasce non configurata e l'evento non viene scritto finché non si accende, Solo server che è attiva sulle edizioni server e spenta sulle client, Sempre che l'evento viene scritto a prescindere dal criterio. Il trattino segnala che la documentazione consultata non dichiara il valore predefinito; per i supporti rimovibili dichiara soltanto che, finché il criterio non è configurato, nessun evento viene scritto.

    Il 4769 merita una nota, perché è l'evento con più falsi allarmi della lista. La documentazione stessa avverte che i fallimenti con codice 0x20 indicano un ticket scaduto e hanno rilevanza quasi nulla. Il segnale sta nel tipo di cifratura richiesto; Microsoft indica di monitorare tutto ciò che si discosta da 0x11 e 0x12.

    Il doppio criterio del 4688

    È il caso che in onboarding pesa di più, perché l'evento dipende da due criteri distinti. Audit Process Creation, che lo genera, è "Not configured". Il campo della riga di comando dipende da un secondo criterio, "Include command line in process creation events", anch'esso non configurato. Servono entrambi. Con il primo acceso e il secondo spento, il 4688 arriva, ma con il campo del comando vuoto.

    La documentazione della riga di comando riporta anche un avvertimento. Con quel criterio acceso, gli argomenti di ogni processo finiscono nel registro Sicurezza in testo leggibile, password comprese, se qualcuno le passa da riga di comando. Chi ha accesso in lettura al registro le legge. È un motivo in più per tenere quei registri in un archivio con accessi tracciati.

    Fuori tabella resta una sottocategoria che nasce senza audit e che conosciamo bene, Audit Other Logon/Logoff Events, con il 4800 e il 4801 del blocco e dello sblocco della postazione. Sono gli eventi con cui abbiamo ricostruito la sequenza nel caso della frode via email e su una postazione appena installata mancano.

    Il rumore e la riga sepolta

    L'evento più frequente che riceviamo dalle postazioni viene dai moduli di protezione avanzata degli antivirus. Terminano un processo, scrivono un errore, lo terminano di nuovo un minuto dopo e scrivono un altro errore, per giorni. Righe lunghe, dettagliate, ripetute, che dopo la prima aggiungono zero informazione.

    Il registro Sicurezza che gira su se stesso lo vediamo di rado. Quando succede, il registro si è riempito di righe come quelle sopra fino a raggiungere la dimensione massima; l'unica riga che conta, magari un 4698 con un comando dentro, sta in mezzo a migliaia di righe identiche. Su quella macchina la riga resta per qualche ora, poi la rotazione la cancella. Un sistema che indicizza i campi e conserva una copia fuori dalla macchina la ritrova anche in mezzo al rumore. È il motivo per cui il nostro agente per Windows spedisce gli eventi appena scritti, prima che il registro locale abbia il tempo di girare.

    Cosa chiede la norma e cosa scegliamo noi

    Il provvedimento del Garante del 27 novembre 2008 chiede di registrare gli accessi degli amministratori di sistema e di conservarli con completezza, inalterabilità e possibilità di verifica dell'integrità. Nessun Event ID compare nel testo. Il provvedimento indica il risultato e lascia aperta la strada per arrivarci. La lista è la strada che abbiamo scelto. La ragione pratica è che copre apertura di sessione, uso dei privilegi, esecuzione e manomissione della traccia con eventi nativi del sistema operativo.

    C'è un secondo confine e riguarda i lavoratori. L'audit acceso per la sicurezza della rete non deve diventare un controllo dell'attività lavorativa. Per questo ci fermiamo prima delle sottocategorie che registrerebbero ogni documento aperto da ogni utente. Il confine tra le due cose, con quello che l'articolo 4 dello Statuto dei lavoratori chiede all'azienda, merita un articolo a sé.

    Un pomeriggio di lavoro e nessun acquisto

    Tutti i criteri elencati qui si accendono con un oggetto Criteri di gruppo. Un sistemista attento lo fa in un pomeriggio. Con il registro configurato così trova la riga anche a mano, finché il volume glielo permette.

    Ci è capitato più volte di dover leggere il comando lanciato su una macchina e di trovare un 4688 con il campo della riga di comando vuoto. Il criterio era spento e l'evento, scritto senza quel campo, resta così per sempre. Il caso che vediamo più spesso è un altro. Server consegnati chiavi in mano con il sistema operativo com'è uscito dall'installazione e domain controller dove l'audit Kerberos non è mai stato acceso, spesso da anni, perché l'hardening non stava nel preventivo di nessuno.

    Da fare entro oggi

    Apri un prompt amministrativo su un domain controller e su una postazione qualunque e lancia auditpol /get /category:*. Confronta il risultato con la colonna Audit predefinito. Poi, con un oggetto Criteri di gruppo:

    1. Accendi Audit Process Creation e il criterio "Include command line in process creation events", entrambi.
    2. Sui domain controller accendi Audit Kerberos Service Ticket Operations, con successo e fallimento. Il volume è alto e va misurato prima di alzare allarmi.
    3. Accendi Audit Security System Extension per i servizi installati e Audit Other Object Access Events per le attività pianificate.
    4. Attiva "Turn on PowerShell Script Block Logging".
    5. Se ti servono blocco e sblocco della postazione, accendi Audit Other Logon/Logoff Events.
    6. Configura Audit Removable Storage sulle postazioni dove le chiavette sono un rischio.
    7. Porta gli eventi fuori dalle macchine appena scritti. Allargare il registro Sicurezza rimanda la rotazione di qualche ora e lascia il rumore dov'è.
    8. Avvisa il titolare che l'audit è cambiato, perché l'informativa ai lavoratori potrebbe doverlo recepire.

    Se dopo una settimana il registro Sicurezza delle postazioni è pieno di righe degli stessi due o tre moduli di protezione, hai trovato il rumore. Il filtro si costruisce da lì, un modulo alla volta.

    Domande frequenti

    Una lista corta, letta in correlazione. Accessi (4624, 4625, 4648, 4672), Kerberos sui domain controller (4768, 4769, 4771), account e gruppi (4720, 4726, 4740, 4728, 4732, 4756), esecuzione (4688, 4697, 4698, 4104), manomissione della traccia (1102, 4719, 4616). L'elenco completo di Microsoft, Appendix L, conta diverse centinaia di eventi ed è il riferimento da cui partire.

    Solo se sono accesi due criteri distinti, Audit Process Creation e Include command line in process creation events. Entrambi nascono non configurati. Con il primo acceso e il secondo spento, il 4688 viene scritto con il campo del comando vuoto e quel campo non si recupera più.

    Secondo la documentazione Microsoft nascono senza audit, tra le altre, Audit Process Creation, Audit Kerberos Service Ticket Operations, Audit Security System Extension e Audit Other Logon/Logoff Events. Audit Credential Validation è attiva sui server e spenta sulle edizioni client. La registrazione dei blocchi di script PowerShell e l'audit dei supporti rimovibili vanno attivati a parte.

    Il modo in cui la sessione è stata aperta. I valori più utili sono 2 per la console, 3 per un accesso di rete, 10 per il desktop remoto, 11 per un accesso con credenziali in cache senza contatto con il domain controller. Il Logon Type, letto con l'indirizzo di origine, distingue un accesso alla console da uno arrivato dalla rete.

    Che il ticket di servizio è stato richiesto con cifratura RC4. Sui sistemi attuali i valori attesi sono 0x11 e 0x12, cioè la famiglia AES; Microsoft indica di monitorare tutto ciò che si discosta da questi due. Una richiesta 0x17 verso un account di servizio è il segnale tipico di un tentativo di estrarre il ticket per attaccarne la chiave fuori linea.

    Vuoi vedere SiemShield sui tuoi log?

    Ti mostriamo la piattaforma su casi reali: raccolta, correlazione, allarmi e catena di archiviazione a norma.