Detection rules › Sublime MQL

Cyrillic vowel substitution in subject or display name from unknown sender

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

This rule detects unsolicited messages containing a mix of Cyrillic and Latin characters in the subject or sender's name while excluding emails from Russian domains and specific Google Calendar notification bounce emails.

Threat classification

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

CategoryValues
Attack typesCredential Phishing
Tactics and techniquesEvasion, Social engineering, Spoofing

Event coverage

Rule body MQL

type.inbound

// message contains between 1 and 9 links
and (
  0 < length(body.links) < 10
  or (
    length(body.links) == 0
    and length(attachments) > 0
    and body.current_thread.text == ""
  )
)

//  display name or subject contains Cyrillic vowels in addition to standard letters
and any([subject.subject, sender.display_name],
        regex.icontains(., '(а|е|и|о|у)') and regex.icontains(., '[a-z]')
)

// and the senders tld or return path is not "ru"
and not (
  sender.email.domain.tld == "ru" or headers.return_path.domain.tld == "ru"
)
// and the return path is not 'calendar-server.bounces.google.com'
and not headers.return_path.domain.domain == 'calendar-server.bounces.google.com'
and not headers.return_path.domain.domain == 'identity-reachout.bounces.google.com'
and not headers.return_path.domain.domain == 'bounce-sg.zoom.us'
and not headers.return_path.domain.domain == 'bounce.dataminr.com'
and not headers.return_path.domain.domain == 'mail-us.atlassian.net'

// the message is unsolicited and no false positives
and (
  not profile.by_sender().solicited
  or (
    length(headers.reply_to) > 0
    and all(headers.reply_to, .email.email not in $recipient_emails)
  )
)
and not profile.by_sender().any_messages_benign

Detection logic

Scope: inbound message.

This rule detects unsolicited messages containing a mix of Cyrillic and Latin characters in the subject or sender's name while excluding emails from Russian domains and specific Google Calendar notification bounce emails.

  1. inbound message
  2. any of:
    • all of:
      • length(body.links) > 0
      • length(body.links) < 10
    • all of:
      • length(body.links) is 0
      • length(attachments) > 0
      • body.current_thread.text is ''
  3. any of [subject.subject, sender.display_name] where all hold:
    • . matches '(а|е|и|о|у)'
    • . matches '[a-z]'
  4. none of:
    • sender.email.domain.tld is 'ru'
    • headers.return_path.domain.tld is 'ru'
  5. not:
    • headers.return_path.domain.domain is 'calendar-server.bounces.google.com'
  6. not:
    • headers.return_path.domain.domain is 'identity-reachout.bounces.google.com'
  7. not:
    • headers.return_path.domain.domain is 'bounce-sg.zoom.us'
  8. not:
    • headers.return_path.domain.domain is 'bounce.dataminr.com'
  9. not:
    • headers.return_path.domain.domain is 'mail-us.atlassian.net'
  10. any of:
    • not:
      • profile.by_sender().solicited
    • all of:
      • length(headers.reply_to) > 0
      • all of headers.reply_to where:
        • .email.email not in $recipient_emails
  11. not:
    • profile.by_sender().any_messages_benign

Inspects: body.current_thread.text, body.links, headers.reply_to, headers.reply_to[].email.email, headers.return_path.domain.domain, headers.return_path.domain.tld, sender.display_name, sender.email.domain.tld, subject.subject, type.inbound. Sensors: profile.by_sender, regex.icontains. Reference lists: $recipient_emails.

Indicators matched (10)

FieldMatchValue
body.current_thread.textequals
regex.icontainsregex(а|е|и|о|у)
regex.icontainsregex[a-z]
sender.email.domain.tldequalsru
headers.return_path.domain.tldequalsru
headers.return_path.domain.domainequalscalendar-server.bounces.google.com
headers.return_path.domain.domainequalsidentity-reachout.bounces.google.com
headers.return_path.domain.domainequalsbounce-sg.zoom.us
headers.return_path.domain.domainequalsbounce.dataminr.com
headers.return_path.domain.domainequalsmail-us.atlassian.net