Artefatti di Windows · Lezione 7 di 9
Registri eventi: accessi, RDP, servizi e PowerShell
11 min di lettura
I registri eventi di Windows documentano chi ha effettuato l'accesso, da dove e in quale modalità, quali servizi e attività sono stati installati, quando il sistema è stato avviato e arrestato e, talvolta, il codice PowerShell eseguito, associando a ciascun evento un orario UTC preciso. Questa lezione tratta il formato EVTX, gli eventi più utilizzati dagli esaminatori su Windows 10 e 11 e le modalità di correlazione di più registri per ricostruire una sessione.
Dove si trovano i registri e come è strutturato EVTX
I registri si trovano in C:\Windows\System32\winevt\Logs, con un file per ciascun canale. I registri classici sono Security.evtx, System.evtx e Application.evtx. Gli altri canali utilizzano il nome del canale con la barra rappresentata come %4: il canale Microsoft-Windows-TerminalServices-LocalSessionManager/Operational è memorizzato come Microsoft-Windows-TerminalServices-LocalSessionManager%4Operational.evtx. Una raccolta di triage copia questi file mantenendone i percorsi originali; verificare che i canali necessari siano stati acquisiti prima di concludere che un evento non si sia mai verificato.
Il formato EVTX è semplice a livello generale:
| Parte | Dimensione | Firma | Contenuto |
|---|---|---|---|
| Intestazione del file | 4.096 byte | ElfFile | Numeri del primo e dell'ultimo blocco, ID del record successivo, flag (ad es. dirty) |
| Blocco | 65.536 byte (64 KB) | ElfChnk | Intestazione del blocco di 512 byte, tabelle delle stringhe e dei modelli, record |
| Record evento | variabile | byte 2A 2A 00 00 | Dimensione del record, ID del record, ora di scrittura (FILETIME), XML binario |
I record sono memorizzati come XML binario, una codifica compatta che fa riferimento a modelli conservati nel blocco; i parser ricostruiscono l'XML visualizzato nel Visualizzatore eventi. I blocchi autonomi possono anche essere recuperati dallo spazio non allocato mediante carving.
Campi dei record
Ogni record contiene una sezione System e una sezione dati:
- Provider (il componente che lo ha scritto, ad es.
Microsoft-Windows-Security-Auditing) ed EventID. Lo stesso numero può avere significati diversi per provider diversi, quindi leggerli sempre insieme. - TimeCreated SystemTime, sempre in UTC, ad es.
2026-03-14T22:47:33.2014417Z. - EventRecordID, un numero sequenziale per ciascun registro; interruzioni nella sequenza o una ripartenza da 1 richiedono un esame più approfondito.
- Channel e Computer (il nome dell'host al momento della scrittura dell'evento).
- EventData (o UserData): campi denominati, come
TargetUserNameoIpAddress.
Dimensione e sovrascrittura ciclica
Ogni registro ha una dimensione massima e, per impostazione predefinita, sovrascrive gli eventi più vecchi quando è pieno. La dimensione predefinita del registro Security è spesso di 20 MB, quindi, su un sistema molto attivo, il registro Security potrebbe coprire soltanto pochi giorni. I canali Operational hanno limiti propri, spesso inferiori, ma ricevono meno eventi e possono quindi risalire più indietro nel tempo rispetto a Security. Per i registri classici, la dimensione configurata corrisponde al valore MaxSize sotto ControlSet00x\Services\EventLog\<log> nell'hive SYSTEM; confrontare il record più vecchio con il periodo oggetto dell'indagine.
Accessi nel registro Security
Gli eventi di Security dipendono dai criteri di controllo. Windows 10 e 11 controllano per impostazione predefinita gli accessi riusciti e non riusciti, ma molte categorie, inclusa la creazione dei processi, sono disattivate se non vengono abilitate. L'assenza di un evento non dimostra che l'azione non sia avvenuta.
4624 (accesso riuscito) è l'evento principale. I suoi campi fondamentali sono TargetUserName, TargetUserSid, TargetLogonId, LogonType, IpAddress, WorkstationName (il nome del client), LogonProcessName (ad es. User32, NtLmSsp, Kerberos) e AuthenticationPackageName (ad es. Negotiate, NTLM, Kerberos).
| LogonType | Nome | Causa tipica |
|---|---|---|
| 2 | Interattivo | Accesso tramite tastiera alla console |
| 3 | Rete | Accesso a una condivisione o NLA prima di RDP |
| 4 | Batch | Attività pianificata |
| 5 | Servizio | Servizio avviato con un account |
| 7 | Sblocco | Workstation sbloccata o sessione riconnessa |
| 8 | Rete con credenziali in chiaro | Credenziali inviate in chiaro (ad es. autenticazione di base IIS) |
| 9 | Nuove credenziali | runas /netonly: nuove credenziali per le connessioni in uscita |
| 10 | Interattivo remoto | Desktop remoto |
| 11 | Interattivo con credenziali memorizzate nella cache | Accesso al dominio con credenziali memorizzate nella cache, senza controller di dominio |
4625 (accesso non riuscito) ha la stessa struttura, con l'aggiunta di Status e SubStatus. Il valore SubStatus 0xC000006A indica una password errata per un account esistente; 0xC0000064 indica che il nome utente non esiste. Numerosi errori 0xC0000064 provenienti da un unico IP suggeriscono tentativi di individuare nomi utente; una sequenza ravvicinata di 0xC000006A seguita da un 4624 per quell'account suggerisce che la password sia stata indovinata.
Altri eventi della stessa famiglia:
- 4634 disconnessione dall'account (la sessione è terminata) e 4647 disconnessione dall'account avviata dall'utente (l'utente ha scelto Disconnetti).
- 4648 accesso con credenziali esplicite, ad es.
runaso mappatura di un'unità con un altro account. - 4672 privilegi speciali assegnati a un nuovo accesso: l'account dispone di privilegi sensibili ed è in genere un amministratore (o SYSTEM).
- 4720 account utente creato, 4722 abilitato, 4724 tentativo di reimpostazione della password, 4732 membro aggiunto a un gruppo locale abilitato alla sicurezza (ad es. Administrators).
- 4688 creazione di un processo, solo quando è abilitato "Controlla creazione processo"; il campo
CommandLineviene compilato soltanto se è impostato anche il criterio aggiuntivo "Includi riga di comando negli eventi di creazione del processo".
L'ID di accesso (TargetLogonId in 4624, un valore a 64 bit visualizzato in esadecimale) identifica una sessione di accesso fino al suo termine. Gli eventi successivi lo riportano come SubjectLogonId (4672, 4688, 4648) o TargetLogonId (4634, 4647), quindi filtrare in base a tale valore consente di raccogliere tutte le operazioni eseguite nella sessione. Gli ID di accesso sono univoci soltanto fino al riavvio successivo, quindi associare l'ID alla finestra temporale.
Desktop remoto in tre registri
Una sessione RDP lascia eventi sul sistema di destinazione in tre canali:
- RemoteConnectionManager/Operational 1149, "Autenticazione utente riuscita", con utente, dominio e IP di origine. Indica che una connessione RDP da quell'IP è stata accettata per quel nome utente; non dimostra che sia stata avviata una sessione desktop.
- Security 4624 tipo 10 con lo stesso IP in
IpAddress. Con l'autenticazione a livello di rete (NLA), spesso compare poco prima un accesso di tipo 3 dallo stesso IP. Una riconnessione o uno sblocco può invece mostrare il tipo 7. - LocalSessionManager/Operational (LSM) 21 (accesso alla sessione riuscito), 22 (notifica di avvio della shell ricevuta), 24 (sessione disconnessa) e 25 (riconnessione alla sessione riuscita), ciascuno con utente, ID di sessione e indirizzo di origine. Gli accessi alla console mostrano
LOCALcome indirizzo. - Security 4778 (sessione riconnessa) e 4779 (sessione disconnessa), con
LogonID,ClientNameeClientAddress, se è attivato il controllo di "Altri eventi di accesso/disconnessione".
La chiusura della finestra RDP interrompe la connessione alla sessione senza disconnettere l'account: compaiono 24 e 4779, ma 4634 compare soltanto quando l'utente si disconnette dall'account o la sessione viene reimpostata.
Servizi, attività, avvio e arresto
Nel registro System, 7045 (provider Service Control Manager) documenta l'installazione di un servizio con ServiceName, ImagePath, StartType e AccountName. Un nome casuale con un ImagePath che esegue cmd.exe o powershell.exe è tipico degli strumenti di esecuzione remota. 7036 documenta il passaggio di un servizio allo stato in esecuzione o arrestato. 6005 e 6006 (servizio Registro eventi avviato/arrestato) indicano l'avvio e l'arresto regolare, 6008 documenta che l'arresto precedente è stato imprevisto e 1074 (provider User32) identifica il processo e l'utente che hanno avviato un arresto o un riavvio.
In Microsoft-Windows-TaskScheduler/Operational, 106 documenta la registrazione di un'attività con il relativo nome e l'utente che l'ha registrata, mentre 200/201 documentano l'avvio e il completamento di un'azione dell'attività. Questo canale può essere disabilitato, quindi verificare che contenga eventi. La lezione 2.6 tratta gli eventi dei dispositivi USB.
PowerShell
- Microsoft-Windows-PowerShell/Operational 4104 (registrazione dei blocchi di script) documenta il codice eseguito, dopo la decodifica, con uno
ScriptBlockId; gli script lunghi si estendono su più record ("1 di 3"). Con il criterio attivo, vengono registrati tutti i blocchi. In sua assenza, Windows PowerShell 5.x può registrare automaticamente alcuni blocchi di script, al livello Avviso, quando ne considera sospetto il contenuto. - 4103 (registrazione dei moduli) documenta i dettagli di esecuzione della pipeline, come comandi e parametri, quando la registrazione dei moduli è abilitata.
- Windows PowerShell.evtx 400 e 403 indicano l'avvio e l'arresto del motore; il loro campo
HostApplicationmostra la riga di comando che ha avviato PowerShell, inclusi i valori di-EncodedCommand. 600 documenta l'avvio dei provider. - PowerShell 7 utilizza il proprio canale
PowerShellCore/Operational.
Al di fuori dei registri, PSReadLine salva i comandi digitati nella console in %APPDATA%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt per ciascun utente, conservando per impostazione predefinita le ultime 4.096 righe. Non contiene timestamp, quindi datare le voci mediante correlazione (4104, orari del file system).
Registri cancellati
Security 1102 ("Il registro di controllo è stato cancellato") e System 104 (cancellazione di un altro registro) documentano chi ha cancellato un registro. Il modulo 7 tratta la cancellazione dei registri come tecnica antiforense.
Strumenti e metodo
Il Visualizzatore eventi può aprire un file .evtx copiato per verifiche puntuali, ma visualizza l'ora locale della macchina di analisi. Per l'analisi, elaborare tutti i registri in un'unica tabella: EvtxECmd, ad esempio, utilizza mappe che normalizzano i campi degli eventi in colonne comuni (utente, host remoto, eseguibile) e scrive file CSV in UTC. Strumenti di ricerca delle minacce come Hayabusa e Chainsaw applicano regole di rilevamento a numerosi registri; verificare ogni riscontro nel record originale.
Esempio svolto: una sessione RDP
Una raccolta di triage dalla workstation WS-FIN-07 mostra questi eventi (UTC):
| Ora (UTC) | Registro | ID | Valori principali |
|---|---|---|---|
| 2026-03-14T22:47:31.512Z | RemoteConnectionManager | 1149 | Utente mreyes, origine 203.0.113.45 |
| 2026-03-14T22:47:33.201Z | Security | 4624 | Tipo 10, mreyes, TargetLogonId 0x3E1A2B, IpAddress 203.0.113.45, workstation DESKTOP-K2M9QX |
| 2026-03-14T22:47:33.215Z | Security | 4672 | SubjectLogonId 0x3E1A2B |
| 2026-03-14T22:47:33.640Z | LocalSessionManager | 21 | WS-FIN-07\mreyes, ID di sessione 3, 203.0.113.45 |
| 2026-03-14T22:47:34.902Z | LocalSessionManager | 22 | ID di sessione 3 |
| 2026-03-14T23:31:05.117Z | LocalSessionManager | 24 | ID di sessione 3, 203.0.113.45 |
| 2026-03-14T23:31:05.140Z | Security | 4779 | LogonID 0x3E1A2B, ClientName DESKTOP-K2M9QX |
Correlazione. L'utente e l'IP collegano 1149 a 4624; il TargetLogonId di 4624 lo collega a 4672 e 4779; l'utente, l'IP e l'ID di sessione collegano i tre eventi LocalSessionManager. Alcuni strumenti mostrano gli ID di accesso in formato decimale: 0x3E1A2B = 62 × 65.536 + 0x1A2B (6.699) = 4.069.931.
Interpretazione. mreyes si è connesso da 203.0.113.45 (computer client DESKTOP-K2M9QX), ha effettuato l'accesso alle 22:47:33Z con privilegi speciali (4672) e ha interrotto la connessione alle 23:31:05Z. Durata: 23:31:05.117 − 22:47:33.201 = 43 min 31,916 s. Non seguono eventi 4634 o 4647, quindi la sessione è rimasta attiva con l'account connesso, ma senza connessione remota. Filtrare in base a 0x3E1A2B in questa finestra mostrerebbe ciò che è stato eseguito nella sessione, se il controllo di 4688 era abilitato.
Riferimento degli ID evento
| Registro | ID | Significato |
|---|---|---|
| Security | 4624 / 4625 | Accesso riuscito / non riuscito |
| Security | 4634 / 4647 | Disconnessione dall'account / disconnessione dall'account avviata dall'utente |
| Security | 4648 | Accesso con credenziali esplicite |
| Security | 4672 | Privilegi speciali assegnati a un nuovo accesso |
| Security | 4720 / 4722 / 4724 / 4732 | Account creato / abilitato / password reimpostata / aggiunto a un gruppo locale |
| Security | 4688 | Processo creato (se il controllo è abilitato) |
| Security | 4778 / 4779 | Sessione RDP riconnessa / disconnessa |
| Security | 1102 | Registro Security cancellato |
| RemoteConnectionManager/Operational | 1149 | Autenticazione utente RDP riuscita |
| LocalSessionManager/Operational | 21 / 22 / 24 / 25 | Accesso alla sessione / avvio della shell / disconnessione / riconnessione |
| System | 7045 / 7036 | Servizio installato / cambio di stato del servizio |
| System | 6005 / 6006 / 6008 | Registro eventi avviato / arrestato / arresto imprevisto |
| System | 1074 | Arresto o riavvio avviato |
| System | 104 | Registro cancellato |
| TaskScheduler/Operational | 106 / 200 / 201 | Attività registrata / azione avviata / completata |
| PowerShell/Operational | 4104 / 4103 | Registrazione dei blocchi di script / dei moduli |
| Windows PowerShell | 400 / 403 / 600 | Motore avviato / arrestato / provider avviato |
Focus sull'esame: È richiesto di saper riportare un orario di accesso in UTC, un IP di origine, un ID di accesso, il nome di una workstation client o l'ImagePathdi un servizio ricavandoli dai registri elaborati, e di scegliere l'evento corretto per una domanda (1149 rispetto a 4624 tipo 10 rispetto a LSM 21). Conoscere i tipi di accesso e i due codici SubStatus comuni di 4625 ed essere pronti a spiegare perché un evento mancante possa dipendere dai criteri di controllo o dalla sovrascrittura ciclica anziché dall'assenza di attività. Ricavare gli orari daSystemTime, non da un visualizzatore che li converte nell'ora locale.
Punti chiave
- I file EVTX si trovano in
C:\Windows\System32\winevt\Logs; un'intestazioneElfFiledi 4 KB è seguita da blocchiElfChnkdi 64 KB contenenti record XML binari con orari UTC e un EventRecordID. - I registri sono soggetti a sovrascrittura ciclica: il registro Security è spesso di soli 20 MB, quindi confrontarne il record più vecchio con il periodo di interesse.
- 4624 fornisce utente, SID, LogonType, ID di accesso, IP e workstation; Status/SubStatus di 4625 spiegano gli errori; 4672 indica gli accessi privilegiati.
- RDP compare come 1149, 4624 tipo 10, LSM 21/22/24/25 e 4778/4779; correlarli tramite utente, IP, ID di sessione e ID di accesso.
- 7045 documenta i nuovi servizi, 106/200/201 le attività pianificate, 4104 il codice PowerShell; ConsoleHost_history.txt conserva i comandi digitati senza orari.
- Molti eventi dipendono dai criteri di controllo o di registrazione, quindi l'assenza di eventi non dimostra l'assenza di attività.