Detection rules › Sublime MQL
BEC/Fraud: Generic scam attempt to undisclosed recipients
Detects potential generic scams by analyzing text within the email body and other suspicious signals.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud |
| Tactics and techniques | Social engineering |
Event coverage
Rule body MQL
type.inbound
// undisclosed recipients
and any([recipients.to, recipients.bcc, recipients.cc],
any(., .display_name =~ "Undisclosed recipients")
)
// mismatched sender (from) and Reply-to
and any(headers.reply_to,
length(headers.reply_to) > 0
and all(headers.reply_to,
.email.domain.root_domain != sender.email.domain.root_domain
)
)
// generic recipient
and any(ml.nlu_classifier(body.current_thread.text).entities,
.name == "recipient" and regex.icontains(.text, "(sir|madam)")
)
// request made
and any(ml.nlu_classifier(body.current_thread.text).entities,
.name == "request"
)
// not a bec scam
and all(ml.nlu_classifier(body.current_thread.text).intents, .name != "bec")
// 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 potential generic scams by analyzing text within the email body and other suspicious signals.
- inbound message
any of
[recipients.to, recipients.bcc, recipients.cc]where:any of
.where:- .display_name is 'Undisclosed recipients'
any of
headers.reply_towhere all hold:- length(headers.reply_to) > 0
all of
headers.reply_towhere:- .email.domain.root_domain is not sender.email.domain.root_domain
any of
ml.nlu_classifier(body.current_thread.text).entitieswhere all hold:- .name is 'recipient'
- .text matches '(sir|madam)'
any of
ml.nlu_classifier(body.current_thread.text).entitieswhere:- .name is 'request'
all of
ml.nlu_classifier(body.current_thread.text).intentswhere:- .name is not 'bec'
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, headers.auth_summary.dmarc.pass, headers.reply_to, headers.reply_to[].email.domain.root_domain, recipients.bcc, recipients.cc, recipients.to, sender.email.domain.root_domain, type.inbound. Sensors: ml.nlu_classifier, regex.icontains. Reference lists: $high_trust_sender_root_domains.
Indicators matched (4)
| Field | Match | Value |
|---|---|---|
[recipients.to, recipients.bcc, recipients.cc][][].display_name | equals | Undisclosed recipients |
ml.nlu_classifier(body.current_thread.text).entities[].name | equals | recipient |
regex.icontains | regex | (sir|madam) |
ml.nlu_classifier(body.current_thread.text).entities[].name | equals | request |