- 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.