Sysmon における任意のファイル削除/書き込みの Proof of Concept (CVE-2022-41120/CVE-2022-44704)
脆弱性は、RPC 経由で到達可能な ClipboardChange イベントを処理するコードに存在します。 ローカルユーザーは RPC サーバーにデータを送信でき、そのデータは C:\Sysmon ディレクトリ (デフォルトの ArchiveDirectory) に書き込まれた後、削除されます。 14.11 より前のバージョンでは、Sysmon はディレクトリが低権限ユーザーによって作成されたものか、またはジャンクションであるかを確認しなかったため、NT AUTHORITY\SYSTEM ユーザーのコンテキストで任意のファイル削除/書き込み (文字列しか書き込めないため少し制限あり) を行うために悪用される可能性がありました。 14.11/14.12 では、最初の修正後、Sysmon はディレクトリが存在するかどうかを確認し、ディレクトリが存在する場合はファイルの書き込み/削除を拒否するようになりました。 このパッチは、Sysmon に最初に C:\Sysmon ディレクトリを作成させ (CreateDirectory API を使用)、SetFileSecurity が呼び出される前にそのハンドルを開き、C:\Sysmon ディレクトリ上の DACL を変更することで回避されました。
すべてのテストは Windows 10 で実施しました。
私の PoC では、任意のファイル削除/書き込みを連鎖させ、最初にプリンタードライバーのセットアップ情報ファイルを削除し、その後修正した .INF ファイルを書き込みました (スプーラーサービスはデフォルトで有効であり、低権限ユーザーは Windows クライアントでプリンタードライバーを再インストールできるため)。 セットアップ情報ファイルは、サービスの作成、レジストリの変更、ファイルのコピーなど、あらゆる種類の操作を実行するために悪用される可能性があります。 私は、プリンターのデフォルト DLL の一部を c:\windows\system32 にコピーし、低権限ユーザーが変更できるようにその権限を設定することを選択しました。これは CopyFiles ディレクティブ (https://learn.microsoft.com/en-us/windows-hardware/drivers/install/inf-copyfiles-directive) を使用して行われます。ファイルがコピーされると、昇格した cmd.exe プロセスを起動する DLL で上書きされます。 Windows インストーラーの動作を悪用することで、任意のファイル削除だけを LPE に悪用することも可能です (@KLINIX5 によって発見され、ZDI によってこちらに文書化されています: https://www.zerodayinitiative.com/blog/2022/3/16/abusing-arbitrary-file-deletes-to-escalate-privilege-and-other-great-tricks)。
すべてのテストはバージョン 13.34〜14.12 で実施しました。 脆弱な正確な最小バージョンはわかりませんが、ClipboardChange イベントはバージョン 12.0 で導入されたため、バージョン 12.0〜14.12 が脆弱であると考えられます。 この脆弱性を悪用するには、ArchiveDirectory を使用するイベント (ClipboardChange と FileDelete だと思います) を有効にしないでください。これら 2 つを使用すると、ArchiveDirectory が作成され、安全な権限が設定されるためです。
脆弱なバージョンを使用していて更新できない場合は、ArchiveDirectory (デフォルトでは C:\Sysmon) を作成し、NT AUTHORITY\SYSTEM アカウントのみにアクセスを許可する権限を設定できます。