Detection rules › Sigma
Non Interactive PowerShell Process Spawned
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
| Tactic | Techniques |
|---|---|
| Execution | T1059.001 Command and Scripting Interpreter: PowerShell |
Event coverage
| Provider | Event | Title |
|---|---|---|
| Sysmon | Event ID 1 | Process 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.
| Field | Kind | Excluded values |
|---|---|---|
ParentImage | ends_with | :\Windows\SysWOW64\explorer.exe |
ParentImage | ends_with | :\Windows\System32\CompatTelRunner.exe |
ParentImage | ends_with | :\Windows\explorer.exe |
ParentImage | eq | :\$WINDOWS.~BT\Sources\SetupHost.exe |
ParentCommandLine | match | --ms-enable-electron-run-as-node |
ParentImage | ends_with | \AppData\Local\Programs\Microsoft VS Code\Code.exe |
ParentImage | ends_with | \WindowsTerminal.exe |
ParentImage | match | :\Program Files\WindowsApps\Microsoft.WindowsTerminal_ |
ParentImage | ends_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.
| Field | Kind | Values |
|---|---|---|
Image | ends_with |
|
OriginalFileName | eq |
|