Detection rules › Sublime MQL
Sublime MQL rules: asr
| Rule | Severity |
|---|---|
| Newly registered sender or reply-to domain with newly registered linked domain | medium |
| Suspicious mailer received from Gmail servers | low |
Newly registered sender or reply-to domain with newly registered linked domain
#This rule detects inbound emails that contain links and a reply-to address, where either the sender domain or the reply-to domain is newly registered (≤30 days old), and at least one linked domain is also very new (≤14 days old). It flags potential phishing or business email compromise attempts that use recently created infrastructure and reply-to mismatch tactics to bypass trust and impersonate legitimate contacts.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud, Credential Phishing, Malware/Ransomware |
| Tactics and techniques | Social engineering |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and length(body.links) > 0
and length(headers.reply_to) > 0
and (
any(headers.reply_to,
network.whois(.email.domain).days_old <= 30
and .email.email != sender.email.email
)
or network.whois(sender.email.domain).days_old <= 30
)
and any(distinct(body.links, .href_url.domain.root_domain),
network.whois(.href_url.domain).days_old < 14
)
Detection logic
Scope: inbound message.
This rule detects inbound emails that contain links and a reply-to address, where either the sender domain or the reply-to domain is newly registered (≤30 days old), and at least one linked domain is also very new (≤14 days old). It flags potential phishing or business email compromise attempts that use recently created infrastructure and reply-to mismatch tactics to bypass trust and impersonate legitimate contacts.
- inbound message
- length(body.links) > 0
- length(headers.reply_to) > 0
any of:
any of
headers.reply_towhere all hold:- network.whois(.email.domain).days_old ≤ 30
- .email.email is not sender.email.email
- network.whois(sender.email.domain).days_old ≤ 30
any of
distinct(body.links)where:- network.whois(.href_url.domain).days_old < 14
Inspects: body.links, body.links[].href_url.domain.root_domain, headers.reply_to, headers.reply_to[].email.domain, headers.reply_to[].email.email, sender.email.domain, sender.email.email, type.inbound. Sensors: network.whois.
Stages and Predicates
Stage 1: mql_rule
and
or
any(headers.reply_to)
and
headers.reply_to.email.email cross_field_compare "sender.email.email"
network.whois func_call "network.whois(headers.reply_to[].email.domain).days_old <= 30"
network.whois func_call "network.whois(sender.email.domain).days_old <= 30"
any(distinct(body.links))
network.whois func_call "network.whois(distinct(body.links)[].href_url.domain).days_old < 14"
body.links length_compare "0"
headers.reply_to length_compare "0"
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" |
Suspicious mailer received from Gmail servers
#Mailer is atypical of sends from Gmail infrastructure. Observed sending callback phishing and general spam.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Callback Phishing, Spam |
| 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 (
strings.ilike(headers.mailer,
"Microsoft CDO for Windows 2000",
"PHPMailer*",
"nodemailer*"
)
or any(headers.hops, any(.fields, .value == "Produced By Microsoft MimeOLE"))
)
and (
any(headers.hops, .index == 0 and .received.server.raw == "smtp.gmail.com")
or headers.return_path.domain.root_domain in ("gmail.com", "googlemail.com")
)
and not profile.by_sender().any_messages_benign
Detection logic
Scope: inbound message.
Mailer is atypical of sends from Gmail infrastructure. Observed sending callback phishing and general spam.
- inbound message
any of:
headers.mailer matches any of 3 patterns
Microsoft CDO for Windows 2000PHPMailer*nodemailer*
any of
headers.hopswhere:any of
.fieldswhere:- .value is 'Produced By Microsoft MimeOLE'
any of:
any of
headers.hopswhere all hold:- .index is 0
- .received.server.raw is 'smtp.gmail.com'
- headers.return_path.domain.root_domain in ('gmail.com', 'googlemail.com')
not:
- profile.by_sender().any_messages_benign
Inspects: headers.hops, headers.hops[].fields, headers.hops[].fields[].value, headers.hops[].index, headers.hops[].received.server.raw, headers.mailer, headers.return_path.domain.root_domain, type.inbound. Sensors: profile.by_sender, strings.ilike.
Indicators matched (7)
| Field | Match | Value |
|---|---|---|
strings.ilike | substring | Microsoft CDO for Windows 2000 |
strings.ilike | substring | PHPMailer* |
strings.ilike | substring | nodemailer* |
headers.hops[].fields[].value | equals | Produced By Microsoft MimeOLE |
headers.hops[].received.server.raw | equals | smtp.gmail.com |
headers.return_path.domain.root_domain | member | gmail.com |
headers.return_path.domain.root_domain | member | googlemail.com |
Stages and Predicates
Stage 1: mql_rule
and
or
any(headers.hops)
any(headers.hops.fields)
headers.hops.fields.value eq "Produced By Microsoft MimeOLE"
headers.mailer eq "Microsoft CDO for Windows 2000"
headers.mailer starts_with "PHPMailer"
headers.mailer starts_with "nodemailer"
or
any(headers.hops)
and
headers.hops.index eq "0"
headers.hops.received.server.raw eq "smtp.gmail.com"
headers.return_path.domain.root_domain in ["gmail.com", "googlemail.com"]
not
profile.by_sender func_call "profile.by_sender().any_messages_benign"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
headers.mailer | wildcard |
| field:"headers.mailer" kind:wildcard |
headers.return_path.domain.root_domain | in |
| field:"headers.return_path.domain.root_domain" kind:in |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |