Detection rules › Sublime MQL

COVID-19 themed fraud with sender and reply-to mismatch or compensation award

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

Detects potential COVID-19 themed BEC/Fraud scams by analyzing text within the email body for mentions of COVID-19 assistance, compensation, or awards from mismatched senders and other suspicious language.

Threat classification

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

CategoryValues
Attack typesBEC/Fraud
Tactics and techniquesFree email provider, Social engineering

Event coverage

Rule body MQL

type.inbound

// mismatched sender (From) and Reply-to + freemail
and any(headers.reply_to,
        length(headers.reply_to) > 0
        and all(headers.reply_to,
                .email.domain.root_domain != sender.email.domain.root_domain
                and .email.domain.root_domain in $free_email_providers
        )
)

// use of honorific
and regex.icontains(body.current_thread.text,
                    '(?:Mr|Mrs|Ms|Miss|Dr|Prof|Sir|Lady|Rev)\.?[ \t]+',
                    'Dear Sir'
)

// mention of covid or an international organization
and regex.icontains(body.current_thread.text,
                    'international (court of justice|monetary fund)',
                    'united nations',
                    'western union',
                    'world bank',
                    'world health organization',
                    'interpol',
                    'treasury',
                    '\bFEMA\b',
                    '\bIMF\b'
)

// and mention of covid in subject or body
and (
  regex.icontains(subject.subject, 'covid(.{0,5}19)?\b')
  or regex.icontains(body.current_thread.text, 'covid(.{0,5}19)?\b')
)

// Check for compensation or award related language
and (
  2 of (
    any(ml.nlu_classifier(body.current_thread.text).entities,
        .name == "urgency"
    ),
    any(ml.nlu_classifier(body.current_thread.text).entities,
        .name == "request"
    ),
    any(ml.nlu_classifier(body.current_thread.text).entities,
        .name == "financial"
    )
  )
  or regex.icontains(subject.subject,
                     'compensation.{0,20}(award|fund)',
                     'covid.{0,20}(compensation|award)',
                     'selected.{0,30}(compensation|award)',
                     'claim your award',
                     'reference no'
  )
  or regex.icontains(body.current_thread.text,
                     'compensation.{0,20}(award|fund)',
                     'covid.{0,20}(compensation|award)',
                     'selected.{0,30}(compensation|award)',
                     'claim your award',
                     'reference no\W\s*[^\s]*cov(?:id)?(?:.{0,5}19)?\b'
  )
)

// 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.

Detects potential COVID-19 themed BEC/Fraud scams by analyzing text within the email body for mentions of COVID-19 assistance, compensation, or awards from mismatched senders and other suspicious language.

  1. inbound message
  2. any of headers.reply_to where all hold:
    • length(headers.reply_to) > 0
    • all of headers.reply_to where all hold:
      • .email.domain.root_domain is not sender.email.domain.root_domain
      • .email.domain.root_domain in $free_email_providers
  3. body.current_thread.text matches any of 2 patterns
    • (?:Mr|Mrs|Ms|Miss|Dr|Prof|Sir|Lady|Rev)\.?[ \t]+
    • Dear Sir
  4. body.current_thread.text matches any of 9 patterns
    • international (court of justice|monetary fund)
    • united nations
    • western union
    • world bank
    • world health organization
    • interpol
    • treasury
    • \bFEMA\b
    • \bIMF\b
  5. any of:
    • subject.subject matches 'covid(.{0,5}19)?\\b'
    • body.current_thread.text matches 'covid(.{0,5}19)?\\b'
  6. any of:
    • at least 2 of:
      • any of ml.nlu_classifier(body.current_thread.text).entities where:
        • .name is 'urgency'
      • any of ml.nlu_classifier(body.current_thread.text).entities where:
        • .name is 'request'
      • any of ml.nlu_classifier(body.current_thread.text).entities where:
        • .name is 'financial'
    • subject.subject matches any of 5 patterns
      • compensation.{0,20}(award|fund)
      • covid.{0,20}(compensation|award)
      • selected.{0,30}(compensation|award)
      • claim your award
      • reference no
    • body.current_thread.text matches any of 5 patterns
      • compensation.{0,20}(award|fund)
      • covid.{0,20}(compensation|award)
      • selected.{0,30}(compensation|award)
      • claim your award
      • reference no\W\s*[^\s]*cov(?:id)?(?:.{0,5}19)?\b
  7. 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, headers.reply_to, headers.reply_to[].email.domain.root_domain, sender.email.domain.root_domain, subject.subject, type.inbound. Sensors: ml.nlu_classifier, regex.icontains. Reference lists: $free_email_providers, $high_trust_sender_root_domains.

Indicators matched (21)

FieldMatchValue
regex.icontainsregex(?:Mr|Mrs|Ms|Miss|Dr|Prof|Sir|Lady|Rev)\.?[ \t]+
regex.icontainsregexDear Sir
regex.icontainsregexinternational (court of justice|monetary fund)
regex.icontainsregexunited nations
regex.icontainsregexwestern union
regex.icontainsregexworld bank
regex.icontainsregexworld health organization
regex.icontainsregexinterpol
regex.icontainsregextreasury
regex.icontainsregex\bFEMA\b
regex.icontainsregex\bIMF\b
regex.icontainsregexcovid(.{0,5}19)?\b
9 more
ml.nlu_classifier(body.current_thread.text).entities[].nameequalsurgency
ml.nlu_classifier(body.current_thread.text).entities[].nameequalsrequest
ml.nlu_classifier(body.current_thread.text).entities[].nameequalsfinancial
regex.icontainsregexcompensation.{0,20}(award|fund)
regex.icontainsregexcovid.{0,20}(compensation|award)
regex.icontainsregexselected.{0,30}(compensation|award)
regex.icontainsregexclaim your award
regex.icontainsregexreference no
regex.icontainsregexreference no\W\s*[^\s]*cov(?:id)?(?:.{0,5}19)?\b