Script Tracing and Logging

  • 06/12/2017
  • 2 luettavat minuutit
    • j
    • s

vaikka Powershellissa on jo LogPipelineExecutionDetails – ryhmäkäytäntöasetus cmdletien kirjaamiseksi, PowerShellin komentosarjakielellä on useita ominaisuuksia, joita haluat ehkä tologin ja auditoinnin. Uusi yksityiskohtainen Script Jäljitysominaisuus tarjoaa yksityiskohtaisen seurannan ja analyysin ofPowerShell script toimintaa järjestelmässä. Kun olet ottanut käyttöön yksityiskohtaisen komentosarjan jäljityksen, PowerShell kirjaa allscript-lohkot etw-tapahtumalokiin, Microsoft-Windows-PowerShell/Operational. Jos komentosarjalohko luo toisen komentosarjalohkon esimerkiksi kutsumalla Invoke-Expression, myös kutsuttu skriptilohko kirjautui.

kirjaaminen on käytössä ottamalla PowerShell Script Block Logging Group Policy setting inministrative Templates -> Windows Components -> Windows PowerShell.

tapahtumat ovat:

kanava toiminnassa
Level Verbose
Opcode Create
tehtävä CommandStart
Avainsana Runspace
EventId Engine_ScriptBlockCompiled (0x1008 = 4104)
viesti luodaan komentosarjan tekstiä (%1 / %2): %3 komentosarjan ID: %4

viestiin upotettu teksti on kootun komentosarjalohkon laajuus. Tunnus on GUID, joka säilytetään komentosarjalohkon koko keston ajan.

kun otat käyttöön monisanaisen kirjauksen, ominaisuus kirjoittaa alku-ja loppumerkit:

kanava toiminnassa
Level Verbose
Opcode Open / Close
tehtävä CommandStart / CommandStop
Avainsana Runspace
EventId ScriptBlock_Invoke_Start_Detail (0x1009 = 4105) / ScriptBlock_Invoke_Complete_Detail (0x100A = 4106)
viesti komentosarjan ID: n kutsuminen on aloitettu / päättynyt: %1 Runspace ID: %2

ID on GUID edustaa komentosarjalohkoa (joka voidaan korreloida Tapahtuman ID 0x1008 kanssa), ja Runspace ID edustaa runspace, jossa tämä komentosarjalohko ajettiin.

prosenttimerkit kutsuviestissä edustavat strukturoituja ETW-ominaisuuksia. Vaikka ne korvataan viestitekstin todellisilla arvoilla, vankempi tapa päästä niihin on hakea viesti Get-WinEvent cmdlet-ohjelmalla ja käyttää sitten viestin ominaisuuksia.

tässä on esimerkki siitä, miten tämä toiminto voi auttaa purkamaan haittaohjelman yrityksen salata skripti:

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

tämän suorittaminen luo seuraavat lokimerkinnät:

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

jos komentosarjalohkon pituus ylittää yksittäisen tapahtuman kapasiteetin, PowerShell rikkoo komentosarjan moniosaisia osia. Tässä on näytekoodi komentosarjan yhdistämiseksi sen lokiviesteistä:

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

kuten kaikissa lokijärjestelmissä, joissa on rajoitettu säilytyspuskuri, yksi tapa hyökätä tätä infrastruktuuria vastaan on hukuttaa loki väärillä tapahtumilla aiempien todisteiden piilottamiseksi. Suojellaksesi itseäsi tältä hyökkäykseltä, varmista, että sinulla on jonkinlainen tapahtumalokikokoelma WindowsEvent Forwarding. Lisätietoja, seeSpotting vastustaja Windowsin tapahtumalokin seuranta.



+