Raccogliere i log di Microsoft PowerShell

Supportato in:

Questo documento spiega come importare i log di Microsoft PowerShell in Google Security Operations utilizzando l'agente Bindplane.

Microsoft PowerShell è un framework di automazione delle attività e gestione della configurazione di Microsoft, costituito da una shell a riga di comando e da un linguaggio di scripting. I log di PowerShell acquisiscono l'esecuzione degli script, l'attività dei moduli e le chiamate ai comandi, fornendo visibilità sulle operazioni di PowerShell per il monitoraggio della sicurezza e l'analisi forense.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Istanza Google SecOps
  • Windows Server 2016 o versioni successive
  • Connettività di rete tra l'host Windows e Google SecOps
  • Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane.
  • Accesso amministrativo all'host Windows per configurare il logging di PowerShell e installare l'agente BindPlane

Configura il logging di PowerShell

La registrazione di PowerShell deve essere abilitata sugli host Windows prima che i log possano essere raccolti. Per impostazione predefinita, la registrazione di PowerShell è minima. Attiva la registrazione del blocco di script per acquisire l'attività dettagliata di PowerShell.

Abilitare la registrazione del blocco degli script utilizzando Policy di gruppo

  1. Apri l'Editor Criteri di gruppo locali eseguendo gpedit.msc come amministratore.
  2. Vai a Configurazione computer > Modelli amministrativi > Componenti di Windows > Windows PowerShell.
  3. Fai doppio clic su Attiva la registrazione dei blocchi di script PowerShell.
  4. Seleziona Attivata.
  5. Se vuoi, seleziona Registra eventi di inizio / interruzione dell'invocazione del blocco di script per acquisire gli eventi di inizio e interruzione per ogni blocco di script. Tieni presente che questa opzione genera un volume elevato di log.
  6. Fai clic su OK.
  7. Apri Prompt dei comandi come amministratore ed esegui gpupdate /force per applicare immediatamente il criterio.

Abilitare la registrazione del blocco degli script utilizzando il registro

In alternativa, puoi attivare la registrazione del blocco degli script impostando il seguente valore del Registro di sistema:

  1. Apri l'Editor del Registro di sistema eseguendo regedit come amministratore.
  2. Vai a HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging.
  3. Se la chiave non esiste, creala.
  4. Crea un nuovo valore DWORD (32 bit) denominato EnableScriptBlockLogging e imposta il relativo valore su 1.
  5. Riavvia le sessioni di PowerShell per applicare le modifiche.

La registrazione dei blocchi di script di PowerShell scrive gli eventi nel canale del log eventi Microsoft-Windows-PowerShell/Operational con l'ID evento 4104.

(Facoltativo) Abilita la registrazione dei log dei moduli

La registrazione dei moduli registra i dettagli di esecuzione della pipeline per i moduli specificati. Per attivare la registrazione dei moduli per tutti i moduli:

  1. Nell'Editor Criteri di gruppo locali, vai a Configurazione computer > Modelli amministrativi > Componenti di Windows > Windows PowerShell.
  2. Fai doppio clic su Attiva logging moduli.
  3. Seleziona Attivata.
  4. Fai clic su Mostra accanto a Nomi dei moduli.
  5. Inserisci * per registrare tutti i moduli.
  6. Fai clic su Ok nella finestra Nomi dei moduli.
  7. Fai clic su Ok nella finestra Registrazione moduli.
  8. Esegui gpupdate /force per applicare la policy.

Gli eventi di registrazione dei moduli vengono scritti nel log eventi di Windows PowerShell con l'ID evento 4103.

(Facoltativo) Attiva la trascrizione

La trascrizione crea un record basato su testo di tutti gli input e gli output della sessione PowerShell. Per attivare la trascrizione:

  1. Nell'Editor Criteri di gruppo locali, vai a Configurazione computer > Modelli amministrativi > Componenti di Windows > Windows PowerShell.
  2. Fai doppio clic su Attiva la trascrizione di PowerShell.
  3. Seleziona Attivata.
  4. (Facoltativo) Specifica una directory di output della trascrizione. Se viene lasciato vuoto, le trascrizioni vengono salvate nella cartella Documenti di ogni utente.
  5. Seleziona Includi intestazioni di chiamata per includere timestamp e metadati.
  6. Fai clic su OK.
  7. Esegui gpupdate /force per applicare la policy.

Le trascrizioni vengono scritte in file di testo con nomi che iniziano con PowerShell_transcript.

Recuperare il file di autenticazione importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agente di raccolta.
  3. Fai clic su Scarica per scaricare il file di autenticazione dell'importazione.
  4. Salva il file in modo sicuro sull'host Windows in cui verrà installato l'agente Bindplane.

Recuperare l'ID cliente Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.

Installa l'agente Bindplane

Installa l'agente Bindplane sull'host Windows seguendo le istruzioni riportate di seguito.

Installazione di Windows

  1. Apri Prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo:

    sc query observiq-otel-collector
    

    Il servizio dovrebbe essere visualizzato come IN ESECUZIONE.

Risorse aggiuntive per l'installazione

Per ulteriori opzioni di installazione e risoluzione dei problemi, consulta la guida all'installazione dell'agente Bindplane.

Configura l'agente Bindplane per raccogliere i log di PowerShell

Individuare il file di configurazione di Windows

  • Individua il file di configurazione di Windows nel seguente modo:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Modifica il file di configurazione

  • Sostituisci l'intero contenuto di config.yaml con la seguente configurazione:

    receivers:
      windowseventlog/powershell:
        channel: Microsoft-Windows-PowerShell/Operational
        max_reads: 100
        poll_interval: 5s
        raw: true
        start_at: end
    
    processors:
      batch:
    
    exporters:
      chronicle/powershell:
        compression: gzip
        creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json'
        customer_id: '<CUSTOMER_ID>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: 'POWERSHELL'
        raw_log_field: body
        override_log_type: false
    
    service:
      pipelines:
        logs/powershell:
          receivers:
            - windowseventlog/powershell
          processors:
            - batch
          exporters:
            - chronicle/powershell
    

Parametri di configurazione

Sostituisci i seguenti segnaposto:

  • Configurazione del ricevitore:

    • channel: il canale del log eventi di Windows da cui raccogliere i dati. Per la registrazione dei blocchi di script PowerShell, utilizza Microsoft-Windows-PowerShell/Operational. Per il logging dei moduli, utilizza Windows PowerShell.
    • raw: impostalo su true per inviare XML non elaborato del log eventi di Windows a Google SecOps.
    • start_at: impostalo su end per raccogliere solo i nuovi eventi dopo l'avvio dell'agente. Imposta su beginning per raccogliere tutti gli eventi esistenti.
  • Configurazione dell'esportatore:

    • <CUSTOMER_ID>: sostituisci con l'ID cliente del passaggio precedente.
    • creds_file_path: il percorso completo del file di autenticazione importazione. Copia il file di autenticazione scaricato in questa posizione.
    • endpoint: URL dell'endpoint regionale. Utilizza l'endpoint per la tua regione Google SecOps:

      • Stati Uniti: malachiteingestion-pa.googleapis.com
      • Europa: europe-malachiteingestion-pa.googleapis.com
      • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
      • Per un elenco completo, vedi Endpoint regionali.
    • log_type: impostalo su POWERSHELL per utilizzare il parser PowerShell.

Salvare il file di configurazione

Dopo la modifica, salva il file facendo clic su File > Salva.

Riavvia l'agente Bindplane per applicare le modifiche

Windows

  • Utilizzando il prompt dei comandi o PowerShell come amministratore:

    net stop observiq-otel-collector && net start observiq-otel-collector
    
  • oppure utilizzando la console Services:

    1. Premi Win+R, digita services.msc e premi Invio.
    2. Individua observIQ OpenTelemetry Collector.
    3. Fai clic con il tasto destro del mouse e seleziona Riavvia.
    4. Verifica che il servizio sia in esecuzione:

      sc query observiq-otel-collector
      
    5. Controlla i log per individuare eventuali errori:

      type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
      

Verifica l'importazione dei log

Dopo aver configurato l'agente Bindplane e riavviato il servizio, i log di PowerShell dovrebbero iniziare a essere inviati a Google SecOps.

  1. Accedi alla console Google SecOps.
  2. Vai a Indaga > Cerca.
  3. Esegui la seguente ricerca per verificare che i log di PowerShell vengano inseriti:

    metadata.log_type = "POWERSHELL"
    
  4. Verifica che gli eventi vengano visualizzati con timestamp recenti.

Gli eventi di logging dei blocchi di script PowerShell (ID evento 4104) verranno visualizzati con i dettagli dei blocchi di script eseguiti, inclusi il contenuto dello script, l'ID blocco di script e il contesto di esecuzione.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
HostId principal.resource.product_object_id Identificatore univoco dell'oggetto prodotto associato alla risorsa principale
System.Version metadata.product_version Versione del prodotto che ha generato l'evento
System.EventId, EventID, winlog.event_id metadata.product_event_type Tipo di evento definito dal prodotto
Computer, System.Computer, computer, winlog.computer_name principal.hostname Nome host dell'entità principale
Computer, System.Computer, computer, winlog.computer_name principal.asset.hostname Nome host della risorsa associata al soggetto
System.EventRecordID, RecordNumber, winlog.record_id metadata.product_log_id Identificatore univoco della voce di log all'interno del sistema di logging del prodotto
System.Opcode, opcode, winlog.opcode metadata.description Descrizione dell'evento o contesto aggiuntivo
ProviderGuid, winlog.provider_guid metadata.product_deployment_id Identificatore univoco per l'implementazione del prodotto
System.ProcessID, ProcessID, ExecutionProcessID, execution.process_id, winlog.process.pid principal.process.pid ID processo del processo principale
SourceModuleName principal.resource.name Nome della risorsa associata al soggetto
SourceModuleType principal.resource.resource_subtype Sottotipo della risorsa associata al soggetto
security.user_id, UserID, winlog.user.identifier principal.user.windows_sid Identificatore di sicurezza (SID) di Windows per l'utente principale
metadata.event_type Tipo di evento (ad es. USER_LOGIN, NETWORK_CONNECTION)
SourceName, winlog.provider_name metadata.product_name Nome del prodotto che ha generato l'evento
AccountName, Username, UserName, winlog.user.name principal.user.userid ID utente dell'utente principale
Dominio, winlog.user.domain principal.administrative_domain Dominio amministrativo del preside
Path, target_file, ScriptName, script_name, ContextInfo_Script Name, file_path target.process.file.full_path Percorso completo del file associato al processo di destinazione
HostName, powershell.Host Name, ContextInfo_Host Name target.hostname Nome host dell'entità di destinazione
HostName, powershell.Host Name, ContextInfo_Host Name target.asset.hostname Il nome host della risorsa associata al target
Host ID, HostID, ContextInfo_Host ID target.asset.asset_id Identificatore univoco della risorsa di destinazione
Nombre_de_comando, ContextInfo_Command Name, CommandName target.application Nome dell'applicazione associata al target
HostApplication, ContextInfo_Host Application target.process.command_line Riga di comando utilizzata per avviare il processo di destinazione
ScriptBlockText target.process.command_line Riga di comando utilizzata per avviare il processo di destinazione
MessageSourceAddress principal.ip Indirizzo IP del principale
MessageSourceAddress principal.asset.ip Indirizzo IP della risorsa associata al principale
Nombre_de_host principal.application Nome dell'applicazione associata al principal
Version_de_host principal.platform_version Versione della piattaforma associata all'entità
Id_de_host principal.resource.id Identificatore univoco della risorsa principale
Application_host principal.process.file.full_path Percorso completo del file associato al processo principale
HostApplication principal.process.command_line Riga di comando utilizzata per avviare il processo principale
Usuario, admin_domain principal.user.userid ID utente dell'utente principale
Usuario, admin_domain principal.administrative_domain Dominio amministrativo del preside
CommandLine principal.process.command_line Riga di comando utilizzata per avviare il processo principale
Machine, machine_id principal.asset.asset_id Identificatore univoco per la risorsa principale
Macchina, software_piattaforma principal.asset.platform_software.platform Tipo di piattaforma dell'asset (ad es. WINDOWS, LINUX)
Macchina, software_piattaforma principal.asset.platform_software.platform_version Versione del software della piattaforma sull'asset
MessageSourceAddress intermediary.ip Indirizzo IP dell'entità intermediaria
MessageSourceAddress, Hostname intermediary.hostname Nome host dell'entità intermediaria
MessageSourceAddress, Hostname intermediary.asset.hostname Il nome host della risorsa associata all'intermediario
MessageSourceAddress intermediary.port Numero di porta utilizzato dall'intermediario
HostApplication target.process.command_line Riga di comando utilizzata per avviare il processo di destinazione
HostId target.asset.asset_id Identificatore univoco della risorsa di destinazione
SequenceNumber, ContextInfo_Sequence Number, Sequence Number security_result.detection_fields Coppie chiave-valore di informazioni di rilevamento aggiuntive
ProviderName principal.resource.attribute.labels Etichette o attributi associati alla risorsa principale
NewEngineState additional.fields Campi personalizzati aggiuntivi non coperti dallo schema UDM standard
PreviousEngineState additional.fields Campi personalizzati aggiuntivi non coperti dallo schema UDM standard
ScriptName additional.fields Campi personalizzati aggiuntivi non coperti dallo schema UDM standard
ManagementGroupName additional.fields Campi personalizzati aggiuntivi non coperti dallo schema UDM standard
Origine additional.fields Campi personalizzati aggiuntivi non coperti dallo schema UDM standard
RenderedDescription security_result.description Descrizione del risultato di sicurezza o dell'azione intrapresa
TenantId additional.fields Campi personalizzati aggiuntivi non coperti dallo schema UDM standard
Nome utente principal.user.userid ID utente dell'utente principale
ActivityID security_result.detection_fields Coppie chiave-valore di informazioni di rilevamento aggiuntive
ExecutionThreadID, execution.thread_id, winlog.process.thread.id security_result.detection_fields Coppie chiave-valore di informazioni di rilevamento aggiuntive
Output security_result.detection_fields Coppie chiave-valore di informazioni di rilevamento aggiuntive
Dati security_result.detection_fields Coppie chiave-valore di informazioni di rilevamento aggiuntive
Data_1 additional.fields Campi personalizzati aggiuntivi non coperti dallo schema UDM standard
data_1 security_result.detection_fields Coppie chiave-valore di informazioni di rilevamento aggiuntive
Data_2 security_result.detection_fields Coppie chiave-valore di informazioni di rilevamento aggiuntive
winlog.activity_id security_result.detection_fields Coppie chiave-valore di informazioni di rilevamento aggiuntive
winlog.api additional.fields Campi personalizzati aggiuntivi non coperti dallo schema UDM standard
winlog.channel principal.resource.attribute.labels Etichette o attributi associati alla risorsa principale
Offset additional.fields Campi personalizzati aggiuntivi non coperti dallo schema UDM standard
SeverityValue security_result.detection_fields Coppie chiave-valore di informazioni di rilevamento aggiuntive
intermediario intermediario Dettagli sulle entità intermediarie coinvolte nell'evento
security_result security_result Risultato complessivo della sicurezza, inclusi azioni, gravità e rilevamenti
metadata.vendor_name Il nome del fornitore che ha prodotto l'evento.
SourceName metadata.product_name Nome del prodotto che ha generato l'evento

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.