Detection rules › Sublime MQL

Brand impersonation: Netflix

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

Impersonation of Netflix.

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 (
  // obfuscated sender display name
  (
    sender.display_name is not null
    and (
      regex.icontains(strings.replace_confusables(sender.display_name),
                      '[nm]etf[li][il]x'
      )
      or strings.ilevenshtein(strings.replace_confusables(sender.display_name),
                              'netflix'
      ) <= 1
      or regex.icontains(strings.replace_confusables(sender.display_name),
                         'n.{0,3}e.{0,3}t.{0,3}f.{0,3}l.{0,3}i.{0,3}x.{0,3}'
      )
    )
  )
  // obfuscated sender email domain
  or regex.icontains(strings.replace_confusables(sender.email.domain.domain),
                     '[nm]etf[li][il]x'
  )
  // logo detection on message screenshot (no link analysis)
  or (
    any(ml.logo_detect(file.message_screenshot()).brands,
        .name == "Netflix" and .confidence in ("medium", "high")
    )
    and (
      // non NLU based keywords on the screenshot
      regex.icontains(beta.ocr(file.message_screenshot()).text,
                      'suspen(?:ded|sion)'
      )
      or 
      // combo of NLU cred_theft + financial + Customer Service and Support
      (
        any(ml.nlu_classifier(body.current_thread.text).intents,
            .name == "cred_theft"
        )
        and any(ml.nlu_classifier(body.current_thread.text).entities,
                .name == "financial"
        )
        and any(ml.nlu_classifier(body.current_thread.text).topics,
                .name == "Customer Service and Support"
        )
      )
    )
  )
  // Address Detection
  or 2 of (
    strings.icontains(body.current_thread.text, 'Netflix, Inc'),
    strings.icontains(body.current_thread.text, '100 Winchester Circle'),
    strings.icontains(body.current_thread.text, 'Los Gatos, CA 95032')
  )
  // unusual recipient pattern + logo detect + credphish dispoistion
  or (
    (
      length(recipients.to) == 0
      or (
        all(recipients.to, .email.domain.valid == false)
        and all(recipients.cc, .email.domain.valid == false)
      )
    )
    and any(ml.logo_detect(file.message_screenshot()).brands,
            .name == "Netflix" and .confidence in ("medium", "high")
    )
    and (
      any(body.links,
          ml.link_analysis(.).credphish.disposition == "phishing"
          and ml.link_analysis(.).credphish.confidence in ("medium", "high")
      )
    )
  )
)
// negation of legit domains
and not (
  sender.email.domain.root_domain in (
    'netflix.com',
    'dvd.com',
    'netflixfamily.com',
    'netflixpreviewclub.com',
    'netflixanimation.com',
    'envoy.com',
    'lexisnexis.com',
    'netflix.shop',
    'netflixcontractors.com', // owned by netflix
    'netflixevents.com', // owned by netflix
    'netelixir.com', // unrelated marketing
    'netflixhouse.com', // owned by netflix
    'instagram.com',
    'netflix.net',
    'netflixshopsupport.com', // owned by netflix
    'netflixpartner.com', // owned by netflix
  )
  and coalesce(headers.auth_summary.dmarc.pass, false)
)
and not (
  sender.email.domain.domain in (
    'netflix.zendesk.com' // netflix actual support
  )
  and coalesce(headers.auth_summary.dmarc.pass, false)
)
and not profile.by_sender_email().solicited

Detection logic

Scope: inbound message.

Impersonation of Netflix.

  1. inbound message
  2. any of:
    • all of:
      • sender.display_name is set
      • any of:
        • strings.replace_confusables(sender.display_name) matches '[nm]etf[li][il]x'
        • strings.replace_confusables(sender.display_name) is similar to 'netflix'
        • strings.replace_confusables(sender.display_name) matches 'n.{0,3}e.{0,3}t.{0,3}f.{0,3}l.{0,3}i.{0,3}x.{0,3}'
    • strings.replace_confusables(sender.email.domain.domain) matches '[nm]etf[li][il]x'
    • all of:
      • any of ml.logo_detect(file.message_screenshot()).brands where all hold:
        • .name is 'Netflix'
        • .confidence in ('medium', 'high')
      • any of:
        • beta.ocr(file.message_screenshot()).text matches 'suspen(?:ded|sion)'
        • all of:
          • any of ml.nlu_classifier(body.current_thread.text).intents where:
            • .name is 'cred_theft'
          • any of ml.nlu_classifier(body.current_thread.text).entities where:
            • .name is 'financial'
          • any of ml.nlu_classifier(body.current_thread.text).topics where:
            • .name is 'Customer Service and Support'
    • at least 2 of:
      • body.current_thread.text contains 'Netflix, Inc'
      • body.current_thread.text contains '100 Winchester Circle'
      • body.current_thread.text contains 'Los Gatos, CA 95032'
    • all of:
      • any of:
        • length(recipients.to) is 0
        • all of:
          • all of recipients.to where:
            • .email.domain.valid is False
          • all of recipients.cc where:
            • .email.domain.valid is False
      • any of ml.logo_detect(file.message_screenshot()).brands where all hold:
        • .name is 'Netflix'
        • .confidence in ('medium', 'high')
      • any of body.links where all hold:
        • ml.link_analysis(.).credphish.disposition is 'phishing'
        • ml.link_analysis(.).credphish.confidence in ('medium', 'high')
  3. not:
    • all of:
      • sender.email.domain.root_domain in ('netflix.com', 'dvd.com', 'netflixfamily.com', 'netflixpreviewclub.com', 'netflixanimation.com', 'envoy.com', 'lexisnexis.com', 'netflix.shop', 'netflixcontractors.com', 'netflixevents.com', 'netelixir.com', 'netflixhouse.com', 'instagram.com', 'netflix.net', 'netflixshopsupport.com', 'netflixpartner.com')
      • coalesce(headers.auth_summary.dmarc.pass)
  4. not:
    • all of:
      • sender.email.domain.domain in ('netflix.zendesk.com')
      • coalesce(headers.auth_summary.dmarc.pass)
  5. not:
    • profile.by_sender_email().solicited

Inspects: body.current_thread.text, body.links, headers.auth_summary.dmarc.pass, recipients.cc, recipients.cc[].email.domain.valid, recipients.to, recipients.to[].email.domain.valid, sender.display_name, sender.email.domain.domain, sender.email.domain.root_domain, type.inbound. Sensors: beta.ocr, file.message_screenshot, ml.link_analysis, ml.logo_detect, ml.nlu_classifier, profile.by_sender_email, regex.icontains, strings.icontains, strings.ilevenshtein, strings.replace_confusables.

Indicators matched (30)

FieldMatchValue
regex.icontainsregex[nm]etf[li][il]x
strings.ilevenshteinfuzzynetflix
regex.icontainsregexn.{0,3}e.{0,3}t.{0,3}f.{0,3}l.{0,3}i.{0,3}x.{0,3}
ml.logo_detect(file.message_screenshot()).brands[].nameequalsNetflix
ml.logo_detect(file.message_screenshot()).brands[].confidencemembermedium
ml.logo_detect(file.message_screenshot()).brands[].confidencememberhigh
regex.icontainsregexsuspen(?:ded|sion)
ml.nlu_classifier(body.current_thread.text).intents[].nameequalscred_theft
ml.nlu_classifier(body.current_thread.text).entities[].nameequalsfinancial
ml.nlu_classifier(body.current_thread.text).topics[].nameequalsCustomer Service and Support
strings.icontainssubstringNetflix, Inc
strings.icontainssubstring100 Winchester Circle
18 more
strings.icontainssubstringLos Gatos, CA 95032
sender.email.domain.root_domainmembernetflix.com
sender.email.domain.root_domainmemberdvd.com
sender.email.domain.root_domainmembernetflixfamily.com
sender.email.domain.root_domainmembernetflixpreviewclub.com
sender.email.domain.root_domainmembernetflixanimation.com
sender.email.domain.root_domainmemberenvoy.com
sender.email.domain.root_domainmemberlexisnexis.com
sender.email.domain.root_domainmembernetflix.shop
sender.email.domain.root_domainmembernetflixcontractors.com
sender.email.domain.root_domainmembernetflixevents.com
sender.email.domain.root_domainmembernetelixir.com
sender.email.domain.root_domainmembernetflixhouse.com
sender.email.domain.root_domainmemberinstagram.com
sender.email.domain.root_domainmembernetflix.net
sender.email.domain.root_domainmembernetflixshopsupport.com
sender.email.domain.root_domainmembernetflixpartner.com
sender.email.domain.domainmembernetflix.zendesk.com