Detection rules › Sublime MQL

Link: Referrer anonymization service from untrusted sender

Severity
medium
Type
rule
Source
github.com/sublime-security/sublime-rules

Detects messages containing links that utilize a referrer anonymization service. The rule examines senders who are either not in a trusted domain list or have failed DMARC authentication despite being from a trusted domain.

Threat classification

Sublime's own taxonomy (not MITRE ATT&CK).

CategoryValues
Attack typesCredential Phishing
Tactics and techniquesOpen redirect, Evasion

Event coverage

Rule body MQL

type.inbound
and any(body.links,
        // href.li
        (
          .href_url.domain.root_domain == "href.li"
          and .href_url.query_params is not null
        )
        or "href_li" in .href_url.rewrite.encoders
        // deref-mail 
        or (
          (
            (
              strings.istarts_with(.href_url.path, '/mail/client/')
              and strings.icontains(.href_url.query_params, 'redirectUrl=')
            )
            or "deref_mail" in .href_url.rewrite.encoders
          )
          // this seems to be a common behavior for gmx users
          and not sender.email.domain.domain in ("gmx.de", "gmx.net")
          and not (
            sender.email.domain.domain == "mail.com"
            and any(headers.domains, .root_domain == "mail.com")
          )
          // remove any links that include org domains
          and not any($org_domains,
                      strings.icontains(..href_url.query_params, .)
          )
          // remove any links that are to common "signature" sites
          // this does open up some FNs due to abuse of redirects of these sites
          // if FNs are obsevered, we should tighten the logic of these to account
          // for the redirect behavior
          and not any(['facebook.com', 'x.com', 'twitter.com', 'instagram.com'],
                      strings.icontains(..href_url.query_params, .)
          )

          // remove links which contain the sender domain if the sender doesn't have any malicious messages
          and not (
            strings.icontains(.href_url.query_params,
                              sender.email.domain.root_domain
            )
            and not profile.by_sender_domain().any_messages_malicious_or_spam
          )
        )
)
// apply sender profile elements specific to the sender_email
and (
  profile.by_sender_email().prevalence == "new"

  // if they aren't new, there are some condition that still result in a match
  or (
    // and have been flagged previous
    profile.by_sender_email().any_messages_malicious_or_spam
    // without any false positives
    and not profile.by_sender_email().any_messages_benign
  )
)
// negate solicited senders
and not profile.by_sender_email().solicited
// negate highly trusted sender domains unless they fail DMARC authentication
and (
  (
    sender.email.domain.root_domain in $high_trust_sender_root_domains
    and not headers.auth_summary.dmarc.pass
  )
  or sender.email.domain.root_domain not in $high_trust_sender_root_domains
)

Detection logic

Scope: inbound message.

Detects messages containing links that utilize a referrer anonymization service. The rule examines senders who are either not in a trusted domain list or have failed DMARC authentication despite being from a trusted domain.

  1. inbound message
  2. any of body.links where any holds:
    • all of:
      • .href_url.domain.root_domain is 'href.li'
      • .href_url.query_params is set
    • .href_url.rewrite.encoders contains 'href_li'
    • all of:
      • any of:
        • all of:
          • .href_url.path starts with '/mail/client/'
          • .href_url.query_params contains 'redirectUrl='
        • .href_url.rewrite.encoders contains 'deref_mail'
      • not:
        • sender.email.domain.domain in ('gmx.de', 'gmx.net')
      • not:
        • all of:
          • sender.email.domain.domain is 'mail.com'
          • any of headers.domains where:
            • .root_domain is 'mail.com'
      • not:
        • any of $org_domains where:
          • strings.icontains(.href_url.query_params)
      • not:
        • any of ['facebook.com', 'x.com', 'twitter.com', 'instagram.com'] where:
          • strings.icontains(.href_url.query_params)
      • not:
        • all of:
          • strings.icontains(.href_url.query_params)
          • not:
            • profile.by_sender_domain().any_messages_malicious_or_spam
  3. any of:
    • profile.by_sender_email().prevalence is 'new'
    • all of:
      • profile.by_sender_email().any_messages_malicious_or_spam
      • not:
        • profile.by_sender_email().any_messages_benign
  4. not:
    • profile.by_sender_email().solicited
  5. any of:
    • all of:
      • sender.email.domain.root_domain in $high_trust_sender_root_domains
      • not:
        • headers.auth_summary.dmarc.pass
    • sender.email.domain.root_domain not in $high_trust_sender_root_domains

Inspects: body.links, body.links[].href_url.domain.root_domain, body.links[].href_url.path, body.links[].href_url.query_params, body.links[].href_url.rewrite.encoders, headers.auth_summary.dmarc.pass, headers.domains, headers.domains[].root_domain, sender.email.domain.domain, sender.email.domain.root_domain, type.inbound. Sensors: profile.by_sender_domain, profile.by_sender_email, strings.icontains, strings.istarts_with. Reference lists: $high_trust_sender_root_domains, $org_domains.

Indicators matched (9)

FieldMatchValue
body.links[].href_url.domain.root_domainequalshref.li
body.links[].href_url.rewrite.encoderscontainshref_li
strings.istarts_withprefix/mail/client/
strings.icontainssubstringredirectUrl=
body.links[].href_url.rewrite.encoderscontainsderef_mail
sender.email.domain.domainmembergmx.de
sender.email.domain.domainmembergmx.net
sender.email.domain.domainequalsmail.com
headers.domains[].root_domainequalsmail.com