szkriptek nyomon követése és naplózása

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



+