Detection rules › Sublime MQL
Sublime MQL rules: salesforce
| Rule | Severity |
|---|---|
| Salesforce infrastructure abuse | medium |
Salesforce infrastructure abuse
#Identifies messages that resemble credential theft, originating from Salesforce. Salesforce infrastrcture abuse has been observed recently to send phishing attacks.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Evasion, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
// we look at the return-path because many times in the abuse
// we've seen, the From is a custom domain
and headers.return_path.domain.root_domain == "salesforce.com"
and length(attachments) == 0
// there are external links (not org or SF domains)
and length(filter(body.links,
.href_url.domain.domain not in $org_domains
and .href_url.domain.root_domain not in (
"salesforce.com",
"force.com",
"site.com", // salesforce CRM
"agentforce.com"
)
)
) > 0
and (
(
any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "cred_theft" and .confidence == "high"
)
and ml.nlu_classifier(body.current_thread.text).language == "english"
)
// subject match when cred_theft doesn't match
// high confidence observed subject intros in the format of "Urgent Thing: ..."
or regex.icontains(subject.subject,
'^(?:(?:Final|Last)?\s*Warning|(?:Final|Last|Legal|Critical|Content Violation)?\s*(?:Alert|Noti(?:ce|fication))|Appeal Required|Time.Sensitive|Critical.Alert|Important|Copyright Issue)\s*:\s*'
)
or any(ml.logo_detect(file.message_screenshot()).brands,
.name in ("Facebook", "Meta", "Instagram", "Threads")
and .confidence in ("medium", "high")
)
// any of the links are for newly registered domains
or any(filter(body.links,
.href_url.domain.domain not in $org_domains
and .href_url.domain.root_domain not in (
"salesforce.com",
"force.com",
"site.com", // salesforce CRM
"agentforce.com"
)
),
network.whois(.href_url.domain).days_old < 30
)
// all links lead to a url shortener domain
or (
length(body.links) > 0
and all(body.links, .href_url.domain.root_domain in $url_shorteners)
)
)
and 1 of (
( // sender domain matches no body domains
length(body.links) > 0
and all(body.links,
(
.href_url.domain.root_domain != sender.email.domain.root_domain
and .href_url.domain.root_domain not in (
"salesforce.com",
"force.com",
"site.com",
"agentforce.com"
)
)
or .href_url.domain.root_domain is null
)
),
any(recipients.to,
.email.domain.valid
and any(body.links,
strings.icontains(.href_url.url, ..email.email)
or any(beta.scan_base64(.href_url.url,
format="url",
ignore_padding=true
),
strings.icontains(., ...email.email)
)
or any(beta.scan_base64(.href_url.fragment, ignore_padding=true),
strings.icontains(., ...email.email)
)
// cloudflare turnstile or phishing warning page
or strings.icontains(ml.link_analysis(., mode="aggressive").final_dom.display_text,
"cloudflare"
)
)
),
regex.icontains(subject.subject,
"termination.*notice",
"38417",
":completed",
"[il1]{2}mit.*ma[il1]{2} ?bo?x",
"[il][il][il]egai[ -]",
"[li][li][li]ega[li] attempt",
"[ng]-?[io]n .*block",
"[ng]-?[io]n .*cancel",
"[ng]-?[io]n .*deactiv",
"[ng]-?[io]n .*disabl",
"action.*required",
"abandon.*package",
"about.your.account",
"acc(ou)?n?t (is )?on ho[li]d",
"acc(ou)?n?t.*terminat",
"acc(oun)?t.*[il1]{2}mitation",
"access.*limitation",
"account (will be )?block",
"account.*de-?activat",
"account.*locked",
"account.*restrict",
"account.*re-verification",
"account.*security",
"account.*suspension",
"account.has.been",
"account.has.expired",
"account.will.be.blocked",
"account v[il]o[li]at",
"activity.*acc(oun)?t",
"almost.full",
"app[li]e.[il]d",
"appeal required",
"authenticate.*account",
"been.*suspend",
"clos.*of.*account.*processed",
"confirm.your.account",
"copyright (?:restriction|infringment)",
"courier.*able",
"crediential.*notif",
"Critical Alert",
"deactivation.*in.*progress",
"delivery.*attempt.*failed",
"document.received",
"documented.*shared.*with.*you",
"dropbox.*document",
"e-?ma[il1]+ .{010}suspen",
"e-?ma[il1]{1} user",
"e-?ma[il1]{2} acc",
"e-?ma[il1]{2}.*up.?grade",
"e.?ma[il1]{2}.*server",
"e.?ma[il1]{2}.*suspend",
"email.update",
"faxed you",
"final notice",
"fraud(ulent)?.*charge",
"from.helpdesk",
"fu[il1]{2}.*ma[il1]+[ -]?box",
"has.been.*suspended",
"has.been.limited",
"have.locked",
"he[li]p ?desk upgrade",
"heipdesk",
"i[il]iega[il]",
"ii[il]ega[il]",
"immediate action",
"incoming e?mail",
"incoming.*fax",
"lock.*security",
"ma[il1]{1}[ -]?box.*quo",
"ma[il1]{2}[ -]?box.*fu[il1]",
"ma[il1]{2}box.*[il1]{2}mit",
"ma[il1]{2}box stor",
"mail on.?hold",
"mail.*box.*migration",
"mail.*de-?activat",
"mail.update.required",
"mails.*pending",
"messages.*pending",
"missed.*shipping.*notification",
"missed.shipment.notification",
"must.update.your.account",
"new [sl][io]g?[nig][ -]?in from",
"new voice ?-?mail",
"notifications.*pending",
"office.*3.*6.*5.*suspend",
"office365",
"on google docs with you",
"online doc",
"password.*compromised",
"periodic maintenance",
"potential(ly)? unauthorized",
"refund not approved",
"restrictions applied",
"report",
"revised.*policy",
"scam",
"scanned.?invoice",
"secured?.update",
"security breach",
"securlty",
"signed.*delivery",
"social media",
"status of your .{314}? ?delivery",
"susp[il1]+c[il1]+ous.*act[il1]+v[il1]+ty",
"suspicious.*sign.*[io]n",
"suspicious.activit",
"temporar(il)?y deactivate",
"temporar[il1]{2}y disab[li]ed",
"temporarily.*lock",
"time.sensitive",
"un-?usua[li].activity",
"unable.*deliver",
"unauthorized.*activit",
"unauthorized.device",
"unauthorized.use",
"undelivered message",
"unread.*doc",
"unusual.activity",
"upgrade.*account",
"upgrade.notice",
"urgent message",
"urgent.verification",
"v[il1]o[li1]at[il1]on security",
"va[il1]{1}date.*ma[il1]{2}[ -]?box",
"verification ?-?require",
"verification( )?-?need",
"verify.your?.account",
"web ?-?ma[il1]{2}",
"web[ -]?ma[il1]{2}",
"will.be.suspended",
"your (customer )?account .as",
"your.office.365",
"your.online.access",
"Critical.Notice",
"Restore.Access",
// https://github.com/sublime-security/static-files/blob/main/suspicious_subjects.txt
"account has been limited",
"action required",
"almost full",
"apd notifi cation",
"are you at your desk",
"are you available",
"attached file to docusign",
"banking is temporarily unavailable",
"bankofamerica",
"closing statement invoice",
"completed: docusign",
"de-activation of",
"delivery attempt",
"delivery stopped for shipment",
"detected suspicious",
"detected suspicious actvity",
"docu sign",
"document for you",
"document has been sent to you via docusign",
"document is ready for signature",
"docusign",
"encrypted message",
"failed delivery",
"fedex tracking",
"file was shared",
"freefax",
"fwd: due invoice paid",
"has shared",
"inbox is full",
"invitation to comment",
"invitation to edit",
"invoice due",
"left you a message",
"message from",
"new message",
"new voicemail",
"on desk",
"out of space",
"password reset",
"payment status",
"quick reply",
"re: w-2",
"required",
"required: completed docusign",
"remittance",
"ringcentral",
"scanned image",
"secured files",
"secured pdf",
"security alert",
"new sign-in",
"new sign in",
"sign-in attempt",
"sign in attempt",
"staff review",
"suspicious activity",
"unrecognized login attempt",
"upgrade immediately",
"urgent",
"wants to share",
"w2",
"you have notifications pending",
"your account",
'your (?:\w+\s+){0,1}\s*account',
"your amazon order",
"your document settlement",
"your order with amazon",
"your password has been compromised",
),
any($suspicious_subjects, strings.icontains(subject.subject, .))
)
and (
// if the From is a custom domain, check that it's an unknown sender
// otherwise, it should be from salesforce
(
sender.email.domain.domain == "salesforce.com"
and any(headers.hops,
any(.fields,
.name == "X-SFDC-EmailCategory"
and .value in (
"apiMassMail",
"networksNewUser",
"Not Specified"
)
)
)
// negate "meta" emails from the mentioned org itself
// for example, subject: "a sandbox has been deleted for org ID, a1b2c3"
// the org ID will appear in the X-SFDC-LK header
and not any(headers.hops,
any(.fields,
.name == "X-SFDC-LK"
and strings.ends_with(subject.subject, .value)
)
)
)
or (
(
(
profile.by_sender().prevalence in ("new", "outlier")
and not profile.by_sender().solicited
)
or (
profile.by_sender().any_messages_malicious_or_spam
and not profile.by_sender().any_messages_benign
)
)
// 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.
Identifies messages that resemble credential theft, originating from Salesforce. Salesforce infrastrcture abuse has been observed recently to send phishing attacks.
- inbound message
- headers.return_path.domain.root_domain is 'salesforce.com'
- length(attachments) is 0
- length(filter(body.links, .href_url.domain.domain not in $org_domains and .href_url.domain.root_domain not in ('salesforce.com', 'force.com', 'site.com', 'agentforce.com'))) > 0
any of:
all of:
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'cred_theft'
- .confidence is 'high'
- ml.nlu_classifier(body.current_thread.text).language is 'english'
- subject.subject matches '^(?:(?:Final|Last)?\\s*Warning|(?:Final|Last|Legal|Critical|Content Violation)?\\s*(?:Alert|Noti(?:ce|fication))|Appeal Required|Time.Sensitive|Critical.Alert|Important|Copyright Issue)\\s*:\\s*'
any of
ml.logo_detect(file.message_screenshot()).brandswhere all hold:- .name in ('Facebook', 'Meta', 'Instagram', 'Threads')
- .confidence in ('medium', 'high')
any of
filter(body.links)where:- network.whois(.href_url.domain).days_old < 30
all of:
- length(body.links) > 0
all of
body.linkswhere:- .href_url.domain.root_domain in $url_shorteners
at least 1 of:
all of:
- length(body.links) > 0
all of
body.linkswhere any holds:all of:
- .href_url.domain.root_domain is not sender.email.domain.root_domain
- .href_url.domain.root_domain not in ('salesforce.com', 'force.com', 'site.com', 'agentforce.com')
- .href_url.domain.root_domain is missing
any of
recipients.towhere all hold:- .email.domain.valid
any of
body.linkswhere any holds:- strings.icontains(.href_url.url)
any of
beta.scan_base64(.href_url.url)where:- strings.icontains(.)
any of
beta.scan_base64(.href_url.fragment)where:- strings.icontains(.)
- ml.link_analysis(., mode='aggressive').final_dom.display_text contains 'cloudflare'
subject.subject matches any of 203 patterns
termination.*notice38417:completed[il1]{2}mit.*ma[il1]{2} ?bo?x[il][il][il]egai[ -][li][li][li]ega[li] attempt[ng]-?[io]n .*block[ng]-?[io]n .*cancel[ng]-?[io]n .*deactiv[ng]-?[io]n .*disablaction.*requiredabandon.*packageabout.your.accountacc(ou)?n?t (is )?on ho[li]dacc(ou)?n?t.*terminatacc(oun)?t.*[il1]{2}mitationaccess.*limitationaccount (will be )?blockaccount.*de-?activataccount.*lockedaccount.*restrictaccount.*re-verificationaccount.*securityaccount.*suspensionaccount.has.beenaccount.has.expiredaccount.will.be.blockedaccount v[il]o[li]atactivity.*acc(oun)?talmost.fullapp[li]e.[il]dappeal requiredauthenticate.*accountbeen.*suspendclos.*of.*account.*processedconfirm.your.accountcopyright (?:restriction|infringment)courier.*ablecrediential.*notifCritical Alertdeactivation.*in.*progressdelivery.*attempt.*faileddocument.receiveddocumented.*shared.*with.*youdropbox.*documente-?ma[il1]+ .{010}suspene-?ma[il1]{1} usere-?ma[il1]{2} acce-?ma[il1]{2}.*up.?gradee.?ma[il1]{2}.*servere.?ma[il1]{2}.*suspendemail.updatefaxed youfinal noticefraud(ulent)?.*chargefrom.helpdeskfu[il1]{2}.*ma[il1]+[ -]?boxhas.been.*suspendedhas.been.limitedhave.lockedhe[li]p ?desk upgradeheipdeski[il]iega[il]ii[il]ega[il]immediate actionincoming e?mailincoming.*faxlock.*securityma[il1]{1}[ -]?box.*quoma[il1]{2}[ -]?box.*fu[il1]ma[il1]{2}box.*[il1]{2}mitma[il1]{2}box stormail on.?holdmail.*box.*migrationmail.*de-?activatmail.update.requiredmails.*pendingmessages.*pendingmissed.*shipping.*notificationmissed.shipment.notificationmust.update.your.accountnew [sl][io]g?[nig][ -]?in fromnew voice ?-?mailnotifications.*pendingoffice.*3.*6.*5.*suspendoffice365on google docs with youonline docpassword.*compromisedperiodic maintenancepotential(ly)? unauthorizedrefund not approvedrestrictions appliedreportrevised.*policyscamscanned.?invoicesecured?.updatesecurity breachsecurltysigned.*deliverysocial mediastatus of your .{314}? ?deliverysusp[il1]+c[il1]+ous.*act[il1]+v[il1]+tysuspicious.*sign.*[io]nsuspicious.activittemporar(il)?y deactivatetemporar[il1]{2}y disab[li]edtemporarily.*locktime.sensitiveun-?usua[li].activityunable.*deliverunauthorized.*activitunauthorized.deviceunauthorized.useundelivered messageunread.*docunusual.activityupgrade.*accountupgrade.noticeurgent messageurgent.verificationv[il1]o[li1]at[il1]on securityva[il1]{1}date.*ma[il1]{2}[ -]?boxverification ?-?requireverification( )?-?needverify.your?.accountweb ?-?ma[il1]{2}web[ -]?ma[il1]{2}will.be.suspendedyour (customer )?account .asyour.office.365your.online.accessCritical.NoticeRestore.Accessaccount has been limitedaction requiredalmost fullapd notifi cationare you at your deskare you availableattached file to docusignbanking is temporarily unavailablebankofamericaclosing statement invoicecompleted: docusignde-activation ofdelivery attemptdelivery stopped for shipmentdetected suspiciousdetected suspicious actvitydocu signdocument for youdocument has been sent to you via docusigndocument is ready for signaturedocusignencrypted messagefailed deliveryfedex trackingfile was sharedfreefaxfwd: due invoice paidhas sharedinbox is fullinvitation to commentinvitation to editinvoice dueleft you a messagemessage fromnew messagenew voicemailon deskout of spacepassword resetpayment statusquick replyre: w-2requiredrequired: completed docusignremittanceringcentralscanned imagesecured filessecured pdfsecurity alertnew sign-innew sign insign-in attemptsign in attemptstaff reviewsuspicious activityunrecognized login attemptupgrade immediatelyurgentwants to sharew2you have notifications pendingyour accountyour (?:\w+\s+){0,1}\s*accountyour amazon orderyour document settlementyour order with amazonyour password has been compromised
any of
$suspicious_subjectswhere:- strings.icontains(subject.subject)
any of:
all of:
- sender.email.domain.domain is 'salesforce.com'
any of
headers.hopswhere:any of
.fieldswhere all hold:- .name is 'X-SFDC-EmailCategory'
- .value in ('apiMassMail', 'networksNewUser', 'Not Specified')
not:
any of
headers.hopswhere:any of
.fieldswhere all hold:- .name is 'X-SFDC-LK'
- strings.ends_with(subject.subject)
all of:
any of:
all of:
- profile.by_sender().prevalence in ('new', 'outlier')
not:
- profile.by_sender().solicited
all of:
- profile.by_sender().any_messages_malicious_or_spam
not:
- profile.by_sender().any_messages_benign
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, body.links, body.links[].href_url.domain.domain, body.links[].href_url.domain.root_domain, body.links[].href_url.fragment, body.links[].href_url.url, headers.auth_summary.dmarc.pass, headers.hops, headers.hops[].fields, headers.hops[].fields[].name, headers.hops[].fields[].value, headers.return_path.domain.root_domain, recipients.to, recipients.to[].email.domain.valid, recipients.to[].email.email, sender.email.domain.domain, sender.email.domain.root_domain, subject.subject, type.inbound. Sensors: beta.scan_base64, file.message_screenshot, ml.link_analysis, ml.logo_detect, ml.nlu_classifier, network.whois, profile.by_sender, regex.icontains, strings.ends_with, strings.icontains. Reference lists: $high_trust_sender_root_domains, $org_domains, $suspicious_subjects, $url_shorteners.
Indicators matched (219)
| Field | Match | Value |
|---|---|---|
headers.return_path.domain.root_domain | equals | salesforce.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | cred_theft |
ml.nlu_classifier(body.current_thread.text).intents[].confidence | equals | high |
regex.icontains | regex | ^(?:(?:Final|Last)?\s*Warning|(?:Final|Last|Legal|Critical|Content Violation)?\s*(?:Alert|Noti(?:ce|fication))|Appeal Required|Time.Sensitive|Critical.Alert|Important|Copyright Issue)\s*:\s* |
ml.logo_detect(file.message_screenshot()).brands[].name | member | Facebook |
ml.logo_detect(file.message_screenshot()).brands[].name | member | Meta |
ml.logo_detect(file.message_screenshot()).brands[].name | member | Instagram |
ml.logo_detect(file.message_screenshot()).brands[].name | member | Threads |
ml.logo_detect(file.message_screenshot()).brands[].confidence | member | medium |
ml.logo_detect(file.message_screenshot()).brands[].confidence | member | high |
strings.icontains | substring | cloudflare |
regex.icontains | regex | termination.*notice |
207 more
regex.icontains | regex | 38417 |
regex.icontains | regex | :completed |
regex.icontains | regex | [il1]{2}mit.*ma[il1]{2} ?bo?x |
regex.icontains | regex | [il][il][il]egai[ -] |
regex.icontains | regex | [li][li][li]ega[li] attempt |
regex.icontains | regex | [ng]-?[io]n .*block |
regex.icontains | regex | [ng]-?[io]n .*cancel |
regex.icontains | regex | [ng]-?[io]n .*deactiv |
regex.icontains | regex | [ng]-?[io]n .*disabl |
regex.icontains | regex | action.*required |
regex.icontains | regex | abandon.*package |
regex.icontains | regex | about.your.account |
regex.icontains | regex | acc(ou)?n?t (is )?on ho[li]d |
regex.icontains | regex | acc(ou)?n?t.*terminat |
regex.icontains | regex | acc(oun)?t.*[il1]{2}mitation |
regex.icontains | regex | access.*limitation |
regex.icontains | regex | account (will be )?block |
regex.icontains | regex | account.*de-?activat |
regex.icontains | regex | account.*locked |
regex.icontains | regex | account.*restrict |
regex.icontains | regex | account.*re-verification |
regex.icontains | regex | account.*security |
regex.icontains | regex | account.*suspension |
regex.icontains | regex | account.has.been |
regex.icontains | regex | account.has.expired |
regex.icontains | regex | account.will.be.blocked |
regex.icontains | regex | account v[il]o[li]at |
regex.icontains | regex | activity.*acc(oun)?t |
regex.icontains | regex | almost.full |
regex.icontains | regex | app[li]e.[il]d |
regex.icontains | regex | appeal required |
regex.icontains | regex | authenticate.*account |
regex.icontains | regex | been.*suspend |
regex.icontains | regex | clos.*of.*account.*processed |
regex.icontains | regex | confirm.your.account |
regex.icontains | regex | copyright (?:restriction|infringment) |
regex.icontains | regex | courier.*able |
regex.icontains | regex | crediential.*notif |
regex.icontains | regex | Critical Alert |
regex.icontains | regex | deactivation.*in.*progress |
regex.icontains | regex | delivery.*attempt.*failed |
regex.icontains | regex | document.received |
regex.icontains | regex | documented.*shared.*with.*you |
regex.icontains | regex | dropbox.*document |
regex.icontains | regex | e-?ma[il1]+ .{010}suspen |
regex.icontains | regex | e-?ma[il1]{1} user |
regex.icontains | regex | e-?ma[il1]{2} acc |
regex.icontains | regex | e-?ma[il1]{2}.*up.?grade |
regex.icontains | regex | e.?ma[il1]{2}.*server |
regex.icontains | regex | e.?ma[il1]{2}.*suspend |
regex.icontains | regex | email.update |
regex.icontains | regex | faxed you |
regex.icontains | regex | final notice |
regex.icontains | regex | fraud(ulent)?.*charge |
regex.icontains | regex | from.helpdesk |
regex.icontains | regex | fu[il1]{2}.*ma[il1]+[ -]?box |
regex.icontains | regex | has.been.*suspended |
regex.icontains | regex | has.been.limited |
regex.icontains | regex | have.locked |
regex.icontains | regex | he[li]p ?desk upgrade |
regex.icontains | regex | heipdesk |
regex.icontains | regex | i[il]iega[il] |
regex.icontains | regex | ii[il]ega[il] |
regex.icontains | regex | immediate action |
regex.icontains | regex | incoming e?mail |
regex.icontains | regex | incoming.*fax |
regex.icontains | regex | lock.*security |
regex.icontains | regex | ma[il1]{1}[ -]?box.*quo |
regex.icontains | regex | ma[il1]{2}[ -]?box.*fu[il1] |
regex.icontains | regex | ma[il1]{2}box.*[il1]{2}mit |
regex.icontains | regex | ma[il1]{2}box stor |
regex.icontains | regex | mail on.?hold |
regex.icontains | regex | mail.*box.*migration |
regex.icontains | regex | mail.*de-?activat |
regex.icontains | regex | mail.update.required |
regex.icontains | regex | mails.*pending |
regex.icontains | regex | messages.*pending |
regex.icontains | regex | missed.*shipping.*notification |
regex.icontains | regex | missed.shipment.notification |
regex.icontains | regex | must.update.your.account |
regex.icontains | regex | new [sl][io]g?[nig][ -]?in from |
regex.icontains | regex | new voice ?-?mail |
regex.icontains | regex | notifications.*pending |
regex.icontains | regex | office.*3.*6.*5.*suspend |
regex.icontains | regex | office365 |
regex.icontains | regex | on google docs with you |
regex.icontains | regex | online doc |
regex.icontains | regex | password.*compromised |
regex.icontains | regex | periodic maintenance |
regex.icontains | regex | potential(ly)? unauthorized |
regex.icontains | regex | refund not approved |
regex.icontains | regex | restrictions applied |
regex.icontains | regex | report |
regex.icontains | regex | revised.*policy |
regex.icontains | regex | scam |
regex.icontains | regex | scanned.?invoice |
regex.icontains | regex | secured?.update |
regex.icontains | regex | security breach |
regex.icontains | regex | securlty |
regex.icontains | regex | signed.*delivery |
regex.icontains | regex | social media |
regex.icontains | regex | status of your .{314}? ?delivery |
regex.icontains | regex | susp[il1]+c[il1]+ous.*act[il1]+v[il1]+ty |
regex.icontains | regex | suspicious.*sign.*[io]n |
regex.icontains | regex | suspicious.activit |
regex.icontains | regex | temporar(il)?y deactivate |
regex.icontains | regex | temporar[il1]{2}y disab[li]ed |
regex.icontains | regex | temporarily.*lock |
regex.icontains | regex | time.sensitive |
regex.icontains | regex | un-?usua[li].activity |
regex.icontains | regex | unable.*deliver |
regex.icontains | regex | unauthorized.*activit |
regex.icontains | regex | unauthorized.device |
regex.icontains | regex | unauthorized.use |
regex.icontains | regex | undelivered message |
regex.icontains | regex | unread.*doc |
regex.icontains | regex | unusual.activity |
regex.icontains | regex | upgrade.*account |
regex.icontains | regex | upgrade.notice |
regex.icontains | regex | urgent message |
regex.icontains | regex | urgent.verification |
regex.icontains | regex | v[il1]o[li1]at[il1]on security |
regex.icontains | regex | va[il1]{1}date.*ma[il1]{2}[ -]?box |
regex.icontains | regex | verification ?-?require |
regex.icontains | regex | verification( )?-?need |
regex.icontains | regex | verify.your?.account |
regex.icontains | regex | web ?-?ma[il1]{2} |
regex.icontains | regex | web[ -]?ma[il1]{2} |
regex.icontains | regex | will.be.suspended |
regex.icontains | regex | your (customer )?account .as |
regex.icontains | regex | your.office.365 |
regex.icontains | regex | your.online.access |
regex.icontains | regex | Critical.Notice |
regex.icontains | regex | Restore.Access |
regex.icontains | regex | account has been limited |
regex.icontains | regex | action required |
regex.icontains | regex | almost full |
regex.icontains | regex | apd notifi cation |
regex.icontains | regex | are you at your desk |
regex.icontains | regex | are you available |
regex.icontains | regex | attached file to docusign |
regex.icontains | regex | banking is temporarily unavailable |
regex.icontains | regex | bankofamerica |
regex.icontains | regex | closing statement invoice |
regex.icontains | regex | completed: docusign |
regex.icontains | regex | de-activation of |
regex.icontains | regex | delivery attempt |
regex.icontains | regex | delivery stopped for shipment |
regex.icontains | regex | detected suspicious |
regex.icontains | regex | detected suspicious actvity |
regex.icontains | regex | docu sign |
regex.icontains | regex | document for you |
regex.icontains | regex | document has been sent to you via docusign |
regex.icontains | regex | document is ready for signature |
regex.icontains | regex | docusign |
regex.icontains | regex | encrypted message |
regex.icontains | regex | failed delivery |
regex.icontains | regex | fedex tracking |
regex.icontains | regex | file was shared |
regex.icontains | regex | freefax |
regex.icontains | regex | fwd: due invoice paid |
regex.icontains | regex | has shared |
regex.icontains | regex | inbox is full |
regex.icontains | regex | invitation to comment |
regex.icontains | regex | invitation to edit |
regex.icontains | regex | invoice due |
regex.icontains | regex | left you a message |
regex.icontains | regex | message from |
regex.icontains | regex | new message |
regex.icontains | regex | new voicemail |
regex.icontains | regex | on desk |
regex.icontains | regex | out of space |
regex.icontains | regex | password reset |
regex.icontains | regex | payment status |
regex.icontains | regex | quick reply |
regex.icontains | regex | re: w-2 |
regex.icontains | regex | required |
regex.icontains | regex | required: completed docusign |
regex.icontains | regex | remittance |
regex.icontains | regex | ringcentral |
regex.icontains | regex | scanned image |
regex.icontains | regex | secured files |
regex.icontains | regex | secured pdf |
regex.icontains | regex | security alert |
regex.icontains | regex | new sign-in |
regex.icontains | regex | new sign in |
regex.icontains | regex | sign-in attempt |
regex.icontains | regex | sign in attempt |
regex.icontains | regex | staff review |
regex.icontains | regex | suspicious activity |
regex.icontains | regex | unrecognized login attempt |
regex.icontains | regex | upgrade immediately |
regex.icontains | regex | urgent |
regex.icontains | regex | wants to share |
regex.icontains | regex | w2 |
regex.icontains | regex | you have notifications pending |
regex.icontains | regex | your account |
regex.icontains | regex | your (?:\w+\s+){0,1}\s*account |
regex.icontains | regex | your amazon order |
regex.icontains | regex | your document settlement |
regex.icontains | regex | your order with amazon |
regex.icontains | regex | your password has been compromised |
sender.email.domain.domain | equals | salesforce.com |
headers.hops[].fields[].name | equals | X-SFDC-EmailCategory |
headers.hops[].fields[].value | member | apiMassMail |
headers.hops[].fields[].value | member | networksNewUser |
headers.hops[].fields[].value | member | Not Specified |
Stages and Predicates
Stage 1: mql_rule
and
or
and
not
any(headers.hops)
any(headers.hops.fields)
and
headers.hops.fields[].name eq "X-SFDC-LK"
strings.ends_with func_call "strings.ends_with(subject.subject)"
any(headers.hops)
any(headers.hops.fields)
and
headers.hops.fields[].name eq "X-SFDC-EmailCategory"
headers.hops.fields[].value in ["Not Specified", "apiMassMail", "networksNewUser"]
sender.email.domain.domain eq "salesforce.com"
and
or
and
not
headers.auth_summary.dmarc.pass eq "true"
macro "sender.email.domain.root_domain in high_trust_sender_root_domains"
macro "sender.email.domain.root_domain not in high_trust_sender_root_domains"
or
and
not
profile.by_sender func_call "profile.by_sender().any_messages_benign"
profile.by_sender func_call "profile.by_sender().any_messages_malicious_or_spam"
and
not
profile.by_sender func_call "profile.by_sender().solicited"
profile.by_sender func_call "profile.by_sender().prevalence in (new, outlier)"
or
any(recipients.to)
and
any(body.links)
or
any(beta.scan_base64(body.links.href_url.fragment))
strings.icontains func_call "strings.icontains(beta.scan_base64(body.links[].href_url.fragment)[])"
any(beta.scan_base64(body.links.href_url.url))
strings.icontains func_call "strings.icontains(beta.scan_base64(body.links[].href_url.url)[])"
ml.link_analysis(body.links[], mode='aggressive').final_dom.display_text contains "cloudflare"
strings.icontains func_call "strings.icontains(body.links[].href_url.url)"
recipients.to.email.domain.valid eq "true"
and
body.links length_compare "0"
macro "all(body.links)"
any($suspicious_subjects)
strings.icontains func_call "strings.icontains(subject.subject)"
subject.subject regex_match "38417"
subject.subject regex_match ":completed"
subject.subject regex_match "Critical Alert"
subject.subject regex_match "Critical.Notice"
subject.subject regex_match "Restore.Access"
subject.subject regex_match "[il1]{2}mit.*ma[il1]{2} ?bo?x"
subject.subject regex_match "[il][il][il]egai[ -]"
subject.subject regex_match "[li][li][li]ega[li] attempt"
subject.subject regex_match "[ng]-?[io]n .*block"
subject.subject regex_match "[ng]-?[io]n .*cancel"
subject.subject regex_match "[ng]-?[io]n .*deactiv"
subject.subject regex_match "[ng]-?[io]n .*disabl"
subject.subject regex_match "abandon.*package"
subject.subject regex_match "about.your.account"
subject.subject regex_match "acc(ou)?n?t (is )?on ho[li]d"
subject.subject regex_match "acc(ou)?n?t.*terminat"
subject.subject regex_match "acc(oun)?t.*[il1]{2}mitation"
subject.subject regex_match "access.*limitation"
subject.subject regex_match "account (will be )?block"
subject.subject regex_match "account has been limited"
subject.subject regex_match "account v[il]o[li]at"
subject.subject regex_match "account.*de-?activat"
subject.subject regex_match "account.*locked"
subject.subject regex_match "account.*re-verification"
subject.subject regex_match "account.*restrict"
subject.subject regex_match "account.*security"
subject.subject regex_match "account.*suspension"
subject.subject regex_match "account.has.been"
subject.subject regex_match "account.has.expired"
subject.subject regex_match "account.will.be.blocked"
subject.subject regex_match "action required"
subject.subject regex_match "action.*required"
subject.subject regex_match "activity.*acc(oun)?t"
subject.subject regex_match "almost full"
subject.subject regex_match "almost.full"
subject.subject regex_match "apd notifi cation"
subject.subject regex_match "app[li]e.[il]d"
subject.subject regex_match "appeal required"
subject.subject regex_match "are you at your desk"
subject.subject regex_match "are you available"
subject.subject regex_match "attached file to docusign"
subject.subject regex_match "authenticate.*account"
subject.subject regex_match "banking is temporarily unavailable"
subject.subject regex_match "bankofamerica"
subject.subject regex_match "been.*suspend"
subject.subject regex_match "clos.*of.*account.*processed"
subject.subject regex_match "closing statement invoice"
subject.subject regex_match "completed: docusign"
subject.subject regex_match "confirm.your.account"
subject.subject regex_match "copyright (?:restriction|infringment)"
subject.subject regex_match "courier.*able"
subject.subject regex_match "crediential.*notif"
subject.subject regex_match "de-activation of"
subject.subject regex_match "deactivation.*in.*progress"
subject.subject regex_match "delivery attempt"
subject.subject regex_match "delivery stopped for shipment"
subject.subject regex_match "delivery.*attempt.*failed"
subject.subject regex_match "detected suspicious actvity"
subject.subject regex_match "detected suspicious"
subject.subject regex_match "docu sign"
subject.subject regex_match "document for you"
subject.subject regex_match "document has been sent to you via docusign"
subject.subject regex_match "document is ready for signature"
subject.subject regex_match "document.received"
subject.subject regex_match "documented.*shared.*with.*you"
subject.subject regex_match "docusign"
subject.subject regex_match "dropbox.*document"
subject.subject regex_match "e-?ma[il1]+ .{010}suspen"
subject.subject regex_match "e-?ma[il1]{1} user"
subject.subject regex_match "e-?ma[il1]{2} acc"
subject.subject regex_match "e-?ma[il1]{2}.*up.?grade"
subject.subject regex_match "e.?ma[il1]{2}.*server"
subject.subject regex_match "e.?ma[il1]{2}.*suspend"
subject.subject regex_match "email.update"
subject.subject regex_match "encrypted message"
subject.subject regex_match "failed delivery"
subject.subject regex_match "faxed you"
subject.subject regex_match "fedex tracking"
subject.subject regex_match "file was shared"
subject.subject regex_match "final notice"
subject.subject regex_match "fraud(ulent)?.*charge"
subject.subject regex_match "freefax"
subject.subject regex_match "from.helpdesk"
subject.subject regex_match "fu[il1]{2}.*ma[il1]+[ -]?box"
subject.subject regex_match "fwd: due invoice paid"
subject.subject regex_match "has shared"
subject.subject regex_match "has.been.*suspended"
subject.subject regex_match "has.been.limited"
subject.subject regex_match "have.locked"
subject.subject regex_match "he[li]p ?desk upgrade"
subject.subject regex_match "heipdesk"
subject.subject regex_match "i[il]iega[il]"
subject.subject regex_match "ii[il]ega[il]"
subject.subject regex_match "immediate action"
subject.subject regex_match "inbox is full"
subject.subject regex_match "incoming e?mail"
subject.subject regex_match "incoming.*fax"
subject.subject regex_match "invitation to comment"
subject.subject regex_match "invitation to edit"
subject.subject regex_match "invoice due"
subject.subject regex_match "left you a message"
subject.subject regex_match "lock.*security"
subject.subject regex_match "ma[il1]{1}[ -]?box.*quo"
subject.subject regex_match "ma[il1]{2}[ -]?box.*fu[il1]"
subject.subject regex_match "ma[il1]{2}box stor"
subject.subject regex_match "ma[il1]{2}box.*[il1]{2}mit"
subject.subject regex_match "mail on.?hold"
subject.subject regex_match "mail.*box.*migration"
subject.subject regex_match "mail.*de-?activat"
subject.subject regex_match "mail.update.required"
subject.subject regex_match "mails.*pending"
subject.subject regex_match "message from"
subject.subject regex_match "messages.*pending"
subject.subject regex_match "missed.*shipping.*notification"
subject.subject regex_match "missed.shipment.notification"
subject.subject regex_match "must.update.your.account"
subject.subject regex_match "new [sl][io]g?[nig][ -]?in from"
subject.subject regex_match "new message"
subject.subject regex_match "new sign in"
subject.subject regex_match "new sign-in"
subject.subject regex_match "new voice ?-?mail"
subject.subject regex_match "new voicemail"
subject.subject regex_match "notifications.*pending"
subject.subject regex_match "office.*3.*6.*5.*suspend"
subject.subject regex_match "office365"
subject.subject regex_match "on desk"
subject.subject regex_match "on google docs with you"
subject.subject regex_match "online doc"
subject.subject regex_match "out of space"
subject.subject regex_match "password reset"
subject.subject regex_match "password.*compromised"
subject.subject regex_match "payment status"
subject.subject regex_match "periodic maintenance"
subject.subject regex_match "potential(ly)? unauthorized"
subject.subject regex_match "quick reply"
subject.subject regex_match "re: w-2"
subject.subject regex_match "refund not approved"
subject.subject regex_match "remittance"
subject.subject regex_match "report"
subject.subject regex_match "required"
subject.subject regex_match "required: completed docusign"
subject.subject regex_match "restrictions applied"
subject.subject regex_match "revised.*policy"
subject.subject regex_match "ringcentral"
subject.subject regex_match "scam"
subject.subject regex_match "scanned image"
subject.subject regex_match "scanned.?invoice"
subject.subject regex_match "secured files"
subject.subject regex_match "secured pdf"
subject.subject regex_match "secured?.update"
subject.subject regex_match "security alert"
subject.subject regex_match "security breach"
subject.subject regex_match "securlty"
subject.subject regex_match "sign in attempt"
subject.subject regex_match "sign-in attempt"
subject.subject regex_match "signed.*delivery"
subject.subject regex_match "social media"
subject.subject regex_match "staff review"
subject.subject regex_match "status of your .{314}? ?delivery"
subject.subject regex_match "susp[il1]+c[il1]+ous.*act[il1]+v[il1]+ty"
subject.subject regex_match "suspicious activity"
subject.subject regex_match "suspicious.*sign.*[io]n"
subject.subject regex_match "suspicious.activit"
subject.subject regex_match "temporar(il)?y deactivate"
subject.subject regex_match "temporar[il1]{2}y disab[li]ed"
subject.subject regex_match "temporarily.*lock"
subject.subject regex_match "termination.*notice"
subject.subject regex_match "time.sensitive"
subject.subject regex_match "un-?usua[li].activity"
subject.subject regex_match "unable.*deliver"
subject.subject regex_match "unauthorized.*activit"
subject.subject regex_match "unauthorized.device"
subject.subject regex_match "unauthorized.use"
subject.subject regex_match "undelivered message"
subject.subject regex_match "unread.*doc"
subject.subject regex_match "unrecognized login attempt"
subject.subject regex_match "unusual.activity"
subject.subject regex_match "upgrade immediately"
subject.subject regex_match "upgrade.*account"
subject.subject regex_match "upgrade.notice"
subject.subject regex_match "urgent message"
subject.subject regex_match "urgent"
subject.subject regex_match "urgent.verification"
subject.subject regex_match "v[il1]o[li1]at[il1]on security"
subject.subject regex_match "va[il1]{1}date.*ma[il1]{2}[ -]?box"
subject.subject regex_match "verification ?-?require"
subject.subject regex_match "verification( )?-?need"
subject.subject regex_match "verify.your?.account"
subject.subject regex_match "w2"
subject.subject regex_match "wants to share"
subject.subject regex_match "web ?-?ma[il1]{2}"
subject.subject regex_match "web[ -]?ma[il1]{2}"
subject.subject regex_match "will.be.suspended"
subject.subject regex_match "you have notifications pending"
subject.subject regex_match "your (?:\\w+\\s+){0,1}\\s*account"
subject.subject regex_match "your (customer )?account .as"
subject.subject regex_match "your account"
subject.subject regex_match "your amazon order"
subject.subject regex_match "your document settlement"
subject.subject regex_match "your order with amazon"
subject.subject regex_match "your password has been compromised"
subject.subject regex_match "your.office.365"
subject.subject regex_match "your.online.access"
or
and
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence eq "high"
ml.nlu_classifier(body.current_thread.text).intents.name eq "cred_theft"
ml.nlu_classifier func_call "ml.nlu_classifier(body.current_thread.text).language == english"
any(ml.logo_detect(file.message_screenshot()).brands)
and
ml.logo_detect(file.message_screenshot()).brands.confidence in ["high", "medium"]
ml.logo_detect(file.message_screenshot()).brands.name in ["Facebook", "Instagram", "Meta", "Threads"]
and
body.links length_compare "0"
macro "all(body.links)"
any(filter(body.links))
network.whois func_call "network.whois(filter(body.links)[].href_url.domain).days_old < 30"
subject.subject regex_match "^(?:(?:Final|Last)?\\s*Warning|(?:Final|Last|Legal|Critical|Content Violation)?\\s*(?:Alert|Noti(?:ce|fication))|Appeal Required|Time.Sensitive|Critical.Alert|Important|Copyright Issue)\\s*:\\s*"
attachments length_compare "0"
filter(body.links, .href_url.domain.domain not in $org_domains and .href_url.domain.root_domain not in ('salesforce.com', 'force.com', 'site.com', 'agentforce.com')) length_compare "0"
headers.return_path.domain.root_domain eq "salesforce.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
headers.return_path.domain.root_domain | eq |
| field:"headers.return_path.domain.root_domain" kind:eq value:"salesforce.com" |
sender.email.domain.domain | eq |
| field:"sender.email.domain.domain" kind:eq value:"salesforce.com" |
subject.subject | regex_match |
| field:"subject.subject" kind:regex_match |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |