Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Metamorph — Um utilitário de linha de comando para Windows escrito em C que cria e configura sessões AutoLogger persistentes do Event Tracing for Windows (ETW). | Kitploit
Ferramentas/GitHubGitHub/synacktiv/metamorph
Ferramentas DefensivasMecanismos de PersistênciaColeta de InformaçõesPós-ExploraçãoAnálise de MalwareResposta a Incidentes
GitHubsynacktiv/metamorph

Metamorph

Um utilitário de linha de comando para Windows escrito em C que cria e configura sessões AutoLogger persistentes do Event Tracing for Windows (ETW).

Ver Repositório
8há 2 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Metamorph

Introdução

Esta ferramenta é um utilitário de linha de comando para Windows escrito em C que cria e configura sessões persistentes de AutoLogger do Event Tracing for Windows (ETW). Os AutoLoggers iniciam automaticamente o rastreamento de provedores ETW específicos na inicialização do sistema, tornando-os úteis para capturar eventos que ocorrem no início do processo de inicialização ou para cenários de monitoramento contínuo.

Esta ferramenta permite selecionar listas predefinidas de provedores ETW relacionados a EDRs conhecidos para incluir na sessão do AutoLogger por meio de argumentos de linha de comando. Ela mescla configurações se o mesmo provedor estiver incluído em várias listas selecionadas, garantindo que o maior nível de registro seja usado e que os sinalizadores de palavra-chave sejam combinados adequadamente para maximizar a cobertura de eventos com base nas listas selecionadas.

Recursos

  • Cria sessões persistentes de AutoLogger ETW via configuração do registro (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph).
  • Inicia automaticamente na inicialização do sistema.
  • Permite seleção de listas predefinidas de provedores (-Defender, -Crowdstrike, -MDE, -Sentinelone, -Cortex).
  • Opção para habilitar todos os provedores de todas as listas (-All).
  • Opção para habilitar provedores ruidosos (alguns são excluídos automaticamente para evitar encher os discos em segundos): (-noisy)
  • Mescla configurações de provedores duplicados:
    • Mantém o maior Level especificado entre todas as duplicatas para um provedor.
    • Combina os sinalizadores MatchAnyKeyword usando OR bit a bit de todas as duplicatas (independentemente do nível) para garantir a cobertura mais ampla de palavras-chave.
    • Usa o MatchAllKeyword da entrada de configuração que forneceu o nível mais alto.
  • Nome da sessão e caminho do arquivo de log configuráveis (definidos como constantes no código).

Compilação

Você precisa de um compilador C, como o incluído no Visual Studio.

  1. Abra o arquivo Metamorph.sln
  2. Selecione "Release" e a arquitetura de destino (x64/x86)
  3. Compile e aproveite

Não há imports não padrão, então a compilação com Cl deve ser possível sem muita dificuldade.

Guia de Uso

Importante: Esta ferramenta modifica o Registro do Windows (HKEY_LOCAL_MACHINE) e, portanto, requer privilégios de Administrador para ser executada corretamente.

  • Abra um Prompt de Comando ou PowerShell como Administrador e execute o executável a partir dele.
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

Após a inicialização, uma reinicialização deve ocorrer para iniciar o provedor recém-registrado.

Limpeza manual

Para limpar este provedor, é necessário:

  1. Abra regedit.exe
  2. Navegue até (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph)
  3. Clique com o botão direito para excluir a chave de registro mencionada acima.
  4. Reinicie o sistema.

Aproveitando os resultados

O ETW fornece visibilidade profunda dos eventos em tempo de execução. Isso pode ser usado para detectar atividades potencialmente suspeitas que possam indicar atividade de malware ou técnicas de ofuscação. Uma vez instalado, os provedores devem fornecer o mesmo nível de telemetria de "Log de Eventos" que o EDR "clonado". Isso deve facilitar a pesquisa de IOCs que possam ser deixados por ferramentas internas.

Após o sistema ser reinicializado e os aplicativos de interesse terem sido executados, o arquivo .etl (por exemplo, Metamorph.etl) conterá os eventos capturados.

O arquivo gerado (C:\Windows\System32\LogFiles\WMI\Metamorph.etl.00x) pode ser consumido por várias ferramentas públicas, como:

  • O próprio Visualizador de Eventos
  • Perfview
  • insira sua ferramenta ETW preferida aqui

Nota: Metamorph usa arquivos de log circulares para evitar perdê-los acidentalmente após uma reinicialização, mas algumas ferramentas exigem que os arquivos terminem com .etl, então você precisará remover o sufixo antes do uso.

Além disso, é possível basicamente traduzir o arquivo .etl para um arquivo CSV para grep rápido:

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

Exemplo prático com PowerShell e .NET fileless carregado com Assembly.Load

Executando um binário fileless através de Assembly.Load()

Digamos que temos o seguinte programa PowerShell que carrega um arquivo 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" }

Este script basicamente executa um ataque como o que poderia ser realizado pela ferramenta impersonate.exe.

  1. Abra um prompt do PowerShell com privilégios de administrador
  2. Execute poc.ps1
  3. Aguarde alguns minutos para garantir que todos os buffers ETW tenham sido liberados no arquivo .etl

Análise

  1. Abra o Perfview com privilégios de administrador
  2. Carregue seu arquivo .etl através do painel e dê dois cliques nos eventos para acessar os dados de todos os provedores

  1. Navegue pela lista de provedores para investigar os dados com base no que você fez

  1. Escolha o provedor relevante para inspecionar (aqui Microsoft-Windows-Powershell/Exécuterunecommandedistante)

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

Então, no final, EDRs e analistas têm a oportunidade de realizar análise de assinatura com base no AssemblyName para binários conhecidos (como: "Rubeus") e, caso contrário, eles têm a possibilidade de recuperar scripts PowerShell (incluindo comentários) para análise pós-mortem.

Contribuindo

Se você achar esta ferramenta útil, você pode adicionar suas próprias soluções (ou de outros) seguindo as instruções em CONTRIBUTING.md. Vou tentar atualizá-la regularmente, mas como ela será completamente dependente das soluções encontradas durante pentests, sinta-se à vontade para abrir um PR se quiser que suas alterações estejam disponíveis para todos.

Baixar ferramenta