DCOM
MMC20.APPLICATION
SHELLWINDOWS
RPC 135
DetectionBlue TeamSOCOctober 12, 2026•9 min read

Detecting DCOM Lateral Movement: MMC20, ShellWindows and ShellBrowserWindow

DCOM lateral movement borrows a legitimate Windows process to run the command. That borrowed process has a parent, a command line and a context that rarely match normal use.

Scroll

Distributed COM lets a remote client instantiate a COM object on another machine and call its methods. A handful of objects expose methods that run commands, notably MMC20.Application (ExecuteShellCommand), ShellWindows and ShellBrowserWindow. No new service and no new listener is required, so detection relies on process lineage and RPC traffic.

Signals at a Glance

SignalWhereATT&CK
mmc.exe started with -Embedding that spawns cmd.exe or powershell.exeSysmon 1, Event 4688T1021.003
explorer.exe spawning an interpreter on a server with no interactive session for that userSysmon 1 + Event 4624T1021.003
Inbound RPC endpoint mapper (135) then a high ephemeral port from one sourceZeek conn.log, Sysmon 3T1021.003
Remote activation call (RemoteCreateInstance) in DCE/RPCZeek dce_rpc.logT1021.003
Type 3 logon with an admin account just before the child processEvent 4624T1078

Process Lineage Signals

MMC20.Application launches mmc.exe with the -Embedding argument, and its ExecuteShellCommand method starts the command as its child. That chain, mmc.exe -Embedding then cmd.exe, essentially never occurs from a user. ShellWindows and ShellBrowserWindow instead reuse an existing explorer.exe, so the tell is an Explorer child with no matching console logon:

title: MMC20 DCOM Spawning Interpreter
logsource:
  product: windows
  category: process_creation
detection:
  parent:
    ParentImage|endswith: '\mmc.exe'
    ParentCommandLine|contains: '-Embedding'
  child:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\rundll32.exe'
      - '\wscript.exe'
  condition: parent and child
level: high
# tune/validate: expect near-zero hits; any MMC snap-in that launches helpers needs an exception.
// Microsoft Defender (KQL) - explorer.exe child on a server with no recent interactive logon
let interactive = DeviceLogonEvents
| where LogonType in ("Interactive", "RemoteInteractive", "CachedInteractive")
| project DeviceName, AccountName, LogonTime=Timestamp;
DeviceProcessEvents
| where InitiatingProcessFileName =~ "explorer.exe"
| where FileName in~ ("cmd.exe", "powershell.exe", "pwsh.exe")
| where DeviceName in~ (server_hosts)   // watchlist of servers; placeholder name
| join kind=leftanti (interactive) on DeviceName, AccountName
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine
// tune/validate: confirm AccountName alignment between the two tables in your tenant.

RPC Traffic and Hardening

DCOM activation always begins with a connection to the endpoint mapper on port 135, followed by a connection to a high port assigned for the object. Zeek’s dce_rpc.log records the interface and operation, so remote activation (RemoteCreateInstance on the system activator interface) from a workstation to a server is visible without any host agent.

Vetted sources

Use the SigmaHQ MMC and DCOM rules, Elastic and Splunk ESCU DCOM lateral movement content and MITRE CAR analytics for DCOM. Atomic Red Team includes MMC20 and ShellWindows tests, and Zeek DCE/RPC logging gives a network view. Baseline your own environment: Windows administrative consoles and Office automation legitimately launch from COM.

Build Detections That Fire

Mjolnir Security helps blue teams turn threat intelligence into high-fidelity detections across endpoint, network, identity and cloud telemetry.

Detection EngineeringManaged Detection & ResponseThreat HuntingIncident ResponsePurple Teaming
  • Detection Engineering We build and tune detections mapped to ATT&CK from your own telemetry.
  • Threat Hunting as a Service Hypothesis-driven hunts for the behaviours on this page.
  • 24/7 Incident Response Containment when a detection fires. Call +1 833 403 5875.
Written by: Mjolnir Threat Research (MTAC)  |  Published: October 12, 2026  |  Last reviewed: October 12, 2026