Remote Services: Distributed Component Object Model

Adversaries may use Valid Accounts to interact with remote machines by taking advantage of Distributed Component Object Model (DCOM). The adversary may then perform actions as the logged-on user.

The Windows Component Object Model (COM) is a component of the native Windows application programming interface (API) that enables interaction between software objects, or executable code that implements one or more interfaces. Through COM, a client object can call methods of server objects, which are typically Dynamic Link Libraries (DLL) or executables (EXE). Distributed COM (DCOM) is transparent middleware that extends the functionality of COM beyond a local computer using remote procedure call (RPC) technology.[1][2]

Permissions to interact with local and remote server COM objects are specified by access control lists (ACL) in the Registry.[3] By default, only Administrators may remotely activate and launch COM objects through DCOM.[4]

Through DCOM, adversaries operating in the context of an appropriately privileged user can remotely obtain arbitrary and even direct shellcode execution through Office applications[5] as well as other Windows objects that contain insecure methods.[6][7] DCOM can also execute macros in existing documents[8] and may also invoke Dynamic Data Exchange (DDE) execution directly through a COM created instance of a Microsoft Office application[9], bypassing the need for a malicious document. DCOM can be used as a method of remotely interacting with Windows Management Instrumentation. [10]

ID: T1021.003
Sub-technique of:  T1021
Platforms: Windows
Version: 1.2
Created: 11 February 2020
Last Modified: 03 April 2023

Procedure Examples

ID Name Description
S0154 Cobalt Strike

Cobalt Strike can deliver Beacon payloads for lateral movement by leveraging remote COM execution.[11]

S0363 Empire

Empire can utilize Invoke-DCOM to leverage remote COM execution for lateral movement.[12]


SILENTTRINITY can use System namespace methods to execute lateral movement using DCOM.[13]


ID Mitigation Description
M1048 Application Isolation and Sandboxing

Ensure all COM alerts and Protected View are enabled.[14]

M1042 Disable or Remove Feature or Program

Consider disabling DCOM through Dcomcnfg.exe.[15]

M1030 Network Segmentation

Enable Windows firewall, which prevents DCOM instantiation by default.

M1026 Privileged Account Management

Modify Registry settings (directly or using Dcomcnfg.exe) in HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{{AppID_GUID}} associated with the process-wide security of individual COM applications.[3]

Modify Registry settings (directly or using Dcomcnfg.exe) in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole associated with system-wide security defaults for all COM applications that do not set their own process-wide security.[16] [4]


ID Data Source Data Component Detects
DS0011 Module Module Load

Monitor for COM objects loading DLLs and other modules not typically associated with the application.[5]

DS0029 Network Traffic Network Connection Creation

Monitor for newly constructed network connections that may use Valid Accounts to interact with remote machines using Distributed Component Object Model (DCOM). The adversary may then perform actions as the logged-on user. Monitor for any influxes or abnormal increases in DCOM related Distributed Computing Environment/Remote Procedure Call (DCE/RPC) traffic (typically over port 135).

Implementation 1 : RPC Mapper

Detection Pseudocode

rpc_mapper = filter flows where (dest_port == 135)rpc_endpoint = filter flows where (dest_port >= 49152 and src_port >= 49152)rpc = join rpc_mapper, rpc_endpoint where ( (rpc_mapper.time < rpc_endpoint.time < rpc_mapper.time + 2 seconds) AND (rpc_mapper.src_ip == rpc_endpoint.src_ip AND rpc_mapper.dest_ip == rpc_endpoint.dest_ip))

Detection Notes

  • Network Analysis frameworks such as Zeek can be used to capture, decode, and alert on RPC network flows.
  • Traffic to the RPC Endpoint Mapper will always have the destination port of 135. Assuming success, RPC traffic will continue to the endpoint. The endpoint and the client both bind to dynamically assigned ports (on Windows, this is typically greater than 49152). The traffic between the client and endpoint can be detected by looking at traffic to 135 followed by traffic where the source and destination ports are at least 49152.
DS0009 Process Process Creation

Monitor for newly executed processes associated with DCOM activity, especially those invoked by a user different than the one currently logged on. Enumeration of COM objects, via Query Registry or PowerShell, may also precede malicious use.[1][6]