Skip to content

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

Siemphony’s repertoire

PAM configuration or MFA module file touched under /etc/pam.d

Siemphony@siemphonylowT1556.006unverified
Matches the Linux leg of AN0546 on the single log source it offers: an auditd PATH record naming either a file directly under /etc/pam.d/ (the stack of config files an admin edits to remove or reorder an MFA requirement) or one of a short list of well-known open-source MFA PAM module .so files. The pam.d selection is MITRE's own log source, taken verbatim ("open/write to /etc/pam.d/*"); the module-file selection populates MITRE's MFAHooks knob ("paths to organization-specific PAM modules enforcing MFA") with pam_google_authenticator.so, pam_duo.so, pam_oath.so, pam_yubico.so, pam_u2f.so and pam_radius_auth.so -- a list this pipeline assembled from common open-source MFA integrations, not a set of values MITRE supplied. Both selections are on the PATH record type because that is the established shape for "a specific file path was touched" elsewhere in this corpus (T1547.006, T1561.001); neither can tell a write from a read, since access-mode (O_WRONLY vs O_RDONLY) lives in the paired SYSCALL record's flags argument and no rule in this corpus decodes that field, so "removal of an MFA hook" and "cat /etc/pam.d/sshd" produce the identical event here. AN0546's own correlation half -- joining this with "successful authentications lacking MFA prompts" -- is not attempted: that is a second event type with no shared key this corpus's Sigma models a join across. Two other legs of this strategy are not attempted. AN0543 (Windows) offers Security EventCode 4739 and a PowerShell operational-log cmdlet pairing, but neither is usable: 4739 is Domain Policy Changed, and its own fields (DomainPolicyChanged, DomainValue) cover password length, lockout and Kerberos policy generically -- nothing in the brief names a bit or value that is MFA-specific, so a bare EventCode=4739 selection would match every routine password-policy edit in the domain, not this technique. The PowerShell leg names Set-ADUser and Set-ADAuthenticationPolicy but no AD attribute for "MFA disabled" -- Active Directory carries no native MFA flag, which is exactly why the CISA advisory this technique's own description cites (Russians Exploit Default MFA Protocol, March 2022) describes attackers editing a fail-open policy in the Azure MFA NPS extension's own config file instead, a log source this brief's AN0543 does not offer. AN0547 (macOS) offers only macos:unifiedlog, which has no field vocabulary anywhere in this corpus -- the same blocker recorded against T1553.001 and T1556's own parent-technique decline. Prerequisite: raw auditd watches nothing by default. This returns zero rows until watches such as `-w /etc/pam.d -p wa -k pam_config` and one per module path (e.g. `-w /lib/x86_64-linux-gnu/security/pam_google_authenticator.so -p wa -k pam_mfa`) are loaded, and zero rows reads as quiet when it actually means blind. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0190, 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=* ((type="PATH" AND name="*/etc/pam.d/*") OR (type="PATH" AND (name="*/pam_google_authenticator.so" OR name="*/pam_duo.so" OR name="*/pam_oath.so" OR name="*/pam_yubico.so" OR name="*/pam_u2f.so" OR name="*/pam_radius_auth.so")))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE ((TO_LOWER(type) == "path" AND TO_LOWER(name) LIKE "*/etc/pam.d/*") OR (TO_LOWER(type) == "path" AND (TO_LOWER(name) LIKE "*/pam_google_authenticator.so" OR TO_LOWER(name) LIKE "*/pam_duo.so" OR TO_LOWER(name) LIKE "*/pam_oath.so" OR TO_LOWER(name) LIKE "*/pam_yubico.so" OR TO_LOWER(name) LIKE "*/pam_u2f.so" OR TO_LOWER(name) LIKE "*/pam_radius_auth.so")))

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. -->  <!-- 2 rules: the Sigma condition ORs across different fields,       which one rule cannot express. Any one matching is a hit. -->  <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/pam\.d/</field>    <description>PAM configuration or MFA module file touched under /etc/pam.d (1/2)</description>    <mitre>      <id>T1556.006</id>    </mitre>  </rule>   <rule id="100001" 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)(/pam_google_authenticator\.so$|/pam_duo\.so$|/pam_oath\.so$|/pam_yubico\.so$|/pam_u2f\.so$|/pam_radius_auth\.so$)</field>    <description>PAM configuration or MFA module file touched under /etc/pam.d (2/2)</description>    <mitre>      <id>T1556.006</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.