Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Metamorph — Un utilitaire en ligne de commande pour Windows, écrit en C, qui crée et configure des sessions AutoLogger persistantes pour le suivi d'événements Windows (ETW). | Kitploit
Outils/GitHubGitHub/synacktiv/metamorph
Outils DéfensifsMécanismes de PersistanceCollecte d'InformationsPost-ExploitationAnalyse de MalwareRéponse aux Incidents
GitHubsynacktiv/metamorph

Metamorph

Un utilitaire en ligne de commande pour Windows, écrit en C, qui crée et configure des sessions AutoLogger persistantes pour le suivi d'événements Windows (ETW).

Voir le dépôt
8il y a 2 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Metamorph

Introduction

Cet outil est un utilitaire en ligne de commande pour Windows écrit en C qui crée et configure des sessions AutoLogger persistantes d'Event Tracing for Windows (ETW). Les AutoLoggers démarrent automatiquement le suivi de fournisseurs ETW spécifiques au démarrage du système, ce qui les rend utiles pour capturer les événements qui se produisent tôt dans le processus de démarrage ou pour des scénarios de surveillance continue.

Cet outil permet de sélectionner des listes prédéfinies de fournisseurs ETW associés à des EDR connus à inclure dans la session AutoLogger via des arguments de ligne de commande. Il fusionne les configurations si le même fournisseur est inclus dans plusieurs listes sélectionnées, garantissant que le niveau de journalisation le plus élevé est utilisé et que les indicateurs de mots-clés sont combinés de manière appropriée pour maximiser la couverture des événements en fonction des listes sélectionnées.

Fonctionnalités

  • Crée des sessions AutoLogger ETW persistantes via la configuration du registre (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph).
  • Démarre automatiquement au démarrage du système.
  • Permet la sélection de listes prédéfinies de fournisseurs (-Defender, -Crowdstrike, -MDE, -Sentinelone, -Cortex).
  • Option pour activer tous les fournisseurs de toutes les listes (-All).
  • Option pour activer les fournisseurs bruyants (certains sont automatiquement supprimés pour éviter de remplir les disques en quelques secondes) : (-noisy)
  • Fusionne les configurations de fournisseurs en double :
    • Conserve le Level le plus élevé spécifié parmi tous les doublons pour un fournisseur.
    • Combine les indicateurs MatchAnyKeyword à l'aide d'un OU bit à bit de tous les doublons (quel que soit le niveau) pour garantir la couverture de mots-clés la plus large.
    • Utilise le MatchAllKeyword de l'entrée de configuration qui a fourni le niveau le plus élevé.
  • Nom de session et chemin de fichier journal configurables (définis comme constantes dans le code).

Compilation

Vous avez besoin d'un compilateur C, comme celui inclus avec Visual Studio.

  1. Ouvrez le fichier Metamorph.sln
  2. Sélectionnez « Release » et votre architecture cible (x64/x86)
  3. Compilez et profitez

Il n'y a pas d'imports non standard, la compilation avec Cl devrait donc être possible sans trop de difficultés.

Guide d'utilisation

Important : Cet outil modifie le registre Windows (HKEY_LOCAL_MACHINE) et nécessite donc des privilèges d'administrateur pour fonctionner correctement.

  • Ouvrez une invite de commandes ou une fenêtre PowerShell en tant qu'administrateur et exécutez l'exécutable à partir de là.
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

Après l'initialisation, un redémarrage doit avoir lieu pour démarrer le fournisseur nouvellement enregistré.

Nettoyage manuel

Pour nettoyer ce fournisseur, il faut :

  1. Ouvrir regedit.exe
  2. Naviguer vers (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph)
  3. Faire un clic droit pour supprimer la clé de registre susmentionnée.
  4. Redémarrer

Exploitation des résultats

ETW offre une visibilité approfondie sur les événements d'exécution. Cela peut être utilisé pour détecter des activités potentiellement suspectes qui pourraient indiquer une activité malveillante ou des techniques d'obfuscation. Une fois installés, les fournisseurs devraient fournir le même niveau de télémétrie « Event log » que l'EDR « cloné ». Cela devrait ensuite faciliter la recherche d'IOC qui pourraient être laissés par des outils internes.

Après le redémarrage du système et l'exécution des applications d'intérêt, le fichier .etl (par exemple, Metamorph.etl) contiendra les événements capturés.

Le fichier généré (C:\Windows\System32\LogFiles\WMI\Metamorph.etl.00x) peut être ingéré par plusieurs outils publics comme :

  • l'Observateur d'événements lui-même
  • Perfview
  • insérez votre outil ETW préféré ici

Nota bene : Metamorph utilise des fichiers journaux circulaires pour éviter de le perdre accidentellement après un redémarrage, mais certains outils nécessitent que le fichier se termine par .etl, vous devrez donc supprimer le suffixe avant utilisation.

Il est également possible de convertir le fichier .etl en fichier CSV pour un grep grossier :

root@kitploit:~
tracerpt MyKeywordMergedETWLogger.etl -o logdump.csv -of CSV

Exemple pratique avec PowerShell et .NET sans fichier chargé avec Assembly.Load

Exécution d'un binaire sans fichier via Assembly.Load()

Supposons que nous ayons le programme PowerShell suivant qui charge un fichier à l'aide d'Assembly.Load :

root@kitploit:~
[Reflection.Assembly]:https://raw.githubusercontent.com/synacktiv/metamorph/HEAD/: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" }

Ce script effectue essentiellement une attaque comme celle qui pourrait être réalisée par l'outil impersonate.exe.

  1. Ouvrez une invite PowerShell avec des privilèges administrateur
  2. Exécutez poc.ps1
  3. Attendez quelques minutes pour vous assurer que tous les tampons ETW ont été vidés dans le fichier .etl

Analyse

  1. Ouvrez Perfview avec des privilèges administrateur
  2. Chargez votre fichier .etl via le tableau de bord et double-cliquez sur les événements pour accéder aux données de tous les fournisseurs

  1. Parcourez la liste des fournisseurs pour examiner les données en fonction de ce que vous avez fait

  1. Choisissez le fournisseur pertinent à inspecter (ici Microsoft-Windows-Powershell/Exécuterunecommandedistante)

  1. Inspection de Microsoft-Windows-DotNETRuntime/Loader/AssemblyLoad

Au final, les EDR et les analystes ont la possibilité d'effectuer une analyse de signatures basée sur AssemblyName pour les binaires connus (comme : "Rubeus") et, dans le cas contraire, ils ont la possibilité de récupérer les scripts PowerShell (y compris les commentaires) pour une analyse post-mortem.

Contribution

Si vous trouvez cet outil utile, vous pouvez ajouter vos propres solutions (ou celles d'autres) en suivant les instructions dans CONTRIBUTING.md. J'essaierai de le mettre à jour régulièrement, mais comme cela dépendra entièrement des solutions rencontrées lors de pentests, n'hésitez pas à soumettre une PR si vous souhaitez que vos modifications soient disponibles pour tout le monde.

Télécharger l’outil