Detection rules › Sublime MQL
Suspicious newly registered reply-to domain with engaging financial or urgent language
Detects messages from a mismatched newly registered Reply-to domain that contain a financial or urgent request, or a request and an NLU tag with medium to high confidence, from an untrusted sender. This technique is typically observed in Vendor impersonation.
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
and length(body.current_thread.text) < 5000
and (
any(headers.reply_to,
// mismatched reply-to and sender domain
.email.domain.root_domain != sender.email.domain.root_domain
// newly registered reply-to domain
and network.whois(.email.domain).days_old <= 30
)
or (
network.whois(sender.email.domain).days_old < 30
and sender.email.domain.tld in $suspicious_tlds
)
)
// request is being made
and any(ml.nlu_classifier(body.current_thread.text).entities,
.name == "request"
)
// there's financial/urgency OR a tag of medium/high confidence
and (
any(ml.nlu_classifier(body.current_thread.text).entities,
.name in ("financial", "urgency")
)
or any(ml.nlu_classifier(body.current_thread.text).tags,
.name is not null and .confidence in ("medium", "high")
)
)
and (
not profile.by_sender().solicited
//
// 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
//
or not beta.profile.by_reply_to().solicited
or (
profile.by_sender().any_messages_malicious_or_spam
and not profile.by_sender().any_messages_benign
)
)
// negate highly trusted sender domains unless they fail DMARC authentication
and (
(
sender.email.domain.root_domain in $high_trust_sender_root_domains
and not headers.auth_summary.dmarc.pass
)
or sender.email.domain.root_domain not in $high_trust_sender_root_domains
)
Detection logic
Scope: inbound message.
Detects messages from a mismatched newly registered Reply-to domain that contain a financial or urgent request, or a request and an NLU tag with medium to high confidence, from an untrusted sender. This technique is typically observed in Vendor impersonation.
- inbound message
- length(body.current_thread.text) < 5000
any of:
any of
headers.reply_towhere all hold:- .email.domain.root_domain is not sender.email.domain.root_domain
- network.whois(.email.domain).days_old ≤ 30
all of:
- network.whois(sender.email.domain).days_old < 30
- sender.email.domain.tld in $suspicious_tlds
any of
ml.nlu_classifier(body.current_thread.text).entitieswhere:- .name is 'request'
any of:
any of
ml.nlu_classifier(body.current_thread.text).entitieswhere:- .name in ('financial', 'urgency')
any of
ml.nlu_classifier(body.current_thread.text).tagswhere all hold:- .name is set
- .confidence in ('medium', 'high')
any of:
not:
- profile.by_sender().solicited
not:
- beta.profile.by_reply_to().solicited
all of:
- profile.by_sender().any_messages_malicious_or_spam
not:
- profile.by_sender().any_messages_benign
any of:
all of:
- sender.email.domain.root_domain in $high_trust_sender_root_domains
not:
- headers.auth_summary.dmarc.pass
- sender.email.domain.root_domain not in $high_trust_sender_root_domains
Inspects: body.current_thread.text, headers.auth_summary.dmarc.pass, headers.reply_to, headers.reply_to[].email.domain, headers.reply_to[].email.domain.root_domain, sender.email.domain, sender.email.domain.root_domain, sender.email.domain.tld, type.inbound. Sensors: beta.profile.by_reply_to, ml.nlu_classifier, network.whois, profile.by_sender. Reference lists: $high_trust_sender_root_domains, $suspicious_tlds.
Indicators matched (5)
| Field | Match | Value |
|---|---|---|
ml.nlu_classifier(body.current_thread.text).entities[].name | equals | request |
ml.nlu_classifier(body.current_thread.text).entities[].name | member | financial |
ml.nlu_classifier(body.current_thread.text).entities[].name | member | urgency |
ml.nlu_classifier(body.current_thread.text).tags[].confidence | member | medium |
ml.nlu_classifier(body.current_thread.text).tags[].confidence | member | high |