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 script di PowerShell risiedono in Registri Applicazioni e Servizi → Microsoft → Windows → PowerShell → Operativo, come evento 4104. Sono completi solo se la registrazione dei blocchi 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 la sua propria impostazione di policy.

Se un attaccante ha toccato una macchina Windows, è probabile che PowerShell sia stato coinvolto. La registrazione dei blocchi script registra il codice che è realmente stato eseguito, spesso dopo che i livelli di offuscamento sono stati rimossi. Prime Core ha 663 regole di rilevamento per i log di PowerShell, mappate a 417 tecniche di MITRE ATT&CK. Coprono l’uso malevolo di PowerShell (T1059.001), l’offuscamento (T1027) e i cradle di download che scaricano strumenti (T1105).

Prova LogTotal, gratuito

Prima di iniziare

La registrazione dei blocchi 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 script che considera sospetti, come eventi 4104 a livello di Avviso. Quindi potresti trovare alcuni eventi. Basta non scambiarli per il quadro completo.

Attivarlo aiuta da ora in poi, non per ciò che è già accaduto. Usa l’impostazione di Criteri di Gruppo Modelli Amministrativi → Componenti di Windows → Windows PowerShell → Attiva la registrazione dei blocchi script di PowerShell, oppure imposta direttamente il valore di registro:

reg add “HKLMSOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging” /v EnableScriptBlockLogging /t REG_DWORD /d 1 /f

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

Aspettati un alto volume. Ogni script e modulo che viene eseguito finisce nel log. Aumenta la dimensione massima del canale, altrimenti conserverai solo poche ore.

Aspettati segreti. Gli script amministrativi a volte contengono password e chiavi API in testo semplice, e la registrazione dei blocchi script li registra fedelmente. Tienilo a mente prima che questo file venga inviato ovunque, e leggi la sezione LogTotal qui sotto.

Esporta i log

In Visualizzatore Eventi, fai clic con il pulsante destro su Operativo sotto PowerShell e scegli Salva tutti gli eventi come… Dalla linea di comando:

:: solo blocchi 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 log “Windows PowerShell”: eventi di avvio del motore con la linea di comando dell’host

wevtutil epl “Windows PowerShell” C:logswindows_powershell.evtx

Quest’ultimo è facile da dimenticare, ma vale la pena di 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 fatto il downgrade intenzionalmente per evitare la registrazione dei blocchi script.

Carica e rivedi in LogTotal

LogTotal legge EVTX nativamente. Una cosa da sapere prima: LogTotal non sanifica ancora i file EVTX. [PROOF: confirm which formats the sanitize step covers today.] With PowerShell logs, that matters more than usual, because of the secrets mentioned above. Use EVTX uploads freely for test machines. For production hosts, get a yes from whoever owns data handling first.

  1. Carica. Apri logtotal.com e carica il file. [PROVA: schermata di caricamento, limite di dimensione]
  2. Revisiona. [PROOF: what the results screen shows for PowerShell data]

Cosa appare sui dati reali. Abbiamo usato [PROVA: fonte del campione, per esempio una VM di test con la registrazione dei blocchi script attiva, dopo aver eseguito un cradle di download codificato e una stringa di test innocua per alterazione AMSI]. LogTotal ha segnalato [PROVA: risultati effettivi]. [PROVA: link al file di esempio]

Quando qualcosa va storto

SintomoProbabile causaFix
Nessun evento 4104La registrazione dei blocchi script è disattivata e niente sembrava sospettoAttivala per il futuro; controlla il log di Windows PowerShell per vedere cosa 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
4104 testo è una cifratura illeggibileIl logging degli eventi protetto è attivoHai bisogno del certificato di decrittazione
Il log copre solo poche oreDimensione predefinita, alto volumeAumenta la dimensione massima del canale

FAQ

La registrazione dei blocchi script cattura il codice offuscato?

In larga misura, sì. Registra i blocchi script man mano che vengono compilati. Quando il codice offuscato costruisce ed esegue il prossimo stadio, quel stadio viene registrato come blocco suo proprio, spesso in forma leggibile.

Qual è la differenza rispetto alla trascrizione?

La trascrizione scrive file di testo di input e output di sessione in una cartella. La registrazione dei blocchi script registra il codice stesso nel registro eventi. Si completano a vicenda, e vale la pena averli 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.