Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Metamorph — Утилита командной строки для Windows, написанная на C, которая создаёт и настраивает постоянные сеансы AutoLogger Event Tracing for Windows (ETW). | Kitploit
Инструменты/GitHubGitHub/synacktiv/metamorph
Оборонительные ИнструментыМеханизмы персистентностиСбор информацииПост-эксплуатацияАнализ вредоносных программРеагирование на Инциденты
GitHubsynacktiv/metamorph

Metamorph

Утилита командной строки для Windows, написанная на C, которая создаёт и настраивает постоянные сеансы AutoLogger Event Tracing for Windows (ETW).

Репозиторий
82 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Metamorph

Введение

Этот инструмент — утилита командной строки для Windows, написанная на C, которая создаёт и настраивает постоянные сеансы Event Tracing for Windows (ETW) AutoLogger. Автологиеры автоматически запускают трассировку определённых поставщиков ETW при загрузке системы, что делает их полезными для захвата событий, происходящих на ранних этапах загрузки, или для сценариев непрерывного мониторинга.

Инструмент позволяет выбирать предопределённые списки поставщиков ETW, связанных с известными EDR, для включения в сеанс AutoLogger через аргументы командной строки. Он объединяет конфигурации, если один и тот же поставщик включён в несколько выбранных списков, гарантируя использование максимального уровня журналирования и комбинируя флаги ключевых слов для максимального охвата событий на основе выбранных списков.

Возможности

  • Создаёт постоянные сеансы ETW AutoLogger через конфигурацию реестра (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph).
  • Запускается автоматически при загрузке системы.
  • Позволяет выбирать предопределённые списки поставщиков (-Defender, -Crowdstrike, -MDE, -Sentinelone, -Cortex).
  • Опция включения всех поставщиков из всех списков (-All).
  • Опция включения «шумных» поставщиков (некоторые автоматически удаляются, чтобы не заполнять диски за секунды): (-noisy)
  • Объединяет дублирующиеся конфигурации поставщиков:
    • Сохраняет наивысший Level, указанный среди всех дубликатов для поставщика.
    • Объединяет флаги MatchAnyKeyword с помощью побитового ИЛИ из всех дубликатов (независимо от уровня), чтобы обеспечить максимально широкое покрытие ключевых слов.
    • Использует MatchAllKeyword из той записи конфигурации, которая обеспечила наивысший уровень.
  • Настраиваемые имя сеанса и путь к файлу журнала (задаются как константы в коде).

Компиляция

Вам понадобится компилятор C, например, входящий в состав Visual Studio.

  1. Откройте файл Metamorph.sln
  2. Выберите «Release» и целевую архитектуру (x64/x86)
  3. Скомпилируйте и пользуйтесь

Нестандартных импортов нет, так что компиляция через Cl должна пройти без особых проблем.

Руководство по использованию

Важно: Этот инструмент изменяет реестр Windows (HKEY_LOCAL_MACHINE) и поэтому требует прав Администратора для корректной работы.

  • Откройте окно командной строки или PowerShell от имени администратора и запустите исполняемый файл оттуда.
root@kitploit:~
.\Metamorph.exe <options>

# Включить только поставщиков из Defender
.\Metamorph.exe -Defender

# Включить поставщиков из Defender и MDE, объединяя дубликаты
.\Metamorph.exe -Defender -MDE

# Включить всех поставщиков из всех движков, объединяя дубликаты
.\Metamorph.exe -All

# Включить одного поставщика, а также «шумных», потому что почему бы и нет, в конце концов, заполнить дисковое пространство?
.\Metamorph.exe -All -noisy

После инициализации необходима перезагрузка, чтобы начал работать вновь зарегистрированный поставщик.

Ручная очистка

Чтобы очистить этого поставщика, необходимо:

  1. Открыть regedit.exe
  2. Перейти к (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph)
  3. Щёлкнуть правой кнопкой мыши и удалить вышеупомянутый раздел реестра.
  4. Перезагрузиться

Использование результатов

ETW обеспечивает глубокую видимость событий времени выполнения. Это можно использовать для обнаружения потенциально подозрительной активности, которая может указывать на активность вредоносного ПО или техники обфускации. После установки поставщики должны обеспечивать тот же уровень телеметрии «журналов событий», что и «клонированный» EDR. Это должно упростить исследование IOC, которые могут оставаться от внутренних инструментов.

После перезагрузки системы и запуска интересующих приложений файл .etl (например, Metamorph.etl) будет содержать захваченные события.

Создаваемый файл (C:\Windows\System32\LogFiles\WMI\Metamorph.etl.00x) может быть обработан несколькими публичными инструментами, такими как:

  • Сам Event Viewer
  • Perfview
  • вставьте сюда ваш предпочитаемый инструмент для работы с ETW

Nota bene: Metamorph использует циклические файлы журнала, чтобы случайно не потерять их после перезагрузки, но некоторым инструментам нужно, чтобы файл заканчивался на .etl, поэтому перед использованием необходимо удалить суффикс.

Кроме того, можно просто преобразовать файл .etl в CSV для быстрого поиска:

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

Практический пример с PowerShell и бесфайловой загрузкой .NET через Assembly.Load

Выполнение бесфайлового бинарника через Assembly.Load()

Допустим, у нас есть следующая программа PowerShell, которая загружает файл с помощью 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" }

Этот скрипт, по сути, выполняет атаку, подобную той, которую можно осуществить с помощью инструмента impersonate.exe.

  1. Откройте окно PowerShell с правами администратора
  2. Запустите poc.ps1
  3. Подождите несколько минут, чтобы все буферы ETW были сброшены в файл .etl

Анализ

  1. Откройте Perfview с правами администратора
  2. Загрузите ваш файл .etl через панель управления и дважды щёлкните по событиям, чтобы получить доступ к данным всех поставщиков

  1. Пройдите по списку поставщиков, чтобы исследовать данные в зависимости от того, что вы делали

  1. Выберите подходящего поставщика для просмотра (здесь Microsoft-Windows-Powershell/Exécuterunecommandedistante)

  1. Просмотр Microsoft-Windows-DotNETRuntime/Loader/AssemblyLoad

Итак, в конечном итоге EDR и аналитики имеют возможность проводить сигнатурный анализ на основе AssemblyName для известных бинарников (например: "Rubeus"), а кроме того, у них есть возможность извлекать скрипты PowerShell (включая комментарии) для посмертного анализа.

Участие

Если вы считаете этот инструмент полезным, вы можете добавить свои (или другие) решения, следуя инструкциям в CONTRIBUTING.md. Я постараюсь обновлять его на регулярной основе, но поскольку это будет полностью зависеть от решений, встречающихся во время пентестов, не стесняйтесь отправлять PR, если хотите, чтобы ваши изменения были доступны всем.

Скачать инструмент