Scénář, Sledování a Protokolování

  • 06/12/2017
  • 2 minut číst
    • j
    • s

Zatímco PowerShell už má LogPipelineExecutionDetails zásady Skupiny nastavení protokolu theinvocation z rutiny, PowerShell je skriptovací jazyk, který má několik funkcí, které budete chtít tolog a auditu. Nová funkce podrobného sledování skriptů poskytuje podrobné sledování a analýzu aktivity skriptů PowerShell v systému. Po povolení podrobného trasování skriptů PowerShell přihlásí allscript bloky do protokolu událostí ETW, Microsoft-Windows-PowerShell / Operational. Pokud blok skriptu vytvoří jiný blok skriptu, například voláním Invoke-Expression, vyvolaný blok skriptu je také zaznamenán.

protokolování je povoleno pomocí zapnutí nastavení zásad skupiny pro protokolování skriptů PowerShell v administračních šablonách – > součásti systému Windows – > Windows PowerShell.

události jsou:

Kanál Provozní
Úroveň Verbose
Opcode Vytvořit
Úkol CommandStart
Klíčové slovo prostředí runspace
id události Engine_ScriptBlockCompiled (0x1008 = 4104)
Zpráva Vytvoření Scriptblock text (%1, %2): %3 ScriptBlock ID: %4

Text vložený do zprávy je rozsah skript blok sestaven. ID je GUID, kterýje zachován po celou dobu trvání skriptového bloku.

když povolíte podrobné protokolování, funkce zapíše značky začátek a konec:

Kanál Provozní
Úroveň Verbose
Opcode Otevřít / Zavřít
Úkol CommandStart / CommandStop
Klíčové slovo prostředí runspace
id události ScriptBlock_Invoke_Start_Detail (0x1009 = 4105) / ScriptBlock_Invoke_Complete_Detail (0x100A = 4106)
Zpráva Začal / Dokončené vyvolání ScriptBlock ID: %1 prostředí runspace ID: %2

ID je GUID představující blok skriptu (které mohou být spojeny s ID události 0x1008), a prostředí runspace ID představuje prostředí runspace, ve kterém tento skript blok byl spuštěn.

procentuální znaky ve vzývací zprávě představují strukturované vlastnosti ETW. Zatímco jsou nahrazeny skutečnými hodnotami v textu zprávy, robustnějším způsobem, jak k nim přistupovat, je načíst themessage pomocí rutiny Get-WinEvent a poté použít pole vlastností zprávy.

Tady je příklad, jak tato funkce může pomoci rozbalit nebezpečný pokus šifrování andobfuscate 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

Běží to generuje následující položky protokolu:

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

Pokud je blok skriptu délka přesahuje kapacitu jedné události, PowerShell přestávky scénář intomultiple částí. Zde je ukázkový kód slučují skript z jeho zprávy protokolu:

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

stejně Jako u všech protokolování systémy, které mají omezenou retenční vyrovnávací paměti, jeden způsob, jak k útoku thisinfrastructure je zaplavit přihlásit se rušivé události skrýt důkazy dříve. Chcete-li se chránit před tímto útokem, ujistěte se, že máte nastavenou nějakou formu kolekce protokolů událostí Windowsevent Forwarding. Pro více informací, vizbotting protivníka s monitorováním protokolu událostí systému Windows.



+