
FAX ルーティング拡張機能は、FAX サービスにルーティング機能を追加する DLL です。複数の FAX ルーティング拡張機能を 1 台のサーバーに配置できます。FAX サーバーが FAX 送信を受信すると、受信したドキュメントを優先度の順に各 FAX ルーティング拡張機能にルーティングします。ユーザーは、FAX サービス管理アプリケーション (Microsoft Management Console (MMC) スナップイン コンポーネント) を使用してルーティングの優先度を設定します。FAX サービスは、アプリケーションが FAX サービスへの接続を要求したとき (MMC で fxsadmin を読み込んだときなど) に手動で実行されます。デスクトップではサービスは存在しますが、拡張機能の設定には構成と役割が必要なため、設定を試みるとタイムアウトします。詳細は MSDN を参照してください。デフォルトでは、サービスを操作するには管理者権限が必要です。ユーザーが FAX サービスに対する FAX 構成ロールを持ち、昇格している場合、FAX サービスを拡張できます。このエクスプロイトには FAX サーバーの役割が必要ですが、これはデフォルトではワークステーションでは利用できません。これは、FAX サービスと印刷サービスを有効にしたサーバーにインストールされます。
FAX グループのユーザーで FAX 構成ロールを持つユーザーは、サードパーティの FAX プログラムで構成されている拡張機能を追加/削除することもできます。FAX 構成ロールは、デフォルトではローカル Administrator または Domain Administrator グループのユーザーに提供されます。Active Directory での特権昇格パスの一部として使用する場合、追加のユーザーは FAX サービスのユーザー構成で明示的に定義されている必要があります。
詳細はこちら: https://docs.microsoft.com/en-us/previous-versions/windows/desktop/fax/-mfax-fax-routing-extension
また、FAX サービス内で永続化することもできます。サービスの起動時に DLL が毎回呼び出されますが、再起動時には自動的に呼び出されないため、FAX 機能を積極的に使用しているサーバーでのみ永続化が可能です。また、攻撃者に Administrator 権限から SYSTEM への別の経路を提供します。Network Service から SYSTEM に昇格できるためです。
FAX サービスを拡張して、c:\temp\run.bat 内の任意のコマンドを 1 回実行し、FXSSVC をクリーンアップします。適切なコールバックを備えた Fax 拡張 DLL を使用して FAX サービスを確実に開始/停止します。拡張機能は bat ファイルからコマンドを起動します。「永続化」を目的として DLL の削除を防ぐこともできます。これにより、FAX を開く、送信、受信するなど、FAX サービスが使用されるたびにバッチコマンドファイルが実行されます。
このプロジェクトを Visual Studio 22 でコンパイルすると、x86 と x64 の両方の静的バイナリが生成されます。これらは同じディレクトリに置く必要があります。
C:\Windows\system32>whoami
nt authority\network service
C:\Windows\system32>whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ========================================= ========
SeAssignPrimaryTokenPrivilege Replace a process level token Disabled
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
SeAuditPrivilege Generate security audits Enabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeImpersonatePrivilege Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege Create global objects Enabled
これらのファイルは、3条項BSDライセンスの下で利用可能です。