Skriptsporing og Logging

  • 06/12/2017
  • 2 minutter å lese
    • j
    • s

Mens PowerShell allerede Har LogPipelineExecutionDetails Gruppepolicyinnstilling for å logge innkallingen av cmdlets, Har Powershells skriptspråk flere funksjoner som du kanskje vil logge og overvåke. Den Nye Detaljert Script Tracing funksjonen gir detaljert sporing og analyse ofPowerShell script aktivitet på et system. Etter å ha aktivert detaljert skriptsporing, logger PowerShell allscript-blokker til etw-hendelsesloggen, Microsoft-Windows-PowerShell / Operational. Hvis en skriptblokkoppretter en annen skriptblokk, for eksempel ved å ringe Invoke-Expression, logges den påberopte skriptblokkenogså.

Logging er aktivert gjennom Innstillingen Slå På Powershell Script Block Logging Gruppepolicy inadadministrative Maler – > Windows-Komponenter – > Windows PowerShell.

hendelsene er:

Kanal Operativ
Nivå Detaljert
Opcode Opprett
Oppgave CommandStart
Nøkkelord Runspace
EventId Engine_ScriptBlockCompiled (0x1008 = 4104)
Melding Opprette Skriptblock-tekst (%1 av %2): %3 Skriptblock-ID: %4

teksten som er innebygd i meldingen, er omfanget av skriptblokken kompilert. IDEN er EN GUID somer beholdt for livet til skriptblokken.

når du aktiverer detaljert logging, skriver funksjonen start-og sluttmarkører:

Kanal Operativ
Nivå Detaljert
Opcode Åpne / Lukk
Oppgave Kommandostart / Kommandostopp
Nøkkelord Runspace
EventId ScriptBlock_Invoke_Start_Detail (0x1009 = 4105) / ScriptBlock_Invoke_Complete_Detail (0x100A = 4106)
Melding Startet / Fullført påkalling Av ScriptBlock ID: %1 Runspace ID: %2

IDEN er GUID som representerer skriptblokken (som kan korreleres med hendelses-ID 0x1008), og Runspace ID representerer runspace der denne skriptblokken ble kjørt.

prosenttegn i aktiveringsmeldingen representerer strukturerte ETW-egenskaper. Mens de er replacedwith de faktiske verdiene i meldingsteksten, en mer robust måte å få tilgang til dem er å hente themessage med Cmdleten Get-WinEvent, og deretter bruke Egenskaper matrise av meldingen.

her er et eksempel på hvordan denne funksjonaliteten kan bidra til å pakke ut et ondsinnet forsøk på å kryptere andobfuscate et skript:

## Malwarefunction SuperDecrypt{ param($script) $bytes = ::FromBase64String($script) ## XOR "encryption" $xorKey = 0x42 for($counter = 0; $counter -lt $bytes.Length; $counter++) { $bytes = $bytes -bxor $xorKey } ::Unicode.GetString($bytes)}$decrypted = SuperDecrypt "FUIwQitCNkInQm9CCkItQjFCNkJiQmVCEkI1QixCJkJlQg=="Invoke-Expression $decrypted

Kjører dette genererer følgende loggoppføringer:

Compiling Scriptblock text (1 of 1):function SuperDecrypt{ param($script) $bytes = ::FromBase64String($script) ## XOR "encryption" $xorKey = 0x42 for($counter = 0; $counter -lt $bytes.Length; $counter++) { $bytes = $bytes -bxor $xorKey } ::Unicode.GetString($bytes)}ScriptBlock ID: ad8ae740-1f33-42aa-8dfc-1314411877e3Compiling Scriptblock text (1 of 1):$decrypted = SuperDecrypt "FUIwQitCNkInQm9CCkItQjFCNkJiQmVCEkI1QixCJkJlQg=="ScriptBlock ID: ba11c155-d34c-4004-88e3-6502ecb50f52Compiling Scriptblock text (1 of 1):Invoke-Expression $decryptedScriptBlock ID: 856c01ca-85d7-4989-b47f-e6a09ee4eeb3Compiling Scriptblock text (1 of 1):Write-Host 'Pwnd'ScriptBlock ID: 5e618414-4e77-48e3-8f65-9a863f54b4c8

hvis skriptblokklengden overskrider kapasiteten til en enkelt hendelse, bryter PowerShell skriptet inn i flere deler. Her er eksempelkode for å rekombinere et skript fra loggmeldingene:

$created = Get-WinEvent -FilterHashtable @{ ProviderName="Microsoft-Windows-PowerShell"; Id = 4104 } | Where-Object { $_.<...> }$sortedScripts = $created | sort { $_.Properties.Value }$mergedScript = -join ($sortedScripts | % { $_.Properties.Value })

Som med alle logging systemer som har en begrenset oppbevaring buffer, en måte å angripe thisinfrastructure er å oversvømme loggen med falske hendelser for å skjule tidligere bevis. For å beskytte deg selv fra dette angrepet, sørg for at Du har noen form for hendelsesloggsamling satt Opp WindowsEvent Forwarding. For mer informasjon, sespotting Motstanderen Med Windows Hendelseslogg Overvåking.



+