Hi @Rei Amuro ,
Thank you for the detailed description and packet-level correlation.
Based on the Microsoft public documentation I reviewed, I have not identified a documented client-side API for obtaining or configuring the RPCSS-managed binding used for runtime-generated ComplexPing calls. However, I would not interpret this as confirmation that the behavior is a documented product limitation.
I would like to explain what I found in Microsoft’s documentation.
- The DCOM specification identifies
IObjectExporteras the interface used for OXID resolution, pinging, and server aliveness checks. The Pinging section specifies the RPC binding information and security settings used forSimplePingandComplexPing, including the credentials of the security principal issuing the request. References: IObjectExporter Methods and Pinging. I read these as protocol requirements, rather than documentation of an application API for accessing RPCSS’s internal binding. - Microsoft describes
CoSetProxyBlanketas follows: “Sets the authentication information that will be used to make calls on the specified proxy.” Reference: CoSetProxyBlanket.CoInitializeSecurityestablishes the default security values for the process. Reference: CoInitializeSecurity. Based on these documented scopes, I would not assume that configuring the WMI proxy or supplying credentials throughpAuthListcontrols the binding used for runtime-generatedComplexPing. I would therefore not present either change as a confirmed solution to your scenario. - KB 2816192 states: “The pass-through authentication is always attempted first, even if specific credentials are specified in the tool being used.” Reference: Failed logon event generated when running remote WMI command. However, I do not see a discussion of
ComplexPingor the authenticated-failure -> unauthenticated-retry sequence in that article. I would treat it as relevant background, rather than confirmation of the cause of your specific sequence.
I would also suggest a client-side experiment if a separate helper process is acceptable.
One option worth evaluating would be to host the WMI/DCOM collection in a process created using CreateProcessWithLogonW with LOGON_NETCREDENTIALS_ONLY.
Microsoft documents that this flag retains the caller’s local token while creating a new logon session and using the supplied credentials as the process’s default network credentials. Reference: CreateProcessWithLogonW.
I would suggest testing whether ComplexPing issued on behalf of that helper uses those network credentials for its first authentication attempt. I would treat this as an unverified test candidate, not a documented or confirmed workaround, because the API documentation does not guarantee its effect on RPCSS-generated ping traffic.
If you choose to evaluate it, I would recommend an isolated A/B test to verify that:
- WMI collection still succeeds.
-
ComplexPingis actually captured. - The first authentication attempt uses the intended identity and no longer produces the corresponding authentication failure and Event 4625.
I recognize that a helper process would change the hosting arrangement and may fall outside your requirement to retain the existing service/Java/DLL execution path.
If that hosting arrangement must remain unchanged, I would suggest requesting clarification from Microsoft’s Windows COM/RPC support team on whether a supported mechanism exists to control this binding, or whether the observed behavior is an acknowledged limitation. I cannot establish either conclusion from the public documentation reviewed so far.
Hope these information help. If you found my response helpful or informative, I would greatly appreciate it if you could follow this guide for your confirmation.
Thank you.