Detection rules › Sublime MQL
Suspicious recipients pattern with no Compauth pass and suspicious content
Detects messages with undisclosed recipients (likely all bcc), where the Compauth verdict is not 'pass', and ML has identified suspicious language or credential phishing links.
Event coverage
Rule body MQL
type.inbound
and (
length(recipients.to) == 0
or all(recipients.to, .display_name == "Undisclosed recipients")
)
and length(recipients.cc) == 0
and length(recipients.bcc) == 0
and 2 of (
(
any(headers.hops,
.authentication_results.compauth.verdict is not null
and .authentication_results.compauth.verdict not in ("pass", "softpass")
)
),
(
any(ml.nlu_classifier(body.current_thread.text).intents,
.name in ("bec", "cred_theft", "advance_fee") and .confidence == "high"
)
),
(
any(body.links,
any([ml.link_analysis(.)],
.credphish.disposition == "phishing"
and .credphish.confidence in ("high")
)
)
)
)
and (
profile.by_sender().prevalence in ("new", "outlier")
or (
profile.by_sender().any_messages_malicious_or_spam
and not profile.by_sender().any_messages_benign
)
)
// negate highly trusted sender domains unless they fail DMARC authentication
and (
(
sender.email.domain.root_domain in $high_trust_sender_root_domains
and not headers.auth_summary.dmarc.pass
)
or sender.email.domain.root_domain not in $high_trust_sender_root_domains
)
Detection logic
Scope: inbound message.
Detects messages with undisclosed recipients (likely all bcc), where the Compauth verdict is not 'pass', and ML has identified suspicious language or credential phishing links.
- inbound message
any of:
- length(recipients.to) is 0
all of
recipients.towhere:- .display_name is 'Undisclosed recipients'
- length(recipients.cc) is 0
- length(recipients.bcc) is 0
at least 2 of:
any of
headers.hopswhere all hold:- .authentication_results.compauth.verdict is set
- .authentication_results.compauth.verdict not in ('pass', 'softpass')
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name in ('bec', 'cred_theft', 'advance_fee')
- .confidence is 'high'
any of
body.linkswhere:any of
[ml.link_analysis(.)]where all hold:- .credphish.disposition is 'phishing'
- .credphish.confidence in ('high')
any of:
- profile.by_sender().prevalence in ('new', 'outlier')
all of:
- profile.by_sender().any_messages_malicious_or_spam
not:
- profile.by_sender().any_messages_benign
any of:
all of:
- sender.email.domain.root_domain in $high_trust_sender_root_domains
not:
- headers.auth_summary.dmarc.pass
- sender.email.domain.root_domain not in $high_trust_sender_root_domains
Inspects: body.current_thread.text, body.links, headers.auth_summary.dmarc.pass, headers.hops, headers.hops[].authentication_results.compauth.verdict, recipients.bcc, recipients.cc, recipients.to, recipients.to[].display_name, sender.email.domain.root_domain, type.inbound. Sensors: ml.link_analysis, ml.nlu_classifier, profile.by_sender. Reference lists: $high_trust_sender_root_domains.
Indicators matched (9)
| Field | Match | Value |
|---|---|---|
recipients.to[].display_name | equals | Undisclosed recipients |
headers.hops[].authentication_results.compauth.verdict | member | pass |
headers.hops[].authentication_results.compauth.verdict | member | softpass |
ml.nlu_classifier(body.current_thread.text).intents[].name | member | bec |
ml.nlu_classifier(body.current_thread.text).intents[].name | member | cred_theft |
ml.nlu_classifier(body.current_thread.text).intents[].name | member | advance_fee |
ml.nlu_classifier(body.current_thread.text).intents[].confidence | equals | high |
[ml.link_analysis(body.links[])][].credphish.disposition | equals | phishing |
[ml.link_analysis(body.links[])][].credphish.confidence | member | high |