Nullpath

Remote Execution on Windows (SMB / WMI-DCom / WinRM / PSRemoting / RDP)

concept windowslateral-movementremote-executiontradecraftdetection updated 06 Sept 2026 · 4 min

Remote Execution on Windows (SMB / WMI-DCOM / WinRM / PSRemoting / RDP)

Once you hold credentials (a hash, a ticket, a password) for a Windows host, how you run a command on it is a separate choice with separate noise profiles. This page is the “which exec transport” decision table the various path-*.md and tool pages assume. All of these authenticate via Kerberos or NTLM — the auth is the same; only the channel and its artifacts differ.

The transports

TransportPort(s)AuthTypical toolNoise / artifactsNotes
SMB — service (psexec)445 + 135? no: 445Kerb/NTLMpsexec.py7045 service install; C:\Windows\System32 binary; PSEXESVCcopies a binary, installs as a service; loud (7045) but reliable
SMB — WMI over DCOM (wmiexec)135 + 445Kerb/NTLMwmiexec.py4688 (process create), 5861 WMI event; no serviceuses WMI (Win32_Process.Create) over DCOM; no service left behind; slightly quieter
SMB — named pipe + service (smbexec)445Kerb/NTLMsmbexec.py7045 (uses a service for the pipe); pipe \\pipe\...streams output over a named pipe; still creates a service
SMB — Task Scheduler (atexec)445Kerb/NTLMatexec.py4698 scheduled task; AT/SCHTASKSuses Task Scheduler; no service; good where services are watched
WMI / DCOM native135 + dynamicKerb/NTLMwmic.exe /node:..., PowerShell Invoke-CimMethod5861 (WMI activity), 4688the same DCOM that wmiexec.py drives; wmic is built-in (loud, deprecated)
WinRM5985/5986Kerb/NTLM/CredSSPevil-winrm, Enter-PSSession4104 (WinRM/Operational), shellneeds the WinRM service + a listener; PS remoting; often open on servers (SCCM) — see sccm-abuse
PSRemoting5985/5986Kerb/NTLMEnter-PSSession / New-PSSessionsame as WinRMPS over WinRM; the “legit” way admins run remotely
RDP3389Kerb/NTLM (NLA)xfreerdp, mstsc4624 Type 10 (interactive), 4776 (NTLM)a full interactive session; NLA forces pre-auth (good for relay/AS-REP)
WinRM-over-HTTPS / CredSSP5986CredSSP (encrypts the whole session)Enter-PSSession -Authentication CredSSP4768 + CredSSP; passes a password (crackable in memory)CredSSP = password in the clear over TLS; target for pass-the-hash-and-ticket-style capture

Choosing a transport (decision heuristics)

  • Want reliability, don’t care about noisepsexec (service). The default “just get a shell” choice.
  • Want to avoid a service / 7045wmiexec (WMI) or atexec (task). wmiexec is the common “quiet service-less” pick.
  • Services are heavily watched / AV on service installwmiexec or atexec.
  • You’re on a server with WinRM open (SCCM, dev boxes)WinRM / evil-winrm / PSRemoting — no SMB needed, often a more “legit” path. See sccm-abuse.
  • You have an interactive need (GUI, RDP apps)RDP (NLA on = a pre-auth / AS-REP surface too).
  • You only have a TGS for a specific SPN (e.g. a Silver Ticket for cifs/<host>) → you’re SMB-only until you forge/obtain the matching SPN’s TGS. See tgt-tgs, golden-silver-tickets.

Auth is orthogonal

All of these take the same credential you already have — a password, an NTLM hash (-hashes), a Kerberos ticket (-k + a ccache), or a certificate. The transport doesn’t change what you authenticate with, only where the auth traffic and process artifacts land. So a PtH works identically over psexec, wmiexec, WinRM, and RDP — the detection difference is the channel, not the auth.

Detection (by transport)

  • SMB service (psexec/smbexec)7045 (a new service, often PSEXESVC or a random name) + 4624 Type 3 + a dropped binary in C:\Windows\System32.
  • WMI/DCOM (wmiexec/wmic)5861 (WMI activity / Win32_Process.Create)
    • 4688 (the spawned process) + 4624 Type 3. No 7045.
  • Task Scheduler (atexec)4698 (a scheduled task created) + 4624 Type 3.
  • WinRM/PSRemoting4104 in Microsoft-Windows-WinRM/Operational (client connection) + 4624 Type 3 + a powershell.exe child with a -EncodedCommand.
  • RDP4624 Type 10 (interactive) + 4776 (NTLM subauth if NLA/NTLM) + a winlogon/csrss session.

Cross-cutting: a 4624 Type 3 (network logon) from a host that isn’t a usual admin source, followed by a 7045/5861/4698/4104 and then a 4688 for a shell/beacon, is the generic “remote exec” tell regardless of transport. Correlate the logon (4624) with the process/service creation.

  • smb — the SMB channel psexec/wmiexec/smbexec/atexec all ride on
  • kerberos-authentication, ntlm — the auth these transports use
  • tgt-tgs — a TGS’s SPN constrains which transports a forged ticket can use
  • sccm-abuse — WinRM/PSRemoting as the SCCM lateral surface
  • pass-the-hash-and-ticket — the PtH/PtT that feeds these transports
  • crackmapexec — mass SMB/WinRM/SMB exec across a subnet
  • ad-tier-model — why the destination tier of each exec matters
  • lsass — what you typically go to a box to get once you have exec