Detection rules › Sublime MQL

Brand impersonation: Interac

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

Impersonation of the Canadian interbanking network Interac. Seen in the wild impersonating carbon tax rebates and tax return refunds.

Threat classification

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

CategoryValues
Attack typesBEC/Fraud
Tactics and techniquesImpersonation: Brand, Lookalike domain, Social engineering

Event coverage

Rule body MQL

type.inbound
and (
  strings.ilike(sender.display_name, '*interac e-transfer*')
  or strings.ilike(sender.display_name, "*interac e?trasfer*")
  or strings.ilike(subject.subject, '*interac e-transfer*')
  or strings.ilevenshtein(sender.display_name, 'interac e-transfer') <= 2
)
and sender.email.domain.root_domain not in ('interac.ca')
and 1 of (
  any(ml.nlu_classifier(body.current_thread.text).entities,
      .name == "org" and strings.icontains(.text, "interac")
  ),
  any(ml.nlu_classifier(body.current_thread.text).entities,
      .name == "financial"
  ),
)
and not profile.by_sender().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.

Impersonation of the Canadian interbanking network Interac. Seen in the wild impersonating carbon tax rebates and tax return refunds.

  1. inbound message
  2. any of:
    • sender.display_name matches '*interac e-transfer*'
    • sender.display_name matches '*interac e?trasfer*'
    • subject.subject matches '*interac e-transfer*'
    • sender.display_name is similar to 'interac e-transfer'
  3. sender.email.domain.root_domain not in ('interac.ca')
  4. at least 1 of:
    • any of ml.nlu_classifier(body.current_thread.text).entities where all hold:
      • .name is 'org'
      • .text contains 'interac'
    • any of ml.nlu_classifier(body.current_thread.text).entities where:
      • .name is 'financial'
  5. not:
    • profile.by_sender().solicited
  6. 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.current_thread.text, headers.auth_summary.dmarc.pass, sender.display_name, sender.email.domain.root_domain, subject.subject, type.inbound. Sensors: ml.nlu_classifier, profile.by_sender, strings.icontains, strings.ilevenshtein, strings.ilike. Reference lists: $high_trust_sender_root_domains.

Indicators matched (7)

FieldMatchValue
strings.ilikesubstring*interac e-transfer*
strings.ilikesubstring*interac e?trasfer*
strings.ilevenshteinfuzzyinterac e-transfer
sender.email.domain.root_domainmemberinterac.ca
ml.nlu_classifier(body.current_thread.text).entities[].nameequalsorg
strings.icontainssubstringinterac
ml.nlu_classifier(body.current_thread.text).entities[].nameequalsfinancial