Detection rules › Sigma

Uncommon Userinit Child Process

Status
test
Severity
high
Log source
product windows, category process_creation
Author
Tom Ueltschi (@c_APT_ure), Tim Shelton
Source
github.com/SigmaHQ/sigma

Detects uncommon "userinit.exe" child processes, which could be a sign of uncommon shells or login scripts used for persistence.

MITRE ATT&CK coverage

Event coverage

Rule body yaml

title: Uncommon Userinit Child Process
id: 0a98a10c-685d-4ab0-bddc-b6bdd1d48458
related:
    - id: 21d856f9-9281-4ded-9377-51a1a6e2a432
      type: similar
status: test
description: Detects uncommon "userinit.exe" child processes, which could be a sign of uncommon shells or login scripts used for persistence.
references:
    - https://cocomelonc.github.io/persistence/2022/12/09/malware-pers-20.html
    - https://learn.microsoft.com/en-us/windows-server/administration/server-core/server-core-sconfig#powershell-is-the-default-shell-on-server-core
author: Tom Ueltschi (@c_APT_ure), Tim Shelton
date: 2019-01-12
modified: 2023-11-14
tags:
    - attack.privilege-escalation
    - attack.t1037.001
    - attack.persistence
logsource:
    category: process_creation
    product: windows
detection:
    selection:
        ParentImage|endswith: '\userinit.exe'
    filter_main_explorer:
        Image|endswith: ':\WINDOWS\explorer.exe'
    filter_optional_logonscripts:
        CommandLine|contains:
            - 'netlogon.bat'
            - 'UsrLogon.cmd'
    filter_optional_windows_core:
        # Note: This filter is mandatory on Windows Core machines as the default shell spawned by "userinit" is "powershell.exe".
        # https://learn.microsoft.com/en-us/windows-server/administration/server-core/server-core-sconfig#powershell-is-the-default-shell-on-server-core
        CommandLine: 'PowerShell.exe'
    filter_optional_proquota:
        Image|endswith:
            - ':\Windows\System32\proquota.exe'
            - ':\Windows\SysWOW64\proquota.exe'
    filter_optional_citrix:
        Image|endswith:
            # As reported by https://github.com/SigmaHQ/sigma/issues/4569
            - ':\Program Files (x86)\Citrix\HDX\bin\cmstart.exe' # https://support.citrix.com/article/CTX983798/purpose-of-cmstart-command
            - ':\Program Files (x86)\Citrix\HDX\bin\icast.exe' # https://support.citrix.com/article/CTX983798/purpose-of-cmstart-command
            - ':\Program Files (x86)\Citrix\System32\icast.exe'
            - ':\Program Files\Citrix\HDX\bin\cmstart.exe' # https://support.citrix.com/article/CTX983798/purpose-of-cmstart-command
            - ':\Program Files\Citrix\HDX\bin\icast.exe' # https://support.citrix.com/article/CTX983798/purpose-of-cmstart-command
            - ':\Program Files\Citrix\System32\icast.exe'
    filter_optional_image_null:
        Image: null
    condition: selection and not 1 of filter_main_* and not 1 of filter_optional_*
falsepositives:
    - Legitimate logon scripts or custom shells may trigger false positives. Apply additional filters accordingly.
level: high

Stages and Predicates

Stage 0: condition

selection and not 1 of filter_main_* and not 1 of filter_optional_*

Stage 1: selection

selection:
    ParentImage|endswith: '\userinit.exe'

Stage 2: not filter_main_explorer

filter_main_explorer:
    Image|endswith: ':\WINDOWS\explorer.exe'

Stage 3: not filter_optional_*

filter_optional_logonscripts:
    CommandLine|contains:
        - 'netlogon.bat'
        - 'UsrLogon.cmd'
filter_optional_windows_core:
    CommandLine: 'PowerShell.exe'
filter_optional_proquota:
    Image|endswith:
        - ':\Windows\System32\proquota.exe'
        - ':\Windows\SysWOW64\proquota.exe'
filter_optional_citrix:
    Image|endswith:
        - ':\Program Files (x86)\Citrix\HDX\bin\cmstart.exe'
        - ':\Program Files (x86)\Citrix\HDX\bin\icast.exe'
        - ':\Program Files (x86)\Citrix\System32\icast.exe'
        - ':\Program Files\Citrix\HDX\bin\cmstart.exe'
        - ':\Program Files\Citrix\HDX\bin\icast.exe'
        - ':\Program Files\Citrix\System32\icast.exe'
filter_optional_image_null:
    Image: null

Exclusions

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

FieldKindExcluded values
Imageends_with:\WINDOWS\explorer.exe
CommandLineeqPowerShell.exe
CommandLinematchUsrLogon.cmd
CommandLinematchnetlogon.bat
Imageends_with:\Program Files (x86)\Citrix\HDX\bin\cmstart.exe
Imageends_with:\Program Files (x86)\Citrix\HDX\bin\icast.exe
Imageends_with:\Program Files (x86)\Citrix\System32\icast.exe
Imageends_with:\Program Files\Citrix\HDX\bin\cmstart.exe
Imageends_with:\Program Files\Citrix\HDX\bin\icast.exe
Imageends_with:\Program Files\Citrix\System32\icast.exe
Imageends_with:\Windows\SysWOW64\proquota.exe
Imageends_with:\Windows\System32\proquota.exe
Imageis_null(no value, null check)

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
ParentImageends_with
  • \userinit.exe corpus 3 (sigma 3)