Detection rules › Sublime MQL

Brand impersonation: Wells Fargo

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

Impersonation of Wells Fargo Bank.

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 (
  sender.display_name =~ 'wellsfargo'
  or strings.ilevenshtein(strings.replace_confusables(sender.display_name),
                          'wellsfargo'
  ) <= 1
  or regex.icontains(strings.replace_confusables(sender.display_name),
                     'we(ll|ii)s?\s?farg(o|o͙)'
  )
  or strings.ilike(sender.email.domain.domain, '*wellsfargo*')
  or strings.ilike(subject.subject, '*wells fargo security*')
  or strings.ilike(body.plain.raw, '*wells fargo security team*')
  or strings.ilike(body.html.inner_text, '*wells fargo security team*')
  // Wells Fargo & Company (WFC)
  or (
    regex.icontains(sender.display_name, '\bW.?F.?C\b')
    and any([sender.display_name, subject.base],
            strings.ilike(.,
                          '*bank*',
                          '*security*',
                          '*processing*',
                          '*approval*',
                          '*refund*'
            )
    )
  )
)
and sender.email.domain.root_domain not in~ (
  'wellsfargo.com',
  'wellsfargoadvisors.com',
  'transunion.com',
  'wellsfargoemail.com',
  'wellsfargorewards.com',
  'comcast-spectacor.com',
  'investordelivery.com',
  'comcastspectacor.com',
  'wfadvisors.com',
  'wellsfargomerchantservicesllc.com'
)
and (
  sender.email.email not in $recipient_emails
  or regex.icontains(sender.email.email, "no.?reply")
)

// 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
  or sender.email.email in (
    "drive-shares-noreply@google.com",
    "drive-shares-dm-noreply@google.com"
  ) // Google Drive abuse has been observed
)

Detection logic

Scope: inbound message.

Impersonation of Wells Fargo Bank.

  1. inbound message
  2. any of:
    • sender.display_name is 'wellsfargo'
    • strings.replace_confusables(sender.display_name) is similar to 'wellsfargo'
    • strings.replace_confusables(sender.display_name) matches 'we(ll|ii)s?\\s?farg(o|o͙)'
    • sender.email.domain.domain matches '*wellsfargo*'
    • subject.subject matches '*wells fargo security*'
    • body.plain.raw matches '*wells fargo security team*'
    • body.html.inner_text matches '*wells fargo security team*'
    • all of:
      • sender.display_name matches '\\bW.?F.?C\\b'
      • any of [sender.display_name, subject.base] where:
        • . matches any of 5 patterns
          • *bank*
          • *security*
          • *processing*
          • *approval*
          • *refund*
  3. sender.email.domain.root_domain not in ('wellsfargo.com', 'wellsfargoadvisors.com', 'transunion.com', 'wellsfargoemail.com', 'wellsfargorewards.com', 'comcast-spectacor.com', 'investordelivery.com', 'comcastspectacor.com', 'wfadvisors.com', 'wellsfargomerchantservicesllc.com')
  4. any of:
    • sender.email.email not in $recipient_emails
    • sender.email.email matches 'no.?reply'
  5. 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
    • sender.email.email in ('drive-shares-noreply@google.com', 'drive-shares-dm-noreply@google.com')

Inspects: body.html.inner_text, body.plain.raw, headers.auth_summary.dmarc.pass, sender.display_name, sender.email.domain.domain, sender.email.domain.root_domain, sender.email.email, subject.base, subject.subject, type.inbound. Sensors: regex.icontains, strings.ilevenshtein, strings.ilike, strings.replace_confusables. Reference lists: $high_trust_sender_root_domains, $recipient_emails.

Indicators matched (25)

FieldMatchValue
sender.display_nameequalswellsfargo
strings.ilevenshteinfuzzywellsfargo
regex.icontainsregexwe(ll|ii)s?\s?farg(o|o͙)
strings.ilikesubstring*wellsfargo*
strings.ilikesubstring*wells fargo security*
strings.ilikesubstring*wells fargo security team*
regex.icontainsregex\bW.?F.?C\b
strings.ilikesubstring*bank*
strings.ilikesubstring*security*
strings.ilikesubstring*processing*
strings.ilikesubstring*approval*
strings.ilikesubstring*refund*
13 more
sender.email.domain.root_domainmemberwellsfargo.com
sender.email.domain.root_domainmemberwellsfargoadvisors.com
sender.email.domain.root_domainmembertransunion.com
sender.email.domain.root_domainmemberwellsfargoemail.com
sender.email.domain.root_domainmemberwellsfargorewards.com
sender.email.domain.root_domainmembercomcast-spectacor.com
sender.email.domain.root_domainmemberinvestordelivery.com
sender.email.domain.root_domainmembercomcastspectacor.com
sender.email.domain.root_domainmemberwfadvisors.com
sender.email.domain.root_domainmemberwellsfargomerchantservicesllc.com
regex.icontainsregexno.?reply
sender.email.emailmemberdrive-shares-noreply@google.com
sender.email.emailmemberdrive-shares-dm-noreply@google.com