Detection rules › Sigma

Potential CommandLine Path Traversal Via Cmd.EXE

Status
test
Severity
high
Log source
product windows, category process_creation
Author
xknow @xknow_infosec, Tim Shelton
Source
github.com/SigmaHQ/sigma

Detects potential path traversal attempt via cmd.exe. Could indicate possible command/argument confusion/hijacking

MITRE ATT&CK coverage

Event coverage

ProviderEventTitle
SysmonEvent ID 1Process creation

Rule body yaml

title: Potential CommandLine Path Traversal Via Cmd.EXE
id: 087790e3-3287-436c-bccf-cbd0184a7db1
status: test
description: Detects potential path traversal attempt via cmd.exe. Could indicate possible command/argument confusion/hijacking
references:
    - https://hackingiscool.pl/cmdhijack-command-argument-confusion-with-path-traversal-in-cmd-exe/
    - https://twitter.com/Oddvarmoe/status/1270633613449723905
author: xknow @xknow_infosec, Tim Shelton
date: 2020-06-11
modified: 2023-03-06
tags:
    - attack.execution
    - attack.t1059.003
logsource:
    category: process_creation
    product: windows
detection:
    selection_img:
        - ParentImage|endswith: '\cmd.exe'
        - Image|endswith: '\cmd.exe'
        - OriginalFileName: 'cmd.exe'
    selection_flags:
        - ParentCommandLine|contains:
              - '/c'
              - '/k'
              - '/r'
        - CommandLine|contains:
              - '/c'
              - '/k'
              - '/r'
    selection_path_traversal:
        - ParentCommandLine: '/../../'
        - CommandLine|contains: '/../../'
    filter_java:
        CommandLine|contains: '\Tasktop\keycloak\bin\/../../jre\bin\java'
    condition: all of selection_* and not 1 of filter_*
falsepositives:
    - Java tools are known to produce false-positive when loading libraries
level: high

Stages and Predicates

Stage 0: condition

all of selection_* and not 1 of filter_*

Stage 1: selection_img

selection_img:
    - ParentImage|endswith: '\cmd.exe'
    - Image|endswith: '\cmd.exe'
    - OriginalFileName: 'cmd.exe'

Stage 2: selection_flags

selection_flags:
    - ParentCommandLine|contains:
          - '/c'
          - '/k'
          - '/r'
    - CommandLine|contains:
          - '/c'
          - '/k'
          - '/r'

Stage 3: selection_path_traversal

selection_path_traversal:
    - ParentCommandLine: '/../../'
    - CommandLine|contains: '/../../'

Stage 4: not filter_java

filter_java:
    CommandLine|contains: '\Tasktop\keycloak\bin\/../../jre\bin\java'

Exclusions

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

FieldKindExcluded values
CommandLinematch\Tasktop\keycloak\bin\/../../jre\bin\java

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
  • /../../ corpus 2 (sigma 2)
  • /c corpus 15 (sigma 13, splunk 2)
  • /k
  • /r corpus 3 (sigma 3)
Imageends_with
  • \cmd.exe corpus 130 (sigma 130)
OriginalFileNameeq
  • cmd.exe corpus 65 (sigma 43, splunk 17, elastic 5)
ParentCommandLineeq
  • /../../
ParentCommandLinematch
  • /c corpus 3 (sigma 3)
  • /k
  • /r corpus 2 (sigma 2)
ParentImageends_with
  • \cmd.exe corpus 20 (sigma 20)