Come abilitare ed esportare i log dei blocchi script PowerShell

Come abilitare ed esportare i log dei blocchi script PowerShell

SOC Prime Team
SOC Prime Team linkedin icon Segui

I log dei blocchi di script di PowerShell si trovano in Registri delle Applicazioni e Servizi → Microsoft → Windows → PowerShell → Operational, come evento 4104. Sono completi solo se la registrazione dei blocchi di script è attivata. Per esportarli:

wevtutil epl "Microsoft-Windows-PowerShell/Operational" C:logspowershell.evtx

PowerShell 7 è un prodotto separato con un canale separato, PowerShellCore/Operational, e una propria impostazione di criterio.

Se un attaccante ha avuto accesso a un computer Windows, è probabile che PowerShell fosse coinvolto. La registrazione dei blocchi di script registra il codice effettivamente eseguito, spesso dopo che sono stati rimossi i livelli di offuscamento. Prime Core ha 663 regole di rilevamento per i log di PowerShell, mappate a 417 tecniche MITRE ATT&CK. Coprono l’uso dannoso di PowerShell (T1059.001), l’offuscamento (T1027) e i supporti di download che scaricano strumenti (T1105).

Inizia Gratis

Prima di iniziare

La registrazione dei blocchi di script è attiva?

reg query "HKLMSOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging"

EnableScriptBlockLogging impostato su 0x1 significa sì. Se la chiave non esiste, è disattivata. Anche in quel caso, Windows PowerShell 5.1 registra ancora i blocchi di script che considera sospetti, come eventi 4104 a livello di Avviso. Quindi potresti trovare alcuni eventi. Basta non scambiarli per il quadro completo.

Attivarla aiuta da ora in avanti, non per ciò che è già successo. Utilizzare l’impostazione dei criteri di gruppo Modelli Amministrativi → Componenti di Windows → Windows PowerShell → Attiva la registrazione dei blocchi di script di PowerShell, o impostare direttamente il valore del registro:

reg add "HKLMSOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging" /v EnableScriptBlockLogging /t REG_DWORD /d 1 /f

PowerShell 7 legge la propria chiave di criterio sotto HKLMSOFTWAREPoliciesMicrosoftPowerShellCore. Se è stato installato da un zip anziché dall’MSI, il suo canale eventi potrebbe non essere registrato finché non esegui RegisterManifest.ps1 da $PSHOME.

Aspettati volume. Ogni script e modulo che viene eseguito finisce nel registro. Aumenta la dimensione massima del canale, altrimenti manterrai solo poche ore.

Aspettati segreti. Gli script amministrativi a volte trasportano password e chiavi API in chiaro, e la registrazione dei blocchi di script li registra fedelmente. Tienilo a mente prima che questo file vada in qualsiasi posto, e leggi la sezione LogTotal qui sotto.

Esporta i log

In Event Viewer, fai clic con il tasto destro su Operational sotto PowerShell e scegli Salva Tutti gli Eventi Come… Dalla riga di comando:

:: solo blocchi di script

wevtutil epl "Microsoft-Windows-PowerShell/Operational" C:logsps_4104.evtx /q:"*[System[(EventID=4104)]]"




:: PowerShell 7

wevtutil epl "PowerShellCore/Operational" C:logspwsh.evtx




:: il classico registro "Windows PowerShell": eventi di avvio motore con la riga di comando dell'host

wevtutil epl "Windows PowerShell" C:logswindows_powershell.evtx

Quest’ultimo è facile da dimenticare, e vale la pena prenderlo. L’evento 400 registra ogni avvio del motore, inclusa la versione del motore. Una EngineVersion di 2.0 su un sistema moderno di solito significa che qualcuno ha deliberatamente fatto un downgrade per aggirare la registrazione dei blocchi di script.

Carica e rivedi con LogTotal

LogTotal legge nativamente gli EVTX. Una cosa da sapere prima: LogTotal non sanifica ancora i file EVTX. Con i log di PowerShell, importa più del solito, a causa dei segreti menzionati sopra. Usa upload di EVTX liberamente per macchine di test. Per host di produzione, ottieni un sì da chi gestisce i dati prima.

  1. Carica. Apri logtotal.com e inserisci il file.
  2. Revisiona.

Quando va male

SintomoCausa probabileFix
Nessun evento 4104La registrazione dei blocchi di script è disattivata, e nulla sembrava sospettoAttivala per il futuro; controlla il registro di Windows PowerShell per ciò che puoi ancora ottenere
Solo pochi eventi 4104, tutti AvvisoLa registrazione è disattivata; stai vedendo la registrazione automatica dei blocchi sospettiCome sopra
PowerShellCore/Operational non trovatoPowerShell 7 non è installato, o il suo manifesto non è registratoEsegui RegisterManifest.ps1 da $PSHOME
Il testo 4104 è crittografia illeggibileLa Registrazione degli Eventi Protetti è attivaHai bisogno del certificato di decrittazione
Il log copre solo poche oreDimensione predefinita, alto volumeAumenta la dimensione massima del canale

FAQ

La registrazione dei blocchi di script cattura il codice offuscato?

In gran parte, sì. Registra i blocchi di script come vengono compilati. Quando il codice offuscato costruisce ed esegue la fase successiva, quella fase viene registrata come un suo blocco, spesso in forma leggibile.

Qual è la differenza rispetto alla trascrizione?

La trascrizione scrive file di testo di input e output della sessione in una cartella. La registrazione dei blocchi di script registra il codice stesso nel registro eventi. Si completano a vicenda, e vale la pena avere entrambi.

Unisciti alla piattaforma Detection as Code di SOC Prime per migliorare la visibilità sulle minacce più rilevanti per il tuo business. Per aiutarti a iniziare e aumentare immediatamente il valore, prenota ora un incontro con gli esperti di SOC Prime.