Skip to content

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

Siemphony’s repertoire

HTTP client asserting an obsolete Internet Explorer user agent

Siemphony@siemphonylowT1036.012unverified
AN2031 asks for outbound HTTP whose User-Agent has been shaped to look like a browser when the client is not one. Of the log sources in this strategy, Zeek http.log is the only one that records the header at all — Sysmon EventID 3 and EventID 22, offered by AN2029 for the same technique, carry connection and DNS metadata with no HTTP headers in them, so no selector written against those could ever see a User-Agent. The logic keys on the cheapest and most visible forgery: a client declaring itself as pre-IE11 Internet Explorer, or carrying the Mozilla/4.0 prefix, neither of which any currently shipping browser sends and both of which are long-standing hard-coded values in downloader and implant code. Note what is deliberately absent. A default PowerShell, curl or python-requests agent names its own stack, which is evidence that no browser identity was forged at all, so selecting on it would fill the rule with the negation of the technique it is filed under. The markers are authored here; MITRE names the knobs (HeaderSignatureMatch and UserAgentFingerprint) but supplies no values. Two limits are structural. An adversary who copies a current Chrome or Edge User-Agent verbatim is indistinguishable on this feed and this rule will not see them — it catches stale spoofing, not current spoofing. And the analytic's other half, that no browser appears in the process lineage, cannot be joined here at all, because Zeek carries no process identity and lib/sigma has no correlation to join it with. Prerequisite: the header is only visible in cleartext, so a sensor seeing TLS without interception logs the connection in conn.log and contributes nothing to http.log — zero rows on an HTTPS-dominant estate means blind, not quiet. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0898, 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="*compatible; MSIE *" OR user_agent="*Mozilla/4.0*")

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE (TO_LOWER(user_agent) LIKE "*compatible; msie *" OR TO_LOWER(user_agent) LIKE "*mozilla/4.0*")

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)(compatible; MSIE |Mozilla/4\.0)</field>    <description>HTTP client asserting an obsolete Internet Explorer user agent</description>    <mitre>      <id>T1036.012</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.