RPC から WebClient へ
このコードの情報はこちらのブログ記事にあります。ここにあるものを使用する前に読むことをお勧めします。
RPC 呼び出しを介して WebClient をトリガーするためのコードです。結局うまくいかなかったため、コードはあまり整理されておらず、概念実証 (proof of concept) の状態のままです。
以下の RPC 呼び出しは、サービスを開始するコードパスに到達できます:
- EfsRpcDuplicateEncryptionInfoFile_Downlevel -> EfsDuplicateEncryptionInfoRPCClient -> EfsDuplicateEncryptionInfoClient -> EfspGetFullName -> EfspAttemptToGetWebDavPath -> WNetGetResourceInformaton
- EfsRpcEncryptFileSrv_Downlevel -> EfsEncryptFileClient -> LocateAndConnectToService -> EfspGetFullName -> EfspAttemptToGetWebDavPath -> WNetGetResourceInformaton
- EfsRpcDecryptFileSrv_Downlevel -> EfsDecryptFileClient -> LocateAndConnectToService -> EfspGetFullName -> EfspAttemptToGetWebDavPath -> WNetGetResourceInformaton
- EfsRpcAddUsersToFileEx_Downlevel -> EfsAddUsersClientEx -> LocateAndConnectToService -> EfspGetFullName -> EfspAttemptToGetWebDavPath -> WNetGetResourceInformaton
- EfsRpcRemoveUsersFromFile_Downlevel -> EfsRemoveUsersClient -> LocateAndConnectToService -> EfspGetFullName -> EfspAttemptToGetWebDavPath -> WNetGetResourceInformaton
- EfsRpcQueryRecoveryAgents_Downlevel -> EfsQueryRecoveryAgentsClient -> LocateAndConnectToService -> EfspGetFullName -> EfspAttemptToGetWebDavPath -> WNetGetResourceInformaton
- EfsRpcQueryUsersOnFile_Downlevel -> EfsQueryUsersClient -> LocateAndConnectToService -> EfspGetFullName -> EfspAttemptToGetWebDavPath -> WNetGetResourceInformaton
- EfsRpcFileKeyInfo_Downlevel -> EfsFileKeyInfoClient -> LocateAndConnectToService -> EfspGetFullName -> EfspAttemptToGetWebDavPath -> WNetGetResourceInformaton
リポジトリには EfsRpcEncryptFileSrv_Downlevel のみが存在します。他のものは将来追加されるかもしれません。
WnfToWebClient は、WNF メッセージを使用して WebClient サービスを開始する .NET コードです。NT AUTHORITY/SYSTEM の特権が必要です。これもやはり概念実証にすぎません。
RPC 呼び出しと WNF メッセージは、(現時点では) ETW イベントコンシューマー (UBPM) と WNF 状態名のセキュリティ記述子のため、実際には武器化できません。