Detection rules › Sigma

Windows Processes Suspicious Parent Directory

Status
test
Severity
low
Log source
product windows, category process_creation
Author
vburov
Source
github.com/SigmaHQ/sigma

Detect suspicious parent processes of well-known Windows processes

MITRE ATT&CK coverage

Event coverage

Rule body yaml

title: Windows Processes Suspicious Parent Directory
id: 96036718-71cc-4027-a538-d1587e0006a7
status: test
description: Detect suspicious parent processes of well-known Windows processes
references:
    - https://web.archive.org/web/20180718061628/https://securitybytes.io/blue-team-fundamentals-part-two-windows-processes-759fe15965e2
    - https://www.carbonblack.com/2014/06/10/screenshot-demo-hunt-evil-faster-than-ever-with-carbon-black/
    - https://www.13cubed.com/downloads/windows_process_genealogy_v2.pdf
author: vburov
date: 2019-02-23
modified: 2025-03-06
tags:
    - attack.stealth
    - attack.t1036.003
    - attack.t1036.005
logsource:
    category: process_creation
    product: windows
detection:
    selection:
        Image|endswith:
            - '\svchost.exe'
            - '\taskhost.exe'
            - '\lsm.exe'
            - '\lsass.exe'
            - '\services.exe'
            - '\lsaiso.exe'
            - '\csrss.exe'
            - '\wininit.exe'
            - '\winlogon.exe'
    filter_sys:
        - ParentImage|endswith:
              - '\SavService.exe'
              - '\ngen.exe'
        - ParentImage|contains:
              - '\System32\'
              - '\SysWOW64\'
    filter_msmpeng:
        ParentImage|contains:
            - '\Windows Defender\'
            - '\Microsoft Security Client\'
        ParentImage|endswith: '\MsMpEng.exe'
    filter_null:
        - ParentImage: null
        - ParentImage:
              - ''
              - '-'
    condition: selection and not 1 of filter_*
falsepositives:
    - Some security products seem to spawn these
level: low

Stages and Predicates

Stage 0: condition

selection and not 1 of filter_*

Stage 1: selection

selection:
    Image|endswith:
        - '\svchost.exe'
        - '\taskhost.exe'
        - '\lsm.exe'
        - '\lsass.exe'
        - '\services.exe'
        - '\lsaiso.exe'
        - '\csrss.exe'
        - '\wininit.exe'
        - '\winlogon.exe'

Stage 2: not filter_*

filter_sys:
    - ParentImage|endswith:
          - '\SavService.exe'
          - '\ngen.exe'
    - ParentImage|contains:
          - '\System32\'
          - '\SysWOW64\'
filter_msmpeng:
    ParentImage|contains:
        - '\Windows Defender\'
        - '\Microsoft Security Client\'
    ParentImage|endswith: '\MsMpEng.exe'
filter_null:
    - ParentImage: null
    - ParentImage:
          - ''
          - '-'

Exclusions

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

FieldKindExcluded values
ParentImagematch\Microsoft Security Client\
ParentImagematch\Windows Defender\
ParentImageends_with\MsMpEng.exe
ParentImageends_with\SavService.exe
ParentImageends_with\ngen.exe
ParentImageeq-
ParentImageis_null(no value, null check)
ParentImagematch\SysWOW64\
ParentImagematch\System32\

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
Imageends_with
  • \csrss.exe corpus 3 (sigma 3)
  • \lsaiso.exe corpus 2 (sigma 2)
  • \lsass.exe corpus 5 (sigma 5)
  • \lsm.exe corpus 2 (sigma 2)
  • \services.exe corpus 2 (sigma 2)
  • \svchost.exe corpus 23 (sigma 23)
  • \taskhost.exe corpus 2 (sigma 2)
  • \wininit.exe corpus 3 (sigma 3)
  • \winlogon.exe corpus 6 (sigma 6)