Detection rules › Sublime MQL
VIP Impersonation via Google Group relay with suspicious indicators
Public Google Groups can be used to impersonate internal senders, while the reply to address is not under organizational control, leading to fraud, credential phishing, or other unwanted outcomes.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud, Credential Phishing, Malware/Ransomware |
| Tactics and techniques | Evasion, Free email provider, Impersonation: Employee, Social engineering, Spoofing |
Event coverage
Rule body MQL
(type.inbound or type.internal)
and sender.email.domain.root_domain in $org_domains
// subject, sender or reply to contains a VIP
and (
any(headers.reply_to,
any($org_vips, strings.contains(.display_name, ..display_name))
)
or any($org_vips, strings.contains(subject.subject, .display_name))
or any($org_vips, strings.contains(sender.display_name, .display_name))
)
and any(headers.hops,
any(.fields,
regex.icontains(.name,
"X-Authenticated-Sender|X-Sender|X-Original-Sender"
)
)
)
// reply to return path mismatch and not org domain
and any(headers.reply_to,
.email.domain.root_domain != headers.return_path.domain.root_domain
and .email.domain.root_domain not in $org_domains
)
// googlegroups found in hops
and any(headers.hops,
.index == 0 and any(.fields, strings.icontains(.value, "googlegroups"))
)
// financial nlu entity in current thread
and 3 of (
any(ml.nlu_classifier(body.current_thread.text).entities,
.name == "financial"
),
// invoice entity in display_text
any(ml.nlu_classifier(body.current_thread.text).tags, .name == "invoice"),
// fake thread
(
(subject.is_forward or subject.is_reply)
and (
(length(headers.references) == 0 and headers.in_reply_to is null)
or headers.in_reply_to is null
)
),
// reply-to is freemail
any(headers.reply_to, .email.domain.domain in $free_email_providers),
// reply-to is not in $recipient_emails
any(headers.reply_to, .email.email not in $recipient_emails),
// dmarc authentication is freemail provider
headers.auth_summary.dmarc.details.from.root_domain in $free_email_providers
)
Detection logic
Scope: inbound, internal message.
Public Google Groups can be used to impersonate internal senders, while the reply to address is not under organizational control, leading to fraud, credential phishing, or other unwanted outcomes.
any of:
- inbound message
- internal message
- sender.email.domain.root_domain in $org_domains
any of:
any of
headers.reply_towhere:any of
$org_vipswhere:- strings.contains(.display_name)
any of
$org_vipswhere:- strings.contains(subject.subject)
any of
$org_vipswhere:- strings.contains(sender.display_name)
any of
headers.hopswhere:any of
.fieldswhere:- .name matches 'X-Authenticated-Sender|X-Sender|X-Original-Sender'
any of
headers.reply_towhere all hold:- .email.domain.root_domain is not headers.return_path.domain.root_domain
- .email.domain.root_domain not in $org_domains
any of
headers.hopswhere all hold:- .index is 0
any of
.fieldswhere:- .value contains 'googlegroups'
at least 3 of:
any of
ml.nlu_classifier(body.current_thread.text).entitieswhere:- .name is 'financial'
any of
ml.nlu_classifier(body.current_thread.text).tagswhere:- .name is 'invoice'
all of:
any of:
- subject.is_forward
- subject.is_reply
any of:
all of:
- length(headers.references) is 0
- headers.in_reply_to is missing
- headers.in_reply_to is missing
any of
headers.reply_towhere:- .email.domain.domain in $free_email_providers
any of
headers.reply_towhere:- .email.email not in $recipient_emails
- headers.auth_summary.dmarc.details.from.root_domain in $free_email_providers
Inspects: body.current_thread.text, headers.auth_summary.dmarc.details.from.root_domain, headers.hops, headers.hops[].fields, headers.hops[].fields[].name, headers.hops[].fields[].value, headers.hops[].index, headers.in_reply_to, headers.references, headers.reply_to, headers.reply_to[].display_name, headers.reply_to[].email.domain.domain, headers.reply_to[].email.domain.root_domain, headers.reply_to[].email.email, headers.return_path.domain.root_domain, sender.display_name, sender.email.domain.root_domain, subject.is_forward, subject.is_reply, subject.subject, type.inbound, type.internal. Sensors: ml.nlu_classifier, regex.icontains, strings.contains, strings.icontains. Reference lists: $free_email_providers, $org_domains, $org_vips, $recipient_emails.
Indicators matched (4)
| Field | Match | Value |
|---|---|---|
regex.icontains | regex | X-Authenticated-Sender|X-Sender|X-Original-Sender |
strings.icontains | substring | googlegroups |
ml.nlu_classifier(body.current_thread.text).entities[].name | equals | financial |
ml.nlu_classifier(body.current_thread.text).tags[].name | equals | invoice |