Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Metamorph — Un'utilità da riga di comando per Windows scritta in C che crea e configura sessioni AutoLogger persistenti di Event Tracing for Windows (ETW). | Kitploit
Strumenti/GitHubGitHub/synacktiv/metamorph
Strumenti DifensiviMeccanismi di PersistenzaRaccolta InformazioniPost-ExploitAnalisi MalwareRisposta agli Incidenti
GitHubsynacktiv/metamorph

Metamorph

Un'utilità da riga di comando per Windows scritta in C che crea e configura sessioni AutoLogger persistenti di Event Tracing for Windows (ETW).

Vedi Repository
82 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Metamorph

Introduzione

Questo strumento è un'utilità da riga di comando per Windows scritta in C che crea e configura sessioni AutoLogger persistenti di Event Tracing for Windows (ETW). Gli AutoLogger avviano automaticamente la traccia di provider ETW specifici all'avvio del sistema, rendendoli utili per catturare eventi che si verificano all'inizio del processo di avvio o per scenari di monitoraggio continuo.

Questo strumento consente di selezionare liste predefinite di provider ETW correlati a noti EDR da includere nella sessione AutoLogger tramite argomenti da riga di comando. Unisce le configurazioni se lo stesso provider è incluso in più liste selezionate, assicurando che venga utilizzato il livello di registrazione più alto e che i flag delle parole chiave siano combinati opportunamente per massimizzare la copertura degli eventi in base alle liste selezionate.

Caratteristiche

  • Crea sessioni AutoLogger ETW persistenti tramite configurazione del registro di sistema (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph).
  • Si avvia automaticamente all'avvio del sistema.
  • Consente la selezione di liste predefinite di provider (-Defender, -Crowdstrike, -MDE, -Sentinelone, -Cortex).
  • Opzione per abilitare tutti i provider di tutte le liste (-All).
  • Opzione per abilitare i provider rumorosi (alcuni vengono eliminati automaticamente per evitare di riempire i dischi in pochi secondi): (-noisy)
  • Unisce le configurazioni dei provider duplicati:
    • Mantiene il Level più alto specificato tra tutti i duplicati per un provider.
    • Combina i flag MatchAnyKeyword usando OR bit a bit da tutti i duplicati (indipendentemente dal livello) per garantire la più ampia copertura delle parole chiave.
    • Usa MatchAllKeyword dalla voce di configurazione che ha fornito il livello più alto.
  • Nome della sessione e percorso del file di log configurabili (definiti come costanti nel codice).

Compilazione

È necessario un compilatore C, come quello incluso in Visual Studio.

  1. Aprire il file Metamorph.sln
  2. Selezionare "Release" e l'architettura di destinazione (x64/x86)
  3. Compilare e godersi il risultato

Non ci sono import non standard, quindi la compilazione con Cl dovrebbe essere possibile senza troppi problemi.

Guida all'uso

Importante: Questo strumento modifica il registro di Windows (HKEY_LOCAL_MACHINE) e pertanto richiede privilegi di amministratore per essere eseguito correttamente.

  • Aprire una finestra del Prompt dei comandi o di PowerShell come amministratore ed eseguire l'eseguibile da 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

Dopo l'inizializzazione, è necessario riavviare il sistema per avviare il provider appena registrato.

Pulizia manuale

Per rimuovere questo provider, procedere come segue:

  1. Aprire regedit.exe
  2. Navigare fino a (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph)
  3. Fare clic con il tasto destro per eliminare la suddetta chiave di registro.
  4. Riavviare il sistema

Sfruttamento dei risultati

ETW fornisce una visibilità profonda sugli eventi di runtime. Questo può essere sfruttato per rilevare attività potenzialmente sospette che potrebbero indicare attività malware o tecniche di offuscamento. Una volta installati, i provider dovrebbero fornire lo stesso livello di telemetria del "Registro eventi" dell'EDR "clonato". Dovrebbe quindi facilitare la ricerca di IOC che potrebbero essere lasciati da strumenti interni.

Dopo che il sistema è stato riavviato e le applicazioni di interesse sono state eseguite, il file .etl (ad es., Metamorph.etl) conterrà gli eventi catturati.

Il file generato (C:\Windows\System32\LogFiles\WMI\Metamorph.etl.00x) può essere importato da diversi strumenti pubblici come:

  • Il Visualizzatore eventi stesso
  • Perfview
  • inserisci qui il tuo strumento ETW preferito

Nota bene: Metamorph utilizza file di log circolari per evitare di perderli accidentalmente dopo un riavvio, ma alcuni strumenti richiedono che il file termini con .etl, quindi sarà necessario rimuovere il suffisso prima dell'uso.

Inoltre, è possibile convertire il file .etl in un file CSV per una grep veloce e sporca:

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

Esempio pratico con PowerShell e .NET fileless caricato con Assembly.Load

Esecuzione di un binario fileless tramite Assembly.Load()

Supponiamo di avere il seguente programma PowerShell che carica un file usando 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" }

Questo script esegue sostanzialmente un attacco simile a quello che potrebbe essere eseguito dallo strumento impersonate.exe.

  1. Aprire un prompt di PowerShell con privilegi di amministratore
  2. Eseguire poc.ps1
  3. Attendere qualche minuto per essere sicuri che tutti i buffer ETW siano stati scaricati nel file .etl

Analisi

  1. Aprire Perfview con privilegi di amministratore
  2. Caricare il proprio file .etl tramite la dashboard e fare doppio clic sugli eventi per accedere ai dati di tutti i provider

  1. Scorrere l'elenco dei provider per analizzare i dati in base a ciò che si è fatto

  1. Scegliere il provider pertinente da ispezionare (qui Microsoft-Windows-Powershell/Exécuterunecommandedistante)

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

Quindi, alla fine, gli EDR e gli analisti hanno l'opportunità di eseguire analisi delle firme basate su AssemblyName per binari noti (ad esempio: "Rubeus") e, in alternativa, hanno la possibilità di recuperare script PowerShell (inclusi i commenti) per analisi post-mortem.

Contributi

Se trovi utile questo strumento, puoi aggiungere le tue soluzioni (o quelle di altri) seguendo le istruzioni in CONTRIBUTING.md. Cercherò di aggiornarlo regolarmente, ma poiché dipenderà completamente dalle soluzioni incontrate durante i pentest, sentiti libero di aprire una PR se vuoi che le tue modifiche siano disponibili per tutti.

Scarica lo strumento