- 06/12/2017
- 2 perc olvasni
-
- j
- s
míg a PowerShell már rendelkezik a logpipelineexecutiondetails csoportházirend-beállítással a parancsmagok meghívásának naplózásához, a PowerShell szkriptnyelve számos olyan funkcióval rendelkezik, amelyeket érdemes naplózni és ellenőrizni. Az új részletes Szkriptkövetési funkció részletes nyomon követést és elemzést nyújt a PowerShell szkript tevékenységéről a rendszeren. Miután engedélyezte a részletes szkriptkövetést, a PowerShell az allscript blokkokat naplózza az ETW eseménynaplóba, Microsoft-Windows-PowerShell / Operational. Ha egy parancsfájl blokkegy másik parancsfájl blokkot hoz létre, például a Invoke-Expression
hívásával, a meghívott parancsfájl blokkszintén naplózva.
a naplózást a PowerShell parancsfájl Blokknaplózásának bekapcsolása csoportházirend-beállítással lehet engedélyezni adminisztratív sablonok- > Windows-összetevők – > Windows PowerShell.
az események:
csatorna | működési |
---|---|
szint | részletes |
Opcode | Létrehozás |
feladat | Parancsindítás |
kulcsszó | Runspace |
EventId | Motor_scriptblockfordított (0x1008 = 4104) |
üzenet | Scriptblock szöveg létrehozása (%1 / % 2): %3 ScriptBlock ID: %4 |
az üzenetbe ágyazott szöveg a lefordított szkriptblokk mértéke. Az azonosító egy GUID, amelya szkriptblokk élettartama alatt megmarad.
amikor engedélyezi a részletes naplózást, a funkció begin and end jelölőket ír:
csatorna | működési |
---|---|
szint | részletes |
Opcode | Megnyitás / Bezárás |
feladat | CommandStart / CommandStop |
kulcsszó | Runspace |
EventId | ScriptBlock_Invoke_Start_Detail (0x1009 = 4105) / ScriptBlock_Invoke_Complete_Detail (0x100A = 4106) |
üzenet | a ScriptBlock ID meghívásának megkezdése / befejezése: %1 Runspace ID: %2 |
az azonosító a szkriptblokkot képviselő GUID (amely korrelálható a 0x1008 eseményazonosítóval), ésa Runspace ID azt a futásteret jelöli, amelyben a szkriptblokkot futtatták.
a meghívó üzenetben szereplő százalékos jelek strukturált ETW tulajdonságokat képviselnek. Míg az üzenet szövegében szereplő tényleges értékekkel vannak helyettesítve, a hozzáférés robusztusabb módja a themessage lekérése a Get-WinEvent parancsmaggal, majd az üzenet tulajdonságok tömbjének használata.
Íme egy példa arra, hogy ez a funkció hogyan segíthet kicsomagolni egy rosszindulatú kísérletet egy szkript titkosítására és elfuskázására:
## 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
ennek futtatása a következő naplóbejegyzéseket generálja:
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
ha a szkriptblokk hossza meghaladja egy esemény kapacitását, a PowerShell több részre bontja a szkriptet. Itt van egy minta kód, amellyel rekombinálhat egy szkriptet a naplóüzeneteiből:
$created = Get-WinEvent -FilterHashtable @{ ProviderName="Microsoft-Windows-PowerShell"; Id = 4104 } | Where-Object { $_.<...> }$sortedScripts = $created | sort { $_.Properties.Value }$mergedScript = -join ($sortedScripts | % { $_.Properties.Value })
mint minden naplózási rendszer esetében, amelyek korlátozott visszatartási pufferrel rendelkeznek, az infrastruktúra megtámadásának egyik módja az, hogy a naplót hamis eseményekkel árasztják el a korábbi bizonyítékok elrejtése érdekében. Protectyourself a támadás, győződjön meg arról, hogy van valamilyen formában eseménynapló gyűjtemény beállítása WindowsEvent Forwarding. További információért lásd: az ellenfél észlelése a Windows Eseménynapló figyelésével.