Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Metamorph — Una utilidad de línea de comandos para Windows escrita en C que crea y configura sesiones persistentes de AutoLogger de Event Tracing for Windows (ETW). | Kitploit
Herramientas/GitHubGitHub/synacktiv/metamorph
Herramientas DefensivasMecanismos de PersistenciaRecopilación de InformaciónPost-ExplotaciónAnálisis de MalwareRespuesta a Incidentes
GitHubsynacktiv/metamorph

Metamorph

Una utilidad de línea de comandos para Windows escrita en C que crea y configura sesiones persistentes de AutoLogger de Event Tracing for Windows (ETW).

Ver Repositorio
817hace 3 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Metamorph

Introducción

Esta herramienta es una utilidad de línea de comandos para Windows escrita en C que crea y configura sesiones persistentes de AutoLogger de Event Tracing for Windows (ETW). Los AutoLoggers inician automáticamente el seguimiento de proveedores ETW específicos al arrancar el sistema, lo que los hace útiles para capturar eventos que ocurren al inicio del proceso de arranque o para escenarios de monitoreo continuo.

Esta herramienta permite seleccionar listas predefinidas de proveedores ETW relacionados con EDR conocidos para incluirlos en la sesión AutoLogger mediante argumentos de línea de comandos. Fusiona configuraciones si el mismo proveedor está incluido en múltiples listas seleccionadas, asegurando que se use el nivel de registro más alto y que los indicadores de palabras clave se combinen adecuadamente para maximizar la cobertura de eventos según las listas seleccionadas.

Características

  • Crea sesiones persistentes de AutoLogger ETW mediante configuración del registro (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph).
  • Se inicia automáticamente al arrancar el sistema.
  • Permite seleccionar listas de proveedores predefinidas (-Defender, -Crowdstrike, -MDE, -Sentinelone, -Cortex).
  • Opción para habilitar todos los proveedores de todas las listas (-All).
  • Opción para habilitar proveedores ruidosos (algunos se eliminan automáticamente para evitar llenar los discos en segundos): (-noisy)
  • Fusiona configuraciones de proveedores duplicadas:
    • Mantiene el Level más alto especificado entre todos los duplicados para un proveedor.
    • Combina los indicadores MatchAnyKeyword usando OR bit a bit de todos los duplicados (independientemente del nivel) para asegurar la cobertura de palabras clave más amplia.
    • Usa el MatchAllKeyword de la entrada de configuración que proporcionó el nivel más alto.
  • Nombre de sesión y ruta de archivo de registro configurables (definidos como constantes en el código).

Compilación

Necesitas un compilador de C, como el incluido con Visual Studio.

  1. Abre el archivo Metamorph.sln
  2. Selecciona "Release" y tu arquitectura objetivo (x64/x86)
  3. Compila y disfruta

No hay importaciones no estándar, por lo que la compilación con Cl debería ser posible sin mucha complicación.

Guía de uso

Importante: Esta herramienta modifica el Registro de Windows (HKEY_LOCAL_MACHINE) y por lo tanto requiere privilegios de Administrador para ejecutarse correctamente.

  • Abre una ventana de Símbolo del sistema o PowerShell como Administrador y ejecuta el ejecutable desde allí.
.\Metamorph.exe <options>

# Enable only providers from Defender
.\Metamorph.exe -Defender

# Enable providers from Defender and MDE, merging duplicates
.\Metamorph.exe -Defender -MDE

# Enable all providers from all engines, merging duplicates
.\Metamorph.exe -All

# Enabling one provider, also with noisy ones, because why not filling disk space after all?
.\Metamorph.exe -All -noisy

Después de la inicialización, debe ocurrir un reinicio para iniciar el proveedor recién registrado.

Limpieza manual

Para limpiar este proveedor, se debe:

  1. Abrir regedit.exe
  2. Navegar a (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph)
  3. Hacer clic derecho para eliminar la clave de registro mencionada.
  4. Reiniciar

Explotación de los resultados

ETW proporciona una visibilidad profunda de los eventos en tiempo de ejecución. Esto se puede aprovechar para detectar actividades potencialmente sospechosas que podrían indicar actividad de malware o técnicas de ofuscación. Una vez instalado, los proveedores deberían proporcionar el mismo nivel de telemetría de "Registro de eventos" que el EDR "clonado". Debería facilitar la investigación de IOC que podrían ser dejados por herramientas internas.

Después de que el sistema se haya reiniciado y las aplicaciones de interés se hayan ejecutado, el archivo .etl (por ejemplo, Metamorph.etl) contendrá los eventos capturados.

El archivo generado (C:\Windows\System32\LogFiles\WMI\Metamorph.etl.00x) puede ser ingerido por varias herramientas públicas como:

  • El propio Visor de eventos
  • Perfview
  • inserta aquí tu herramienta ETW preferida

Nota bene: Metamorph utiliza archivos de registro circulares para evitar perderlo accidentalmente después de un reinicio, pero algunas herramientas necesitan que el archivo termine en .etl, por lo que deberás eliminar el sufijo antes de usarlo.

Además, es posible básicamente traducir el archivo .etl a un archivo CSV para búsquedas rápidas:

tracerpt MyKeywordMergedETWLogger.etl -o logdump.csv -of CSV

Ejemplo práctico con Powershell y .NET sin archivo cargado con Assembly.Load

Ejecutando un binario sin archivo a través de Assembly.Load()

Digamos que tenemos el siguiente programa de Powershell que carga un archivo usando Assembly.Load:

[Reflection.Assembly]:https://raw.githubusercontent.com/synacktiv/metamorph/main/:Load(%5BSystem.Convert%5D::FromBase64String(%22TVqQAAMAAAAEAAAA/8AALgAAAAAAAAAQAAAAAA%5B...%5DAAAAAAAAAAAAA%22))


#Récupération du handle sur le process cible
    $ProcessDesiredAccess = 0x00000400
    $InheritHandle = 0
    $ProcessId = $PID
    $hProcess = [api32.run]::OpenProcess($ProcessDesiredAccess, $InheritHandle, $ProcessId)
    if($hProcess -eq 0){ Write-Output "OpenProcess Error" }

#Récupération du handle sur le token du process cible
    $hToken = [IntPtr]::Zero
    $TokenDesiredAccess = 0x00000006
    $Success = [api32.run]::OpenProcessToken($hProcess, $TokenDesiredAccess, [ref]$hToken)
    if(-not $Success){ Write-Output "OpenProcessToken Error" }
    
#Duplication du token
    $DesiredAccess = 0x10000000
    $SecurityAttribute = New-Object api32.run+_SECURITY_ATTRIBUTES
    $SecurityAttribute.lpSecurityDescriptor = [IntPtr]::Zero
    $SecurityAttribute.bInheritHandle = $true
    $ImpersonationLevel = 3
    $TokenType = 1
    $hDuplicatedToken = [IntPtr]::Zero
    $Success = [api32.run]::DuplicateTokenEx($hToken, $DesiredAccess,[ref]$SecurityAttribute, $ImpersonationLevel, $TokenType,[ref]$hDuplicatedToken)
    if(-not $Success) { Write-Debug "DuplicateTokenEx Error" }

#Creation du cmd avec le token dupliqué
    $LogonFlags = 0
    $ApplicationName = "cmd.exe"
    $CommandLine = "/K whoami /all"
    $CreationFlags = 0x00000010
    $Environnement = [IntPtr]::Zero
    $CurrentDirectory = "c:\windows\system32"
    $StartUpinformation = New-Object api32.run+STARTUPINFOA                                    
    $ProcessInformation = New-Object api32.run+_PROCESS_INFORMATION
    $Success = [api32.run]::CreateProcessWithTokenW($hDuplicatedToken, $LogonFlags,$ApplicationName, $CommandLine, $CreationFlags, $Environnement, $CurrentDirectory, [ref]$StartUpinformation,[ref]$ProcessInformation)
    if(-not $Success) { Write-Debug "CreateProcessWithTokenW Error" }

Este script básicamente realiza un ataque como el que podría realizar la herramienta impersonate.exe.

  1. Abre un símbolo del sistema de powershell con privilegios de administrador
  2. Ejecuta poc.ps1
  3. Espera unos minutos para asegurarte de que todos los búferes ETW se hayan vaciado en el archivo .etl

Análisis

  1. Abre Perfview con privilegios de administrador
  2. Carga tu archivo .etl a través del panel y haz doble clic en los eventos para acceder a los datos de todos los proveedores

  1. Navega a través de la lista de proveedores para investigar los datos según lo que hiciste

  1. Elige el proveedor relevante para inspeccionarlo (aquí Microsoft-Windows-Powershell/Exécuterunecommandedistante)
Descargar herramienta