Skip to content

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

Siemphony’s repertoire

Linux host rewrites /etc/hosts or /etc/resolv.conf

AN0824 groups two different mechanisms under one analytic — file tampering with the files that steer name resolution, and ARP-layer traffic anomalies. Only the first has a real observable in the strategy's log sources: no logSource here carries raw ARP frames or NIC-level traffic, so an ARP-cache poisoning attempt is invisible to this rule and needs packet-level telemetry no analytic in this brief supplies. What is observable is the host-side enabler MITRE calls out in the technique description — an adversary steering a victim to attacker infrastructure by rewriting where DNS resolution points. The rule matches the auditd PATH record naming either file, kept separate from the SYSCALL record's own fields since the two arrive as distinct record types for the same event. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0296, 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

title: Linux host rewrites /etc/hosts or /etc/resolv.confid: f6badd94-fb66-4853-ac6d-930a44190d5cstatus: experimentaldescription: |  AN0824 groups two different mechanisms under one analytic — file tampering  with the files that steer name resolution, and ARP-layer traffic anomalies.  Only the first has a real observable in the strategy's log sources: no  logSource here carries raw ARP frames or NIC-level traffic, so an ARP-cache  poisoning attempt is invisible to this rule and needs packet-level telemetry  no analytic in this brief supplies. What is observable is the host-side  enabler MITRE calls out in the technique description — an adversary steering  a victim to attacker infrastructure by rewriting where DNS resolution  points. The rule matches the auditd PATH record naming either file, kept  separate from the SYSCALL record's own fields since the two arrive as  distinct record types for the same event.  UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0296, 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/T1557  - https://attack.mitre.org/detectionstrategies/DET0296author: Siemphony pipeline (machine-derived from MITRE ATT&CK v19.2)date: 2026-08-16tags:  - attack.credential-access  - attack.collection  - attack.t1557logsource:  product: linux  service: auditddetection:  selection:    type: 'PATH'    name:      - '/etc/hosts'      - '/etc/resolv.conf'  condition: selectionfalsepositives:  - "systemd-resolved or a DHCP client (dhclient, NetworkManager) regenerating /etc/resolv.conf on every lease renewal or VPN connect/disconnect — this is the highest-volume match by a wide margin on any laptop or cloud instance."  - "Configuration-management agents (Ansible, Puppet, Chef) reapplying /etc/hosts from a golden template on every convergence run, independent of whether the file actually changed."level: low

Splunk · SPL

Run this as a search.

index=* (type="PATH" AND (name="/etc/hosts" OR name="/etc/resolv.conf"))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE (TO_LOWER(type) == "path" AND (TO_LOWER(name) == "/etc/hosts" OR TO_LOWER(name) == "/etc/resolv.conf"))

Wazuh · XML rule

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

<group name="sigma,linux,">  <!-- 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 linux so this only evaluates relevant events. -->    <field name="type" type="pcre2">(?i)^PATH$</field>    <field name="name" type="pcre2">(?i)(^/etc/hosts$|^/etc/resolv\.conf$)</field>    <description>Linux host rewrites /etc/hosts or /etc/resolv.conf</description>    <mitre>      <id>T1557</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":"linux","service":"auditd"}), 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.