VIP / Executive impersonation in subject (untrusted)

Sender subject contains the display name of a user in the $org_vips list, and the sender has never been seen before.

The $org_vips list must first be manually connected to a VIP group of your upstream provider (Google Workspace and Microsoft 365 only) in order for this rule to work. Once connected, the list will be automatically synced and kept up-to-date. For more information, see the $org_vips documentation: https://docs.sublimesecurity.com/docs/configure-org_vips-list

This rule is recommended to be used on a relatively small list of VIPs, and is meant to reduce attack surface by detecting any message that matches the protected list of display names from a first-time or unsolicited sender.

Additional rule logic can be added to look for suspicious subjects, suspicious links, etc.

Sublime rule (View on GitHub)

 1name: "VIP / Executive impersonation in subject (untrusted)"
 2description: |
 3  Sender subject contains the display name of a user in the $org_vips list, and the sender has never been seen before.
 4
 5  The $org_vips list must first be manually connected to a VIP group of your upstream provider (Google Workspace and Microsoft 365 only) in order for this rule to work.
 6  Once connected, the list will be automatically synced and kept up-to-date. For more information, see the $org_vips documentation: https://docs.sublimesecurity.com/docs/configure-org_vips-list
 7
 8  This rule is recommended to be used on a relatively small list of VIPs, and is meant to reduce attack surface by detecting *any* message that matches the protected list of display names from a first-time or unsolicited sender.
 9
10  Additional rule logic can be added to look for suspicious subjects, suspicious links, etc.  
11type: "rule"
12severity: "medium"
13source: |
14  type.inbound
15  and any($org_vips,
16          strings.contains(subject.subject, .display_name)
17          and strings.contains(.display_name, " ")
18  )
19  and (
20    // ignore personal <> work emails
21    // where the sender and mailbox's display name are the same
22    length(recipients.to) > 0
23    or length(recipients.cc) > 0
24    or sender.display_name != mailbox.display_name
25  )
26  // bounce-back negations
27  and not strings.like(sender.email.local_part,
28                       "*postmaster*",
29                       "*mailer-daemon*",
30                       "*administrator*"
31  )
32  and not any(attachments,
33              .content_type in (
34                "message/rfc822",
35                "message/delivery-status",
36                "text/calendar"
37              )
38  )
39  and (
40    (
41      profile.by_sender().prevalence in ("new", "outlier")
42      and not profile.by_sender().solicited
43    )
44    or (
45      profile.by_sender().any_messages_malicious_or_spam
46      and not profile.by_sender().any_false_positives
47    )
48  )
49  
50  // negate org domains unless they fail DMARC authentication
51  and (
52    (
53      sender.email.domain.root_domain in $org_domains
54      and not headers.auth_summary.dmarc.pass
55    )
56    or sender.email.domain.root_domain not in $org_domains
57  )
58  
59  // negate highly trusted sender domains unless they fail DMARC authentication
60  and (
61    (
62      sender.email.domain.root_domain in $high_trust_sender_root_domains
63      and not headers.auth_summary.dmarc.pass
64    )
65    or sender.email.domain.root_domain not in $high_trust_sender_root_domains
66  )
67  
68  and not profile.by_sender().any_false_positives  
69
70tags:
71  - "Attack surface reduction"
72attack_types:
73  - "BEC/Fraud"
74tactics_and_techniques:
75  - "Impersonation: VIP"
76detection_methods:
77  - "Header analysis"
78  - "Sender analysis"
79id: "0a641fe5-70b9-5f4e-9c34-0d70eac11fae"

Related rules

to-top