Detection rules › Sublime MQL

Brand Impersonation: Shein

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

Detects suspicious Shein-branded communications using display name impersonation, logo detection, and deceptive content analysis. Includes checks for security/authentication topics, secure messages, notifications, and promotional content like fake surveys or giveaways. Excludes legitimate Shein domains with proper authentication and known trusted senders.

Threat classification

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

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

Event coverage

Rule body MQL

type.inbound
and (
  // display name contains Shein
  (
    (
      regex.icontains(strings.replace_confusables(sender.display_name),
                      '\bsh[ie]{2}n\b'
      )
      and not strings.icontains(sender.display_name, "sheen")
    )
    or (
      length(ml.logo_detect(file.message_screenshot()).brands) == 1
      and all(ml.logo_detect(file.message_screenshot()).brands,
              .name == "Shein" and .confidence == "high"
      )
    )
  )
)
and (
  (
    length(ml.nlu_classifier(body.current_thread.text).topics) > 0
    and all(ml.nlu_classifier(body.current_thread.text).topics,
            .name in (
              "Security and Authentication",
              "Secure Message",
              "Reminders and Notifications",
              "Advertising and Promotions" // fake surveys/giveaways have been observed
            )
            and .confidence in ("medium", "high")
    )
  )
  or (
    length(ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).topics) > 0
    and all(ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).topics,
            .name in (
              "Security and Authentication",
              "Secure Message",
              "Reminders and Notifications",
              "Advertising and Promotions" // fake surveys/giveaways have been observed
            )
            and .confidence in ("medium", "high")
            and beta.ocr(file.message_screenshot()).text != ""
    )
  )
  or any(ml.nlu_classifier(body.current_thread.text).intents,
         .name == "cred_theft" and .confidence == "high"
  )
  or any(ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).intents,
         .name == "cred_theft" and .confidence == "high"
  )
)

// and the sender is not in org_domains or from Shein domains and passes auth
and not (
  sender.email.domain.root_domain in $org_domains
  or (
    length(attachments) == 1
    // this is Shein's return label generator
    and all(attachments,
            .file_type == "pdf"
            and strings.icontains(beta.parse_exif(.).creator, "MondialRelay")
    )
  )
  or (
    sender.email.domain.root_domain in (
      "shein.com",
      "shein.com.mx",
      "sheinemail.com",
      "shein.co.uk",
      "sheingroup.com",
      "sheinnotice.com",
      "cash.app",
      "capitaloneshopping.com"
    )
    and (
      headers.auth_summary.dmarc.pass
      // for when DMARC fails, but it's still a legit Shein newsletter
      or (
        length(body.links) > 10
        and ratio(body.links,
                  .href_url.domain.root_domain in (
                    "shein.com",
                    "sheinemail.com",
                    "shein.co.uk",
                    "sheingroup.com",
                    "sheinnotice.com",
                    "cash.app",
                    "capitaloneshopping.com"
                  )
        ) > 0.6
      )
    )
  )
  // parse out original sender domain from Apple Private Relay info
  or (
    sender.email.domain.domain in ("privaterelay.appleid.com", "icloud.com")
    and strings.ilike(sender.email.local_part,
                      '*shein_com*',
                      '*sheinemail_com*'
    )
  )
)
// and the sender is not from high trust sender root domains
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
)
and (
  not profile.by_sender().solicited
  or not headers.auth_summary.dmarc.pass
  or not headers.auth_summary.spf.pass
)

Detection logic

Scope: inbound message.

Detects suspicious Shein-branded communications using display name impersonation, logo detection, and deceptive content analysis. Includes checks for security/authentication topics, secure messages, notifications, and promotional content like fake surveys or giveaways. Excludes legitimate Shein domains with proper authentication and known trusted senders.

  1. inbound message
  2. any of:
    • all of:
      • strings.replace_confusables(sender.display_name) matches '\\bsh[ie]{2}n\\b'
      • not:
        • sender.display_name contains 'sheen'
    • all of:
      • length(ml.logo_detect(file.message_screenshot()).brands) is 1
      • all of ml.logo_detect(file.message_screenshot()).brands where all hold:
        • .name is 'Shein'
        • .confidence is 'high'
  3. any of:
    • all of:
      • length(ml.nlu_classifier(body.current_thread.text).topics) > 0
      • all of ml.nlu_classifier(body.current_thread.text).topics where all hold:
        • .name in ('Security and Authentication', 'Secure Message', 'Reminders and Notifications', 'Advertising and Promotions')
        • .confidence in ('medium', 'high')
    • all of:
      • length(ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).topics) > 0
      • all of ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).topics where all hold:
        • .name in ('Security and Authentication', 'Secure Message', 'Reminders and Notifications', 'Advertising and Promotions')
        • .confidence in ('medium', 'high')
        • beta.ocr(file.message_screenshot()).text is not ''
    • any of ml.nlu_classifier(body.current_thread.text).intents where all hold:
      • .name is 'cred_theft'
      • .confidence is 'high'
    • any of ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).intents where all hold:
      • .name is 'cred_theft'
      • .confidence is 'high'
  4. none of:
    • sender.email.domain.root_domain in $org_domains
    • all of:
      • length(attachments) is 1
      • all of attachments where all hold:
        • .file_type is 'pdf'
        • beta.parse_exif(.).creator contains 'MondialRelay'
    • all of:
      • sender.email.domain.root_domain in ('shein.com', 'shein.com.mx', 'sheinemail.com', 'shein.co.uk', 'sheingroup.com', 'sheinnotice.com', 'cash.app', 'capitaloneshopping.com')
      • any of:
        • headers.auth_summary.dmarc.pass
        • all of:
          • length(body.links) > 10
          • ratio(body.links) > 0.6
    • all of:
      • sender.email.domain.domain in ('privaterelay.appleid.com', 'icloud.com')
      • sender.email.local_part matches any of 2 patterns
        • *shein_com*
        • *sheinemail_com*
  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
  6. any of:
    • not:
      • profile.by_sender().solicited
    • not:
      • headers.auth_summary.dmarc.pass
    • not:
      • headers.auth_summary.spf.pass

Inspects: attachments[].file_type, body.current_thread.text, body.links, body.links[].href_url.domain.root_domain, headers.auth_summary.dmarc.pass, headers.auth_summary.spf.pass, sender.display_name, sender.email.domain.domain, sender.email.domain.root_domain, sender.email.local_part, type.inbound. Sensors: beta.ocr, beta.parse_exif, file.message_screenshot, ml.logo_detect, ml.nlu_classifier, profile.by_sender, regex.icontains, strings.icontains, strings.ilike, strings.replace_confusables. Reference lists: $high_trust_sender_root_domains, $org_domains.

Indicators matched (41)

FieldMatchValue
regex.icontainsregex\bsh[ie]{2}n\b
strings.icontainssubstringsheen
ml.logo_detect(file.message_screenshot()).brands[].nameequalsShein
ml.logo_detect(file.message_screenshot()).brands[].confidenceequalshigh
ml.nlu_classifier(body.current_thread.text).topics[].namememberSecurity and Authentication
ml.nlu_classifier(body.current_thread.text).topics[].namememberSecure Message
ml.nlu_classifier(body.current_thread.text).topics[].namememberReminders and Notifications
ml.nlu_classifier(body.current_thread.text).topics[].namememberAdvertising and Promotions
ml.nlu_classifier(body.current_thread.text).topics[].confidencemembermedium
ml.nlu_classifier(body.current_thread.text).topics[].confidencememberhigh
ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).topics[].namememberSecurity and Authentication
ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).topics[].namememberSecure Message
29 more
ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).topics[].namememberReminders and Notifications
ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).topics[].namememberAdvertising and Promotions
ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).topics[].confidencemembermedium
ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).topics[].confidencememberhigh
ml.nlu_classifier(body.current_thread.text).intents[].nameequalscred_theft
ml.nlu_classifier(body.current_thread.text).intents[].confidenceequalshigh
ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).intents[].nameequalscred_theft
ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).intents[].confidenceequalshigh
attachments[].file_typeequalspdf
strings.icontainssubstringMondialRelay
sender.email.domain.root_domainmembershein.com
sender.email.domain.root_domainmembershein.com.mx
sender.email.domain.root_domainmembersheinemail.com
sender.email.domain.root_domainmembershein.co.uk
sender.email.domain.root_domainmembersheingroup.com
sender.email.domain.root_domainmembersheinnotice.com
sender.email.domain.root_domainmembercash.app
sender.email.domain.root_domainmembercapitaloneshopping.com
body.links[].href_url.domain.root_domainmembershein.com
body.links[].href_url.domain.root_domainmembersheinemail.com
body.links[].href_url.domain.root_domainmembershein.co.uk
body.links[].href_url.domain.root_domainmembersheingroup.com
body.links[].href_url.domain.root_domainmembersheinnotice.com
body.links[].href_url.domain.root_domainmembercash.app
body.links[].href_url.domain.root_domainmembercapitaloneshopping.com
sender.email.domain.domainmemberprivaterelay.appleid.com
sender.email.domain.domainmembericloud.com
strings.ilikesubstring*shein_com*
strings.ilikesubstring*sheinemail_com*