
このプロジェクトは、開発者以外の方でも、Event Tracing for Windows (ETW) と Windows PreProcessor Tracing (WPP) の研究に取り組みやすくするために作成しました。

Sealighterは、豊富な機能を備えたKrabs ETWライブラリを活用し、ETWおよびWPPプロバイダーとイベントの詳細なフィルタリングとトリアージを可能にします。
ユーザーモードプロバイダー、カーネルトレース、WPPトレースを含む複数のプロバイダーにサブスクライブしてフィルタリングでき、イベントをJSONとして標準出力、ファイル、またはWindowsイベントログ(FileIOのような高ボリュームトレースに便利)に出力できます。プロバイダーが生成する可能性のあるイベントやその形式に関する知識は不要で、Sealighterは要求されたイベントを自動的にキャプチャしてパースします。
イベントはPythonやPowerShellでJSONからパースしたり、SplunkやELKに転送してさらに検索することができます。
フィルタリングは、イベントのIDやオペコード、プロパティ値の一致、イベント全体にわたる任意の文字列検索(WPPトレースやイベント構造が不明だが内容に心当たりがある場合に便利)など、イベントのさまざまな側面に対して行えます。複数のフィルターをチェーンしたり、フィルターを否定することもできます。また、IDごとの最大イベント数をフィルタリングできるので、新しいプロバイダーを調査する際に類似イベントに埋もれることなく活用できます。
ETWはレッドチームとブルーチームの両方にとって非常に有益なシステムです。レッドチームはWindowsコンポーネントの内部動作に関する洞察を得ることができ、ブルーチームは不審なアクティビティに関する貴重な知見を得ることができます。
一般的な研究ループは以下のようになります:
logman query providersを使用して興味深いETWプロバイダーを特定するか、バイナリ内でWPPトレースを探すETWイベントでこれを行うのは、分かりにくいETW APIと対話してイベントをパースするコードを書かなければ難しい場合があります。強力なプログラマーでない場合(またはAPIを扱いたくない場合)、他の選択肢は、古い組み込みのWindowsツールを組み合わせてバイナリのetlファイルとしてディスクに書き出し、その後処理することだけです。WPPトレースは問題をさらに複雑にし、プロバイダーとそのイベントに関する簡単に見つけられるデータをほとんど提供しません。
JDU2600's Event ListやETWExplorerなどのプロジェクトは静的な洞察を提供しますが、プロバイダーにはEvent(1001)のような難読化されたイベント名が含まれていることが多く、最も興味深いデータはトレースを動的に実行して出力を観察することでのみ可視化されます。
ある意味では、これはFuzzySecのSilkETWと似た領域をカバーしています。しかし、Silkが防御側にとってより本番環境対応であるのに対し、これは私のような研究者向けに設計されており、そのためSilkでは得られなかった多くの機能(主にツールを駆動するために使用しているライブラリの違いによるもの)を備えています。詳細についてはこちらをご覧ください。
おそらく、ETWの基本を理解しており、コードを書いたり手動でイベントを取得・パースする方法を考えたりせずに、ETWから得られるデータを発見することに真剣に取り組みたい人向けです。
以下のページをお読みください:
インストール - シンプルな設定を含むSealighterの起動方法、および必要な場合のWindowsイベントログの設定方法。
設定 - ログに記録するプロバイダーの指定方法や出力先を含む、Sealighterの設定方法。
フィルタリング - Sealighterが提供するすべてのフィルタリングタイプの詳細。
バッファリング - バッファリングを使用して多くの類似イベントを1つにまとめる方法。
データのパース - Sealighterからデータを取得してパースする方法。
シナリオ - 私が研究でSealighterをどのように使用したかのウォークスルー例。
制限事項 - Sealighterがうまく機能しない、またはまったく機能しない事柄。
名前はSeafood Highlighter(オーストラリアでカニカマのことをこう呼びます)の短縮形です。Krabs ETWをベースにしているので、この名前が面白いと思いました。
Issueを報告していただいて構いませんが、比較ドキュメントに記載している通り、私は一人で開発しており、これは研究用のツールであって本番環境対応ではありません。