Detection rules › Sigma

Winrs Local Command Execution

Status
experimental
Severity
high
Log source
product windows, category process_creation
Author
Liran Ravich, Nasreddine Bencherchali
Source
github.com/SigmaHQ/sigma

Detects the execution of Winrs.exe where it is used to execute commands locally. Commands executed this way are launched under Winrshost.exe and can represent proxy execution used for defense evasion or lateral movement.

MITRE ATT&CK coverage

Event coverage

ProviderEventTitle
SysmonEvent ID 1Process creation

Rule body yaml

title: Winrs Local Command Execution
id: bcfece3d-56fe-4545-9931-3b8e92927db1
status: experimental
description: |
    Detects the execution of Winrs.exe where it is used to execute commands locally.
    Commands executed this way are launched under Winrshost.exe and can represent proxy execution used for defense evasion or lateral movement.
references:
    - https://cardinalops.com/blog/living-off-winrm-abusing-complexity-in-remote-management/
    - https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/winrs
author: Liran Ravich, Nasreddine Bencherchali
date: 2025-10-22
tags:
    - attack.lateral-movement
    - attack.stealth
    - attack.t1021.006
    - attack.t1218
logsource:
    category: process_creation
    product: windows
detection:
    selection_img:
        # Note: Example of command to simulate (winrm needs to be enabled): "c:\Windows\System32\winrs.exe" calc.exe
        - Image|endswith: '\winrs.exe'
        - OriginalFileName: 'winrs.exe'
    selection_local_ip:
        CommandLine|contains|windash:
            - '/r:localhost'
            - '/r:127.0.0.1'
            - '/r:[::1]'
            - '/remote:localhost'
            - '/remote:127.0.0.1'
            - '/remote:[::1]'
    filter_main_remote:
        CommandLine|contains|windash:
            - "/r:"
            - "/remote:"
    condition: all of selection_* or (selection_img and not 1 of filter_main_*)
falsepositives:
    - Unlikely
level: high

Stages and Predicates

Stage 0: condition

all of selection_* or (selection_img and not 1 of filter_main_*)

Stage 1: selection_img

selection_img:
    - Image|endswith: '\winrs.exe'
    - OriginalFileName: 'winrs.exe'

Stage 2: selection_local_ip

selection_local_ip:
    CommandLine|contains|windash:
        - '/r:localhost'
        - '/r:127.0.0.1'
        - '/r:[::1]'
        - '/remote:localhost'
        - '/remote:127.0.0.1'
        - '/remote:[::1]'

Stage 3: selection_img

selection_img:
    - Image|endswith: '\winrs.exe'
    - OriginalFileName: 'winrs.exe'

Stage 4: not filter_main_remote

filter_main_remote:
    CommandLine|contains|windash:
        - "/r:"
        - "/remote:"

Exclusions

Top-level NOT(...) conjuncts: predicates this rule actively suppresses.

FieldKindExcluded values
CommandLinematch/r:
CommandLinematch/remote:

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
CommandLinematch
  • /r:127.0.0.1 transforms: windash
  • /r:[::1] transforms: windash
  • /r:localhost transforms: windash
  • /remote:127.0.0.1 transforms: windash
  • /remote:[::1] transforms: windash
  • /remote:localhost transforms: windash
Imageends_with
  • \winrs.exe corpus 2 (sigma 2)
OriginalFileNameeq
  • winrs.exe corpus 2 (sigma 1, splunk 1)