Skip to content

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

Siemphony’s repertoire

Non-browser HTTP client user agent in web traffic

Siemphony@siemphonylowT1071.001unverified
Matches Zeek http.log requests whose User-Agent identifies a scripting or library HTTP client rather than a browser, plus the obsolete "Mozilla/4.0 (compatible; MSIE" family that off-the-shelf C2 profiles still use to imitate one. This is the UserAgentAnomalies knob of AN0075 turned into logic, and the network view is chosen over the brief's Sysmon leg because the header only exists on the wire — a Sysmon EventID 3 record carries the process and the port and nothing about the request. The user agent list is authored for this rule; MITRE names the knob but supplies no values. Three limits belong in the reader's head before this is deployed: http.log holds cleartext HTTP only, so a C2 channel over HTTPS or a WebSocket upgraded inside TLS is invisible here and is what the brief's ssl.log and websocket.log sources exist for; a User-Agent is attacker-chosen and copying a current Chrome string defeats the rule entirely; and the beaconing, volume-ratio and byte-count discriminators the analytic leans on (OutboundByteRatioThreshold, BeaconIntervalWindow) need aggregation over time, which Sigma has no way to express, so this fires on a single request. There is also no direction test here: http.log carries requests in both directions, and where the sensor watches an internet-facing service the inbound scanners using these same libraries will outweigh anything leaving the estate, so the first tuning step is to constrain the originator to internal address space. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0027, not hand-written and not tested by its author. Any lab result is on this rule's own page.Full description

The detection

The 3 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=* (user_agent="*python-requests*" OR user_agent="*python-urllib*" OR user_agent="*Go-http-client*" OR user_agent="*curl/*" OR user_agent="*Wget/*" OR user_agent="*libwww-perl*" OR user_agent="*Java/*" OR user_agent="*WindowsPowerShell*" OR user_agent="*PowerShell/*" OR user_agent="*WinHttp.WinHttpRequest*" OR user_agent="*Microsoft BITS*" OR user_agent="*Mozilla/4.0 (compatible; MSIE*")

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE (TO_LOWER(user_agent) LIKE "*python-requests*" OR TO_LOWER(user_agent) LIKE "*python-urllib*" OR TO_LOWER(user_agent) LIKE "*go-http-client*" OR TO_LOWER(user_agent) LIKE "*curl/*" OR TO_LOWER(user_agent) LIKE "*wget/*" OR TO_LOWER(user_agent) LIKE "*libwww-perl*" OR TO_LOWER(user_agent) LIKE "*java/*" OR TO_LOWER(user_agent) LIKE "*windowspowershell*" OR TO_LOWER(user_agent) LIKE "*powershell/*" OR TO_LOWER(user_agent) LIKE "*winhttp.winhttprequest*" OR TO_LOWER(user_agent) LIKE "*microsoft bits*" OR TO_LOWER(user_agent) LIKE "*mozilla/4.0 (compatible; msie*")

Wazuh · XML rule

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

<group name="sigma,zeek,">  <!-- 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 zeek so this only evaluates relevant events. -->    <field name="user_agent" type="pcre2">(?i)(python-requests|python-urllib|Go-http-client|curl/|Wget/|libwww-perl|Java/|WindowsPowerShell|PowerShell/|WinHttp\.WinHttpRequest|Microsoft BITS|Mozilla/4\.0 \(compatible; MSIE)</field>    <description>Non-browser HTTP client user agent in web traffic</description>    <mitre>      <id>T1071.001</id>    </mitre>  </rule></group>

Sentinel · KQL

Run this as a search.

Sentinel cannot express this construct. No Sentinel table is modelled for this logsource ({"product":"zeek","service":"http"}), so there is nothing honest to query. Pick a logsource this translator maps, or write the KQL by hand. 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.