Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Metamorph — Windows向けにC言語で書かれたコマンドラインユーティリティで、永続的なEvent Tracing for Windows (ETW) AutoLoggerセッションの作成と構成を行います。 | Kitploit
ツール/GitHubGitHub/synacktiv/metamorph
防御ツール永続化メカニズム情報収集ポストエクスプロイトマルウェア分析インシデントレスポンス
GitHubsynacktiv/metamorph

Metamorph

Windows向けにC言語で書かれたコマンドラインユーティリティで、永続的なEvent Tracing for Windows (ETW) AutoLoggerセッションの作成と構成を行います。

リポジトリを見る
873ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Metamorph

はじめに

このツールは、Windows向けのC言語で書かれたコマンドラインユーティリティで、永続的なEvent Tracing for Windows (ETW) AutoLoggerセッションを作成・設定します。AutoLoggerはシステム起動時に特定のETWプロバイダーのトレースを自動的に開始するため、起動プロセスの初期に発生するイベントのキャプチャや、継続的な監視シナリオに役立ちます。

このツールは、コマンドライン引数によって、既知のEDRに関連するETWプロバイダーの定義済み リスト をAutoLoggerセッションに含めることを選択できます。複数の選択リストに同じプロバイダーが含まれている場合は設定をマージし、選択したリストに基づいてイベントカバレッジを最大化するため、最高のログレベルが使用され、キーワードフラグが適切に結合されます。

機能

  • レジストリ設定(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\Metamorph)により、永続的なETW AutoLoggerセッションを作成します。
  • システム起動時に自動的に開始されます。
  • 定義済みのプロバイダーリストを選択できます(-Defender、-Crowdstrike、-MDE、-Sentinelone、-Cortex)。
  • すべてのリストからすべてのプロバイダーを有効にするオプション(-All)。
  • ノイズの多いプロバイダーを有効にするオプション(ディスクが数秒で満杯になるのを防ぐため、一部は自動的に削除されます):(-noisy)
  • 重複するプロバイダー設定をマージします:
    • プロバイダー全体の重複で指定された最高の Level を保持します。
    • MatchAnyKeyword フラグを すべて の重複(レベルに関係なく)からビット単位ORで結合し、最も広いキーワードカバレッジを確保します。
    • 最高レベルを提供した設定エントリの MatchAllKeyword を使用します。
  • セッション名とログファイルのパスは設定可能です(コード内で定数として定義されています)。

コンパイル

Cコンパイラ(Visual Studioに付属のものなど)が必要です。

  1. Metamorph.slnファイルを開きます
  2. "Release" とターゲットアーキテクチャ(x64/x86)を選択します
  3. コンパイルしてお楽しみください

標準以外のインポートはないため、clコンパイルはそれほど手間なく可能です。

使用ガイド

重要: このツールはWindowsレジストリ(HKEY_LOCAL_MACHINE)を変更するため、正しく実行するには 管理者権限 が必要です。

  • コマンドプロンプトまたはPowerShellウィンドウを 管理者として 開き、そこから実行ファイルを実行してください。
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

初期化後、新しく登録されたプロバイダーを開始するには再起動が必要です。

手動でのクリーンアップ

このプロバイダーをクリーンアップするには、次の手順を実行します:

  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)は、以下のような複数の公開ツールで取り込むことができます:

  • イベントビューアー自体
  • Perfview
  • お好みのETWツールをここに挿入

注意: Metamorphは再起動後に誤って失われないように循環ログファイルを使用していますが、一部のツールではファイルが.etlで終わっている必要があるため、使用前にサフィックスを削除する必要があります。

また、.etlファイルをCSVファイルに変換して簡単なgrepを行うことも可能です:

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

PowerShellとAssembly.Loadによるファイルレス.NETを使用した実践例

Assembly.Load()を使用したファイルレスバイナリの実行

Assembly.Loadを使用してファイルをロードする次のPowerShellプログラムがあるとします:

root@kitploit:~
[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" }

このスクリプトは基本的に、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(例: <AssemblyName>Rubeus</AssemblyName>)に基づいてシグネチャ分析を行う機会があり、それ以外にも、PowerShellスクリプト(コメントを含む)を取得して事後分析を行う可能性があります。

コントリビューション

このツールが役立つと思われた場合は、CONTRIBUTING.md の指示に従って、独自の(または他の)ソリューションを追加できます。定期的に更新するよう努めますが、ペンテスト中に遭遇したソリューションに完全に依存するため、変更を誰もが利用できるようにしたい場合は、遠慮なくPRを送ってください。

ツールをダウンロード