Skip to content

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

Siemphony’s repertoire

Enumeration of local network connections from the command line

Matches process creation whose command line names a connection-listing utility — netstat in any path or casing form, the Get-NetTCPConnection and Get-NetUDPEndpoint cmdlets, and net session. The whole test is on CommandLine rather than split between Image and CommandLine because the cmdlet form never appears as an Image: it is an argument of powershell.exe, so one field carries both shapes and no backend has to OR across two. This populates MITRE's CommandPatternList knob; MITRE names the knob, the four patterns are authored here. ATT&CK also names "net use", which is deliberately left out — "net use" is a substring of "net user" (account discovery, T1087), and bare net use is drive mapping on every domain workstation at logon, so including it would swamp the rule with a match it cannot even attribute to the right technique. Two blind spots: a cmdlet typed at an interactive PowerShell prompt spawns no process and is visible only in Script Block Logging (EventID 4104, the brief's other Windows feed, which is off unless Script Block Logging is enabled), and the same cmdlet inside an -EncodedCommand blob does not match at all. The rule is written in the Sysmon EventID 1 vocabulary of the brief's first log source; if the estate feeds Security 4688 into this category instead, CommandLine is populated only when both Audit Process Creation and the separate Include command line in process creation events policy are on, and without them the rule returns zero rows for want of the field rather than for want of the behaviour. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0320, 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: Enumeration of local network connections from the command lineid: c5c78cc4-9d31-4d8d-aee8-0089d05038ddstatus: experimentaldescription: |  Matches process creation whose command line names a connection-listing  utility — netstat in any path or casing form, the Get-NetTCPConnection and  Get-NetUDPEndpoint cmdlets, and net session. The whole test is on  CommandLine rather than split between Image and CommandLine because the  cmdlet form never appears as an Image: it is an argument of powershell.exe,  so one field carries both shapes and no backend has to OR across two.  This populates MITRE's CommandPatternList knob; MITRE names the knob, the  four patterns are authored here. ATT&CK also names "net use", which is  deliberately left out — "net use" is a substring of "net user" (account  discovery, T1087), and bare net use is drive mapping on every domain  workstation at logon, so including it would swamp the rule with a match it  cannot even attribute to the right technique. Two blind spots: a cmdlet  typed at an interactive PowerShell prompt spawns no process and is visible  only in Script Block Logging (EventID 4104, the brief's other Windows feed,  which is off unless Script Block Logging is enabled), and the same cmdlet  inside an -EncodedCommand blob does not match at all. The rule is written in  the Sysmon EventID 1 vocabulary of the brief's first log source; if the  estate feeds Security 4688 into this category instead, CommandLine is  populated only when both Audit Process Creation and the separate Include  command line in process creation events policy are on, and without them the  rule returns zero rows for want of the field rather than for want of the  behaviour.  UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0320, 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/T1049  - https://attack.mitre.org/detectionstrategies/DET0320author: Siemphony pipeline (machine-derived from MITRE ATT&CK v19.2)date: 2026-08-16tags:  - attack.discovery  - attack.t1049logsource:  category: process_creation  product: windowsdetection:  selection:    CommandLine|contains:      - 'netstat'      - 'Get-NetTCPConnection'      - 'Get-NetUDPEndpoint'      - 'net session'  condition: selectionfalsepositives:  - "Monitoring, inventory and EDR health agents that shell out to netstat -ano on a polling interval to record listening ports; on any host running one of these the rule fires every cycle and is the highest-volume match by a wide margin."  - "Helpdesk and administrator connectivity troubleshooting, where netstat -ano and Get-NetTCPConnection are among the first commands typed in an elevated prompt during an incident or a port-conflict investigation."  - "Application installers and service start-up scripts that call netstat to check whether a listening port is already taken before binding to it, which fires on every install and on every service restart."  - "PowerShell configuration and remediation scripts — Intune remediations, DSC resources, load-balancer and cluster health checks — that call Get-NetTCPConnection to assert a service is listening."level: low

Sentinel · KQL

Run this as a search.

DeviceProcessEvents| where (ProcessCommandLine contains "netstat" or ProcessCommandLine contains "Get-NetTCPConnection" or ProcessCommandLine contains "Get-NetUDPEndpoint" or ProcessCommandLine contains "net session")

Splunk · SPL

Run this as a search.

index=* (CommandLine="*netstat*" OR CommandLine="*Get-NetTCPConnection*" OR CommandLine="*Get-NetUDPEndpoint*" OR CommandLine="*net session*")

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE (TO_LOWER(process.command_line) LIKE "*netstat*" OR TO_LOWER(process.command_line) LIKE "*get-nettcpconnection*" OR TO_LOWER(process.command_line) LIKE "*get-netudpendpoint*" OR TO_LOWER(process.command_line) LIKE "*net session*")

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="CommandLine" type="pcre2">(?i)(netstat|Get-NetTCPConnection|Get-NetUDPEndpoint|net session)</field>    <description>Enumeration of local network connections from the command line</description>    <mitre>      <id>T1049</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.