Skip to content

Siemphony is in beta and still being built. How a rule earns its badge.

Siemphony’s repertoire

PowerShell launched with a hidden window style

This strategy carries three per-platform analytics — AN0360 (Windows), AN0361 (Linux), AN0362 (macOS) — and only the Windows one names a literal, single-event observable: MITRE's own example in the technique description, powershell.exe -WindowStyle Hidden. AN0361 describes X11/Wayland calls and DISPLAY-variable manipulation that leave no trace in the auditd sources the brief lists (EXECVE/SYSCALL argv carries no windowing API), and AN0362 is a plist-modification-plus-correlation pattern spanning multiple events. Both would need invented fields to reach with a single Sigma selection, so only the Windows leg is built here. This rule matches PowerShell or pwsh invoked with -WindowStyle (or the -Win abbreviation PowerShell itself accepts) set to Hidden, using windash so a hyphen- or slash-prefixed switch is caught the same way. MITRE's ParentProcessCorrelation knob — narrowing to unexpected parent processes — is named in the analytic but not applied here, because doing so would mean inventing a parent-process allowlist with no basis in the brief; as written the rule is broader than the technique and flags every hidden PowerShell launch, malicious or administrative alike. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0128, not hand-written and not tested by its author. Any lab result is on this rule's own page.Full description

The detection

The 4 SIEM queries below are previews produced by Siemphony’s own translator, not pySigma, and none has been executed against a real backend — review before you deploy.

detection.yml

title: PowerShell launched with a hidden window styleid: 445b1c57-564c-427f-a65d-fbff52fad79estatus: experimentaldescription: |  This strategy carries three per-platform analytics — AN0360 (Windows),  AN0361 (Linux), AN0362 (macOS) — and only the Windows one names a literal,  single-event observable: MITRE's own example in the technique description,  powershell.exe -WindowStyle Hidden. AN0361 describes X11/Wayland calls and  DISPLAY-variable manipulation that leave no trace in the auditd sources the  brief lists (EXECVE/SYSCALL argv carries no windowing API), and AN0362 is a  plist-modification-plus-correlation pattern spanning multiple events. Both  would need invented fields to reach with a single Sigma selection, so only  the Windows leg is built here. This rule matches PowerShell or pwsh invoked  with -WindowStyle (or the -Win abbreviation PowerShell itself accepts) set  to Hidden, using windash so a hyphen- or slash-prefixed switch is caught the  same way. MITRE's ParentProcessCorrelation knob — narrowing to unexpected  parent processes — is named in the analytic but not applied here, because  doing so would mean inventing a parent-process allowlist with no basis in  the brief; as written the rule is broader than the technique and flags  every hidden PowerShell launch, malicious or administrative alike.  UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0128, not hand-written and not tested by its author. Any lab result is on this rule's own page.references:  - https://attack.mitre.org/techniques/T1564/003  - https://attack.mitre.org/detectionstrategies/DET0128author: Siemphony pipeline (machine-derived from MITRE ATT&CK v19.2)date: 2026-08-17tags:  - attack.defense-evasion  - attack.t1564.003logsource:  category: process_creation  product: windowsdetection:  selection_tool:    Image|endswith:      - '\powershell.exe'      - '\pwsh.exe'  selection_hidden:    CommandLine|contains|windash:      - '-windowstyle hidden'      - '-windowstyle h'      - '-win hidden'      - '-win h'  condition: selection_tool and selection_hiddenfalsepositives:  - "RMM, patch-management and software-deployment tooling — SCCM, Intune, PDQ and most commercial RMM agents — that wraps its payload scripts in powershell.exe -WindowStyle Hidden by convention so an unattended job never flashes a console at a logged-in user; this is an industry-standard pattern and by far the loudest source of matches here."  - "Logon and scheduled-task scripts pushed by Group Policy that call PowerShell with a hidden window so a maintenance task does not interrupt the desktop, which is exactly the legitimate administrative use the technique description itself names."  - "Developers and power users who default their own automation and build scripts to -WindowStyle Hidden out of habit, independent of any deployment tool."level: low

Sentinel · KQL

Run this as a search.

DeviceProcessEvents| where ((FolderPath endswith "\\powershell.exe" or FolderPath endswith "\\pwsh.exe") and (ProcessCommandLine contains "-windowstyle hidden" or ProcessCommandLine contains "/windowstyle hidden" or ProcessCommandLine contains "–windowstyle hidden" or ProcessCommandLine contains "—windowstyle hidden" or ProcessCommandLine contains "―windowstyle hidden" or ProcessCommandLine contains "-windowstyle h" or ProcessCommandLine contains "/windowstyle h" or ProcessCommandLine contains "–windowstyle h" or ProcessCommandLine contains "—windowstyle h" or ProcessCommandLine contains "―windowstyle h" or ProcessCommandLine contains "-win hidden" or ProcessCommandLine contains "/win hidden" or ProcessCommandLine contains "–win hidden" or ProcessCommandLine contains "—win hidden" or ProcessCommandLine contains "―win hidden" or ProcessCommandLine contains "-win h" or ProcessCommandLine contains "/win h" or ProcessCommandLine contains "–win h" or ProcessCommandLine contains "—win h" or ProcessCommandLine contains "―win h"))

Splunk · SPL

Run this as a search.

index=* ((Image="*\\powershell.exe" OR Image="*\\pwsh.exe") AND (CommandLine="*-windowstyle hidden*" OR CommandLine="*/windowstyle hidden*" OR CommandLine="*–windowstyle hidden*" OR CommandLine="*—windowstyle hidden*" OR CommandLine="*―windowstyle hidden*" OR CommandLine="*-windowstyle h*" OR CommandLine="*/windowstyle h*" OR CommandLine="*–windowstyle h*" OR CommandLine="*—windowstyle h*" OR CommandLine="*―windowstyle h*" OR CommandLine="*-win hidden*" OR CommandLine="*/win hidden*" OR CommandLine="*–win hidden*" OR CommandLine="*—win hidden*" OR CommandLine="*―win hidden*" OR CommandLine="*-win h*" OR CommandLine="*/win h*" OR CommandLine="*–win h*" OR CommandLine="*—win h*" OR CommandLine="*―win h*"))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE ((TO_LOWER(process.executable) LIKE "*\\\\powershell.exe" OR TO_LOWER(process.executable) LIKE "*\\\\pwsh.exe") AND (TO_LOWER(process.command_line) LIKE "*-windowstyle hidden*" OR TO_LOWER(process.command_line) LIKE "*/windowstyle hidden*" OR TO_LOWER(process.command_line) LIKE "*–windowstyle hidden*" OR TO_LOWER(process.command_line) LIKE "*—windowstyle hidden*" OR TO_LOWER(process.command_line) LIKE "*―windowstyle hidden*" OR TO_LOWER(process.command_line) LIKE "*-windowstyle h*" OR TO_LOWER(process.command_line) LIKE "*/windowstyle h*" OR TO_LOWER(process.command_line) LIKE "*–windowstyle h*" OR TO_LOWER(process.command_line) LIKE "*—windowstyle h*" OR TO_LOWER(process.command_line) LIKE "*―windowstyle h*" OR TO_LOWER(process.command_line) LIKE "*-win hidden*" OR TO_LOWER(process.command_line) LIKE "*/win hidden*" OR TO_LOWER(process.command_line) LIKE "*–win hidden*" OR TO_LOWER(process.command_line) LIKE "*—win hidden*" OR TO_LOWER(process.command_line) LIKE "*―win hidden*" OR TO_LOWER(process.command_line) LIKE "*-win h*" OR TO_LOWER(process.command_line) LIKE "*/win h*" OR TO_LOWER(process.command_line) LIKE "*–win h*" OR TO_LOWER(process.command_line) LIKE "*—win h*" OR TO_LOWER(process.command_line) LIKE "*―win h*"))

Wazuh · XML rule

Deploy to your manager — this is a rule, not a search.

<group name="sigma,windows,process_creation,">  <!-- Rule ids must be unique on your manager; 100000+ is the user range. -->  <rule id="100000" level="5">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="Image" type="pcre2">(?i)(\\powershell\.exe$|\\pwsh\.exe$)</field>    <field name="CommandLine" type="pcre2">(?i)(-windowstyle hidden|/windowstyle hidden|–windowstyle hidden|—windowstyle hidden|―windowstyle hidden|-windowstyle h|/windowstyle h|–windowstyle h|—windowstyle h|―windowstyle h|-win hidden|/win hidden|–win hidden|—win hidden|―win hidden|-win h|/win h|–win h|—win h|―win h)</field>    <description>PowerShell launched with a hidden window style</description>    <mitre>      <id>T1564.003</id>    </mitre>  </rule></group>

Verdicts · reactions · comments

Community

Verdicts from engineers who actually deployed it, and the conversation around it.

Log in to react
Not yet reported on

Nobody has run this in a real environment and said what happened.

Verdicts from engineers who deployed it

0 cast

No verdicts reported yet. The first one is worth more than the tenth — say what you ran it against.

Log in to report a verdict.

Log in to join the discussion.

No comments yet. Someone who deploys this will have something to say about it.