Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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
87hace 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í.
    root@kitploit:~
    .\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:

    root@kitploit:~
    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:

    root@kitploit:~
    [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)

    1. Inspecciona Microsoft-Windows-DotNETRuntime/Loader/AssemblyLoad

    Entonces, al final, los EDR y los analistas tienen la oportunidad de realizar análisis de firmas basados en AssemblyName para binarios conocidos (como: "Rubeus") y, de lo contrario, tienen la posibilidad de recuperar scripts de Powershell (incluidos comentarios) para análisis post-mortem.

    Contribuir

    Si encuentras útil esta herramienta, puedes añadir tus propias soluciones (u otras) siguiendo las instrucciones de CONTRIBUTING.md. Intentaré actualizarla regularmente, pero como dependerá completamente de las soluciones encontradas durante los pentests, siéntete libre de hacer un PR si quieres que tus cambios estén disponibles para todos.

    Descargar herramienta