Detection rules › Sublime MQL
Brand impersonation: Discord notification
Detects inbound messages that impersonate Discord's notification system through display name spoofing, domain lookalikes, or logo usage in attachments. The messages contain typical Discord-style notification language in the subject line while failing authentication checks.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Impersonation: Brand, Social engineering |
Event coverage
Rule body MQL
type.inbound
and (
strings.ilike(sender.display_name, '*discord*')
or (
strings.ilevenshtein(sender.display_name, 'discord') <= 2
and sender.display_name not in~ ("discogs")
)
or strings.ilike(sender.email.domain.domain, '*discord*')
// Discord logo detection in image attachments
or any(attachments,
.file_type in $file_types_images
and any(ml.logo_detect(.).brands,
.name == "Discord" and .confidence != "low"
)
)
// Discord logo detection in message screenshot
or any(ml.logo_detect(file.message_screenshot()).brands,
.name == "Discord" and .confidence != "low"
)
)
and (
strings.icontains(subject.subject, 'you have received a new notification')
or regex.icontains(subject.subject,
'(?:(?:new|unread|missed|pending|discord)\s+)?(?:message|notification|alert|activity|call) (?:from|waiting|pending)',
)
or strings.icontains(subject.subject, 'friend request')
or strings.icontains(subject.subject, 'server invitation')
or strings.icontains(subject.subject, 'mentioned you')
or strings.icontains(subject.subject, 'direct message')
)
and not (
sender.email.domain.root_domain in ("discord.com", "discogs.com")
and headers.auth_summary.dmarc.pass
)
// 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 inbound messages that impersonate Discord's notification system through display name spoofing, domain lookalikes, or logo usage in attachments. The messages contain typical Discord-style notification language in the subject line while failing authentication checks.
- inbound message
any of:
- sender.display_name matches '*discord*'
all of:
- sender.display_name is similar to 'discord'
- sender.display_name not in ('discogs')
- sender.email.domain.domain matches '*discord*'
any of
attachmentswhere all hold:- .file_type in $file_types_images
any of
ml.logo_detect(.).brandswhere all hold:- .name is 'Discord'
- .confidence is not 'low'
any of
ml.logo_detect(file.message_screenshot()).brandswhere all hold:- .name is 'Discord'
- .confidence is not 'low'
any of:
- subject.subject contains 'you have received a new notification'
- subject.subject matches '(?:(?:new|unread|missed|pending|discord)\\s+)?(?:message|notification|alert|activity|call) (?:from|waiting|pending)'
- subject.subject contains 'friend request'
- subject.subject contains 'server invitation'
- subject.subject contains 'mentioned you'
- subject.subject contains 'direct message'
not:
all of:
- sender.email.domain.root_domain in ('discord.com', 'discogs.com')
- headers.auth_summary.dmarc.pass
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: attachments[].file_type, headers.auth_summary.dmarc.pass, sender.display_name, sender.email.domain.domain, sender.email.domain.root_domain, subject.subject, type.inbound. Sensors: file.message_screenshot, ml.logo_detect, regex.icontains, strings.icontains, strings.ilevenshtein, strings.ilike. Reference lists: $file_types_images, $high_trust_sender_root_domains.
Indicators matched (13)
| Field | Match | Value |
|---|---|---|
strings.ilike | substring | *discord* |
strings.ilevenshtein | fuzzy | discord |
sender.display_name | member | discogs |
ml.logo_detect(attachments[]).brands[].name | equals | Discord |
ml.logo_detect(file.message_screenshot()).brands[].name | equals | Discord |
strings.icontains | substring | you have received a new notification |
regex.icontains | regex | (?:(?:new|unread|missed|pending|discord)\s+)?(?:message|notification|alert|activity|call) (?:from|waiting|pending) |
strings.icontains | substring | friend request |
strings.icontains | substring | server invitation |
strings.icontains | substring | mentioned you |
strings.icontains | substring | direct message |
sender.email.domain.root_domain | member | discord.com |
1 more
sender.email.domain.root_domain | member | discogs.com |