Skip to content

Siemphony is in beta and still being built. What ships today, and what does not.

Siemphony’s repertoire

Connection to an onion-routing relay or local SOCKS proxy port

Siemphony@siemphonymediumT1090.003unverified
AN1020 pairs an anonymity client with sustained outbound traffic, and the part of that a single connection event can carry is the destination port, so this rule matches host-initiated connections to the onion-routing relay and directory ports and to the SOCKS and control ports that the standard and browser-bundled clients listen on locally. The analytic's other source, DNS query, is not used: an onion-aware client resolves .onion names inside the SOCKS tunnel and never through the system resolver, so a QueryName selector on that suffix would validate cleanly, render in four backends and never fire. The I2P proxy ports 4444 and 4445 are left out because they collide with development and test listeners often enough to dominate the rule. Sysmon EventID 3 is off in a bare install and most shipped configurations drop loopback traffic, which removes the local SOCKS half of this rule entirely — zero rows there means the filter, not the absence of a proxy. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0359, not hand-written and not tested by its author. Any lab result is on this rule's own page.Full description

The detection

The 2 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

Splunk · SPL

Run this as a search.

index=* (Initiated="true" AND (DestinationPort="9001" OR DestinationPort="9030" OR DestinationPort="9040" OR DestinationPort="9050" OR DestinationPort="9051" OR DestinationPort="9150" OR DestinationPort="9151"))

Wazuh · XML rule

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

<group name="sigma,windows,network_connection,">  <!-- Rule ids must be unique on your manager; 100000+ is the user range. -->  <rule id="100000" level="7">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="Initiated" type="pcre2">(?i)^true$</field>    <field name="DestinationPort" type="pcre2">(?i)(^9001$|^9030$|^9040$|^9050$|^9051$|^9150$|^9151$)</field>    <description>Connection to an onion-routing relay or local SOCKS proxy port</description>    <mitre>      <id>T1090.003</id>    </mitre>  </rule></group>

Sentinel · KQL

Run this as a search.

Sentinel cannot express this construct. `Initiated` has no Sentinel column: Defender expresses connection direction in `ActionType`, not as a boolean column, so `Initiated` cannot be renamed — it needs a different predicate. The Sigma source is on the first tab, unchanged.

Elastic · ES|QL

Run this as a search.

Elastic cannot express this construct. `Initiated` has no ECS field: ECS expresses connection direction as `network.direction` with values like `egress`, not as a boolean, so `Initiated` needs a different predicate rather than a rename. The Sigma source is on the first tab, unchanged.

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.