Detection rules › Sublime MQL
Sublime MQL rules: service
Callback phishing via Apple ID display name abuse
#Detects callback phishing that abuses legitimate Apple ID notification emails as a delivery mechanism. The threat actor sets their Apple ID display name to a callback scam lure (e.g., a fake charge with a phone number), which Apple then embeds in the "Dear [name]" greeting of a routine account change notification. This legitimate email is forwarded to multiple targets via a distribution list, bypassing sender reputation checks since it originates from Apple's real infrastructure. The rule extracts the name field from the greeting and applies NLU classification to detect callback scam language within it.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Impersonation: Brand, Out of band pivot, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == "appleid@id.apple.com"
and (
// the actor controls the name portion of the apple account, so extract that
// english starts with Dear, but other language might start with Hello,
// the email template and html div class names are the same between languages
any(html.xpath(body.html, '//div[@class="email-body"]').nodes,
any(regex.iextract(.display_text, '^(?P<first_line>[^\n]+)\n'),
// NLU catches the actor controlled values as callback
any(ml.nlu_classifier(beta.ml_translate(.named_groups["first_line"]).text
).intents,
.name == "callback_scam"
)
// we have to account for NLU not catching it as callback_scam
// this catches more than one digit followed by all capital letters
// 599 USD, we use the unicode category Lu for capital letters from a bunch of languges
or (
any(regex.extract(beta.ml_translate(.named_groups["first_line"]).text,
'(\d{2,} \p{Lu}{2,5} )'
),
not regex.icontains(.full_match, '[AP]M\s+$')
)
)
// commonly observed phrase "if not you call"
or strings.icontains(.named_groups["first_line"], "If not you call")
// first line ends in a phone number
or regex.contains(.named_groups["first_line"], '\d+,$')
)
)
// the email address of the apple account appears in the body of the message
or (
any(body.current_thread.links,
.parser == "plain"
and .href_url.scheme == "mailto"
// actor observed using `appleservice207@icloud.com`
and (
(
strings.istarts_with(strings.parse_email(.href_url.url).local_part,
'apple'
)
and strings.parse_email(.href_url.url).domain.domain not in $org_domains
)
// newly registered domains like peekaboo.baby
or network.whois(.href_url.domain).days_old < 30
)
)
)
)
and not recipients.to[0].email.domain.domain in $org_domains
Detection logic
Scope: inbound message.
Detects callback phishing that abuses legitimate Apple ID notification emails as a delivery mechanism. The threat actor sets their Apple ID display name to a callback scam lure (e.g., a fake charge with a phone number), which Apple then embeds in the "Dear [name]" greeting of a routine account change notification. This legitimate email is forwarded to multiple targets via a distribution list, bypassing sender reputation checks since it originates from Apple's real infrastructure. The rule extracts the name field from the greeting and applies NLU classification to detect callback scam language within it.
- inbound message
- sender.email.email is 'appleid@id.apple.com'
any of:
any of
html.xpath(body.html, '//div[@class="email-body"]').nodeswhere:any of
regex.iextract(.display_text)where any holds:any of
ml.nlu_classifier(beta.ml_translate(.named_groups['first_line']).text).intentswhere:- .name is 'callback_scam'
any of
regex.extract(...)where:not:
- .full_match matches '[AP]M\\s+$'
- .named_groups['first_line'] contains 'If not you call'
- .named_groups['first_line'] matches '\\d+,$'
any of
body.current_thread.linkswhere all hold:- .parser is 'plain'
- .href_url.scheme is 'mailto'
any of:
all of:
- strings.parse_email(.href_url.url).local_part starts with 'apple'
- strings.parse_email(.href_url.url).domain.domain not in $org_domains
- network.whois(.href_url.domain).days_old < 30
not:
- recipients.to[0].email.domain.domain in $org_domains
Inspects: body.current_thread.links, body.current_thread.links[].href_url.domain, body.current_thread.links[].href_url.scheme, body.current_thread.links[].href_url.url, body.current_thread.links[].parser, body.html, recipients.to[0].email.domain.domain, sender.email.email, type.inbound. Sensors: beta.ml_translate, html.xpath, ml.nlu_classifier, network.whois, regex.contains, regex.extract, regex.icontains, regex.iextract, strings.icontains, strings.istarts_with, strings.parse_email. Reference lists: $org_domains.
Indicators matched (9)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | appleid@id.apple.com |
regex.iextract | regex | ^(?P<first_line>[^\n]+)\n |
ml.nlu_classifier(beta.ml_translate(regex.iextract(html.xpath(body.html, '//div[@class="email-body"]').nodes[].display_text)[].named_groups['first_line']).text).intents[].name | equals | callback_scam |
regex.extract | regex | (\d{2,} \p{Lu}{2,5} ) |
strings.icontains | substring | If not you call |
regex.contains | regex | \d+,$ |
body.current_thread.links[].parser | equals | plain |
body.current_thread.links[].href_url.scheme | equals | mailto |
strings.istarts_with | prefix | apple |
Stages and Predicates
Stage 1: mql_rule
and
or
any(html.xpath(body.html, '//div[@class="email-body"]').nodes)
any(regex.iextract(html.xpath(body.html, '//div[@class="email-body"]').nodes.display_text))
or
any(regex.extract(...))
not
regex.extract(...).full_match regex_match "[AP]M\\s+$"
any(ml.nlu_classifier(beta.ml_translate(regex.iextract(html.xpath(body.html, '//div[@class="email-body"]').nodes.display_text).named_groups['first_line']).text).intents)
ml.nlu_classifier(beta.ml_translate(regex.iextract(html.xpath(body.html, '//div[@class="email-body"]').nodes.display_text).named_groups['first_line']).text).intents.name eq "callback_scam"
regex.iextract(html.xpath(body.html, '//div[@class="email-body"]').nodes[].display_text)[].named_groups['first_line'] contains "If not you call"
regex.iextract(html.xpath(body.html, '//div[@class="email-body"]').nodes[].display_text)[].named_groups['first_line'] regex_match "\\d+,$"
any(body.current_thread.links)
and
or
and
strings.parse_email func_call "strings.parse_email(body.current_thread.links[].href_url.url).domain.domain not in org_domains"
strings.parse_email(body.current_thread.links[].href_url.url).local_part starts_with "apple"
network.whois func_call "network.whois(body.current_thread.links[].href_url.domain).days_old < 30"
body.current_thread.links.href_url.scheme eq "mailto"
body.current_thread.links.parser eq "plain"
not
macro "recipients.to[0].email.domain.domain in org_domains"
sender.email.email eq "appleid@id.apple.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"appleid@id.apple.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Link: Breely link masquerading as PDF
#Detects messages containing a single Breely link that displays as a PDF file. Typically, redirects to a different destination for malicious purposes.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud, Credential Phishing |
| Tactics and techniques | Free subdomain host, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and length(filter(body.links, .href_url.domain.root_domain == "breely.com")) == 1
and any(body.links,
.href_url.domain.root_domain == "breely.com"
and strings.icontains(.display_text, ".pdf")
)
Detection logic
Scope: inbound message.
Detects messages containing a single Breely link that displays as a PDF file. Typically, redirects to a different destination for malicious purposes.
- inbound message
- length(filter(body.links, .href_url.domain.root_domain == 'breely.com')) is 1
any of
body.linkswhere all hold:- .href_url.domain.root_domain is 'breely.com'
- .display_text contains '.pdf'
Inspects: body.links, body.links[].display_text, body.links[].href_url.domain.root_domain, type.inbound. Sensors: strings.icontains.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
body.links[].href_url.domain.root_domain | equals | breely.com |
strings.icontains | substring | .pdf |
Stages and Predicates
Stage 1: mql_rule
and
any(body.links)
and
body.links.display_text contains ".pdf"
body.links.href_url.domain.root_domain eq "breely.com"
filter(body.links, .href_url.domain.root_domain == 'breely.com') length_compare "1"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Adobe Creative Cloud share from an unsolicited sender address
#Detects messages from Adobe Creative Cloud in which the document originates from a newly observed email address. The email address is extracted from the HTML body.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Social engineering, Free file host, Evasion |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == "message@adobe.com"
and headers.auth_summary.spf.pass
and headers.auth_summary.dmarc.pass
and any(html.xpath(body.html,
"//td[@style[contains(., 'adobe-clean-display')]]/strong/a/text()"
).nodes,
strings.parse_email(.raw).domain.root_domain not in $org_domains
and strings.parse_email(.raw).email not in $recipient_emails
and strings.parse_email(.raw).email not in $sender_emails
and not (
strings.parse_email(.raw).domain.domain not in $free_email_providers
and strings.parse_email(.raw).domain.domain in $recipient_domains
and strings.parse_email(.raw).domain.domain in $sender_domains
)
)
Detection logic
Scope: inbound message.
Detects messages from Adobe Creative Cloud in which the document originates from a newly observed email address. The email address is extracted from the HTML body.
- inbound message
- sender.email.email is 'message@adobe.com'
- headers.auth_summary.spf.pass
- headers.auth_summary.dmarc.pass
any of
html.xpath(body.html, "//td[@style[contains(., 'adobe-clean-display')]]/strong/a/text()").nodeswhere all hold:- strings.parse_email(.raw).domain.root_domain not in $org_domains
- strings.parse_email(.raw).email not in $recipient_emails
- strings.parse_email(.raw).email not in $sender_emails
not:
all of:
- strings.parse_email(.raw).domain.domain not in $free_email_providers
- strings.parse_email(.raw).domain.domain in $recipient_domains
- strings.parse_email(.raw).domain.domain in $sender_domains
Inspects: body.html, headers.auth_summary.dmarc.pass, headers.auth_summary.spf.pass, sender.email.email, type.inbound. Sensors: html.xpath, strings.parse_email. Reference lists: $free_email_providers, $org_domains, $recipient_domains, $recipient_emails, $sender_domains, $sender_emails.
Indicators matched (1)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | message@adobe.com |
Stages and Predicates
Stage 1: mql_rule
and
any(html.xpath(body.html, "//td[@style[contains(., 'adobe-clean-display')]]/strong/a/text()").nodes)
and
not
and
strings.parse_email func_call "strings.parse_email(html.xpath(body.html, \"//td[@style[contains(., 'adobe-clean-display')]]/strong/a/text()\").nodes[].raw).domain.domain in recipient_domains"
strings.parse_email func_call "strings.parse_email(html.xpath(body.html, \"//td[@style[contains(., 'adobe-clean-display')]]/strong/a/text()\").nodes[].raw).domain.domain in sender_domains"
strings.parse_email func_call "strings.parse_email(html.xpath(body.html, \"//td[@style[contains(., 'adobe-clean-display')]]/strong/a/text()\").nodes[].raw).domain.domain not in free_email_providers"
strings.parse_email func_call "strings.parse_email(html.xpath(body.html, \"//td[@style[contains(., 'adobe-clean-display')]]/strong/a/text()\").nodes[].raw).domain.root_domain not in org_domains"
strings.parse_email func_call "strings.parse_email(html.xpath(body.html, \"//td[@style[contains(., 'adobe-clean-display')]]/strong/a/text()\").nodes[].raw).email not in recipient_emails"
strings.parse_email func_call "strings.parse_email(html.xpath(body.html, \"//td[@style[contains(., 'adobe-clean-display')]]/strong/a/text()\").nodes[].raw).email not in sender_emails"
headers.auth_summary.dmarc.pass eq "true"
headers.auth_summary.spf.pass eq "true"
sender.email.email eq "message@adobe.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
Service abuse: Adobe legitimate domain with document approval language
#Detects messages from Adobe's legitimate email domain containing suspicious language about document or payment approval that may indicate service abuse.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud, Credential Phishing |
| Tactics and techniques | Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and recipients.to[0].email.domain.domain == "email.adobe.com"
and regex.icontains(body.current_thread.text,
"(?:approved?|view) (?:document|payment)"
)
Detection logic
Scope: inbound message.
Detects messages from Adobe's legitimate email domain containing suspicious language about document or payment approval that may indicate service abuse.
- inbound message
- recipients.to[0].email.domain.domain is 'email.adobe.com'
- body.current_thread.text matches '(?:approved?|view) (?:document|payment)'
Inspects: body.current_thread.text, recipients.to[0].email.domain.domain, type.inbound. Sensors: regex.icontains.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
recipients.to[0].email.domain.domain | equals | email.adobe.com |
regex.icontains | regex | (?:approved?|view) (?:document|payment) |
Stages and Predicates
Stage 1: mql_rule
and
body.current_thread.text regex_match "(?:approved?|view) (?:document|payment)"
recipients.to[0].email.domain.domain eq "email.adobe.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match value:"(?:approved?|view) (?:document|payment)" |
recipients.to[0].email.domain.domain | eq |
| field:"recipients.to[0].email.domain.domain" kind:eq value:"email.adobe.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Adobe message from newly registered domain
#Detects messages legitimately sent through Adobe's messaging infrastructure that contain mailto links pointing to domains registered within the last 365 days.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Evasion, Social engineering, Lookalike domain |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
// from Adobe
and sender.email.email == 'message@adobe.com'
// sender has a recently created email domain
and any(filter(body.links, .href_url.scheme == 'mailto'),
network.whois(.href_url.domain).days_old < 365
)
Detection logic
Scope: inbound message.
Detects messages legitimately sent through Adobe's messaging infrastructure that contain mailto links pointing to domains registered within the last 365 days.
- inbound message
- sender.email.email is 'message@adobe.com'
any of
filter(body.links)where:- network.whois(.href_url.domain).days_old < 365
Inspects: body.links, body.links[].href_url.scheme, sender.email.email, type.inbound. Sensors: network.whois.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | message@adobe.com |
body.links[].href_url.scheme | equals | mailto |
Stages and Predicates
Stage 1: mql_rule
and
any(filter(body.links))
network.whois func_call "network.whois(filter(body.links)[].href_url.domain).days_old < 365"
sender.email.email eq "message@adobe.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"message@adobe.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Adobe share containing newly observed email address domain
#Detects legitimate Adobe notification emails that contain a genuine Adobe-hosted document link alongside a mailto link with an external email address that is not the recipient, not part of the organization's domains, not associated with Adobe, and has never been observed in prior inbound or outbound mail. This pattern indicates abuse of Adobe's trusted email infrastructure to redirect victims into contacting an attacker-controlled address outside the normal mail flow.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing, BEC/Fraud |
| Tactics and techniques | Out of band pivot, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
// from Adobe
and sender.email.email == 'message@adobe.com'
// the email address in the body
and any(filter(body.links,
.href_url.scheme == 'mailto'
// is not the recipient
and .href_url.url !~ recipients.to[0].email.email
// not in org domains
and .href_url.domain.domain not in $org_domains
// and not adobe
and .href_url.domain.root_domain != "adobe.com"
),
// and has not been observed inbound/outbound in the environment
.href_url.domain.domain not in $sender_domains
and .href_url.domain.domain not in $recipient_domains
)
// there is a single link to an adobe hosted content
and length(distinct(filter(body.links,
.href_url.domain.root_domain == "adobe.com"
and strings.istarts_with(.href_url.path, '/id/urn:')
),
.href_url.url
)
) == 1
Detection logic
Scope: inbound message.
Detects legitimate Adobe notification emails that contain a genuine Adobe-hosted document link alongside a mailto link with an external email address that is not the recipient, not part of the organization's domains, not associated with Adobe, and has never been observed in prior inbound or outbound mail. This pattern indicates abuse of Adobe's trusted email infrastructure to redirect victims into contacting an attacker-controlled address outside the normal mail flow.
- inbound message
- sender.email.email is 'message@adobe.com'
any of
filter(body.links)where all hold:- .href_url.domain.domain not in $sender_domains
- .href_url.domain.domain not in $recipient_domains
- length(distinct(filter(body.links, .href_url.domain.root_domain == 'adobe.com' and strings.istarts_with(.href_url.path, '/id/urn:')), .href_url.url)) is 1
Inspects: body.links, body.links[].href_url.domain.domain, body.links[].href_url.domain.root_domain, body.links[].href_url.path, body.links[].href_url.scheme, body.links[].href_url.url, recipients.to[0].email.email, sender.email.email, type.inbound. Sensors: strings.istarts_with. Reference lists: $org_domains, $recipient_domains, $sender_domains.
Indicators matched (4)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | message@adobe.com |
body.links[].href_url.scheme | equals | mailto |
body.links[].href_url.domain.root_domain | equals | adobe.com |
strings.istarts_with | prefix | /id/urn: |
Stages and Predicates
Stage 1: mql_rule
and
any(filter(body.links))
and
macro "filter(body.links)[].href_url.domain.domain not in recipient_domains"
macro "filter(body.links)[].href_url.domain.domain not in sender_domains"
distinct(filter(body.links, .href_url.domain.root_domain == 'adobe.com' and strings.istarts_with(.href_url.path, '/id/urn:')), .href_url.url) length_compare "1"
sender.email.email eq "message@adobe.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"message@adobe.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Apple TestFlight with suspicious developer reference
#Detects legitimate Apple TestFlight emails that reference potentially suspicious developers or apps, including variations of OpenAI, ChatGPT, or Meta in the app description or developer name fields.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Spam |
| Tactics and techniques | Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
// appears to be from apple (don't care it being legit from apple, appearing is fine)
and sender.email.domain.domain == "email.apple.com"
// has a link
and any(body.current_thread.links,
.href_url.domain.domain in ('testflight.apple.com')
)
and (
// get the app description
any(html.xpath(body.html,
'//h2[contains(text(), "App Description")]/ancestor::tr/following-sibling::tr//pre'
).nodes,
any(ml.nlu_classifier(.display_text).entities,
.name == "org"
and any(["openai", "openal", "open ai", "open al", "chatgpt", "meta"],
strings.icontains(..text, .)
)
)
)
// parse out the template to get the app and org name
or any(html.xpath(body.html, '//h2[@aria-label]').nodes,
any(regex.iextract(.display_text,
'(?P<app_name>[^\r\n]+)[\r\n]+By (?P<dev_name>.*) for IOS.$'
),
any(["openai", "openal", "open ai", "open al", "chatgpt", "meta"],
strings.icontains(..named_groups["dev_name"], .)
or strings.icontains(..named_groups["app_name"], .)
)
)
)
)
Detection logic
Scope: inbound message.
Detects legitimate Apple TestFlight emails that reference potentially suspicious developers or apps, including variations of OpenAI, ChatGPT, or Meta in the app description or developer name fields.
- inbound message
- sender.email.domain.domain is 'email.apple.com'
any of
body.current_thread.linkswhere:- .href_url.domain.domain in ('testflight.apple.com')
any of:
any of
html.xpath(body.html, '//h2[contains(text(), "App Description")]/ancestor::tr/following-sibling::tr//pre').nodeswhere:any of
ml.nlu_classifier(.display_text).entitieswhere all hold:- .name is 'org'
any of
['openai', 'openal', 'open ai', 'open al', 'chatgpt', 'meta']where:- strings.icontains(.text)
any of
html.xpath(body.html, '//h2[@aria-label]').nodeswhere:any of
regex.iextract(.display_text)where:any of
['openai', 'openal', 'open ai', 'open al', 'chatgpt', 'meta']where any holds:- strings.icontains(.named_groups['dev_name'])
- strings.icontains(.named_groups['app_name'])
Inspects: body.current_thread.links, body.current_thread.links[].href_url.domain.domain, body.html, sender.email.domain.domain, type.inbound. Sensors: html.xpath, ml.nlu_classifier, regex.iextract, strings.icontains.
Indicators matched (4)
| Field | Match | Value |
|---|---|---|
sender.email.domain.domain | equals | email.apple.com |
body.current_thread.links[].href_url.domain.domain | member | testflight.apple.com |
ml.nlu_classifier(html.xpath(body.html, '//h2[contains(text(), "App Description")]/ancestor::tr/following-sibling::tr//pre').nodes[].display_text).entities[].name | equals | org |
regex.iextract | regex | (?P<app_name>[^\r\n]+)[\r\n]+By (?P<dev_name>.*) for IOS.$ |
Stages and Predicates
Stage 1: mql_rule
and
or
any(html.xpath(body.html, '//h2[contains(text(), "App Description")]/ancestor::tr/following-sibling::tr//pre').nodes)
any(ml.nlu_classifier(html.xpath(body.html, '//h2[contains(text(), "App Description")]/ancestor::tr/following-sibling::tr//pre').nodes.display_text).entities)
and
any(['openai', 'openal', 'open ai', 'open al', 'chatgpt', 'meta'])
strings.icontains func_call "strings.icontains(ml.nlu_classifier(html.xpath(body.html, '//h2[contains(text(), \"App Description\")]/ancestor::tr/following-sibling::tr//pre').nodes[].display_text).entities[].text)"
ml.nlu_classifier(html.xpath(body.html, '//h2[contains(text(), "App Description")]/ancestor::tr/following-sibling::tr//pre').nodes[].display_text).entities[].name eq "org"
any(html.xpath(body.html, '//h2[@aria-label]').nodes)
any(regex.iextract(html.xpath(body.html, '//h2[@aria-label]').nodes.display_text))
any(['openai', 'openal', 'open ai', 'open al', 'chatgpt', 'meta'])
or
strings.icontains func_call "strings.icontains(regex.iextract(html.xpath(body.html, '//h2[@aria-label]').nodes[].display_text)[].named_groups['app_name'])"
strings.icontains func_call "strings.icontains(regex.iextract(html.xpath(body.html, '//h2[@aria-label]').nodes[].display_text)[].named_groups['dev_name'])"
any(body.current_thread.links)
body.current_thread.links.href_url.domain.domain eq "testflight.apple.com"
sender.email.domain.domain eq "email.apple.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.domain.domain | eq |
| field:"sender.email.domain.domain" kind:eq value:"email.apple.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: AWS SNS callback scam impersonation
#Detects callback scam messages sent through Amazon Web Services Simple Notification Service (SNS) that impersonate well-known brands like McAfee, Norton, PayPal, and others. The rule identifies fraudulent purchase receipts or service notifications containing phone numbers to solicit victim callbacks, potentially leading to financial theft or malware installation.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Impersonation: Brand, Out of band pivot, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == "no-reply@sns.amazonaws.com"
and not coalesce(strings.icontains(headers.return_path.local_part,
'aws-ses-bounces'
),
false
)
and (
any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam" and .confidence != "low"
)
or (
regex.icontains(body.current_thread.text,
(
"mcafee|n[o0]rt[o0]n|geek.{0,5}squad|paypal|ebay|symantec|best buy|lifel[o0]ck"
)
)
and (
3 of (
strings.ilike(body.current_thread.text, '*purchase*'),
strings.ilike(body.current_thread.text, '*payment*'),
strings.ilike(body.current_thread.text, '*transaction*'),
strings.ilike(body.current_thread.text, '*subscription*'),
strings.ilike(body.current_thread.text, '*antivirus*'),
strings.ilike(body.current_thread.text, '*order*'),
strings.ilike(body.current_thread.text, '*support*'),
strings.ilike(body.current_thread.text, '*receipt*'),
strings.ilike(body.current_thread.text, '*invoice*'),
strings.ilike(body.current_thread.text, '*call*'),
strings.ilike(body.current_thread.text, '*cancel*'),
strings.ilike(body.current_thread.text, '*renew*'),
strings.ilike(body.current_thread.text, '*refund*'),
strings.ilike(body.current_thread.text, '*host key*')
)
)
// phone number regex
and any([body.current_thread.text, subject.subject],
regex.icontains(.,
'\+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4}',
'\+?([ilo0-9]{1,2})?\s?\(?\d{3}\)?[\s\.\-⋅]{0,5}[ilo0-9]{3}[\s\.\-⋅]{0,5}[ilo0-9]{4}'
)
)
)
)
Detection logic
Scope: inbound message.
Detects callback scam messages sent through Amazon Web Services Simple Notification Service (SNS) that impersonate well-known brands like McAfee, Norton, PayPal, and others. The rule identifies fraudulent purchase receipts or service notifications containing phone numbers to solicit victim callbacks, potentially leading to financial theft or malware installation.
- inbound message
- sender.email.email is 'no-reply@sns.amazonaws.com'
not:
- coalesce(strings.icontains(headers.return_path.local_part, 'aws-ses-bounces'))
any of:
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'callback_scam'
- .confidence is not 'low'
all of:
- body.current_thread.text matches 'mcafee|n[o0]rt[o0]n|geek.{0,5}squad|paypal|ebay|symantec|best buy|lifel[o0]ck'
at least 3 of 14: body.current_thread.text matches any of 14 patterns
*purchase**payment**transaction**subscription**antivirus**order**support**receipt**invoice**call**cancel**renew**refund**host key*
any of
[body.current_thread.text, subject.subject]where:. matches any of 2 patterns
\+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4}\+?([ilo0-9]{1,2})?\s?\(?\d{3}\)?[\s\.\-⋅]{0,5}[ilo0-9]{3}[\s\.\-⋅]{0,5}[ilo0-9]{4}
Inspects: body.current_thread.text, headers.return_path.local_part, sender.email.email, subject.subject, type.inbound. Sensors: ml.nlu_classifier, regex.icontains, strings.icontains, strings.ilike.
Indicators matched (19)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | no-reply@sns.amazonaws.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
regex.icontains | regex | mcafee|n[o0]rt[o0]n|geek.{0,5}squad|paypal|ebay|symantec|best buy|lifel[o0]ck |
strings.ilike | substring | *purchase* |
strings.ilike | substring | *payment* |
strings.ilike | substring | *transaction* |
strings.ilike | substring | *subscription* |
strings.ilike | substring | *antivirus* |
strings.ilike | substring | *order* |
strings.ilike | substring | *support* |
strings.ilike | substring | *receipt* |
strings.ilike | substring | *invoice* |
7 more
strings.ilike | substring | *call* |
strings.ilike | substring | *cancel* |
strings.ilike | substring | *renew* |
strings.ilike | substring | *refund* |
strings.ilike | substring | *host key* |
regex.icontains | regex | \+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4} |
regex.icontains | regex | \+?([ilo0-9]{1,2})?\s?\(?\d{3}\)?[\s\.\-⋅]{0,5}[ilo0-9]{3}[\s\.\-⋅]{0,5}[ilo0-9]{4} |
Stages and Predicates
Stage 1: mql_rule
and
or
and
any([body.current_thread.text, subject.subject])
or
[body.current_thread.text, subject.subject] regex_match "\\+?([ilo0-9]{1,2})?\\s?\\(?\\d{3}\\)?[\\s\\.\\-⋅]{0,5}[ilo0-9]{3}[\\s\\.\\-⋅]{0,5}[ilo0-9]{4}"
[body.current_thread.text, subject.subject] regex_match "\\+?([ilo0-9]{1}.)?\\(?[ilo0-9]{3}?\\)?.[ilo0-9]{3}.?[ilo0-9]{4}"
or
body.current_thread.text match "antivirus"
body.current_thread.text match "call"
body.current_thread.text match "cancel"
body.current_thread.text match "host key"
body.current_thread.text match "invoice"
body.current_thread.text match "order"
body.current_thread.text match "payment"
body.current_thread.text match "purchase"
body.current_thread.text match "receipt"
body.current_thread.text match "refund"
body.current_thread.text match "renew"
body.current_thread.text match "subscription"
body.current_thread.text match "support"
body.current_thread.text match "transaction"
body.current_thread.text regex_match "mcafee|n[o0]rt[o0]n|geek.{0,5}squad|paypal|ebay|symantec|best buy|lifel[o0]ck"
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
not
coalesce func_call "coalesce(strings.icontains(headers.return_path.local_part, 'aws-ses-bounces'))"
sender.email.email eq "no-reply@sns.amazonaws.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match |
body.current_thread.text | wildcard |
| field:"body.current_thread.text" kind:wildcard |
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"no-reply@sns.amazonaws.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Calendly callback scam detection
#Detects inbound messages from Calendly's notification system that contain callback scam content, as identified through natural language processing with medium or high confidence levels.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Social engineering, Impersonation: Brand |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email in (
"no-reply@calendly.com",
"notifications@calendly.com"
)
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam" and .confidence != "low"
)
Detection logic
Scope: inbound message.
Detects inbound messages from Calendly's notification system that contain callback scam content, as identified through natural language processing with medium or high confidence levels.
- inbound message
- sender.email.email in ('no-reply@calendly.com', 'notifications@calendly.com')
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'callback_scam'
- .confidence is not 'low'
Inspects: body.current_thread.text, sender.email.email, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (3)
| Field | Match | Value |
|---|---|---|
sender.email.email | member | no-reply@calendly.com |
sender.email.email | member | notifications@calendly.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
sender.email.email in ["no-reply@calendly.com", "notifications@calendly.com"]
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | in |
| field:"sender.email.email" kind:in |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Cisco secure email service with financial request
#Detects messages abusing Cisco's secure email service (res.cisco.com) that contain financial topics or invoice requests, with mismatched reply-to domains and undisclosed recipients.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud |
| Tactics and techniques | Impersonation: Brand, Social engineering, Evasion |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.domain.domain == 'res.cisco.com'
and any(headers.reply_to, .email.domain.domain != 'res.cisco.com')
and (
length(recipients.to) == 0
or all(recipients.to, .display_name == "Undisclosed recipients")
)
and (
any(ml.nlu_classifier(body.current_thread.text).topics,
.name in ("Financial Communications", "Request to View Invoice")
)
or any(ml.nlu_classifier(subject.base).entities, .name == "financial")
)
Detection logic
Scope: inbound message.
Detects messages abusing Cisco's secure email service (res.cisco.com) that contain financial topics or invoice requests, with mismatched reply-to domains and undisclosed recipients.
- inbound message
- sender.email.domain.domain is 'res.cisco.com'
any of
headers.reply_towhere:- .email.domain.domain is not 'res.cisco.com'
any of:
- length(recipients.to) is 0
all of
recipients.towhere:- .display_name is 'Undisclosed recipients'
any of:
any of
ml.nlu_classifier(body.current_thread.text).topicswhere:- .name in ('Financial Communications', 'Request to View Invoice')
any of
ml.nlu_classifier(subject.base).entitieswhere:- .name is 'financial'
Inspects: body.current_thread.text, headers.reply_to, headers.reply_to[].email.domain.domain, recipients.to, recipients.to[].display_name, sender.email.domain.domain, subject.base, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (5)
| Field | Match | Value |
|---|---|---|
sender.email.domain.domain | equals | res.cisco.com |
recipients.to[].display_name | equals | Undisclosed recipients |
ml.nlu_classifier(body.current_thread.text).topics[].name | member | Financial Communications |
ml.nlu_classifier(body.current_thread.text).topics[].name | member | Request to View Invoice |
ml.nlu_classifier(subject.base).entities[].name | equals | financial |
Stages and Predicates
Stage 1: mql_rule
and
or
any(ml.nlu_classifier(body.current_thread.text).topics)
ml.nlu_classifier(body.current_thread.text).topics.name in ["Financial Communications", "Request to View Invoice"]
any(ml.nlu_classifier(subject.base).entities)
ml.nlu_classifier(subject.base).entities.name eq "financial"
any(headers.reply_to)
headers.reply_to.email.domain.domain ne "res.cisco.com"
or
recipients.to length_compare "0"
macro "all(recipients.to)"
sender.email.domain.domain eq "res.cisco.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.domain.domain | eq |
| field:"sender.email.domain.domain" kind:eq value:"res.cisco.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Cognito Forms with short body from unknown sender
#Detects messages with a very short body (under 200 characters) that contain a link to Cognito Forms, where the sender is not Cognito Forms itself.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and regex.count(body.html.raw,
'(?:<(?:p|div)[^>]*>\s*<br>\s*</(?:p|div)>\s*){6,}'
) >= 1
and sender.email.domain.root_domain != "cognitoforms.com"
and any(body.current_thread.links,
.href_url.domain.root_domain == "cognitoforms.com"
and length(.display_text) > 8
// negating benign hits
and not .display_text =~ "opt-out"
and not strings.icontains(.display_text, "cognitoforms.com")
)
// negating messages which use cognito and other mailing platforms
and not any(body.current_thread.links, .display_text =~ "unsubscribe")
Detection logic
Scope: inbound message.
Detects messages with a very short body (under 200 characters) that contain a link to Cognito Forms, where the sender is not Cognito Forms itself.
- inbound message
- regex.count(body.html.raw, '(?:<(?:p|div)[^>]*>\\s*<br>\\s*</(?:p|div)>\\s*){6,}') ≥ 1
- sender.email.domain.root_domain is not 'cognitoforms.com'
any of
body.current_thread.linkswhere all hold:- .href_url.domain.root_domain is 'cognitoforms.com'
- length(.display_text) > 8
not:
- .display_text is 'opt-out'
not:
- .display_text contains 'cognitoforms.com'
not:
any of
body.current_thread.linkswhere:- .display_text is 'unsubscribe'
Inspects: body.current_thread.links, body.current_thread.links[].display_text, body.current_thread.links[].href_url.domain.root_domain, body.html.raw, sender.email.domain.root_domain, type.inbound. Sensors: regex.count, strings.icontains.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
regex.count | regex | (?:<(?:p|div)[^>]*>\s*<br>\s*</(?:p|div)>\s*){6,} |
body.current_thread.links[].href_url.domain.root_domain | equals | cognitoforms.com |
Stages and Predicates
Stage 1: mql_rule
and
any(body.current_thread.links)
and
not
body.current_thread.links.display_text contains "cognitoforms.com"
not
body.current_thread.links.display_text eq "opt-out"
body.current_thread.links.display_text length_compare "8"
body.current_thread.links.href_url.domain.root_domain eq "cognitoforms.com"
not
any(body.current_thread.links)
body.current_thread.links.display_text eq "unsubscribe"
regex.count func_call "regex.count(body.html.raw, \"(?:<(?:p|div)[^>]*>\\s*<br>\\s*</(?:p|div)>\\s*){6,}\") >= 1"
sender.email.domain.root_domain ne "cognitoforms.com"
type.inbound eq "true"Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
body.current_thread.links | array_any | excludes:body.current_thread.links |
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.domain.root_domain | ne |
| field:"sender.email.domain.root_domain" kind:ne value:"cognitoforms.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Coursera callback scam
#Detects inbound messages spoofing Coursera transactional notifications - such as email confirmation requests or account change alerts - sent from Coursera's legitimate sending infrastructure, but targeting recipients on newly registered domains or containing mailto links pointing to newly registered non-Coursera domains. The combination of authentic-looking Coursera branding with anomalous recipient or embedded contact domains suggests account takeover or credential harvesting activity targeting Coursera users.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Impersonation: Brand, Lookalike domain, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
// message is sent from coursera (auth doesn't really matter here)
and sender.email.domain.root_domain == "coursera.org"
and (
// the email being changed appears in the body as a link
any(body.links,
.href_url.scheme == "mailto"
and .href_url.domain.root_domain != "coursera.org"
// the domain is newly registered
and network.whois(.href_url.domain).days_old < 365
)
// in other cases the email address isn't in the email body and it's only as a rcpt
or network.whois(recipients.to[0].email.domain).days_old < 365
// extract the first line and do NLU on it
or any(ml.nlu_classifier(regex.extract(body.current_thread.text,
'^(?P<first_line>[^\n]+)\n'
)[0].named_groups["first_line"]
).intents,
.name == "callback_scam" and .confidence == "high"
)
)
// not in org_domains
and all(recipients.to, .email.domain.domain not in $org_domains)
Detection logic
Scope: inbound message.
Detects inbound messages spoofing Coursera transactional notifications - such as email confirmation requests or account change alerts - sent from Coursera's legitimate sending infrastructure, but targeting recipients on newly registered domains or containing mailto links pointing to newly registered non-Coursera domains. The combination of authentic-looking Coursera branding with anomalous recipient or embedded contact domains suggests account takeover or credential harvesting activity targeting Coursera users.
- inbound message
- sender.email.domain.root_domain is 'coursera.org'
any of:
any of
body.linkswhere all hold:- .href_url.scheme is 'mailto'
- .href_url.domain.root_domain is not 'coursera.org'
- network.whois(.href_url.domain).days_old < 365
- network.whois(recipients.to[0].email.domain).days_old < 365
any of
ml.nlu_classifier(regex.extract(body.current_thread.text, '^(?P<first_line>[^\\n]+)\\n')[0].named_groups['first_line']).intentswhere all hold:- .name is 'callback_scam'
- .confidence is 'high'
all of
recipients.towhere:- .email.domain.domain not in $org_domains
Inspects: body.current_thread.text, body.links, body.links[].href_url.domain, body.links[].href_url.domain.root_domain, body.links[].href_url.scheme, recipients.to, recipients.to[0].email.domain, recipients.to[].email.domain.domain, sender.email.domain.root_domain, type.inbound. Sensors: ml.nlu_classifier, network.whois, regex.extract. Reference lists: $org_domains.
Indicators matched (5)
| Field | Match | Value |
|---|---|---|
sender.email.domain.root_domain | equals | coursera.org |
body.links[].href_url.scheme | equals | mailto |
regex.extract | regex | ^(?P<first_line>[^\n]+)\n |
ml.nlu_classifier(regex.extract(body.current_thread.text, '^(?P<first_line>[^\\n]+)\\n')[0].named_groups['first_line']).intents[].name | equals | callback_scam |
ml.nlu_classifier(regex.extract(body.current_thread.text, '^(?P<first_line>[^\\n]+)\\n')[0].named_groups['first_line']).intents[].confidence | equals | high |
Stages and Predicates
Stage 1: mql_rule
and
or
any(body.links)
and
body.links.href_url.domain.root_domain ne "coursera.org"
body.links.href_url.scheme eq "mailto"
network.whois func_call "network.whois(body.links[].href_url.domain).days_old < 365"
any(ml.nlu_classifier(regex.extract(body.current_thread.text, '^(?P<first_line>[^\\n]+)\\n')[0].named_groups['first_line']).intents)
and
ml.nlu_classifier(regex.extract(body.current_thread.text, '^(?P<first_line>[^\\n]+)\\n')[0].named_groups['first_line']).intents.confidence eq "high"
ml.nlu_classifier(regex.extract(body.current_thread.text, '^(?P<first_line>[^\\n]+)\\n')[0].named_groups['first_line']).intents.name eq "callback_scam"
network.whois func_call "network.whois(recipients.to[0].email.domain).days_old < 365"
sender.email.domain.root_domain eq "coursera.org"
type.inbound eq "true"
macro "all(recipients.to)"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.domain.root_domain | eq |
| field:"sender.email.domain.root_domain" kind:eq value:"coursera.org" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Elastic alerts extortion
#Detects inbound messages impersonating Elastic alerts sender that contain extortion content identified through natural language processing with medium to high confidence.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Extortion |
| Tactics and techniques | Impersonation: Brand, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == "noreply@alerts.elastic.co"
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "extortion" and .confidence != "low"
)
Detection logic
Scope: inbound message.
Detects inbound messages impersonating Elastic alerts sender that contain extortion content identified through natural language processing with medium to high confidence.
- inbound message
- sender.email.email is 'noreply@alerts.elastic.co'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'extortion'
- .confidence is not 'low'
Inspects: body.current_thread.text, sender.email.email, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | noreply@alerts.elastic.co |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | extortion |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "extortion"
sender.email.email eq "noreply@alerts.elastic.co"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"noreply@alerts.elastic.co" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Facebook business with action required subject
#Detects messages from the Facebook business domain containing 'action required' in the subject line, commonly used to create urgency in impersonation attacks.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Impersonation: Brand, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and (
sender.email.domain.root_domain == "facebook.com"
or sender.email.domain.root_domain == "facebookmail.com"
)
and 3 of (
strings.icontains(subject.subject, "Action required"),
strings.icontains(subject.subject, "invited to join"),
strings.icontains(subject.subject, "partner request"),
strings.icontains(body.current_thread.text, "You've been invited"),
strings.icontains(body.current_thread.text, "You're invited"),
strings.icontains(body.current_thread.text,
"You've received a partner request"
),
strings.icontains(body.current_thread.text,
"not part of or affiliated with Meta"
),
strings.icontains(body.current_thread.text, "Agency Partner")
)
and (
// and the link is recently registered
any(body.links, network.whois(.href_url.domain).days_old <= 30)
or any(body.links,
// if the link is still active, check if it's cred theft
any(ml.nlu_classifier(beta.ocr(ml.link_analysis(.).screenshot).text).intents,
.name == "cred_theft" and .confidence != "low"
)
)
// or look for the legit Meta footer address
or strings.icontains(body.current_thread.text,
'1 Meta Way, Menlo Park, CA 94025'
)
)
Detection logic
Scope: inbound message.
Detects messages from the Facebook business domain containing 'action required' in the subject line, commonly used to create urgency in impersonation attacks.
- inbound message
any of:
- sender.email.domain.root_domain is 'facebook.com'
- sender.email.domain.root_domain is 'facebookmail.com'
at least 3 of:
- subject.subject contains 'Action required'
- subject.subject contains 'invited to join'
- subject.subject contains 'partner request'
- body.current_thread.text contains "You've been invited"
- body.current_thread.text contains "You're invited"
- body.current_thread.text contains "You've received a partner request"
- body.current_thread.text contains 'not part of or affiliated with Meta'
- body.current_thread.text contains 'Agency Partner'
any of:
any of
body.linkswhere:- network.whois(.href_url.domain).days_old ≤ 30
any of
body.linkswhere:any of
ml.nlu_classifier(beta.ocr(ml.link_analysis(.).screenshot).text).intentswhere all hold:- .name is 'cred_theft'
- .confidence is not 'low'
- body.current_thread.text contains '1 Meta Way, Menlo Park, CA 94025'
Inspects: body.current_thread.text, body.links, body.links[].href_url.domain, sender.email.domain.root_domain, subject.subject, type.inbound. Sensors: beta.ocr, ml.link_analysis, ml.nlu_classifier, network.whois, strings.icontains.
Indicators matched (12)
| Field | Match | Value |
|---|---|---|
sender.email.domain.root_domain | equals | facebook.com |
sender.email.domain.root_domain | equals | facebookmail.com |
strings.icontains | substring | Action required |
strings.icontains | substring | invited to join |
strings.icontains | substring | partner request |
strings.icontains | substring | You've been invited |
strings.icontains | substring | You're invited |
strings.icontains | substring | You've received a partner request |
strings.icontains | substring | not part of or affiliated with Meta |
strings.icontains | substring | Agency Partner |
ml.nlu_classifier(beta.ocr(ml.link_analysis(body.links[]).screenshot).text).intents[].name | equals | cred_theft |
strings.icontains | substring | 1 Meta Way, Menlo Park, CA 94025 |
Stages and Predicates
Stage 1: mql_rule
and
or
any(body.links)
any(ml.nlu_classifier(beta.ocr(ml.link_analysis(body.links).screenshot).text).intents)
and
ml.nlu_classifier(beta.ocr(ml.link_analysis(body.links[]).screenshot).text).intents[].confidence ne "low"
ml.nlu_classifier(beta.ocr(ml.link_analysis(body.links[]).screenshot).text).intents[].name eq "cred_theft"
any(body.links)
network.whois func_call "network.whois(body.links[].href_url.domain).days_old <= 30"
body.current_thread.text contains "1 Meta Way, Menlo Park, CA 94025"
or
body.current_thread.text contains "Agency Partner"
body.current_thread.text contains "You're invited"
body.current_thread.text contains "You've been invited"
body.current_thread.text contains "You've received a partner request"
body.current_thread.text contains "not part of or affiliated with Meta"
subject.subject contains "Action required"
subject.subject contains "invited to join"
subject.subject contains "partner request"
or
sender.email.domain.root_domain eq "facebook.com"
sender.email.domain.root_domain eq "facebookmail.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains |
sender.email.domain.root_domain | eq |
| field:"sender.email.domain.root_domain" kind:eq |
subject.subject | contains |
| field:"subject.subject" kind:contains |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Facebook mail notification callback scam
#Detects inbound messages spoofing Facebook's official notification address that contain callback scam intent identified with medium or high confidence. Attackers leverage the trusted Facebook sender identity to deceive recipients into calling a fraudulent phone number.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Impersonation: Brand, Social engineering, Spoofing |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == "notification@facebookmail.com"
// legitimate messages from this address use Facebook as the display name
and sender.display_name != "Facebook"
and (
any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam" and .confidence != "low"
)
or (
regex.icontains(body.current_thread.text,
(
"mcafee|n[o0]rt[o0]n|geek.{0,5}squad|paypal|ebay|symantec|best buy|lifel[o0]ck"
)
)
and (
3 of (
strings.ilike(body.current_thread.text, '*purchase*'),
strings.ilike(body.current_thread.text, '*payment*'),
strings.ilike(body.current_thread.text, '*transaction*'),
strings.ilike(body.current_thread.text, '*subscription*'),
strings.ilike(body.current_thread.text, '*antivirus*'),
strings.ilike(body.current_thread.text, '*order*'),
strings.ilike(body.current_thread.text, '*support*'),
strings.ilike(body.current_thread.text, '*receipt*'),
strings.ilike(body.current_thread.text, '*invoice*'),
strings.ilike(body.current_thread.text, '*call*'),
strings.ilike(body.current_thread.text, '*cancel*'),
strings.ilike(body.current_thread.text, '*renew*'),
strings.ilike(body.current_thread.text, '*refund*'),
strings.ilike(body.current_thread.text, '*host key*')
)
)
// phone number regex
and any([body.current_thread.text, subject.subject],
regex.icontains(strings.replace_confusables(.),
'\+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4}',
'\+?([ilo0-9]{1,2})?\s?\(?\d{3}\)?[\s\.\-⋅]{0,5}[ilo0-9]{3}[\s\.\-⋅]{0,5}[ilo0-9]{4}',
'[\+\x{FF0B}]?(?:[0-9\x{FF10}-\x{FF19}][^0-9\x{FF10}-\x{FF19}]{0,3}){10,11}'
)
)
)
)
Detection logic
Scope: inbound message.
Detects inbound messages spoofing Facebook's official notification address that contain callback scam intent identified with medium or high confidence. Attackers leverage the trusted Facebook sender identity to deceive recipients into calling a fraudulent phone number.
- inbound message
- sender.email.email is 'notification@facebookmail.com'
- sender.display_name is not 'Facebook'
any of:
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'callback_scam'
- .confidence is not 'low'
all of:
- body.current_thread.text matches 'mcafee|n[o0]rt[o0]n|geek.{0,5}squad|paypal|ebay|symantec|best buy|lifel[o0]ck'
at least 3 of 14: body.current_thread.text matches any of 14 patterns
*purchase**payment**transaction**subscription**antivirus**order**support**receipt**invoice**call**cancel**renew**refund**host key*
any of
[body.current_thread.text, subject.subject]where:strings.replace_confusables(.) matches any of 3 patterns
\+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4}\+?([ilo0-9]{1,2})?\s?\(?\d{3}\)?[\s\.\-⋅]{0,5}[ilo0-9]{3}[\s\.\-⋅]{0,5}[ilo0-9]{4}[\+\x{FF0B}]?(?:[0-9\x{FF10}-\x{FF19}][^0-9\x{FF10}-\x{FF19}]{0,3}){10,11}
Inspects: body.current_thread.text, sender.display_name, sender.email.email, subject.subject, type.inbound. Sensors: ml.nlu_classifier, regex.icontains, strings.ilike, strings.replace_confusables.
Indicators matched (20)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | notification@facebookmail.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
regex.icontains | regex | mcafee|n[o0]rt[o0]n|geek.{0,5}squad|paypal|ebay|symantec|best buy|lifel[o0]ck |
strings.ilike | substring | *purchase* |
strings.ilike | substring | *payment* |
strings.ilike | substring | *transaction* |
strings.ilike | substring | *subscription* |
strings.ilike | substring | *antivirus* |
strings.ilike | substring | *order* |
strings.ilike | substring | *support* |
strings.ilike | substring | *receipt* |
strings.ilike | substring | *invoice* |
8 more
strings.ilike | substring | *call* |
strings.ilike | substring | *cancel* |
strings.ilike | substring | *renew* |
strings.ilike | substring | *refund* |
strings.ilike | substring | *host key* |
regex.icontains | regex | \+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4} |
regex.icontains | regex | \+?([ilo0-9]{1,2})?\s?\(?\d{3}\)?[\s\.\-⋅]{0,5}[ilo0-9]{3}[\s\.\-⋅]{0,5}[ilo0-9]{4} |
regex.icontains | regex | [\+\x{FF0B}]?(?:[0-9\x{FF10}-\x{FF19}][^0-9\x{FF10}-\x{FF19}]{0,3}){10,11} |
Stages and Predicates
Stage 1: mql_rule
and
or
and
any([body.current_thread.text, subject.subject])
or
strings.replace_confusables([body.current_thread.text, subject.subject][]) regex_match "[\\+\\x{FF0B}]?(?:[0-9\\x{FF10}-\\x{FF19}][^0-9\\x{FF10}-\\x{FF19}]{0,3}){10,11}"
strings.replace_confusables([body.current_thread.text, subject.subject][]) regex_match "\\+?([ilo0-9]{1,2})?\\s?\\(?\\d{3}\\)?[\\s\\.\\-⋅]{0,5}[ilo0-9]{3}[\\s\\.\\-⋅]{0,5}[ilo0-9]{4}"
strings.replace_confusables([body.current_thread.text, subject.subject][]) regex_match "\\+?([ilo0-9]{1}.)?\\(?[ilo0-9]{3}?\\)?.[ilo0-9]{3}.?[ilo0-9]{4}"
or
body.current_thread.text match "antivirus"
body.current_thread.text match "call"
body.current_thread.text match "cancel"
body.current_thread.text match "host key"
body.current_thread.text match "invoice"
body.current_thread.text match "order"
body.current_thread.text match "payment"
body.current_thread.text match "purchase"
body.current_thread.text match "receipt"
body.current_thread.text match "refund"
body.current_thread.text match "renew"
body.current_thread.text match "subscription"
body.current_thread.text match "support"
body.current_thread.text match "transaction"
body.current_thread.text regex_match "mcafee|n[o0]rt[o0]n|geek.{0,5}squad|paypal|ebay|symantec|best buy|lifel[o0]ck"
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
sender.display_name ne "Facebook"
sender.email.email eq "notification@facebookmail.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match |
body.current_thread.text | wildcard |
| field:"body.current_thread.text" kind:wildcard |
sender.display_name | ne |
| field:"sender.display_name" kind:ne value:"Facebook" |
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"notification@facebookmail.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Fake loan/funding verification lure via Mailgun
#Detects inbound messages sent via Mailgun's sending infrastructure (mg subdomain) from common bulk sender addresses, where the body contains unresolved template placeholders like '[SOURCEID]', known Mailgun-associated physical addresses, or links pointing to Mailgun's campaign/list management subdomain (napp) on the same root domain as the sender. These indicators suggest automated bulk distribution with incomplete template rendering or suspicious infrastructure usage.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Impersonation: Brand, Evasion, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.local_part in~ ("info", "no-reply", "noreply")
and sender.email.domain.subdomain == "mg"
and (
any(body.links,
.href_url.domain.subdomain == "napp"
and .href_url.domain.root_domain == sender.email.domain.root_domain
and (
strings.istarts_with(.href_url.path, "/campaigns/")
or strings.istarts_with(.href_url.path, "/lists/")
)
)
or strings.icontains(body.current_thread.text,
"12603 State Route 143 Suite G",
"4049 US Highway 231 #2002 Wetumpka, AL 36093"
)
or strings.icontains(body.current_thread.text, "[SOURCEID]")
)
Detection logic
Scope: inbound message.
Detects inbound messages sent via Mailgun's sending infrastructure (mg subdomain) from common bulk sender addresses, where the body contains unresolved template placeholders like '[SOURCEID]', known Mailgun-associated physical addresses, or links pointing to Mailgun's campaign/list management subdomain (napp) on the same root domain as the sender. These indicators suggest automated bulk distribution with incomplete template rendering or suspicious infrastructure usage.
- inbound message
- sender.email.local_part in ('info', 'no-reply', 'noreply')
- sender.email.domain.subdomain is 'mg'
any of:
any of
body.linkswhere all hold:- .href_url.domain.subdomain is 'napp'
- .href_url.domain.root_domain is sender.email.domain.root_domain
any of:
- .href_url.path starts with '/campaigns/'
- .href_url.path starts with '/lists/'
body.current_thread.text contains any of 2 patterns
12603 State Route 143 Suite G4049 US Highway 231 #2002 Wetumpka, AL 36093
- body.current_thread.text contains '[SOURCEID]'
Inspects: body.current_thread.text, body.links, body.links[].href_url.domain.root_domain, body.links[].href_url.domain.subdomain, body.links[].href_url.path, sender.email.domain.root_domain, sender.email.domain.subdomain, sender.email.local_part, type.inbound. Sensors: strings.icontains, strings.istarts_with.
Indicators matched (10)
| Field | Match | Value |
|---|---|---|
sender.email.local_part | member | info |
sender.email.local_part | member | no-reply |
sender.email.local_part | member | noreply |
sender.email.domain.subdomain | equals | mg |
body.links[].href_url.domain.subdomain | equals | napp |
strings.istarts_with | prefix | /campaigns/ |
strings.istarts_with | prefix | /lists/ |
strings.icontains | substring | 12603 State Route 143 Suite G |
strings.icontains | substring | 4049 US Highway 231 #2002 Wetumpka, AL 36093 |
strings.icontains | substring | [SOURCEID] |
Stages and Predicates
Stage 1: mql_rule
and
or
any(body.links)
and
or
body.links.href_url.path starts_with "/campaigns/"
body.links.href_url.path starts_with "/lists/"
body.links.href_url.domain.root_domain cross_field_compare "sender.email.domain.root_domain"
body.links.href_url.domain.subdomain eq "napp"
body.current_thread.text contains "12603 State Route 143 Suite G"
body.current_thread.text contains "4049 US Highway 231 #2002 Wetumpka, AL 36093"
body.current_thread.text contains "[SOURCEID]"
sender.email.domain.subdomain eq "mg"
sender.email.local_part in ["info", "no-reply", "noreply"]
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains |
sender.email.domain.subdomain | eq |
| field:"sender.email.domain.subdomain" kind:eq value:"mg" |
sender.email.local_part | in |
| field:"sender.email.local_part" kind:in |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: FileMail callback scam
#Detects inbound messages from FileMail's no-reply address where the first line of the email body is classified with high confidence as a callback scam using natural language understanding. Attackers leverage legitimate file sharing services to deliver fraudulent messages that instruct recipients to call a phone number, often impersonating tech support or financial institutions.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Social engineering, Free file host, Out of band pivot |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == "no-reply@filemail.com"
and any(ml.nlu_classifier(regex.extract(body.current_thread.text,
'^(?P<first_line>[^\n]+)\n'
)[0].named_groups["first_line"]
).intents,
.name == "callback_scam" and .confidence == "high"
)
Detection logic
Scope: inbound message.
Detects inbound messages from FileMail's no-reply address where the first line of the email body is classified with high confidence as a callback scam using natural language understanding. Attackers leverage legitimate file sharing services to deliver fraudulent messages that instruct recipients to call a phone number, often impersonating tech support or financial institutions.
- inbound message
- sender.email.email is 'no-reply@filemail.com'
any of
ml.nlu_classifier(regex.extract(body.current_thread.text, '^(?P<first_line>[^\\n]+)\\n')[0].named_groups['first_line']).intentswhere all hold:- .name is 'callback_scam'
- .confidence is 'high'
Inspects: body.current_thread.text, sender.email.email, type.inbound. Sensors: ml.nlu_classifier, regex.extract.
Indicators matched (4)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | no-reply@filemail.com |
regex.extract | regex | ^(?P<first_line>[^\n]+)\n |
ml.nlu_classifier(regex.extract(body.current_thread.text, '^(?P<first_line>[^\\n]+)\\n')[0].named_groups['first_line']).intents[].name | equals | callback_scam |
ml.nlu_classifier(regex.extract(body.current_thread.text, '^(?P<first_line>[^\\n]+)\\n')[0].named_groups['first_line']).intents[].confidence | equals | high |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(regex.extract(body.current_thread.text, '^(?P<first_line>[^\\n]+)\\n')[0].named_groups['first_line']).intents)
and
ml.nlu_classifier(regex.extract(body.current_thread.text, '^(?P<first_line>[^\\n]+)\\n')[0].named_groups['first_line']).intents.confidence eq "high"
ml.nlu_classifier(regex.extract(body.current_thread.text, '^(?P<first_line>[^\\n]+)\\n')[0].named_groups['first_line']).intents.name eq "callback_scam"
sender.email.email eq "no-reply@filemail.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"no-reply@filemail.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Free provider with SendGrid routing
#Message From header includes a free email provider domain but is routed through SendGrid infrastructure, indicating potential service abuse for delivery evasion.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Free email provider, Evasion |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.domain.domain in $free_email_providers
and any(headers.domains, .root_domain == "sendgrid.net")
and not any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "benign"
)
and not any(ml.nlu_classifier(body.current_thread.text).topics,
.name == "Bounce Back and Delivery Failure Notifications"
)
Detection logic
Scope: inbound message.
Message From header includes a free email provider domain but is routed through SendGrid infrastructure, indicating potential service abuse for delivery evasion.
- inbound message
- sender.email.domain.domain in $free_email_providers
any of
headers.domainswhere:- .root_domain is 'sendgrid.net'
not:
any of
ml.nlu_classifier(body.current_thread.text).intentswhere:- .name is 'benign'
not:
any of
ml.nlu_classifier(body.current_thread.text).topicswhere:- .name is 'Bounce Back and Delivery Failure Notifications'
Inspects: body.current_thread.text, headers.domains, headers.domains[].root_domain, sender.email.domain.domain, type.inbound. Sensors: ml.nlu_classifier. Reference lists: $free_email_providers.
Indicators matched (1)
| Field | Match | Value |
|---|---|---|
headers.domains[].root_domain | equals | sendgrid.net |
Stages and Predicates
Stage 1: mql_rule
and
not
any(ml.nlu_classifier(body.current_thread.text).intents)
ml.nlu_classifier(body.current_thread.text).intents.name eq "benign"
not
any(ml.nlu_classifier(body.current_thread.text).topics)
ml.nlu_classifier(body.current_thread.text).topics.name eq "Bounce Back and Delivery Failure Notifications"
any(headers.domains)
headers.domains.root_domain eq "sendgrid.net"
type.inbound eq "true"
macro "sender.email.domain.domain in free_email_providers"Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
ml.nlu_classifier(body.current_thread.text).intents | array_any | excludes:ml.nlu_classifier(body.current_thread.text).intents | |
ml.nlu_classifier(body.current_thread.text).topics | array_any | excludes:ml.nlu_classifier(body.current_thread.text).topics |
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: GetAccept callback scam content
#Detects callback scam language in messages sent through legitimate GetAccept infrastructure, indicating potential abuse of the service for fraudulent solicitation.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Out of band pivot, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
// Legitimate GetAccept sending infrastructure
and sender.email.domain.root_domain == 'getaccept.com'
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam"
)
Detection logic
Scope: inbound message.
Detects callback scam language in messages sent through legitimate GetAccept infrastructure, indicating potential abuse of the service for fraudulent solicitation.
- inbound message
- sender.email.domain.root_domain is 'getaccept.com'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere:- .name is 'callback_scam'
Inspects: body.current_thread.text, sender.email.domain.root_domain, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.domain.root_domain | equals | getaccept.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
sender.email.domain.root_domain eq "getaccept.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.domain.root_domain | eq |
| field:"sender.email.domain.root_domain" kind:eq value:"getaccept.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: GitHub notification with excessive mentions and suspicious links
#Detects messages impersonating GitHub notifications that contain excessive @ mentions (over 20) and include a single suspicious external link. The suspicious link may be from free file hosts, free subdomain hosts, URL shorteners, or newly registered domains. The rule filters out legitimate GitHub domains and internal employee communications while identifying potential abuse of GitHub's notification system.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing, Malware/Ransomware |
| Tactics and techniques | Free file host, Free subdomain host, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
// actual GitHub notifications
and sender.email.email == "notifications@github.com"
and all(headers.reply_to, .email.domain.domain == "reply.github.com")
and headers.return_path.email == "noreply@github.com"
// the Message-ID field will contain the unsubscribe link in the body
and strings.icontains(headers.message_id,
body.links[length(body.links) - 1].href_url.url
)
// negating out-of-scope notification emails from github
and not any(recipients.cc,
.email.domain.root_domain == "github.com"
and .email.local_part in (
"assign",
"comment",
"review_requested",
"author",
"subscribed",
"state_change",
"team_mention"
)
)
// do not match messages where the sender display name is in the org display names.
// This attempts to avoid catching internal employees commenting on org repos
and not any($org_display_names, . =~ sender.display_name)
// there is only a single external link
and length(distinct(filter(body.links,
// filter any links that go back to github
.href_url.domain.root_domain not in (
'github.com',
'githubusercontent.com',
'github.io',
'githubsupport.com',
'githubstatus.com'
)
// remove embedded images
and not (
strings.ends_with(.href_url.url, ".jpg")
or strings.ends_with(.href_url.url, "png")
or strings.ends_with(.href_url.url, ".svg")
or strings.ends_with(.href_url.url, ".gif")
)
// remove aws codesuite links
and not (
.href_url.domain.root_domain == "amazon.com"
and strings.istarts_with(.href_url.path,
'/codesuite/'
)
)
),
.href_url.domain.domain
)
) == 1
// that single link is suspicious
and any(
// filter any links that go back to github
filter(body.links,
.href_url.domain.root_domain not in (
'github.com',
'githubusercontent.com',
'github.io',
'githubsupport.com',
'githubstatus.com'
)
),
// see if the remaining links are within several lists
.href_url.domain.root_domain in $free_file_hosts
or (
.href_url.domain.root_domain in $free_subdomain_hosts
and .href_url.domain.subdomain is not null
)
or .href_url.domain.root_domain in $url_shorteners
// the domain is less than 20 days old
or network.whois(.href_url.domain).days_old < 20
)
// The main abuse point is that they will @ multiple people in the github notification
and length(filter(body.current_thread.links,
strings.starts_with(.display_text, "@")
)
) > 20
Detection logic
Scope: inbound message.
Detects messages impersonating GitHub notifications that contain excessive @ mentions (over 20) and include a single suspicious external link. The suspicious link may be from free file hosts, free subdomain hosts, URL shorteners, or newly registered domains. The rule filters out legitimate GitHub domains and internal employee communications while identifying potential abuse of GitHub's notification system.
- inbound message
- sender.email.email is 'notifications@github.com'
all of
headers.reply_towhere:- .email.domain.domain is 'reply.github.com'
- headers.return_path.email is 'noreply@github.com'
- strings.icontains(headers.message_id)
not:
any of
recipients.ccwhere all hold:- .email.domain.root_domain is 'github.com'
- .email.local_part in ('assign', 'comment', 'review_requested', 'author', 'subscribed', 'state_change', 'team_mention')
not:
any of
$org_display_nameswhere:- . is sender.display_name
- length(distinct(filter(body.links, .href_url.domain.root_domain not in ('github.com', 'githubusercontent.com', 'github.io', 'githubsupport.com', 'githubstatus.com') and not strings.ends_with(.href_url.url, '.jpg') or strings.ends_with(.href_url.url, 'png') or strings.ends_with(.href_url.url, '.svg') or strings.ends_with(.href_url.url, '.gif') and not .href_url.domain.root_domain == 'amazon.com' and strings.istarts_with(.href_url.path, '/codesuite/')), .href_url.domain.domain)) is 1
any of
filter(body.links)where any holds:- .href_url.domain.root_domain in $free_file_hosts
all of:
- .href_url.domain.root_domain in $free_subdomain_hosts
- .href_url.domain.subdomain is set
- .href_url.domain.root_domain in $url_shorteners
- network.whois(.href_url.domain).days_old < 20
- length(filter(body.current_thread.links, strings.starts_with(.display_text, '@'))) > 20
Inspects: body.current_thread.links, body.current_thread.links[].display_text, body.links, body.links[].href_url.domain.root_domain, body.links[].href_url.path, body.links[].href_url.url, headers.message_id, headers.reply_to, headers.reply_to[].email.domain.domain, headers.return_path.email, recipients.cc, recipients.cc[].email.domain.root_domain, recipients.cc[].email.local_part, sender.display_name, sender.email.email, type.inbound. Sensors: network.whois, strings.ends_with, strings.icontains, strings.istarts_with, strings.starts_with. Reference lists: $free_file_hosts, $free_subdomain_hosts, $org_display_names, $url_shorteners.
Indicators matched (4)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | notifications@github.com |
headers.reply_to[].email.domain.domain | equals | reply.github.com |
headers.return_path.email | equals | noreply@github.com |
strings.starts_with | prefix | @ |
Stages and Predicates
Stage 1: mql_rule
and
any(filter(body.links))
or
and
filter(body.links).href_url.domain.subdomain is_not_null
macro "filter(body.links)[].href_url.domain.root_domain in free_subdomain_hosts"
network.whois func_call "network.whois(filter(body.links)[].href_url.domain).days_old < 20"
macro "filter(body.links)[].href_url.domain.root_domain in free_file_hosts"
macro "filter(body.links)[].href_url.domain.root_domain in url_shorteners"
not
any(recipients.cc)
and
recipients.cc.email.domain.root_domain eq "github.com"
recipients.cc.email.local_part in ["assign", "author", "comment", "review_requested", "state_change", "subscribed", "team_mention"]
not
any($org_display_names)
$org_display_names cross_field_compare "sender.display_name"
distinct(filter(body.links, .href_url.domain.root_domain not in ('github.com', 'githubusercontent.com', 'github.io', 'githubsupport.com', 'githubstatus.com') and not strings.ends_with(.href_url.url, '.jpg') or strings.ends_with(.href_url.url, 'png') or strings.ends_with(.href_url.url, '.svg') or strings.ends_with(.href_url.url, '.gif') and not .href_url.domain.root_domain == 'amazon.com' and strings.istarts_with(.href_url.path, '/codesuite/')), .href_url.domain.domain) length_compare "1"
filter(body.current_thread.links, strings.starts_with(.display_text, '@')) length_compare "20"
headers.return_path.email eq "noreply@github.com"
sender.email.email eq "notifications@github.com"
strings.icontains func_call "strings.icontains(headers.message_id)"
type.inbound eq "true"
macro "all(headers.reply_to)"Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
recipients.cc | array_any | excludes:recipients.cc | |
$org_display_names | array_any | excludes:$org_display_names |
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
headers.return_path.email | eq |
| field:"headers.return_path.email" kind:eq value:"noreply@github.com" |
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"notifications@github.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service Abuse: GoDaddy infrastructure
#Detects messages from legitimate GoDaddy domains with suspicious indicators. Observed abused for call back phishing and extortion campaigns.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing, Extortion |
| Tactics and techniques | Evasion |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and length(attachments) == 0
// legitimate GoDaddy sending infrastructure
and (
sender.email.domain.root_domain == "godaddy.com"
and headers.auth_summary.dmarc.pass
)
and any(body.links, .display_text in~ ("Pay Now", "Accept Access"))
and (
(
any(ml.nlu_classifier(body.current_thread.text).intents,
.name in~ ("callback_scam", "cred_theft", "extortion")
and .confidence == "high"
)
)
// manual extortion indicators
or (
regex.icontains(sender.display_name,
'big(\s|[[:punct:]])?brother|seeing(\s|[[:punct:]])?eye'
)
or regex.icontains(body.current_thread.text,
'((I|you).{0,25}(leak|compromise|hack|see|record|expose))|(dirty|little) secret'
)
)
// manual callback phishing indicators
or (
// phone number in display name or subject
any([sender.display_name, subject.base],
regex.icontains(.,
'\b\+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4}\b'
)
)
// references commonly impersonated brands in body
or strings.ilike(strings.replace_confusables(body.current_thread.text),
"*Pay?Pal*",
"*Best?Buy*",
"*Geek?Squad*",
)
)
// emojis in link display text
or any(body.links,
regex.contains(.display_text,
'[\x{1F300}-\x{1F5FF}\x{1F600}-\x{1F64F}\x{1F680}-\x{1F6FF}\x{1F700}-\x{1F77F}\x{1F780}-\x{1F7FF}\x{1F900}-\x{1F9FF}\x{2600}-\x{26FF}\x{2700}-\x{27BF}\x{2300}-\x{23FF}]'
)
)
// links leading to cloudflare R2 or edge services
or any(body.links,
.href_url.domain.root_domain in~ ("r2.dev", "pages.dev", "workers.dev")
)
)
Detection logic
Scope: inbound message.
Detects messages from legitimate GoDaddy domains with suspicious indicators. Observed abused for call back phishing and extortion campaigns.
- inbound message
- length(attachments) is 0
all of:
- sender.email.domain.root_domain is 'godaddy.com'
- headers.auth_summary.dmarc.pass
any of
body.linkswhere:- .display_text in ('Pay Now', 'Accept Access')
any of:
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name in ('callback_scam', 'cred_theft', 'extortion')
- .confidence is 'high'
any of:
- sender.display_name matches 'big(\\s|[[:punct:]])?brother|seeing(\\s|[[:punct:]])?eye'
- body.current_thread.text matches '((I|you).{0,25}(leak|compromise|hack|see|record|expose))|(dirty|little) secret'
any of:
any of
[sender.display_name, subject.base]where:- . matches '\\b\\+?([ilo0-9]{1}.)?\\(?[ilo0-9]{3}?\\)?.[ilo0-9]{3}.?[ilo0-9]{4}\\b'
strings.replace_confusables(body.current_thread.text) matches any of 3 patterns
*Pay?Pal**Best?Buy**Geek?Squad*
any of
body.linkswhere:- .display_text matches '[\\x{1F300}-\\x{1F5FF}\\x{1F600}-\\x{1F64F}\\x{1F680}-\\x{1F6FF}\\x{1F700}-\\x{1F77F}\\x{1F780}-\\x{1F7FF}\\x{1F900}-\\x{1F9FF}\\x{2600}-\\x{26FF}\\x{2700}-\\x{27BF}\\x{2300}-\\x{23FF}]'
any of
body.linkswhere:- .href_url.domain.root_domain in ('r2.dev', 'pages.dev', 'workers.dev')
Inspects: body.current_thread.text, body.links, body.links[].display_text, body.links[].href_url.domain.root_domain, headers.auth_summary.dmarc.pass, sender.display_name, sender.email.domain.root_domain, subject.base, type.inbound. Sensors: ml.nlu_classifier, regex.contains, regex.icontains, strings.ilike, strings.replace_confusables.
Indicators matched (17)
| Field | Match | Value |
|---|---|---|
sender.email.domain.root_domain | equals | godaddy.com |
body.links[].display_text | member | Pay Now |
body.links[].display_text | member | Accept Access |
ml.nlu_classifier(body.current_thread.text).intents[].name | member | callback_scam |
ml.nlu_classifier(body.current_thread.text).intents[].name | member | cred_theft |
ml.nlu_classifier(body.current_thread.text).intents[].name | member | extortion |
ml.nlu_classifier(body.current_thread.text).intents[].confidence | equals | high |
regex.icontains | regex | big(\s|[[:punct:]])?brother|seeing(\s|[[:punct:]])?eye |
regex.icontains | regex | ((I|you).{0,25}(leak|compromise|hack|see|record|expose))|(dirty|little) secret |
regex.icontains | regex | \b\+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4}\b |
strings.ilike | substring | *Pay?Pal* |
strings.ilike | substring | *Best?Buy* |
5 more
strings.ilike | substring | *Geek?Squad* |
regex.contains | regex | [\x{1F300}-\x{1F5FF}\x{1F600}-\x{1F64F}\x{1F680}-\x{1F6FF}\x{1F700}-\x{1F77F}\x{1F780}-\x{1F7FF}\x{1F900}-\x{1F9FF}\x{2600}-\x{26FF}\x{2700}-\x{27BF}\x{2300}-\x{23FF}] |
body.links[].href_url.domain.root_domain | member | r2.dev |
body.links[].href_url.domain.root_domain | member | pages.dev |
body.links[].href_url.domain.root_domain | member | workers.dev |
Stages and Predicates
Stage 1: mql_rule
and
or
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 in ["callback_scam", "cred_theft", "extortion"]
any([sender.display_name, subject.base])
[sender.display_name, subject.base] regex_match "\\b\\+?([ilo0-9]{1}.)?\\(?[ilo0-9]{3}?\\)?.[ilo0-9]{3}.?[ilo0-9]{4}\\b"
any(body.links)
body.links.display_text regex_match "[\\x{1F300}-\\x{1F5FF}\\x{1F600}-\\x{1F64F}\\x{1F680}-\\x{1F6FF}\\x{1F700}-\\x{1F77F}\\x{1F780}-\\x{1F7FF}\\x{1F900}-\\x{1F9FF}\\x{2600}-\\x{26FF}\\x{2700}-\\x{27BF}\\x{2300}-\\x{23FF}]"
any(body.links)
body.links.href_url.domain.root_domain in ["pages.dev", "r2.dev", "workers.dev"]
body.current_thread.text regex_match "((I|you).{0,25}(leak|compromise|hack|see|record|expose))|(dirty|little) secret"
sender.display_name regex_match "big(\\s|[[:punct:]])?brother|seeing(\\s|[[:punct:]])?eye"
strings.replace_confusables(body.current_thread.text) match "Best?Buy"
strings.replace_confusables(body.current_thread.text) match "Geek?Squad"
strings.replace_confusables(body.current_thread.text) match "Pay?Pal"
any(body.links)
body.links.display_text in ["Accept Access", "Pay Now"]
attachments length_compare "0"
headers.auth_summary.dmarc.pass eq "true"
sender.email.domain.root_domain eq "godaddy.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match |
headers.auth_summary.dmarc.pass | eq |
| field:"headers.auth_summary.dmarc.pass" kind:eq value:"true" |
sender.display_name | regex_match |
| field:"sender.display_name" kind:regex_match |
sender.email.domain.root_domain | eq |
| field:"sender.email.domain.root_domain" kind:eq value:"godaddy.com" |
strings.replace_confusables(body.current_thread.text) | wildcard |
| field:"strings.replace_confusables(body.current_thread.text)" kind:wildcard |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Google application integration redirecting to suspicious hosts
#Detects legitimate Google application integration emails that contain links redirecting to free file hosting services or free subdomain hosts, including Microsoft OAuth redirects to suspicious domains. These could indicate abuse of Google's legitimate service for malicious redirects.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing, Malware/Ransomware |
| Tactics and techniques | Evasion, Free file host, Free subdomain host, Open redirect |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == "noreply-application-integration@google.com"
and headers.auth_summary.dmarc.pass
and length(body.links) < 10
and any(body.links,
.href_url.domain.domain in $free_file_hosts
or .href_url.domain.root_domain in $free_file_hosts
or .href_url.domain.domain in $free_subdomain_hosts
// Mimecast link logic
or (
.href_url.domain.root_domain in (
"mimecastprotect.com",
"mimecast.com"
)
and any(.href_url.query_params_decoded['domain'],
strings.parse_domain(.).domain in $free_file_hosts
or strings.parse_domain(.).root_domain in $free_file_hosts
or strings.parse_domain(.).root_domain in $free_subdomain_hosts
or . in (
"storage.cloud.google.com",
"login.microsoftonline.com"
)
)
)
or network.whois(.href_url.domain).days_old < 30
// abuse observed
or .href_url.domain.root_domain == "share.google"
)
Detection logic
Scope: inbound message.
Detects legitimate Google application integration emails that contain links redirecting to free file hosting services or free subdomain hosts, including Microsoft OAuth redirects to suspicious domains. These could indicate abuse of Google's legitimate service for malicious redirects.
- inbound message
- sender.email.email is 'noreply-application-integration@google.com'
- headers.auth_summary.dmarc.pass
- length(body.links) < 10
any of
body.linkswhere any holds:- .href_url.domain.domain in $free_file_hosts
- .href_url.domain.root_domain in $free_file_hosts
- .href_url.domain.domain in $free_subdomain_hosts
all of:
- .href_url.domain.root_domain in ('mimecastprotect.com', 'mimecast.com')
any of
.href_url.query_params_decoded['domain']where any holds:- strings.parse_domain(.).domain in $free_file_hosts
- strings.parse_domain(.).root_domain in $free_file_hosts
- strings.parse_domain(.).root_domain in $free_subdomain_hosts
- . in ('storage.cloud.google.com', 'login.microsoftonline.com')
- network.whois(.href_url.domain).days_old < 30
- .href_url.domain.root_domain is 'share.google'
Inspects: body.links, body.links[].href_url.domain, body.links[].href_url.domain.domain, body.links[].href_url.domain.root_domain, body.links[].href_url.query_params_decoded['domain'], headers.auth_summary.dmarc.pass, sender.email.email, type.inbound. Sensors: network.whois, strings.parse_domain. Reference lists: $free_file_hosts, $free_subdomain_hosts.
Indicators matched (6)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | noreply-application-integration@google.com |
body.links[].href_url.domain.root_domain | member | mimecastprotect.com |
body.links[].href_url.domain.root_domain | member | mimecast.com |
body.links[].href_url.query_params_decoded['domain'][] | member | storage.cloud.google.com |
body.links[].href_url.query_params_decoded['domain'][] | member | login.microsoftonline.com |
body.links[].href_url.domain.root_domain | equals | share.google |
Stages and Predicates
Stage 1: mql_rule
and
any(body.links)
or
and
any(body.links.href_url.query_params_decoded['domain'])
or
body.links.href_url.query_params_decoded['domain'][] in ["login.microsoftonline.com", "storage.cloud.google.com"]
strings.parse_domain func_call "strings.parse_domain(body.links[].href_url.query_params_decoded['domain'][]).domain in free_file_hosts"
strings.parse_domain func_call "strings.parse_domain(body.links[].href_url.query_params_decoded['domain'][]).root_domain in free_file_hosts"
strings.parse_domain func_call "strings.parse_domain(body.links[].href_url.query_params_decoded['domain'][]).root_domain in free_subdomain_hosts"
body.links.href_url.domain.root_domain in ["mimecast.com", "mimecastprotect.com"]
body.links.href_url.domain.root_domain eq "share.google"
network.whois func_call "network.whois(body.links[].href_url.domain).days_old < 30"
macro "body.links[].href_url.domain.domain in free_file_hosts"
macro "body.links[].href_url.domain.domain in free_subdomain_hosts"
macro "body.links[].href_url.domain.root_domain in free_file_hosts"
body.links length_compare "10"
headers.auth_summary.dmarc.pass eq "true"
sender.email.email eq "noreply-application-integration@google.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
headers.auth_summary.dmarc.pass | eq |
| field:"headers.auth_summary.dmarc.pass" kind:eq value:"true" |
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"noreply-application-integration@google.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Google Calendar notification with callback scam language
#Detects messages sent from Google's legitimate calendar notification service that contain callback scam language, indicating potential abuse of the calendar sharing feature to distribute fraudulent content.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | ICS Phishing, Out of band pivot, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == 'calendar-notification@google.com'
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam" and .confidence != "low"
)
Detection logic
Scope: inbound message.
Detects messages sent from Google's legitimate calendar notification service that contain callback scam language, indicating potential abuse of the calendar sharing feature to distribute fraudulent content.
- inbound message
- sender.email.email is 'calendar-notification@google.com'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'callback_scam'
- .confidence is not 'low'
Inspects: body.current_thread.text, sender.email.email, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | calendar-notification@google.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
sender.email.email eq "calendar-notification@google.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"calendar-notification@google.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Google Groups callback scam
#Detects inbound messages originating from Google Groups that contain high-confidence callback scam content, identifying abuse of the legitimate service to distribute fraudulent callback requests.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Free email provider, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.domain.domain == "groups.google.com"
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam" and .confidence == "high"
)
Detection logic
Scope: inbound message.
Detects inbound messages originating from Google Groups that contain high-confidence callback scam content, identifying abuse of the legitimate service to distribute fraudulent callback requests.
- inbound message
- sender.email.domain.domain is 'groups.google.com'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'callback_scam'
- .confidence is 'high'
Inspects: body.current_thread.text, sender.email.domain.domain, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (3)
| Field | Match | Value |
|---|---|---|
sender.email.domain.domain | equals | groups.google.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
ml.nlu_classifier(body.current_thread.text).intents[].confidence | equals | high |
Stages and Predicates
Stage 1: mql_rule
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 "callback_scam"
sender.email.domain.domain eq "groups.google.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.domain.domain | eq |
| field:"sender.email.domain.domain" kind:eq value:"groups.google.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Google OAuth with suspicious redirect destination
#Detects messages containing Google OAuth links with prompt=none parameter that redirect to suspicious domains including free file hosts, free subdomain providers, or self-service creation platforms.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Evasion, Free file host, Free subdomain host, Open redirect, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and any(body.links,
.href_url.domain.subdomain == "accounts"
and .href_url.domain.sld == "google"
and strings.istarts_with(.href_url.path, '/o/oauth2/v2/auth')
and strings.icontains(.href_url.url, 'prompt=none')
)
Detection logic
Scope: inbound message.
Detects messages containing Google OAuth links with prompt=none parameter that redirect to suspicious domains including free file hosts, free subdomain providers, or self-service creation platforms.
- inbound message
any of
body.linkswhere all hold:- .href_url.domain.subdomain is 'accounts'
- .href_url.domain.sld is 'google'
- .href_url.path starts with '/o/oauth2/v2/auth'
- .href_url.url contains 'prompt=none'
Inspects: body.links, body.links[].href_url.domain.sld, body.links[].href_url.domain.subdomain, body.links[].href_url.path, body.links[].href_url.url, type.inbound. Sensors: strings.icontains, strings.istarts_with.
Indicators matched (4)
| Field | Match | Value |
|---|---|---|
body.links[].href_url.domain.subdomain | equals | accounts |
body.links[].href_url.domain.sld | equals | google |
strings.istarts_with | prefix | /o/oauth2/v2/auth |
strings.icontains | substring | prompt=none |
Stages and Predicates
Stage 1: mql_rule
and
any(body.links)
and
body.links.href_url.domain.sld eq "google"
body.links.href_url.domain.subdomain eq "accounts"
body.links.href_url.path starts_with "/o/oauth2/v2/auth"
body.links.href_url.url contains "prompt=none"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: IBM IAM account notification with callback scam indicators
#Detects inbound messages abusing IBM's IAM account notification address that contain callback scam intent patterns identified through natural language analysis.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Impersonation: Brand, Social engineering, Out of band pivot |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == "ibmacct@iam.ibm.com"
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam" and .confidence != "low"
)
Detection logic
Scope: inbound message.
Detects inbound messages abusing IBM's IAM account notification address that contain callback scam intent patterns identified through natural language analysis.
- inbound message
- sender.email.email is 'ibmacct@iam.ibm.com'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'callback_scam'
- .confidence is not 'low'
Inspects: body.current_thread.text, sender.email.email, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | ibmacct@iam.ibm.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
sender.email.email eq "ibmacct@iam.ibm.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"ibmacct@iam.ibm.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Linode Objects HTML file hosting
#Detects inbound messages containing links to HTML files hosted on Linode's object storage service (linodeobjects.com). This pattern is commonly used to host malicious content or bypass security controls by leveraging legitimate cloud storage infrastructure.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing, Malware/Ransomware |
| Tactics and techniques | Free file host, Evasion |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and any(body.current_thread.links,
.href_url.domain.root_domain == "linodeobjects.com"
and strings.iends_with(.href_url.path, ".html")
)
Detection logic
Scope: inbound message.
Detects inbound messages containing links to HTML files hosted on Linode's object storage service (linodeobjects.com). This pattern is commonly used to host malicious content or bypass security controls by leveraging legitimate cloud storage infrastructure.
- inbound message
any of
body.current_thread.linkswhere all hold:- .href_url.domain.root_domain is 'linodeobjects.com'
- .href_url.path ends with '.html'
Inspects: body.current_thread.links, body.current_thread.links[].href_url.domain.root_domain, body.current_thread.links[].href_url.path, type.inbound. Sensors: strings.iends_with.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
body.current_thread.links[].href_url.domain.root_domain | equals | linodeobjects.com |
strings.iends_with | suffix | .html |
Stages and Predicates
Stage 1: mql_rule
and
any(body.current_thread.links)
and
body.current_thread.links.href_url.domain.root_domain eq "linodeobjects.com"
body.current_thread.links.href_url.path ends_with ".html"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Microsoft Forms Pro with suspicious links or QR codes
#Detects messages sent from Microsoft Forms Pro (surveys@email.formspro.microsoft.com) that contain suspicious indicators, including links to suspicious TLDs, recipient email addresses embedded in URLs, OAuth authorization links, personal OneDrive paths, template placeholders, or QR codes pointing to recently registered or suspicious domains.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | QR code, Social engineering, Impersonation: Brand |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == 'surveys@email.formspro.microsoft.com'
and (
any(body.current_thread.links,
(
.href_url.domain.tld in $suspicious_tlds
and not .href_url.domain.root_domain in ('microsoft.us')
)
or any(recipients.to,
strings.icontains(..href_url.url, .email.email)
and .email.domain.valid
)
or .href_url.fragment in ('[[Email]]')
or strings.starts_with(.href_url.url,
'https://login.microsoftonline.com/common/oauth2/v2.0/authorize'
)
// personal onedrive
or strings.starts_with(.href_url.path, '/:o:/p/')
)
or any(file.explode(file.message_screenshot()),
.scan.qr.url.domain.tld in $suspicious_tlds
or network.whois(.scan.qr.url.domain).days_old < 100
)
)
Detection logic
Scope: inbound message.
Detects messages sent from Microsoft Forms Pro (surveys@email.formspro.microsoft.com) that contain suspicious indicators, including links to suspicious TLDs, recipient email addresses embedded in URLs, OAuth authorization links, personal OneDrive paths, template placeholders, or QR codes pointing to recently registered or suspicious domains.
- inbound message
- sender.email.email is 'surveys@email.formspro.microsoft.com'
any of:
any of
body.current_thread.linkswhere any holds:all of:
- .href_url.domain.tld in $suspicious_tlds
not:
- .href_url.domain.root_domain in ('microsoft.us')
any of
recipients.towhere all hold:- strings.icontains(.href_url.url)
- .email.domain.valid
- .href_url.fragment in ('[[Email]]')
- .href_url.url starts with 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize'
- .href_url.path starts with '/:o:/p/'
any of
file.explode(...)where any holds:- .scan.qr.url.domain.tld in $suspicious_tlds
- network.whois(.scan.qr.url.domain).days_old < 100
Inspects: body.current_thread.links, body.current_thread.links[].href_url.domain.root_domain, body.current_thread.links[].href_url.domain.tld, body.current_thread.links[].href_url.fragment, body.current_thread.links[].href_url.path, body.current_thread.links[].href_url.url, recipients.to, recipients.to[].email.domain.valid, recipients.to[].email.email, sender.email.email, type.inbound. Sensors: file.explode, file.message_screenshot, network.whois, strings.icontains, strings.starts_with. Reference lists: $suspicious_tlds.
Indicators matched (4)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | surveys@email.formspro.microsoft.com |
body.current_thread.links[].href_url.fragment | member | [[Email]] |
strings.starts_with | prefix | https://login.microsoftonline.com/common/oauth2/v2.0/authorize |
strings.starts_with | prefix | /:o:/p/ |
Stages and Predicates
Stage 1: mql_rule
and
or
any(body.current_thread.links)
or
and
not
body.current_thread.links.href_url.domain.root_domain eq "microsoft.us"
macro "body.current_thread.links[].href_url.domain.tld in suspicious_tlds"
any(recipients.to)
and
recipients.to.email.domain.valid eq "true"
strings.icontains func_call "strings.icontains(body.current_thread.links[].href_url.url)"
body.current_thread.links.href_url.fragment eq "[[Email]]"
body.current_thread.links.href_url.path starts_with "/:o:/p/"
body.current_thread.links.href_url.url starts_with "https://login.microsoftonline.com/common/oauth2/v2.0/authorize"
any(file.explode(...))
or
network.whois func_call "network.whois(file.explode(...)[].scan.qr.url.domain).days_old < 100"
macro "file.explode(...)[].scan.qr.url.domain.tld in suspicious_tlds"
sender.email.email eq "surveys@email.formspro.microsoft.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"surveys@email.formspro.microsoft.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Microsoft Power Apps callback scam
#Detects callback scam messages sent through Microsoft Power Apps that impersonate well-known brands like McAfee, Norton, Geek Squad, PayPal, or other services, containing suspicious transaction-related language and phone numbers to solicit victim contact.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Impersonation: Brand, Out of band pivot, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == "powerapps-noreply@microsoft.com"
and (
any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam" and .confidence != "low"
)
or (
regex.icontains(body.current_thread.text,
(
"mcafee|n[o0]rt[o0]n|geek.{0,5}squad|paypal|ebay|symantec|best buy|lifel[o0]ck"
)
)
and (
3 of (
strings.ilike(body.current_thread.text, '*purchase*'),
strings.ilike(body.current_thread.text, '*payment*'),
strings.ilike(body.current_thread.text, '*transaction*'),
strings.ilike(body.current_thread.text, '*subscription*'),
strings.ilike(body.current_thread.text, '*antivirus*'),
strings.ilike(body.current_thread.text, '*order*'),
strings.ilike(body.current_thread.text, '*support*'),
strings.ilike(body.current_thread.text, '*receipt*'),
strings.ilike(body.current_thread.text, '*invoice*'),
strings.ilike(body.current_thread.text, '*call*'),
strings.ilike(body.current_thread.text, '*cancel*'),
strings.ilike(body.current_thread.text, '*renew*'),
strings.ilike(body.current_thread.text, '*refund*'),
strings.ilike(body.current_thread.text, '*host key*')
)
)
// phone number regex
and any([body.current_thread.text, subject.subject],
regex.icontains(.,
'\+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4}',
'\+?([ilo0-9]{1,2})?\s?\(?\d{3}\)?[\s\.\-⋅]{0,5}[ilo0-9]{3}[\s\.\-⋅]{0,5}[ilo0-9]{4}'
)
)
)
)
Detection logic
Scope: inbound message.
Detects callback scam messages sent through Microsoft Power Apps that impersonate well-known brands like McAfee, Norton, Geek Squad, PayPal, or other services, containing suspicious transaction-related language and phone numbers to solicit victim contact.
- inbound message
- sender.email.email is 'powerapps-noreply@microsoft.com'
any of:
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'callback_scam'
- .confidence is not 'low'
all of:
- body.current_thread.text matches 'mcafee|n[o0]rt[o0]n|geek.{0,5}squad|paypal|ebay|symantec|best buy|lifel[o0]ck'
at least 3 of 14: body.current_thread.text matches any of 14 patterns
*purchase**payment**transaction**subscription**antivirus**order**support**receipt**invoice**call**cancel**renew**refund**host key*
any of
[body.current_thread.text, subject.subject]where:. matches any of 2 patterns
\+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4}\+?([ilo0-9]{1,2})?\s?\(?\d{3}\)?[\s\.\-⋅]{0,5}[ilo0-9]{3}[\s\.\-⋅]{0,5}[ilo0-9]{4}
Inspects: body.current_thread.text, sender.email.email, subject.subject, type.inbound. Sensors: ml.nlu_classifier, regex.icontains, strings.ilike.
Indicators matched (19)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | powerapps-noreply@microsoft.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
regex.icontains | regex | mcafee|n[o0]rt[o0]n|geek.{0,5}squad|paypal|ebay|symantec|best buy|lifel[o0]ck |
strings.ilike | substring | *purchase* |
strings.ilike | substring | *payment* |
strings.ilike | substring | *transaction* |
strings.ilike | substring | *subscription* |
strings.ilike | substring | *antivirus* |
strings.ilike | substring | *order* |
strings.ilike | substring | *support* |
strings.ilike | substring | *receipt* |
strings.ilike | substring | *invoice* |
7 more
strings.ilike | substring | *call* |
strings.ilike | substring | *cancel* |
strings.ilike | substring | *renew* |
strings.ilike | substring | *refund* |
strings.ilike | substring | *host key* |
regex.icontains | regex | \+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4} |
regex.icontains | regex | \+?([ilo0-9]{1,2})?\s?\(?\d{3}\)?[\s\.\-⋅]{0,5}[ilo0-9]{3}[\s\.\-⋅]{0,5}[ilo0-9]{4} |
Stages and Predicates
Stage 1: mql_rule
and
or
and
any([body.current_thread.text, subject.subject])
or
[body.current_thread.text, subject.subject] regex_match "\\+?([ilo0-9]{1,2})?\\s?\\(?\\d{3}\\)?[\\s\\.\\-⋅]{0,5}[ilo0-9]{3}[\\s\\.\\-⋅]{0,5}[ilo0-9]{4}"
[body.current_thread.text, subject.subject] regex_match "\\+?([ilo0-9]{1}.)?\\(?[ilo0-9]{3}?\\)?.[ilo0-9]{3}.?[ilo0-9]{4}"
or
body.current_thread.text match "antivirus"
body.current_thread.text match "call"
body.current_thread.text match "cancel"
body.current_thread.text match "host key"
body.current_thread.text match "invoice"
body.current_thread.text match "order"
body.current_thread.text match "payment"
body.current_thread.text match "purchase"
body.current_thread.text match "receipt"
body.current_thread.text match "refund"
body.current_thread.text match "renew"
body.current_thread.text match "subscription"
body.current_thread.text match "support"
body.current_thread.text match "transaction"
body.current_thread.text regex_match "mcafee|n[o0]rt[o0]n|geek.{0,5}squad|paypal|ebay|symantec|best buy|lifel[o0]ck"
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
sender.email.email eq "powerapps-noreply@microsoft.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match |
body.current_thread.text | wildcard |
| field:"body.current_thread.text" kind:wildcard |
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"powerapps-noreply@microsoft.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Microsoft Power Automate callback scam impersonation
#Detects callback scam attempts using the legitimate Microsoft Power Automate service email address with high-confidence callback scam language in the message body.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Out of band pivot, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == 'flow-noreply@microsoft.com'
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam" and .confidence != "low"
)
Detection logic
Scope: inbound message.
Detects callback scam attempts using the legitimate Microsoft Power Automate service email address with high-confidence callback scam language in the message body.
- inbound message
- sender.email.email is 'flow-noreply@microsoft.com'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'callback_scam'
- .confidence is not 'low'
Inspects: body.current_thread.text, sender.email.email, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | flow-noreply@microsoft.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
sender.email.email eq "flow-noreply@microsoft.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"flow-noreply@microsoft.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Microsoft Power BI callback scam
#Detects callback scam content sent from the legitimate Microsoft Power BI service email address, indicating potential service abuse to distribute fraudulent callback solicitations.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Out of band pivot, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == 'no-reply-powerbi@microsoft.com'
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam"
)
Detection logic
Scope: inbound message.
Detects callback scam content sent from the legitimate Microsoft Power BI service email address, indicating potential service abuse to distribute fraudulent callback solicitations.
- inbound message
- sender.email.email is 'no-reply-powerbi@microsoft.com'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere:- .name is 'callback_scam'
Inspects: body.current_thread.text, sender.email.email, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | no-reply-powerbi@microsoft.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
sender.email.email eq "no-reply-powerbi@microsoft.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"no-reply-powerbi@microsoft.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Mimecast URL with excessive path length
#Detects messages containing the second stage Mimecast redirect URL with unusually long paths, potentially indicating abuse of the Mimecast URL redirection service to obfuscate malicious destinations.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing, Malware/Ransomware |
| Tactics and techniques | Evasion, Open redirect |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and any(filter(body.links,
strings.icontains(.href_url.domain.root_domain, "mimecast")
and strings.starts_with(.href_url.path, "/r/")
),
length(.href_url.path) > 2000
)
Detection logic
Scope: inbound message.
Detects messages containing the second stage Mimecast redirect URL with unusually long paths, potentially indicating abuse of the Mimecast URL redirection service to obfuscate malicious destinations.
- inbound message
any of
filter(body.links)where:- length(.href_url.path) > 2000
Inspects: body.links, body.links[].href_url.domain.root_domain, body.links[].href_url.path, type.inbound. Sensors: strings.icontains, strings.starts_with.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
strings.icontains | substring | mimecast |
strings.starts_with | prefix | /r/ |
Stages and Predicates
Stage 1: mql_rule
and
any(filter(body.links))
filter(body.links).href_url.path length_compare "2000"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Monday.com callback scam
#Detects callback scam solicitations originating from Monday.com's notification system using natural language understanding to identify fraudulent callback language in the message body.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Social engineering, Out of band pivot |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == "notifications@monday.com"
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam"
)
Detection logic
Scope: inbound message.
Detects callback scam solicitations originating from Monday.com's notification system using natural language understanding to identify fraudulent callback language in the message body.
- inbound message
- sender.email.email is 'notifications@monday.com'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere:- .name is 'callback_scam'
Inspects: body.current_thread.text, sender.email.email, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | notifications@monday.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
sender.email.email eq "notifications@monday.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"notifications@monday.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: MongoDB Atlas callback scam
#Detects inbound messages from MongoDB Atlas alert addresses that contain callback scam content identified through natural language analysis with medium or high confidence.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Impersonation: Brand, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == "mongodb-atlas-alerts@mongodb.com"
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam" and .confidence != "low"
)
Detection logic
Scope: inbound message.
Detects inbound messages from MongoDB Atlas alert addresses that contain callback scam content identified through natural language analysis with medium or high confidence.
- inbound message
- sender.email.email is 'mongodb-atlas-alerts@mongodb.com'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'callback_scam'
- .confidence is not 'low'
Inspects: body.current_thread.text, sender.email.email, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | mongodb-atlas-alerts@mongodb.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
sender.email.email eq "mongodb-atlas-alerts@mongodb.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"mongodb-atlas-alerts@mongodb.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Notion free-tier account impersonating VIP
#Detects messages sent from Notion's legitimate notification address (notify@mail.notion.so), but where the sender's display name matches an internal VIP, and the embedded links resolve to a Notion workspace associated with a free-tier subscription. This pattern indicates abuse of Notion's free tier to craft convincing internal impersonation lures.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Impersonation: VIP, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == 'notify@mail.notion.so'
// from VIP
and any($org_vips, strings.icontains(sender.display_name, .display_name))
and any(body.current_thread.links,
any(ml.link_analysis(.).additional_responses,
.json['statsigUser']['custom']['spaceSubscriptionTier'] == 'free'
)
)
Detection logic
Scope: inbound message.
Detects messages sent from Notion's legitimate notification address (notify@mail.notion.so), but where the sender's display name matches an internal VIP, and the embedded links resolve to a Notion workspace associated with a free-tier subscription. This pattern indicates abuse of Notion's free tier to craft convincing internal impersonation lures.
- inbound message
- sender.email.email is 'notify@mail.notion.so'
any of
$org_vipswhere:- strings.icontains(sender.display_name)
any of
body.current_thread.linkswhere:any of
ml.link_analysis(.).additional_responseswhere:- .json['statsigUser']['custom']['spaceSubscriptionTier'] is 'free'
Inspects: body.current_thread.links, sender.display_name, sender.email.email, type.inbound. Sensors: ml.link_analysis, strings.icontains. Reference lists: $org_vips.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | notify@mail.notion.so |
ml.link_analysis(body.current_thread.links[]).additional_responses[].json['statsigUser']['custom']['spaceSubscriptionTier'] | equals | free |
Stages and Predicates
Stage 1: mql_rule
and
any(body.current_thread.links)
any(ml.link_analysis(body.current_thread.links).additional_responses)
ml.link_analysis(body.current_thread.links).additional_responses.json['statsigUser']['custom']['spaceSubscriptionTier'] eq "free"
any($org_vips)
strings.icontains func_call "strings.icontains(sender.display_name)"
sender.email.email eq "notify@mail.notion.so"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"notify@mail.notion.so" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Nylas tracking subdomain with suspicious content
#Detects messages containing links to Nylas tracking subdomains with display text and suspicious language patterns, indicating potential abuse of the email tracking service.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud, Credential Phishing |
| Tactics and techniques | Evasion, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and any(filter(body.current_thread.links, .href_url.domain.sld == "nylas"),
.display_text is not null
and strings.icontains(.href_url.domain.subdomain, 'tracking')
)
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "cred_theft" and .confidence != "low"
)
Detection logic
Scope: inbound message.
Detects messages containing links to Nylas tracking subdomains with display text and suspicious language patterns, indicating potential abuse of the email tracking service.
- inbound message
any of
filter(body.current_thread.links)where all hold:- .display_text is set
- .href_url.domain.subdomain contains 'tracking'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'cred_theft'
- .confidence is not 'low'
Inspects: body.current_thread.links, body.current_thread.links[].href_url.domain.sld, body.current_thread.text, type.inbound. Sensors: ml.nlu_classifier, strings.icontains.
Indicators matched (3)
| Field | Match | Value |
|---|---|---|
body.current_thread.links[].href_url.domain.sld | equals | nylas |
strings.icontains | substring | tracking |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | cred_theft |
Stages and Predicates
Stage 1: mql_rule
and
any(filter(body.current_thread.links))
and
filter(body.current_thread.links).display_text is_not_null
filter(body.current_thread.links).href_url.domain.subdomain contains "tracking"
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "cred_theft"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Oracle Cloud Workflow callback scam
#Detects inbound messages sent through Oracle Cloud's workflow mail service (workflow.mail.us2.cloud.oracle.com) that contain callback scam content within styled HTML table cells. Natural language understanding is used to identify callback scam intent with medium or high confidence within the message body, indicating misuse of legitimate Oracle infrastructure to deliver fraudulent content.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Social engineering, Impersonation: Brand |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.domain.domain == "workflow.mail.us2.cloud.oracle.com"
and any(html.xpath(body.html,
"//td[contains(@style, 'padding: 20px 40px')]//font[@style='']"
).nodes,
any(ml.nlu_classifier(.inner_text).intents,
.name == "callback_scam" and .confidence != "low"
)
)
Detection logic
Scope: inbound message.
Detects inbound messages sent through Oracle Cloud's workflow mail service (workflow.mail.us2.cloud.oracle.com) that contain callback scam content within styled HTML table cells. Natural language understanding is used to identify callback scam intent with medium or high confidence within the message body, indicating misuse of legitimate Oracle infrastructure to deliver fraudulent content.
- inbound message
- sender.email.domain.domain is 'workflow.mail.us2.cloud.oracle.com'
any of
html.xpath(body.html, "//td[contains(@style, 'padding: 20px 40px')]//font[@style='']").nodeswhere:any of
ml.nlu_classifier(.inner_text).intentswhere all hold:- .name is 'callback_scam'
- .confidence is not 'low'
Inspects: body.html, sender.email.domain.domain, type.inbound. Sensors: html.xpath, ml.nlu_classifier.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.domain.domain | equals | workflow.mail.us2.cloud.oracle.com |
ml.nlu_classifier(html.xpath(body.html, "//td[contains(@style, 'padding: 20px 40px')]//font[@style='']").nodes[].inner_text).intents[].name | equals | callback_scam |
Stages and Predicates
Stage 1: mql_rule
and
any(html.xpath(body.html, "//td[contains(@style, 'padding: 20px 40px')]//font[@style='']").nodes)
any(ml.nlu_classifier(html.xpath(body.html, "//td[contains(@style, 'padding: 20px 40px')]//font[@style='']").nodes.inner_text).intents)
and
ml.nlu_classifier(html.xpath(body.html, "//td[contains(@style, 'padding: 20px 40px')]//font[@style='']").nodes[].inner_text).intents[].confidence ne "low"
ml.nlu_classifier(html.xpath(body.html, "//td[contains(@style, 'padding: 20px 40px')]//font[@style='']").nodes[].inner_text).intents[].name eq "callback_scam"
sender.email.domain.domain eq "workflow.mail.us2.cloud.oracle.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.domain.domain | eq |
| field:"sender.email.domain.domain" kind:eq value:"workflow.mail.us2.cloud.oracle.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Outlook Groups with Google Sites link and evasion tag
#Detects inbound messages sent via Outlook Groups (groups.outlook.com) that contain links to Google Sites, combined with a suspicious short alphanumeric tag appended to either the message body or subject line. This pattern is commonly used to evade detection while redirecting recipients to credential harvesting pages hosted on Google Sites.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Evasion, Free subdomain host, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and headers.return_path.domain.domain == "groups.outlook.com"
and any(body.current_thread.links,
.href_url.domain.domain == "sites.google.com"
)
and (
regex.icontains(body.current_thread.text, '\n[a-z0-9]{3}\s*$')
or regex.icontains(subject.base, '\s{2,}[a-z0-9]{3}\s*$')
)
Detection logic
Scope: inbound message.
Detects inbound messages sent via Outlook Groups (groups.outlook.com) that contain links to Google Sites, combined with a suspicious short alphanumeric tag appended to either the message body or subject line. This pattern is commonly used to evade detection while redirecting recipients to credential harvesting pages hosted on Google Sites.
- inbound message
- headers.return_path.domain.domain is 'groups.outlook.com'
any of
body.current_thread.linkswhere:- .href_url.domain.domain is 'sites.google.com'
any of:
- body.current_thread.text matches '\\n[a-z0-9]{3}\\s*$'
- subject.base matches '\\s{2,}[a-z0-9]{3}\\s*$'
Inspects: body.current_thread.links, body.current_thread.links[].href_url.domain.domain, body.current_thread.text, headers.return_path.domain.domain, subject.base, type.inbound. Sensors: regex.icontains.
Indicators matched (4)
| Field | Match | Value |
|---|---|---|
headers.return_path.domain.domain | equals | groups.outlook.com |
body.current_thread.links[].href_url.domain.domain | equals | sites.google.com |
regex.icontains | regex | \n[a-z0-9]{3}\s*$ |
regex.icontains | regex | \s{2,}[a-z0-9]{3}\s*$ |
Stages and Predicates
Stage 1: mql_rule
and
any(body.current_thread.links)
body.current_thread.links.href_url.domain.domain eq "sites.google.com"
or
body.current_thread.text regex_match "\\n[a-z0-9]{3}\\s*$"
subject.base regex_match "\\s{2,}[a-z0-9]{3}\\s*$"
headers.return_path.domain.domain eq "groups.outlook.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match value:"\n[a-z0-9]{3}\s*$" |
headers.return_path.domain.domain | eq |
| field:"headers.return_path.domain.domain" kind:eq value:"groups.outlook.com" |
subject.base | regex_match |
| field:"subject.base" kind:regex_match value:"\s{2,}[a-z0-9]{3}\s*$" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: PayPal manager account creation with callback scam indicators
#Detects inbound messages abusing PayPal's noreply address with subjects about PayPal Manager user account creation that contain callback scam intent patterns identified through natural language analysis.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing, Credential Phishing |
| Tactics and techniques | Impersonation: Brand, Social engineering, Spoofing |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == "noreply@paypal.com"
and strings.icontains(subject.base,
"Creation of your PayPal Manager user account"
)
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name in ("callback_scam", "cred_theft") and .confidence != "low"
)
Detection logic
Scope: inbound message.
Detects inbound messages abusing PayPal's noreply address with subjects about PayPal Manager user account creation that contain callback scam intent patterns identified through natural language analysis.
- inbound message
- sender.email.email is 'noreply@paypal.com'
- subject.base contains 'Creation of your PayPal Manager user account'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name in ('callback_scam', 'cred_theft')
- .confidence is not 'low'
Inspects: body.current_thread.text, sender.email.email, subject.base, type.inbound. Sensors: ml.nlu_classifier, strings.icontains.
Indicators matched (4)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | noreply@paypal.com |
strings.icontains | substring | Creation of your PayPal Manager user account |
ml.nlu_classifier(body.current_thread.text).intents[].name | member | callback_scam |
ml.nlu_classifier(body.current_thread.text).intents[].name | member | cred_theft |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name in ["callback_scam", "cred_theft"]
sender.email.email eq "noreply@paypal.com"
subject.base contains "Creation of your PayPal Manager user account"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"noreply@paypal.com" |
subject.base | contains |
| field:"subject.base" kind:contains value:"Creation of your PayPal Manager user account" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Postman reply-to mismatch with credential theft intent
#Detects inbound messages sent from Postman.io where the reply-to address belongs to a different domain than the sender, combined with high or medium confidence credential theft intent detected in the message body. This technique leverages a legitimate service to deliver messages while redirecting replies to an attacker-controlled address.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Social engineering, Out of band pivot |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.domain.root_domain == "postman.io"
and any(headers.reply_to,
.email.domain.root_domain != sender.email.domain.root_domain
)
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "cred_theft" and .confidence != "low"
)
Detection logic
Scope: inbound message.
Detects inbound messages sent from Postman.io where the reply-to address belongs to a different domain than the sender, combined with high or medium confidence credential theft intent detected in the message body. This technique leverages a legitimate service to deliver messages while redirecting replies to an attacker-controlled address.
- inbound message
- sender.email.domain.root_domain is 'postman.io'
any of
headers.reply_towhere:- .email.domain.root_domain is not sender.email.domain.root_domain
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'cred_theft'
- .confidence is not 'low'
Inspects: body.current_thread.text, headers.reply_to, headers.reply_to[].email.domain.root_domain, sender.email.domain.root_domain, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.domain.root_domain | equals | postman.io |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | cred_theft |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "cred_theft"
any(headers.reply_to)
headers.reply_to.email.domain.root_domain cross_field_compare "sender.email.domain.root_domain"
sender.email.domain.root_domain eq "postman.io"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.domain.root_domain | eq |
| field:"sender.email.domain.root_domain" kind:eq value:"postman.io" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Recruiting with suspicious language patterns from legitimate platforms
#Detects suspicious recruiting messages from legitimate services like Salesforce, LADesk, or AWS Apps with unusually long sender email addresses and recruiting-specific language patterns that may indicate abuse of trusted platforms for social engineering.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud |
| Tactics and techniques | Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and length(sender.email.email) >= 50
and sender.email.domain.root_domain in (
"salesforce.com",
"ladesk.com",
"awsapps.com"
)
and (
(
any(ml.nlu_classifier(body.current_thread.text).topics,
.name in ("B2B Cold Outreach", "Professional and Career Development")
)
and not any(ml.nlu_classifier(body.current_thread.text).topics,
.name == "Reminders and Notifications" and .confidence == "high"
)
)
or 2 of (
strings.icontains(body.current_thread.text, "profile caught my attention"),
strings.icontains(body.current_thread.text, "recruiting top talent"),
strings.icontains(body.current_thread.text, "talent acquisition team"),
strings.icontains(body.current_thread.text,
"experience seems highly relevant"
),
strings.icontains(body.current_thread.text, "expling this opptunity"),
strings.icontains(body.current_thread.text, "your professional profile"),
strings.icontains(body.current_thread.text, "a pivotal hire"),
strings.icontains(body.current_thread.text, "a key hire"),
strings.icontains(body.current_thread.text, "schedule a time")
)
)
Detection logic
Scope: inbound message.
Detects suspicious recruiting messages from legitimate services like Salesforce, LADesk, or AWS Apps with unusually long sender email addresses and recruiting-specific language patterns that may indicate abuse of trusted platforms for social engineering.
- inbound message
- length(sender.email.email) ≥ 50
- sender.email.domain.root_domain in ('salesforce.com', 'ladesk.com', 'awsapps.com')
any of:
all of:
any of
ml.nlu_classifier(body.current_thread.text).topicswhere:- .name in ('B2B Cold Outreach', 'Professional and Career Development')
not:
any of
ml.nlu_classifier(body.current_thread.text).topicswhere all hold:- .name is 'Reminders and Notifications'
- .confidence is 'high'
at least 2 of 9: body.current_thread.text contains any of 9 patterns
profile caught my attentionrecruiting top talenttalent acquisition teamexperience seems highly relevantexpling this opptunityyour professional profilea pivotal hirea key hireschedule a time
Inspects: body.current_thread.text, sender.email.domain.root_domain, sender.email.email, type.inbound. Sensors: ml.nlu_classifier, strings.icontains.
Indicators matched (14)
| Field | Match | Value |
|---|---|---|
sender.email.domain.root_domain | member | salesforce.com |
sender.email.domain.root_domain | member | ladesk.com |
sender.email.domain.root_domain | member | awsapps.com |
ml.nlu_classifier(body.current_thread.text).topics[].name | member | B2B Cold Outreach |
ml.nlu_classifier(body.current_thread.text).topics[].name | member | Professional and Career Development |
strings.icontains | substring | profile caught my attention |
strings.icontains | substring | recruiting top talent |
strings.icontains | substring | talent acquisition team |
strings.icontains | substring | experience seems highly relevant |
strings.icontains | substring | expling this opptunity |
strings.icontains | substring | your professional profile |
strings.icontains | substring | a pivotal hire |
2 more
strings.icontains | substring | a key hire |
strings.icontains | substring | schedule a time |
Stages and Predicates
Stage 1: mql_rule
and
or
and
not
any(ml.nlu_classifier(body.current_thread.text).topics)
and
ml.nlu_classifier(body.current_thread.text).topics.confidence eq "high"
ml.nlu_classifier(body.current_thread.text).topics.name eq "Reminders and Notifications"
any(ml.nlu_classifier(body.current_thread.text).topics)
ml.nlu_classifier(body.current_thread.text).topics.name in ["B2B Cold Outreach", "Professional and Career Development"]
body.current_thread.text contains "a key hire"
body.current_thread.text contains "a pivotal hire"
body.current_thread.text contains "experience seems highly relevant"
body.current_thread.text contains "expling this opptunity"
body.current_thread.text contains "profile caught my attention"
body.current_thread.text contains "recruiting top talent"
body.current_thread.text contains "schedule a time"
body.current_thread.text contains "talent acquisition team"
body.current_thread.text contains "your professional profile"
sender.email.domain.root_domain in ["awsapps.com", "ladesk.com", "salesforce.com"]
sender.email.email length_compare "50"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains |
sender.email.domain.root_domain | in |
| field:"sender.email.domain.root_domain" kind:in |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Roomsy with unrelated body content
#Detects messages from Roomsy.com with a structured noreply sender pattern that contain content unrelated to travel, transportation, or order confirmations.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud, Credential Phishing |
| Tactics and techniques | Impersonation: Brand, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.domain.root_domain == "roomsy.com"
and regex.imatch(sender.email.local_part, "noreply[0-9]{5}")
and not any(ml.nlu_classifier(body.current_thread.text).topics,
.name in ("Travel and Transportation", "Order Confirmations")
)
Detection logic
Scope: inbound message.
Detects messages from Roomsy.com with a structured noreply sender pattern that contain content unrelated to travel, transportation, or order confirmations.
- inbound message
- sender.email.domain.root_domain is 'roomsy.com'
- sender.email.local_part matches 'noreply[0-9]{5}'
not:
any of
ml.nlu_classifier(body.current_thread.text).topicswhere:- .name in ('Travel and Transportation', 'Order Confirmations')
Inspects: body.current_thread.text, sender.email.domain.root_domain, sender.email.local_part, type.inbound. Sensors: ml.nlu_classifier, regex.imatch.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.domain.root_domain | equals | roomsy.com |
regex.imatch | regex | noreply[0-9]{5} |
Stages and Predicates
Stage 1: mql_rule
and
not
any(ml.nlu_classifier(body.current_thread.text).topics)
ml.nlu_classifier(body.current_thread.text).topics.name in ["Order Confirmations", "Travel and Transportation"]
sender.email.domain.root_domain eq "roomsy.com"
sender.email.local_part regex_match "noreply[0-9]{5}"
type.inbound eq "true"Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
ml.nlu_classifier(body.current_thread.text).topics | array_any | excludes:ml.nlu_classifier(body.current_thread.text).topics |
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.domain.root_domain | eq |
| field:"sender.email.domain.root_domain" kind:eq value:"roomsy.com" |
sender.email.local_part | regex_match |
| field:"sender.email.local_part" kind:regex_match value:"noreply[0-9]{5}" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Sendgrid credential theft with personalized request targeting single recipient
#Detects messages sent through Sendgrid from new sender domains that contain credential theft language with high confidence. The message targets a single recipient whose email address appears in both the message body and link display text, indicating personalization tactics commonly used in targeted attacks.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
// a single recipient
and length(recipients.to) == 1
// the domain is a first time sender
and profile.by_sender_domain().prevalence == "new"
// sent from sendgrid
and any(headers.domains, .root_domain == "sendgrid.net")
// cred_theft intent
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "cred_theft" and .confidence != "low"
)
// a request is within the display_text
and any(filter(ml.nlu_classifier(body.current_thread.text).entities,
.name == "request"
),
any(body.links, .display_text == ..text)
)
// the rcpt email address is in the body of the message, accounting for display_url, which also might include it
and (
// number of occurances the rcpt email occurs in the body
strings.count(body.current_thread.text, recipients.to[0].email.email) >
// length of the filtered links to those that contain the email
length(filter(body.links,
strings.contains(.display_url.url, recipients.to[0].email.email)
)
)
)
and not (
strings.icontains(body.current_thread.text,
strings.concat('This message was generated automatically for ',
recipients.to[0].email.email
)
)
or strings.icontains(body.current_thread.text,
strings.concat('This email was sent to ',
recipients.to[0].email.email
)
)
)
Detection logic
Scope: inbound message.
Detects messages sent through Sendgrid from new sender domains that contain credential theft language with high confidence. The message targets a single recipient whose email address appears in both the message body and link display text, indicating personalization tactics commonly used in targeted attacks.
- inbound message
- length(recipients.to) is 1
- profile.by_sender_domain().prevalence is 'new'
any of
headers.domainswhere:- .root_domain is 'sendgrid.net'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'cred_theft'
- .confidence is not 'low'
any of
filter(...)where:any of
body.linkswhere:- .display_text is .text
- strings.count(body.current_thread.text) > length(filter(body.links, strings.contains(.display_url.url, recipients.to[0].email.email)))
none of:
- strings.icontains(body.current_thread.text)
- strings.icontains(body.current_thread.text)
Inspects: body.current_thread.text, body.links, body.links[].display_text, body.links[].display_url.url, headers.domains, headers.domains[].root_domain, recipients.to, recipients.to[0].email.email, type.inbound. Sensors: ml.nlu_classifier, profile.by_sender_domain, strings.concat, strings.contains, strings.count, strings.icontains.
Indicators matched (3)
| Field | Match | Value |
|---|---|---|
headers.domains[].root_domain | equals | sendgrid.net |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | cred_theft |
ml.nlu_classifier(body.current_thread.text).entities[].name | equals | request |
Stages and Predicates
Stage 1: mql_rule
and
any(filter(...))
any(body.links)
body.links.display_text cross_field_compare "filter(...).text"
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "cred_theft"
any(headers.domains)
headers.domains.root_domain eq "sendgrid.net"
not
strings.icontains func_call "strings.icontains(body.current_thread.text)"
profile.by_sender_domain func_call "profile.by_sender_domain().prevalence == new"
recipients.to length_compare "1"
strings.count func_call "strings.count(body.current_thread.text) > length(filter(body.links, strings.contains(.display_url.url, recipients.to[0].email.email)))"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: SendGrid impersonation via Sendgrid from new sender
#Detects messages impersonating SendGrid from new senders, while routing through legitimate SendGrid infrastructure. This pattern is commonly used to abuse trusted email services for malicious purposes.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Impersonation: Brand, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
// SendGird impersonation patterns
and (
strings.ilike(strings.replace_confusables(sender.display_name), '*sendgrid*')
or strings.ilevenshtein(strings.replace_confusables(sender.display_name),
'sendgrid'
) <= 1
or (
strings.ilike(strings.replace_confusables(sender.email.local_part),
'*sendgrid*'
)
and (
sender.display_name is null
or strings.ilike(strings.replace_confusables(subject.base), '*sendgrid*')
)
)
or any(ml.logo_detect(file.message_screenshot()).brands,
.name == "SendGrid" and .confidence == "high"
)
or regex.icontains(body.current_thread.text, 'sendgrid\s*20[0-9]{2}')
)
// sent from sendgrid infra
and any(headers.domains,
strings.icontains(.domain, 'outbound-mail.sendgrid.net')
)
// not common senders with valid domains
// this catches cases where the domain is invalid and senders become common
and not (
profile.by_sender_email().prevalence == "common" and sender.email.domain.valid
)
// negate legit sendgrid messages
and not (
sender.email.domain.domain == "sendgrid.com"
and coalesce(headers.auth_summary.dmarc.pass, false)
)
Detection logic
Scope: inbound message.
Detects messages impersonating SendGrid from new senders, while routing through legitimate SendGrid infrastructure. This pattern is commonly used to abuse trusted email services for malicious purposes.
- inbound message
any of:
- strings.replace_confusables(sender.display_name) matches '*sendgrid*'
- strings.replace_confusables(sender.display_name) is similar to 'sendgrid'
all of:
- strings.replace_confusables(sender.email.local_part) matches '*sendgrid*'
any of:
- sender.display_name is missing
- strings.replace_confusables(subject.base) matches '*sendgrid*'
any of
ml.logo_detect(file.message_screenshot()).brandswhere all hold:- .name is 'SendGrid'
- .confidence is 'high'
- body.current_thread.text matches 'sendgrid\\s*20[0-9]{2}'
any of
headers.domainswhere:- .domain contains 'outbound-mail.sendgrid.net'
not:
all of:
- profile.by_sender_email().prevalence is 'common'
- sender.email.domain.valid
not:
all of:
- sender.email.domain.domain is 'sendgrid.com'
- coalesce(headers.auth_summary.dmarc.pass)
Inspects: body.current_thread.text, headers.auth_summary.dmarc.pass, headers.domains, headers.domains[].domain, sender.display_name, sender.email.domain.domain, sender.email.domain.valid, sender.email.local_part, subject.base, type.inbound. Sensors: file.message_screenshot, ml.logo_detect, profile.by_sender_email, regex.icontains, strings.icontains, strings.ilevenshtein, strings.ilike, strings.replace_confusables.
Indicators matched (6)
| Field | Match | Value |
|---|---|---|
strings.ilike | substring | *sendgrid* |
strings.ilevenshtein | fuzzy | sendgrid |
ml.logo_detect(file.message_screenshot()).brands[].name | equals | SendGrid |
ml.logo_detect(file.message_screenshot()).brands[].confidence | equals | high |
regex.icontains | regex | sendgrid\s*20[0-9]{2} |
strings.icontains | substring | outbound-mail.sendgrid.net |
Stages and Predicates
Stage 1: mql_rule
and
or
any(ml.logo_detect(file.message_screenshot()).brands)
and
ml.logo_detect(file.message_screenshot()).brands.confidence eq "high"
ml.logo_detect(file.message_screenshot()).brands.name eq "SendGrid"
and
or
sender.display_name is_null
strings.replace_confusables(subject.base) match "sendgrid"
strings.replace_confusables(sender.email.local_part) match "sendgrid"
body.current_thread.text regex_match "sendgrid\\s*20[0-9]{2}"
strings.ilevenshtein func_call "strings.ilevenshtein(strings.replace_confusables(sender.display_name), \"sendgrid\") <= 1"
strings.replace_confusables(sender.display_name) match "sendgrid"
not
and
coalesce func_call "coalesce(headers.auth_summary.dmarc.pass)"
sender.email.domain.domain eq "sendgrid.com"
not
and
profile.by_sender_email func_call "profile.by_sender_email().prevalence == common"
sender.email.domain.valid eq "true"
any(headers.domains)
headers.domains.domain contains "outbound-mail.sendgrid.net"
type.inbound eq "true"Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
sender.email.domain.domain | eq | sendgrid.com | excludes:sender.email.domain.domain field:"sender.email.domain.domain" value:"sendgrid.com" |
sender.email.domain.valid | eq | true | excludes:sender.email.domain.valid field:"sender.email.domain.valid" value:"true" |
Indicators
These rows show field, operator, and value matches.
Service abuse: SendGrid-formatted link with actor-controlled fragment
#Detects messages containing SendGrid or SendGrid-like links with base64-encoded zlib-compressed JSON in the URL fragment, indicating potential abuse of legitimate email services for malicious purposes.
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
and length(body.links) < 10
and any(body.links,
// SendGrid or SendGrid-like links have been abused
(
.href_url.path == "/ls/click"
or any(.href_url.query_params_decoded['upn'], . is not null)
)
// base64-encoded zlib-compressed JSON
and regex.match(.href_url.fragment, 'eJy.{7}A.*')
)
Detection logic
Scope: inbound message.
Detects messages containing SendGrid or SendGrid-like links with base64-encoded zlib-compressed JSON in the URL fragment, indicating potential abuse of legitimate email services for malicious purposes.
- inbound message
- length(body.links) < 10
any of
body.linkswhere all hold:any of:
- .href_url.path is '/ls/click'
any of
.href_url.query_params_decoded['upn']where:- . is set
- .href_url.fragment matches 'eJy.{7}A.*'
Inspects: body.links, body.links[].href_url.fragment, body.links[].href_url.path, body.links[].href_url.query_params_decoded['upn'], type.inbound. Sensors: regex.match.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
body.links[].href_url.path | equals | /ls/click |
regex.match | regex | eJy.{7}A.* |
Stages and Predicates
Stage 1: mql_rule
and
any(body.links)
and
or
any(body.links.href_url.query_params_decoded['upn'])
body.links.href_url.query_params_decoded['upn'] is_not_null
body.links.href_url.path eq "/ls/click"
body.links.href_url.fragment regex_match "eJy.{7}A.*"
body.links length_compare "10"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: SendThisFile with credential theft and financial language
#Detects messages from sendthisfile.com containing credential theft language combined with financial communications topics.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud, Credential Phishing |
| Tactics and techniques | Free file host, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.domain.root_domain == "sendthisfile.com"
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "cred_theft" and .confidence != "low"
)
and any(ml.nlu_classifier(body.current_thread.text).topics,
.name == "Financial Communications" and .confidence != "low"
)
// not a reply or forward
and (headers.in_reply_to is null or length(headers.references) == 0)
Detection logic
Scope: inbound message.
Detects messages from sendthisfile.com containing credential theft language combined with financial communications topics.
- inbound message
- sender.email.domain.root_domain is 'sendthisfile.com'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'cred_theft'
- .confidence is not 'low'
any of
ml.nlu_classifier(body.current_thread.text).topicswhere all hold:- .name is 'Financial Communications'
- .confidence is not 'low'
any of:
- headers.in_reply_to is missing
- length(headers.references) is 0
Inspects: body.current_thread.text, headers.in_reply_to, headers.references, sender.email.domain.root_domain, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (3)
| Field | Match | Value |
|---|---|---|
sender.email.domain.root_domain | equals | sendthisfile.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | cred_theft |
ml.nlu_classifier(body.current_thread.text).topics[].name | equals | Financial Communications |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "cred_theft"
any(ml.nlu_classifier(body.current_thread.text).topics)
and
ml.nlu_classifier(body.current_thread.text).topics.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).topics.name eq "Financial Communications"
or
headers.in_reply_to is_null
headers.references length_compare "0"
sender.email.domain.root_domain eq "sendthisfile.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
Service abuse: Settime.io sender with callback scam intent
#Detects inbound messages from noreply@settime.io that exhibit callback scam characteristics, as identified by natural language understanding with medium or high confidence. Settime.io is a scheduling service that can be abused to send fraudulent messages prompting recipients to call a phone number controlled by threat actors.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Social engineering, Out of band pivot |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == "noreply@settime.io"
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam" and .confidence != "low"
)
Detection logic
Scope: inbound message.
Detects inbound messages from noreply@settime.io that exhibit callback scam characteristics, as identified by natural language understanding with medium or high confidence. Settime.io is a scheduling service that can be abused to send fraudulent messages prompting recipients to call a phone number controlled by threat actors.
- inbound message
- sender.email.email is 'noreply@settime.io'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'callback_scam'
- .confidence is not 'low'
Inspects: body.current_thread.text, sender.email.email, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | noreply@settime.io |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
sender.email.email eq "noreply@settime.io"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"noreply@settime.io" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Soundestlink redirect with suspicious indicators
#Detects messages containing Soundestlink redirect links that lack proper unsubscribe mechanisms, and lack standard mailing list headers, indicating potential abuse of the service.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing, Malware/Ransomware |
| Tactics and techniques | Evasion |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and any(body.current_thread.links,
.href_url.domain.root_domain == "soundestlink.com"
and not strings.istarts_with(.href_url.path, '/contactsPreferences/')
)
and length(distinct(filter(body.current_thread.links,
.href_url.domain.root_domain == "soundestlink.com"
and not strings.istarts_with(.href_url.path,
'/contactsPreferences/'
)
),
.href_url.url
)
) == 1
and not any(headers.hops, any(.fields, .name =~ "List-Unsubscribe"))
and not (
any(html.xpath(body.html, '//a').nodes, .inner_text =~ "Edit Preferences")
and any(html.xpath(body.html, '//a').nodes, .inner_text =~ "Unsubscribe")
)
Detection logic
Scope: inbound message.
Detects messages containing Soundestlink redirect links that lack proper unsubscribe mechanisms, and lack standard mailing list headers, indicating potential abuse of the service.
- inbound message
any of
body.current_thread.linkswhere all hold:- .href_url.domain.root_domain is 'soundestlink.com'
not:
- .href_url.path starts with '/contactsPreferences/'
- length(distinct(filter(body.current_thread.links, .href_url.domain.root_domain == 'soundestlink.com' and not strings.istarts_with(.href_url.path, '/contactsPreferences/')), .href_url.url)) is 1
not:
any of
headers.hopswhere:any of
.fieldswhere:- .name is 'List-Unsubscribe'
not:
all of:
any of
html.xpath(body.html, '//a').nodeswhere:- .inner_text is 'Edit Preferences'
any of
html.xpath(body.html, '//a').nodeswhere:- .inner_text is 'Unsubscribe'
Inspects: body.current_thread.links, body.current_thread.links[].href_url.domain.root_domain, body.current_thread.links[].href_url.path, body.html, headers.hops, headers.hops[].fields, headers.hops[].fields[].name, type.inbound. Sensors: html.xpath, strings.istarts_with.
Indicators matched (1)
| Field | Match | Value |
|---|---|---|
body.current_thread.links[].href_url.domain.root_domain | equals | soundestlink.com |
Stages and Predicates
Stage 1: mql_rule
and
any(body.current_thread.links)
and
not
body.current_thread.links.href_url.path starts_with "/contactsPreferences/"
body.current_thread.links.href_url.domain.root_domain eq "soundestlink.com"
not
any(headers.hops)
any(headers.hops.fields)
headers.hops.fields.name eq "List-Unsubscribe"
not
and
any(html.xpath(body.html, '//a').nodes)
html.xpath(body.html, '//a').nodes.inner_text eq "Edit Preferences"
any(html.xpath(body.html, '//a').nodes)
html.xpath(body.html, '//a').nodes.inner_text eq "Unsubscribe"
distinct(filter(body.current_thread.links, .href_url.domain.root_domain == 'soundestlink.com' and not strings.istarts_with(.href_url.path, '/contactsPreferences/')), .href_url.url) length_compare "1"
type.inbound eq "true"Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
headers.hops | array_any | excludes:headers.hops | |
html.xpath(body.html, '//a').nodes | array_any | excludes:html.xpath(body.html, '//a').nodes |
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Soundestlink.com Microsoft impersonation
#Detects links or extracted domains hosted on soundestlink.com where the subdomain contains Microsoft-related keywords such as 'microsoft', 'teams', 'login', 'office', '365', or 'outlook'. This pattern indicates abuse of a legitimate link redirection/tracking service to disguise malicious URLs as Microsoft login or authentication pages, a common technique used to harvest credentials.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Impersonation: Brand, Lookalike domain, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and (
// parsed urls
any(body.links,
(
.href_url.domain.root_domain == "soundestlink.com"
and regex.icontains(.href_url.domain.subdomain,
'(?:microsoft|teams|login|office|365|outlook)'
)
)
// handle mimecast
or (
.href_url.domain.root_domain in ("mimecastprotect.com", "mimecast.com")
and any(.href_url.query_params_decoded['domain'],
strings.parse_domain(.).root_domain == "soundestlink.com"
and regex.icontains(strings.parse_domain(.).subdomain,
'(?:microsoft|teams|login|office|365|outlook)'
)
)
)
)
// unparsed and extracted
or (
strings.icontains(body.html.display_text, 'soundestlink.com')
and any(regex.extract(body.html.display_text,
'(?P<domain>[a-z0-9.\-]+\.soundestlink\.com)'
),
regex.icontains(strings.parse_domain(.named_groups["domain"]).subdomain,
'(?:microsoft|teams|login|office|365|outlook)'
)
)
)
)
Detection logic
Scope: inbound message.
Detects links or extracted domains hosted on soundestlink.com where the subdomain contains Microsoft-related keywords such as 'microsoft', 'teams', 'login', 'office', '365', or 'outlook'. This pattern indicates abuse of a legitimate link redirection/tracking service to disguise malicious URLs as Microsoft login or authentication pages, a common technique used to harvest credentials.
- inbound message
any of:
any of
body.linkswhere any holds:all of:
- .href_url.domain.root_domain is 'soundestlink.com'
- .href_url.domain.subdomain matches '(?:microsoft|teams|login|office|365|outlook)'
all of:
- .href_url.domain.root_domain in ('mimecastprotect.com', 'mimecast.com')
any of
.href_url.query_params_decoded['domain']where all hold:- strings.parse_domain(.).root_domain is 'soundestlink.com'
- strings.parse_domain(.).subdomain matches '(?:microsoft|teams|login|office|365|outlook)'
all of:
- body.html.display_text contains 'soundestlink.com'
any of
regex.extract(body.html.display_text)where:- strings.parse_domain(.named_groups['domain']).subdomain matches '(?:microsoft|teams|login|office|365|outlook)'
Inspects: body.html.display_text, body.links, body.links[].href_url.domain.root_domain, body.links[].href_url.domain.subdomain, body.links[].href_url.query_params_decoded['domain'], type.inbound. Sensors: regex.extract, regex.icontains, strings.icontains, strings.parse_domain.
Indicators matched (6)
| Field | Match | Value |
|---|---|---|
body.links[].href_url.domain.root_domain | equals | soundestlink.com |
regex.icontains | regex | (?:microsoft|teams|login|office|365|outlook) |
body.links[].href_url.domain.root_domain | member | mimecastprotect.com |
body.links[].href_url.domain.root_domain | member | mimecast.com |
strings.icontains | substring | soundestlink.com |
regex.extract | regex | (?P<domain>[a-z0-9.\-]+\.soundestlink\.com) |
Stages and Predicates
Stage 1: mql_rule
and
or
any(body.links)
or
and
any(body.links.href_url.query_params_decoded['domain'])
and
strings.parse_domain func_call "strings.parse_domain(body.links[].href_url.query_params_decoded['domain'][]).root_domain == soundestlink.com"
strings.parse_domain(body.links[].href_url.query_params_decoded['domain'][]).subdomain regex_match "(?:microsoft|teams|login|office|365|outlook)"
body.links.href_url.domain.root_domain in ["mimecast.com", "mimecastprotect.com"]
and
body.links.href_url.domain.root_domain eq "soundestlink.com"
body.links.href_url.domain.subdomain regex_match "(?:microsoft|teams|login|office|365|outlook)"
and
any(regex.extract(body.html.display_text))
strings.parse_domain(regex.extract(body.html.display_text)[].named_groups['domain']).subdomain regex_match "(?:microsoft|teams|login|office|365|outlook)"
body.html.display_text contains "soundestlink.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.html.display_text | contains |
| field:"body.html.display_text" kind:contains value:"soundestlink.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Square marketing with suspicious QR code
#Detects messages from Square's marketing domain containing QR codes that redirect to self-service creation platforms, file sharing services, or image hosting services.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | QR code, Free file host |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.domain.domain == "squaremktg.com"
and beta.scan_qr(file.message_screenshot()).found
//
// This rule makes use of a beta feature and is subject to change without notice
// using the beta feature in custom rules is not suggested until it has been formally released
//
and any(filter(beta.scan_qr(file.message_screenshot()).items,
// ignore square's own free website hosting service
.url.domain.root_domain != "square.site"
),
(
.url.domain.root_domain in $self_service_creation_platform_domains
or .url.domain.domain in $self_service_creation_platform_domains
)
or (
.url.domain.root_domain in $free_file_hosts
or .url.domain.domain in $free_file_hosts
)
)
Detection logic
Scope: inbound message.
Detects messages from Square's marketing domain containing QR codes that redirect to self-service creation platforms, file sharing services, or image hosting services.
- inbound message
- sender.email.domain.domain is 'squaremktg.com'
- beta.scan_qr(file.message_screenshot()).found
any of
filter(...)where any holds:any of:
- .url.domain.root_domain in $self_service_creation_platform_domains
- .url.domain.domain in $self_service_creation_platform_domains
any of:
- .url.domain.root_domain in $free_file_hosts
- .url.domain.domain in $free_file_hosts
Inspects: sender.email.domain.domain, type.inbound. Sensors: beta.scan_qr, file.message_screenshot. Reference lists: $free_file_hosts, $self_service_creation_platform_domains.
Indicators matched (1)
| Field | Match | Value |
|---|---|---|
sender.email.domain.domain | equals | squaremktg.com |
Stages and Predicates
Stage 1: mql_rule
and
any(filter(...))
or
macro "filter(...)[].url.domain.domain in free_file_hosts"
macro "filter(...)[].url.domain.domain in self_service_creation_platform_domains"
macro "filter(...)[].url.domain.root_domain in free_file_hosts"
macro "filter(...)[].url.domain.root_domain in self_service_creation_platform_domains"
beta.scan_qr func_call "beta.scan_qr(file.message_screenshot()).found"
sender.email.domain.domain eq "squaremktg.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.domain.domain | eq |
| field:"sender.email.domain.domain" kind:eq value:"squaremktg.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: SurveyMonkey with suspicious outbound links
#Detects messages sent from SurveyMonkey's user domain that contain links to non-SurveyMonkey domains within nested table elements, excluding survey-related content.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Social engineering, Impersonation: Brand |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.domain.root_domain == "surveymonkeyuser.com"
and any(html.xpath(body.html, '//table//table//a').nodes,
.links[0].href_url.domain.root_domain != "surveymonkey.com"
and not strings.icontains(.inner_text, "survey")
and not (
.links[0].href_url.domain.root_domain in (
"mimecast.com",
"mimecastprotect.com"
)
and any(.links[0].href_url.query_params_decoded['domain'],
strings.parse_domain(.).domain in $tenant_domains
or strings.parse_domain(.).domain in ("surveymonkey.com", )
)
)
)
Detection logic
Scope: inbound message.
Detects messages sent from SurveyMonkey's user domain that contain links to non-SurveyMonkey domains within nested table elements, excluding survey-related content.
- inbound message
- sender.email.domain.root_domain is 'surveymonkeyuser.com'
any of
html.xpath(body.html, '//table//table//a').nodeswhere all hold:- .links[0].href_url.domain.root_domain is not 'surveymonkey.com'
not:
- .inner_text contains 'survey'
not:
all of:
- .links[0].href_url.domain.root_domain in ('mimecast.com', 'mimecastprotect.com')
any of
.links[0].href_url.query_params_decoded['domain']where any holds:- strings.parse_domain(.).domain in $tenant_domains
- strings.parse_domain(.).domain in ('surveymonkey.com')
Inspects: body.html, sender.email.domain.root_domain, type.inbound. Sensors: html.xpath, strings.icontains, strings.parse_domain. Reference lists: $tenant_domains.
Indicators matched (1)
| Field | Match | Value |
|---|---|---|
sender.email.domain.root_domain | equals | surveymonkeyuser.com |
Stages and Predicates
Stage 1: mql_rule
and
any(html.xpath(body.html, '//table//table//a').nodes)
and
not
and
any(html.xpath(body.html, '//table//table//a').nodes.links[0].href_url.query_params_decoded['domain'])
or
strings.parse_domain func_call "strings.parse_domain(html.xpath(body.html, '//table//table//a').nodes[].links[0].href_url.query_params_decoded['domain'][]).domain in (surveymonkey.com)"
strings.parse_domain func_call "strings.parse_domain(html.xpath(body.html, '//table//table//a').nodes[].links[0].href_url.query_params_decoded['domain'][]).domain in tenant_domains"
html.xpath(body.html, '//table//table//a').nodes.links[0].href_url.domain.root_domain in ["mimecast.com", "mimecastprotect.com"]
not
html.xpath(body.html, '//table//table//a').nodes.inner_text contains "survey"
html.xpath(body.html, '//table//table//a').nodes.links[0].href_url.domain.root_domain ne "surveymonkey.com"
sender.email.domain.root_domain eq "surveymonkeyuser.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.domain.root_domain | eq |
| field:"sender.email.domain.root_domain" kind:eq value:"surveymonkeyuser.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Suspicious Datadog alert
#Message from alert@dtdg.co containing links to URL shorteners or self-service creation platforms.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing, Malware/Ransomware |
| Tactics and techniques | Evasion, Free subdomain host |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == "alert@dtdg.co"
and length(body.current_thread.text) < 1000
and (
(
any(filter(body.links,
.parser == "hyperlink"
and not any(.href_url.query_params_decoded["domain"],
strings.parse_domain(.).root_domain == "datadoghq.com"
)
),
.href_url.domain.root_domain != "datadoghq.com"
and .href_url.domain.root_domain != "aka.ms"
)
and regex.icontains(body.current_thread.text,
'quarantine|held for.{0,10}review|secure message|voice\s?mail'
)
)
or (
ml.nlu_classifier(body.current_thread.text).language == "english"
and any(ml.nlu_classifier(body.current_thread.text).topics,
.confidence == "high"
and .name == "Voicemail Call and Missed Call Notifications"
)
)
)
Detection logic
Scope: inbound message.
Message from alert@dtdg.co containing links to URL shorteners or self-service creation platforms.
- inbound message
- sender.email.email is 'alert@dtdg.co'
- length(body.current_thread.text) < 1000
any of:
all of:
any of
filter(body.links)where all hold:- .href_url.domain.root_domain is not 'datadoghq.com'
- .href_url.domain.root_domain is not 'aka.ms'
- body.current_thread.text matches 'quarantine|held for.{0,10}review|secure message|voice\\s?mail'
all of:
- ml.nlu_classifier(body.current_thread.text).language is 'english'
any of
ml.nlu_classifier(body.current_thread.text).topicswhere all hold:- .confidence is 'high'
- .name is 'Voicemail Call and Missed Call Notifications'
Inspects: body.current_thread.text, body.links, body.links[].href_url.query_params_decoded['domain'], body.links[].parser, sender.email.email, type.inbound. Sensors: ml.nlu_classifier, regex.icontains, strings.parse_domain.
Indicators matched (5)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | alert@dtdg.co |
body.links[].parser | equals | hyperlink |
regex.icontains | regex | quarantine|held for.{0,10}review|secure message|voice\s?mail |
ml.nlu_classifier(body.current_thread.text).topics[].confidence | equals | high |
ml.nlu_classifier(body.current_thread.text).topics[].name | equals | Voicemail Call and Missed Call Notifications |
Stages and Predicates
Stage 1: mql_rule
and
or
and
any(filter(body.links))
and
filter(body.links).href_url.domain.root_domain ne "aka.ms"
filter(body.links).href_url.domain.root_domain ne "datadoghq.com"
body.current_thread.text regex_match "quarantine|held for.{0,10}review|secure message|voice\\s?mail"
and
any(ml.nlu_classifier(body.current_thread.text).topics)
and
ml.nlu_classifier(body.current_thread.text).topics.confidence eq "high"
ml.nlu_classifier(body.current_thread.text).topics.name eq "Voicemail Call and Missed Call Notifications"
ml.nlu_classifier func_call "ml.nlu_classifier(body.current_thread.text).language == english"
body.current_thread.text length_compare "1000"
sender.email.email eq "alert@dtdg.co"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match |
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"alert@dtdg.co" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Trello board invitation with VIP impersonation
#Detects fraudulent Trello board invitations that impersonate organization VIPs by using organization domain names in board titles and including notes purportedly from legitimate company executives.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Impersonation: VIP, Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.domain.root_domain == "trello.com"
// inspect the hops for two observed patterns
and any(headers.hops,
any(.fields,
// X-Msys-Api with campaign_id
(
.name =~ "X-Msys-Api"
and strings.icontains(.value, 'campaign_id":"invite_board_')
)
// X-Atl-Po-Triggerid with trello and invite board
or (
.name == "Feedback-Id"
and strings.icontains(.value, 'trello')
and regex.icontains(.value, 'invite[_-]board')
)
)
)
// inspect the body for two observed patterns
and (
// org_sld as the start of the board name with the org_vip as the sender
any(html.xpath(body.html, '//h2').nodes,
// org vip
any($org_vips, strings.icontains(..display_text, .display_name))
// org sld as the board name
and any($org_slds,
strings.icontains(..display_text,
strings.concat('invited you to their board ', .)
)
)
)
// pattern of the first name ending in `From` after the org_vip display name
or any(html.xpath(body.html,
'//div[img[@class="trello-member-avatar"]]/parent::div'
).nodes,
strings.starts_with(.display_text, 'A note from ')
and strings.iends_with(.display_text, 'From')
and any($org_vips, strings.icontains(..display_text, .display_name))
)
)
Detection logic
Scope: inbound message.
Detects fraudulent Trello board invitations that impersonate organization VIPs by using organization domain names in board titles and including notes purportedly from legitimate company executives.
- inbound message
- sender.email.domain.root_domain is 'trello.com'
any of
headers.hopswhere:any of
.fieldswhere any holds:all of:
- .name is 'X-Msys-Api'
- .value contains 'campaign_id":"invite_board_'
all of:
- .name is 'Feedback-Id'
- .value contains 'trello'
- .value matches 'invite[_-]board'
any of:
any of
html.xpath(body.html, '//h2').nodeswhere all hold:any of
$org_vipswhere:- strings.icontains(.display_text)
any of
$org_sldswhere:- strings.icontains(.display_text)
any of
html.xpath(body.html, '//div[img[@class="trello-member-avatar"]]/parent::div').nodeswhere all hold:- .display_text starts with 'A note from '
- .display_text ends with 'From'
any of
$org_vipswhere:- strings.icontains(.display_text)
Inspects: body.html, headers.hops, headers.hops[].fields, headers.hops[].fields[].name, headers.hops[].fields[].value, sender.email.domain.root_domain, type.inbound. Sensors: html.xpath, regex.icontains, strings.concat, strings.icontains, strings.iends_with, strings.starts_with. Reference lists: $org_slds, $org_vips.
Indicators matched (8)
| Field | Match | Value |
|---|---|---|
sender.email.domain.root_domain | equals | trello.com |
headers.hops[].fields[].name | equals | X-Msys-Api |
strings.icontains | substring | campaign_id":"invite_board_ |
headers.hops[].fields[].name | equals | Feedback-Id |
strings.icontains | substring | trello |
regex.icontains | regex | invite[_-]board |
strings.starts_with | prefix | A note from |
strings.iends_with | suffix | From |
Stages and Predicates
Stage 1: mql_rule
and
any(headers.hops)
any(headers.hops.fields)
or
and
headers.hops.fields[].name eq "Feedback-Id"
headers.hops.fields[].value contains "trello"
headers.hops.fields[].value regex_match "invite[_-]board"
and
headers.hops.fields[].name eq "X-Msys-Api"
headers.hops.fields[].value contains "campaign_id\":\"invite_board_"
or
any(html.xpath(body.html, '//div[img[@class="trello-member-avatar"]]/parent::div').nodes)
and
any($org_vips)
strings.icontains func_call "strings.icontains(html.xpath(body.html, '//div[img[@class=\"trello-member-avatar\"]]/parent::div').nodes[].display_text)"
html.xpath(body.html, '//div[img[@class="trello-member-avatar"]]/parent::div').nodes.display_text ends_with "From"
html.xpath(body.html, '//div[img[@class="trello-member-avatar"]]/parent::div').nodes.display_text starts_with "A note from "
any(html.xpath(body.html, '//h2').nodes)
and
any($org_slds)
strings.icontains func_call "strings.icontains(html.xpath(body.html, '//h2').nodes[].display_text)"
any($org_vips)
strings.icontains func_call "strings.icontains(html.xpath(body.html, '//h2').nodes[].display_text)"
sender.email.domain.root_domain eq "trello.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.domain.root_domain | eq |
| field:"sender.email.domain.root_domain" kind:eq value:"trello.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: WeTransfer callback scam
#Detects callback scams originating from legitimate WeTransfer noreply address using natural language processing to identify high-confidence callback scam intent in the message body.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing |
| Tactics and techniques | Social engineering, Out of band pivot |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == 'noreply@wetransfer.com'
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam"
)
Detection logic
Scope: inbound message.
Detects callback scams originating from legitimate WeTransfer noreply address using natural language processing to identify high-confidence callback scam intent in the message body.
- inbound message
- sender.email.email is 'noreply@wetransfer.com'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere:- .name is 'callback_scam'
Inspects: body.current_thread.text, sender.email.email, type.inbound. Sensors: ml.nlu_classifier.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | noreply@wetransfer.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
sender.email.email eq "noreply@wetransfer.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"noreply@wetransfer.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Wufoo credential theft
#Detects malicious messages sent from Wufoo's sending address (no-reply@wufoo.com) that are abusing the platform to deliver credential theft content. This rule identifies messages that lack Wufoo's standard display name and structural HTML elements found in legitimate Wufoo emails, while containing links and content classified as credential theft by NLU analysis.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.email == 'no-reply@wufoo.com'
and not strings.icontains(sender.display_name, 'Wufoo')
// table found in legit wufoo emails
and not length(html.xpath(body.html, "//table[@class='readonly']").nodes) == 1
and 0 < length(body.links)
and any(ml.nlu_classifier(body.current_thread.text).intents,
.name == 'cred_theft' and .confidence != 'low'
)
Detection logic
Scope: inbound message.
Detects malicious messages sent from Wufoo's sending address (no-reply@wufoo.com) that are abusing the platform to deliver credential theft content. This rule identifies messages that lack Wufoo's standard display name and structural HTML elements found in legitimate Wufoo emails, while containing links and content classified as credential theft by NLU analysis.
- inbound message
- sender.email.email is 'no-reply@wufoo.com'
not:
- sender.display_name contains 'Wufoo'
not:
- length(html.xpath(body.html, "//table[@class='readonly']").nodes) is 1
- length(body.links) > 0
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'cred_theft'
- .confidence is not 'low'
Inspects: body.current_thread.text, body.html, body.links, sender.display_name, sender.email.email, type.inbound. Sensors: html.xpath, ml.nlu_classifier, strings.icontains.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | no-reply@wufoo.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | cred_theft |
Stages and Predicates
Stage 1: mql_rule
and
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "cred_theft"
not
html.xpath(body.html, "//table[@class='readonly']").nodes length_compare "1"
not
sender.display_name contains "Wufoo"
body.links length_compare "0"
sender.email.email eq "no-reply@wufoo.com"
type.inbound eq "true"Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
html.xpath(body.html, "//table[@class='readonly']").nodes | length_compare | 1 | |
sender.display_name | contains | Wufoo | excludes:sender.display_name field:"sender.display_name" value:"Wufoo" |
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"no-reply@wufoo.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Zohodesk reply-to mismatch with job scam indicators
#Detects inbound messages sent from Zohodesk infrastructure where the reply-to address points to a domain outside of Zohodesk, combined with natural language signals indicating job scam content. This technique abuses legitimate Zohodesk services to add credibility while redirecting responses to an external actor-controlled address.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud, Spam |
| Tactics and techniques | Social engineering, Out of band pivot, Spoofing |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and sender.email.domain.root_domain == "zohodesk.com"
and any(headers.reply_to, .email.domain.root_domain != "zohodesk.com")
and (
any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "job_scam" and .confidence != "low"
)
// nlu fallback where we don't get job scam
or strings.icontains(body.current_thread.text, "talent acquisition")
)
Detection logic
Scope: inbound message.
Detects inbound messages sent from Zohodesk infrastructure where the reply-to address points to a domain outside of Zohodesk, combined with natural language signals indicating job scam content. This technique abuses legitimate Zohodesk services to add credibility while redirecting responses to an external actor-controlled address.
- inbound message
- sender.email.domain.root_domain is 'zohodesk.com'
any of
headers.reply_towhere:- .email.domain.root_domain is not 'zohodesk.com'
any of:
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'job_scam'
- .confidence is not 'low'
- body.current_thread.text contains 'talent acquisition'
Inspects: body.current_thread.text, headers.reply_to, headers.reply_to[].email.domain.root_domain, sender.email.domain.root_domain, type.inbound. Sensors: ml.nlu_classifier, strings.icontains.
Indicators matched (3)
| Field | Match | Value |
|---|---|---|
sender.email.domain.root_domain | equals | zohodesk.com |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | job_scam |
strings.icontains | substring | talent acquisition |
Stages and Predicates
Stage 1: mql_rule
and
or
any(ml.nlu_classifier(body.current_thread.text).intents)
and
ml.nlu_classifier(body.current_thread.text).intents.confidence ne "low"
ml.nlu_classifier(body.current_thread.text).intents.name eq "job_scam"
body.current_thread.text contains "talent acquisition"
any(headers.reply_to)
headers.reply_to.email.domain.root_domain ne "zohodesk.com"
sender.email.domain.root_domain eq "zohodesk.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains value:"talent acquisition" |
sender.email.domain.root_domain | eq |
| field:"sender.email.domain.root_domain" kind:eq value:"zohodesk.com" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Zoom Clips with unregistered reply-to domain
#Detects messages sent through legitimate Zoom infrastructure sharing a clip, where the reply-to domain has no registered WHOIS record.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Spam |
| Tactics and techniques | Social engineering, Evasion |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
// Legitimate zoom sending infrastructure
and sender.email.email == "no-reply@zoom.us"
// sharing a clip
and strings.starts_with(subject.base, 'Clips')
// reply-to domain is not registered
and (network.whois(headers.reply_to[0].email.domain).found == false)
Detection logic
Scope: inbound message.
Detects messages sent through legitimate Zoom infrastructure sharing a clip, where the reply-to domain has no registered WHOIS record.
- inbound message
- sender.email.email is 'no-reply@zoom.us'
- subject.base starts with 'Clips'
- network.whois(headers.reply_to[0].email.domain).found is False
Inspects: headers.reply_to[0].email.domain, sender.email.email, subject.base, type.inbound. Sensors: network.whois, strings.starts_with.
Indicators matched (2)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | no-reply@zoom.us |
strings.starts_with | prefix | Clips |
Stages and Predicates
Stage 1: mql_rule
and
network.whois func_call "network.whois(headers.reply_to[0].email.domain).found == false"
sender.email.email eq "no-reply@zoom.us"
subject.base starts_with "Clips"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"no-reply@zoom.us" |
subject.base | starts_with |
| field:"subject.base" kind:starts_with value:"Clips" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Service abuse: Zoom with newly registered reply-to domain
#Detects messages from legitimate Zoom infrastructure (no-reply@zoom.us) that contain a reply-to address with a domain registered within the last 45 days, indicating potential abuse of Zoom's service for malicious purposes.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Spam |
| Tactics and techniques | Social engineering, Evasion |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
// Legitimate zoom sending infrastructure
and sender.email.email == "no-reply@zoom.us"
// newly registered reply-to domain
and network.whois(headers.reply_to[0].email.domain).days_old < 45
Detection logic
Scope: inbound message.
Detects messages from legitimate Zoom infrastructure (no-reply@zoom.us) that contain a reply-to address with a domain registered within the last 45 days, indicating potential abuse of Zoom's service for malicious purposes.
- inbound message
- sender.email.email is 'no-reply@zoom.us'
- network.whois(headers.reply_to[0].email.domain).days_old < 45
Inspects: headers.reply_to[0].email.domain, sender.email.email, type.inbound. Sensors: network.whois.
Indicators matched (1)
| Field | Match | Value |
|---|---|---|
sender.email.email | equals | no-reply@zoom.us |
Stages and Predicates
Stage 1: mql_rule
and
network.whois func_call "network.whois(headers.reply_to[0].email.domain).days_old < 45"
sender.email.email eq "no-reply@zoom.us"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.email | eq |
| field:"sender.email.email" kind:eq value:"no-reply@zoom.us" |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |