Brand impersonation: Dropbox
Impersonation of Dropbox, a file sharing service.
Sublime rule (View on GitHub)
1name: "Brand impersonation: Dropbox"
2description: |
3 Impersonation of Dropbox, a file sharing service.
4type: "rule"
5severity: "medium"
6source: |
7 type.inbound
8 and (
9 strings.ilike(sender.display_name, '*dropbox*')
10 or strings.ilevenshtein(sender.display_name, 'dropbox') <= 1
11 or strings.ilike(sender.email.domain.domain, '*dropbox*')
12 or any(body.links,
13 .display_url.domain.root_domain == "dropbox.com"
14 and .mismatched
15 and not .href_url.domain.root_domain in (
16 "mimecast.com",
17 "mimecastprotect.com"
18 )
19 )
20 or regex.icontains(body.current_thread.text,
21 'invited you to view the file ".*" on Dropbox',
22 'dr[o0]pb[o0]x.{0,20}share.{0,20}f[i1|][i1|l]es?',
23 'dropbox sign (?:account|team)'
24 )
25 // dropbox style button
26 or length(html.xpath(body.html,
27 "//a[contains(@style, 'background-color: #0070e0') and contains(@style, 'color: white') and contains(@style, 'width: 210px') and contains(@style, 'max-width: 210px') and contains(@style, 'border-radius: 4px') and contains(@style, 'text-align: center') and contains(@style, 'font-size: 15px')]"
28 ).nodes
29 ) == 1
30 )
31 and sender.email.domain.root_domain not in~ (
32 'dropbox.com',
33 'dropboxforum.com',
34 'dropboxsign.com'
35 )
36 and (
37 any(attachments,
38 .file_type in $file_types_images
39 and any(file.explode(.), strings.ilike(.scan.ocr.raw, "*dropbox*"))
40 )
41 or any(body.links,
42 (
43 (
44 strings.ilike(.display_text,
45 "*review*",
46 "*sign*",
47 "*view*",
48 "*completed document*",
49 "*open agreement*",
50 "*open document*",
51 "*open file*"
52 )
53 and not strings.ilike(.display_text, "*view this email in*")
54 )
55 or (
56 .display_text is null
57 and .href_url.domain.root_domain in $free_file_hosts
58 )
59 )
60 and (
61 .href_url.domain.root_domain != "dropbox.com"
62 and any(ml.nlu_classifier(body.current_thread.text).intents,
63 .name == "cred_theft" and .confidence in ("medium", "high")
64 )
65 )
66 )
67 or (
68 length(ml.logo_detect(file.message_screenshot()).brands) != 0
69 and all(ml.logo_detect(file.message_screenshot()).brands,
70 .name == "Dropbox"
71 )
72 )
73 )
74 and sender.email.email not in $recipient_emails
75
76 // negate dropbox fax (aka hellofax)
77 and not sender.email.domain.root_domain == 'hellofax.com'
78
79 // negate iCloud Private Message Relay
80 and not (
81 sender.email.domain.domain == "privaterelay.appleid.com"
82 or any(headers.hops, any(.fields, .name == "X-ICLOUD-HME"))
83 )
84
85 // negate highly trusted sender domains unless they fail DMARC authentication
86 and (
87 (
88 sender.email.domain.root_domain in $high_trust_sender_root_domains
89 and not headers.auth_summary.dmarc.pass
90 )
91 or sender.email.domain.root_domain not in $high_trust_sender_root_domains
92 )
93attack_types:
94 - "Credential Phishing"
95tactics_and_techniques:
96 - "Impersonation: Brand"
97 - "Social engineering"
98detection_methods:
99 - "Content analysis"
100 - "File analysis"
101 - "Header analysis"
102 - "Sender analysis"
103id: "61f11d12-7033-53c9-a95a-df982ff31c4b"