Detection rules › Sigma

Uncommon Userinit Child Process

Status
test
Severity
high
Log source
category process_creation, product windows
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.

Known false positives

  • Legitimate logon scripts or custom shells may trigger false positives. Apply additional filters accordingly.

MITRE ATT&CK coverage

Telemetry coverage

Rule body

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

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
Imageends_with:\WINDOWS\explorer.exeexcludes:Image field:"Image" value:":\WINDOWS\explorer.exe"
CommandLineeqPowerShell.exeexcludes:CommandLine field:"CommandLine" value:"PowerShell.exe"
CommandLinematchUsrLogon.cmdexcludes:CommandLine field:"CommandLine" value:"UsrLogon.cmd"
CommandLinematchnetlogon.batexcludes:CommandLine field:"CommandLine" value:"netlogon.bat"
Imageends_with:\Program Files (x86)\Citrix\HDX\bin\cmstart.exeexcludes:Image field:"Image" value:":\Program Files (x86)\Citrix\HDX\bin\cmstart.exe"
Imageends_with:\Program Files (x86)\Citrix\HDX\bin\icast.exeexcludes:Image field:"Image" value:":\Program Files (x86)\Citrix\HDX\bin\icast.exe"
Imageends_with:\Program Files (x86)\Citrix\System32\icast.exeexcludes:Image field:"Image" value:":\Program Files (x86)\Citrix\System32\icast.exe"
Imageends_with:\Program Files\Citrix\HDX\bin\cmstart.exeexcludes:Image field:"Image" value:":\Program Files\Citrix\HDX\bin\cmstart.exe"
Imageends_with:\Program Files\Citrix\HDX\bin\icast.exeexcludes:Image field:"Image" value:":\Program Files\Citrix\HDX\bin\icast.exe"
Imageends_with:\Program Files\Citrix\System32\icast.exeexcludes:Image field:"Image" value:":\Program Files\Citrix\System32\icast.exe"
Imageends_with:\Windows\SysWOW64\proquota.exeexcludes:Image field:"Image" value:":\Windows\SysWOW64\proquota.exe"
Imageends_with:\Windows\System32\proquota.exeexcludes:Image field:"Image" value:":\Windows\System32\proquota.exe"
Imageis_null(no value, null check)excludes:Image

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
ParentImageends_with
  • \userinit.exe corpus 3 (sigma 3)
field:"ParentImage" kind:ends_with value:"\userinit.exe"