Detection rules › Sublime MQL

Brand impersonation: FINRA

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

Impersonation of the Financial Industry Regulatory Authority (FINRA)

Threat classification

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

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

Event coverage

Rule body MQL

type.inbound
and (
  strings.ilevenshtein(sender.display_name, 'finra') <= 1
  or strings.ilevenshtein(sender.email.domain.sld, 'finra') <= 1
)
and any(ml.nlu_classifier(body.current_thread.text).entities,
        .name == "financial"
)
and length(ml.nlu_classifier(body.current_thread.text).intents) > 0
and sender.email.domain.root_domain not in~ (
  'finra.org',
  'finrax.com',
  'finca.wine', // a wine company
  'finta.com' // unrelated domain caught by levenshtein 
)
and (
  (
    profile.by_sender().prevalence in ("new", "outlier")
    and not profile.by_sender().solicited
  )
  or (
    profile.by_sender().any_messages_malicious_or_spam
    and not profile.by_sender().any_messages_benign
  )
)

Detection logic

Scope: inbound message.

Impersonation of the Financial Industry Regulatory Authority (FINRA)

  1. inbound message
  2. any of:
    • sender.display_name is similar to 'finra'
    • sender.email.domain.sld is similar to 'finra'
  3. any of ml.nlu_classifier(body.current_thread.text).entities where:
    • .name is 'financial'
  4. length(ml.nlu_classifier(body.current_thread.text).intents) > 0
  5. sender.email.domain.root_domain not in ('finra.org', 'finrax.com', 'finca.wine', 'finta.com')
  6. any of:
    • all of:
      • profile.by_sender().prevalence in ('new', 'outlier')
      • not:
        • profile.by_sender().solicited
    • all of:
      • profile.by_sender().any_messages_malicious_or_spam
      • not:
        • profile.by_sender().any_messages_benign

Inspects: body.current_thread.text, sender.display_name, sender.email.domain.root_domain, sender.email.domain.sld, type.inbound. Sensors: ml.nlu_classifier, profile.by_sender, strings.ilevenshtein.

Indicators matched (6)

FieldMatchValue
strings.ilevenshteinfuzzyfinra
ml.nlu_classifier(body.current_thread.text).entities[].nameequalsfinancial
sender.email.domain.root_domainmemberfinra.org
sender.email.domain.root_domainmemberfinrax.com
sender.email.domain.root_domainmemberfinca.wine
sender.email.domain.root_domainmemberfinta.com