Detection rules › Sublime MQL

Suspicious recipients pattern with NLU credential theft indicators

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

Detects messages with undisclosed recipients (likely all bcc) and NLU identified a credential theft intent with medium to high confidence from a suspicious low reputation link domain

Threat classification

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

CategoryValues
Attack typesCredential Phishing
Tactics and techniquesEvasion

Event coverage

Rule body MQL

type.inbound
and (
  length(recipients.to) == 0
  or all(recipients.to, strings.ilike(.display_name, "undisclosed?recipients"))
)
and length(recipients.cc) == 0
and 0 <= length(recipients.bcc) <= 1
and any(body.links, .href_url.domain.root_domain not in $tranco_1m)
and (
  any(body.links,
      regex.icontains(.display_text,
                      '(view|click|download|goto)?(attachment|download|file|online|document)s?'
      )
      or all(body.links, regex.match(.display_text, "[A-Z ]+"))
  )
)
and any(ml.nlu_classifier(body.current_thread.text).intents,
        .name in ("cred_theft") and .confidence in ("medium", "high")
)

Detection logic

Scope: inbound message.

Detects messages with undisclosed recipients (likely all bcc) and NLU identified a credential theft intent with medium to high confidence from a suspicious low reputation link domain

  1. inbound message
  2. any of:
    • length(recipients.to) is 0
    • all of recipients.to where:
      • .display_name matches 'undisclosed?recipients'
  3. length(recipients.cc) is 0
  4. all of:
    • length(recipients.bcc) ≥ 0
    • length(recipients.bcc) ≤ 1
  5. any of body.links where:
    • .href_url.domain.root_domain not in $tranco_1m
  6. any of body.links where any holds:
    • .display_text matches '(view|click|download|goto)?(attachment|download|file|online|document)s?'
    • all of body.links where:
      • .display_text matches '[A-Z ]+'
  7. any of ml.nlu_classifier(body.current_thread.text).intents where all hold:
    • .name in ('cred_theft')
    • .confidence in ('medium', 'high')

Inspects: body.current_thread.text, body.links, body.links[].display_text, body.links[].href_url.domain.root_domain, recipients.bcc, recipients.cc, recipients.to, recipients.to[].display_name, type.inbound. Sensors: ml.nlu_classifier, regex.icontains, regex.match, strings.ilike. Reference lists: $tranco_1m.

Indicators matched (6)

FieldMatchValue
strings.ilikesubstringundisclosed?recipients
regex.icontainsregex(view|click|download|goto)?(attachment|download|file|online|document)s?
regex.matchregex[A-Z ]+
ml.nlu_classifier(body.current_thread.text).intents[].namemembercred_theft
ml.nlu_classifier(body.current_thread.text).intents[].confidencemembermedium
ml.nlu_classifier(body.current_thread.text).intents[].confidencememberhigh