Detection rules › Sigma

Non Interactive PowerShell Process Spawned

Status
test
Severity
low
Log source
product windows, category process_creation
Author
Roberto Rodriguez @Cyb3rWard0g (rule), oscd.community (improvements)
Source
github.com/SigmaHQ/sigma

Detects non-interactive PowerShell activity by looking at the "powershell" process with a non-user GUI process such as "explorer.exe" as a parent.

MITRE ATT&CK coverage

Event coverage

ProviderEventTitle
SysmonEvent ID 1Process creation

Rule body yaml

title: Non Interactive PowerShell Process Spawned
id: f4bbd493-b796-416e-bbf2-121235348529
status: test
description: Detects non-interactive PowerShell activity by looking at the "powershell" process with a non-user GUI process such as "explorer.exe" as a parent.
references:
    - https://web.archive.org/web/20200925032237/https://threathunterplaybook.com/notebooks/windows/02_execution/WIN-190410151110.html
author: Roberto Rodriguez @Cyb3rWard0g (rule), oscd.community (improvements)
date: 2019-09-12
modified: 2025-02-28
tags:
    - attack.execution
    - attack.t1059.001
logsource:
    category: process_creation
    product: windows
detection:
    selection:
        - Image|endswith:
              - '\powershell.exe'
              - '\pwsh.exe'
        - OriginalFileName:
              - 'PowerShell.EXE'
              - 'pwsh.dll'
    filter_main_generic:
        ParentImage|endswith:
            - ':\Windows\explorer.exe'
            - ':\Windows\System32\CompatTelRunner.exe'
            - ':\Windows\SysWOW64\explorer.exe'
    filter_main_windows_update:
        ParentImage: ':\$WINDOWS.~BT\Sources\SetupHost.exe' # During Windows updates/upgrades
        # CommandLine: powershell.exe -ExecutionPolicy Restricted -Command Write-Host 'Final result: 1';
    filter_optional_vscode:
        # Triggered by VsCode when you open a Shell inside the workspace
        ParentImage|endswith: '\AppData\Local\Programs\Microsoft VS Code\Code.exe'
        ParentCommandLine|contains: ' --ms-enable-electron-run-as-node '
    filter_optional_terminal:
        ParentImage|contains: ':\Program Files\WindowsApps\Microsoft.WindowsTerminal_'
        ParentImage|endswith: '\WindowsTerminal.exe'
    filter_optional_defender:
        ParentImage|endswith: ':\Program Files\Windows Defender Advanced Threat Protection\SenseIR.exe'
    condition: selection and not 1 of filter_main_* and not 1 of filter_optional_*
falsepositives:
    - Likely. Many admin scripts and tools leverage PowerShell in their BAT or VB scripts which may trigger this rule often. It is best to add additional filters or use this to hunt for anomalies
level: low

Stages and Predicates

Stage 0: condition

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

Stage 1: selection

selection:
    - Image|endswith:
          - '\powershell.exe'
          - '\pwsh.exe'
    - OriginalFileName:
          - 'PowerShell.EXE'
          - 'pwsh.dll'

Stage 2: not filter_main_*

filter_main_generic:
    ParentImage|endswith:
        - ':\Windows\explorer.exe'
        - ':\Windows\System32\CompatTelRunner.exe'
        - ':\Windows\SysWOW64\explorer.exe'
filter_main_windows_update:
    ParentImage: ':\$WINDOWS.~BT\Sources\SetupHost.exe'

Stage 3: not filter_optional_*

filter_optional_vscode:
    ParentImage|endswith: '\AppData\Local\Programs\Microsoft VS Code\Code.exe'
    ParentCommandLine|contains: ' --ms-enable-electron-run-as-node '
filter_optional_terminal:
    ParentImage|contains: ':\Program Files\WindowsApps\Microsoft.WindowsTerminal_'
    ParentImage|endswith: '\WindowsTerminal.exe'
filter_optional_defender:
    ParentImage|endswith: ':\Program Files\Windows Defender Advanced Threat Protection\SenseIR.exe'

Exclusions

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

FieldKindExcluded values
ParentImageends_with:\Windows\SysWOW64\explorer.exe
ParentImageends_with:\Windows\System32\CompatTelRunner.exe
ParentImageends_with:\Windows\explorer.exe
ParentImageeq:\$WINDOWS.~BT\Sources\SetupHost.exe
ParentCommandLinematch --ms-enable-electron-run-as-node
ParentImageends_with\AppData\Local\Programs\Microsoft VS Code\Code.exe
ParentImageends_with\WindowsTerminal.exe
ParentImagematch:\Program Files\WindowsApps\Microsoft.WindowsTerminal_
ParentImageends_with:\Program Files\Windows Defender Advanced Threat Protection\SenseIR.exe

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
  • \powershell.exe corpus 182 (sigma 182)
  • \pwsh.exe corpus 168 (sigma 168)
OriginalFileNameeq
  • PowerShell.EXE corpus 120 (sigma 84, splunk 30, elastic 6)
  • pwsh.dll corpus 112 (sigma 79, splunk 30, elastic 3)