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.

Sublime rule (View on GitHub)

 1name: "Brand impersonation: Discord notification"
 2description: "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."
 3type: "rule"
 4severity: "medium"
 5source: |
 6  type.inbound
 7  and (
 8    strings.ilike(sender.display_name, '*discord*')
 9    or (
10      strings.ilevenshtein(sender.display_name, 'discord') <= 2
11      and sender.display_name not in~ ("discogs")
12    )
13    or strings.ilike(sender.email.domain.domain, '*discord*')
14    // Discord logo detection in image attachments
15    or any(attachments,
16           .file_type in $file_types_images
17           and any(ml.logo_detect(.).brands,
18                   .name == "Discord" and .confidence != "low"
19           )
20    )
21    // Discord logo detection in message screenshot
22    or any(ml.logo_detect(file.message_screenshot()).brands,
23           .name == "Discord" and .confidence != "low"
24    )
25  )
26  and (
27    strings.icontains(subject.subject, 'you have received a new notification')
28    or regex.icontains(subject.subject,
29                       '(?:(?:new|unread|missed|pending|discord)\s+)?(?:message|notification|alert|activity|call) (?:from|waiting|pending)',
30    )
31    or strings.icontains(subject.subject, 'friend request')
32    or strings.icontains(subject.subject, 'server invitation')
33    or strings.icontains(subject.subject, 'mentioned you')
34    or strings.icontains(subject.subject, 'direct message')
35  )
36  and not (
37    sender.email.domain.root_domain in ("discord.com", "discogs.com")
38    and headers.auth_summary.dmarc.pass
39  )
40  // negate highly trusted sender domains unless they fail DMARC authentication
41  and (
42    (
43      sender.email.domain.root_domain in $high_trust_sender_root_domains
44      and not headers.auth_summary.dmarc.pass
45    )
46    or sender.email.domain.root_domain not in $high_trust_sender_root_domains
47  )  
48
49attack_types:
50  - "Credential Phishing"
51tactics_and_techniques:
52  - "Impersonation: Brand"
53  - "Social engineering"
54detection_methods:
55  - "Computer Vision"
56  - "Content analysis"
57id: "97007826-84e5-5599-8981-e30fc86c56b3"
to-top