Detection rules › Sublime MQL

Brand impersonation: Exodus

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

Attack impersonating Exodus Wallet.

Threat classification

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

CategoryValues
Attack typesCredential Phishing
Tactics and techniquesImpersonation: Brand, Social engineering

Event coverage

Rule body MQL

type.inbound
and (
  strings.ilike(sender.display_name, "*exodus*")
  or (
    strings.ilike(sender.email.domain.root_domain, "*exodus*")
    and network.whois(sender.email.domain).days_old <= 30
  )
)
and sender.email.domain.root_domain not in (
  "exodus.com",
  "exodus.io",
  "exodusescaperoom.com"
)
and sender.email.email not in $recipient_emails
and (
  any(ml.nlu_classifier(body.current_thread.text).intents, .name != "benign")
  or any(ml.nlu_classifier(body.current_thread.text).entities,
         .text == "wallet"
  )
)

Detection logic

Scope: inbound message.

Attack impersonating Exodus Wallet.

  1. inbound message
  2. any of:
    • sender.display_name matches '*exodus*'
    • all of:
      • sender.email.domain.root_domain matches '*exodus*'
      • network.whois(sender.email.domain).days_old ≤ 30
  3. sender.email.domain.root_domain not in ('exodus.com', 'exodus.io', 'exodusescaperoom.com')
  4. sender.email.email not in $recipient_emails
  5. any of:
    • any of ml.nlu_classifier(body.current_thread.text).intents where:
      • .name is not 'benign'
    • any of ml.nlu_classifier(body.current_thread.text).entities where:
      • .text is 'wallet'

Inspects: body.current_thread.text, sender.display_name, sender.email.domain, sender.email.domain.root_domain, sender.email.email, type.inbound. Sensors: ml.nlu_classifier, network.whois, strings.ilike. Reference lists: $recipient_emails.

Indicators matched (5)

FieldMatchValue
strings.ilikesubstring*exodus*
sender.email.domain.root_domainmemberexodus.com
sender.email.domain.root_domainmemberexodus.io
sender.email.domain.root_domainmemberexodusescaperoom.com
ml.nlu_classifier(body.current_thread.text).entities[].textequalswallet