Windows Named Pipe Creation: Alternate PowerShell Host via \PSHost

Alerts on creation of \PSHost named pipes to identify alternate PowerShell host usage via Windows pipe events.

FreeReviewedSigma · Medium · v2
Product
windows
Category
pipe_created
Author
Roberto Rodriguez @Cyb3rWard0g, Tim Shelton (SigmaHQ), DRL 1.1
Published
2019-09-12
Updated
2026-07-31
title: "Windows Named Pipe Creation: Alternate PowerShell Host via \\PSHost"
id: 5adfd72f-e56c-4fd2-9055-62d33d1b2ac3
related:
  - id: ac7102b4-9e1e-4802-9b4f-17c5524c015c
    type: derived
  - id: 58cb02d5-78ce-4692-b3e1-dce850aae41a
    type: derived
status: test
description: This rule identifies creation of named pipes whose names start with \PSHost, indicating possible execution through an alternate PowerShell host rather than powershell.exe. Attackers may use alternate PowerShell host binaries to blend in or bypass detections focused on the standard interpreter process. The rule relies on Windows named pipe creation telemetry (e.g., Sysmon pipe-created events) and correlates pipe name plus the creating process image to exclude known legitimate PowerShell-related binaries.
references:
  - https://threathunterplaybook.com/hunts/windows/190610-PwshAlternateHosts/notebook.html
  - https://threathunterplaybook.com/hunts/windows/190410-LocalPwshExecution/notebook.html
  - https://github.com/SigmaHQ/sigma/blob/master/rules/windows/pipe_created/pipe_created_powershell_alternate_host_pipe.yml
author: Roberto Rodriguez @Cyb3rWard0g, Tim Shelton, Huntrule Team
date: 2019-09-12
modified: 2025-10-07
tags:
  - attack.execution
  - attack.t1059.001
logsource:
  product: windows
  category: pipe_created
  definition: Note that you have to configure logging for Named Pipe Events in Sysmon config (Event ID 17 and Event ID 18). The basic configuration is in popular sysmon configuration (https://github.com/SwiftOnSecurity/sysmon-config), but it is worth verifying. You can also use other repo, e.g. https://github.com/Neo23x0/sysmon-config, https://github.com/olafhartong/sysmon-modular. How to test detection? You can check powershell script from this site https://svch0st.medium.com/guide-to-named-pipes-and-hunting-for-cobalt-strike-pipes-dc46b2c5f575
detection:
  selection:
    PipeName|startswith: \PSHost
  filter_main_generic:
    - Image|contains:
        - :\Program Files\PowerShell\7-preview\pwsh.exe
        - :\Program Files\PowerShell\7\pwsh.exe
        - :\Windows\system32\dsac.exe
        - :\Windows\system32\inetsrv\w3wp.exe
        - :\Windows\System32\sdiagnhost.exe
        - :\Windows\system32\ServerManager.exe
        - :\Windows\system32\wbem\wmiprvse.exe
        - :\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe
        - :\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
        - :\Windows\System32\wsmprovhost.exe
        - :\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell_ise.exe
        - :\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
    - Image|contains|all:
        - C:\Program Files\WindowsApps\Microsoft.PowerShellPreview
        - \pwsh.exe
    - Image|contains|all:
        - \AppData\Local\Microsoft\WindowsApps\Microsoft.PowerShellPreview
        - \pwsh.exe
  filter_optional_sqlserver:
    Image|startswith:
      - C:\Program Files (x86)\
      - C:\Program Files\
    Image|contains: \Microsoft SQL Server\
    Image|endswith: \Tools\Binn\SQLPS.exe
  filter_optional_azure_connected_machine_agent:
    Image|startswith: C:\Program Files\AzureConnectedMachineAgent\GCArcService
    Image|endswith: \GC\gc_worker.exe
  filter_optional_citrix:
    Image|startswith: C:\Program Files\Citrix\
  filter_optional_exchange:
    Image|startswith: C:\Program Files\Microsoft\Exchange Server\
  filter_main_null:
    Image: null
  condition: selection and not 1 of filter_main_* and not 1 of filter_optional_*
falsepositives:
  - Programs using PowerShell directly without invocation of a dedicated interpreter.
level: medium
license: DRL-1.1