Attachment: Adobe image lure in body or attachment with suspicious link
Detects Adobe phishing messages with an Adobe logo in the body or attachment, with suspicious link language.
Sublime rule (View on GitHub)
1name: "Attachment: Adobe image lure in body or attachment with suspicious link"
2description: "Detects Adobe phishing messages with an Adobe logo in the body or attachment, with suspicious link language."
3type: "rule"
4severity: "medium"
5source: |
6 type.inbound
7 and (
8 // all images
9 length(filter(attachments, .file_type not in $file_types_images)) == 0
10 // only pdf attachments
11 or length(filter(attachments, .file_type != "pdf")) == 0
12 // pdf and image attachements where images are all embedded into the message body
13 or length(filter(attachments,
14 .file_type == 'pdf'
15 or (
16 .file_type in $file_types_images
17 and strings.icontains(body.html.raw,
18 strings.concat("cid:", .content_id)
19 )
20 )
21 )
22 ) == length(attachments)
23 )
24 and (
25 (
26 any(ml.logo_detect(file.message_screenshot()).brands, .name == "Adobe")
27 and 0 < length(body.links) < 10
28 and any(body.links, .display_text is null)
29 and (
30 length(filter(body.links,
31 (
32 .display_text is null
33 and .display_url.url == sender.email.domain.root_domain
34 )
35 or .href_url.domain.root_domain in (
36 "aka.ms",
37 "mimecast.com",
38 "mimecastprotect.com",
39 "cisco.com"
40 )
41 )
42 ) != length(body.links)
43 )
44 )
45 or any(filter(attachments,
46 // filter down to attachments with adobe logo
47 any(ml.logo_detect(.).brands,
48 .name == "Adobe" and .confidence in ("medium", "high")
49 )
50 ),
51 // the attachment (or message body) contain links
52 any(file.explode(.),
53 (
54 length(.scan.url.urls) > 0
55 or length(.scan.pdf.urls) > 0
56 or length(body.links) > 0
57 )
58 )
59 )
60 )
61 and (
62 (
63 (length(headers.references) > 0 or headers.in_reply_to is null)
64 and not (
65 (
66 strings.istarts_with(subject.subject, "RE:")
67 or strings.istarts_with(subject.subject, "RES:")
68 or strings.istarts_with(subject.subject, "R:")
69 or strings.istarts_with(subject.subject, "ODG:")
70 or strings.istarts_with(subject.subject, "答复:")
71 or strings.istarts_with(subject.subject, "AW:")
72 or strings.istarts_with(subject.subject, "TR:")
73 or strings.istarts_with(subject.subject, "FWD:")
74 or regex.imatch(subject.subject, '(\[[^\]]+\]\s?){0,3}(re|fwd?)\s?:')
75 )
76 )
77 )
78 or length(headers.references) == 0
79 )
80
81 // not a newsletter or advertisement
82 and not any(headers.hops, any(.fields, .name == "List-Unsubscribe-Post"))
83 and not any(ml.nlu_classifier(body.current_thread.text).topics,
84 .name in ("Advertising and Promotions", "Newsletters and Digests")
85 and .confidence == "high"
86 )
87
88 // negate highly trusted sender domains unless they fail DMARC authentication
89 and not (
90 sender.email.domain.root_domain in $high_trust_sender_root_domains
91 and coalesce(headers.auth_summary.dmarc.pass, false)
92 )
93 and (
94 // exclude solicited senders
95 not profile.by_sender_email().solicited
96 or profile.by_sender_email().prevalence == "new"
97 or length(recipients.to) == 0
98 // domains for recipients to/cc must be valid
99 or (
100 all(recipients.to, .email.domain.valid == false)
101 and all(recipients.cc, .email.domain.valid == false)
102 )
103 or (
104 profile.by_sender_email().any_messages_malicious_or_spam
105 and not profile.by_sender_email().any_messages_benign
106 )
107 )
108 and not profile.by_sender_email().any_messages_benign
109attack_types:
110 - "Credential Phishing"
111tactics_and_techniques:
112 - "Image as content"
113 - "Impersonation: Brand"
114detection_methods:
115 - "Content analysis"
116 - "Computer Vision"
117 - "Optical Character Recognition"
118 - "Sender analysis"
119 - "URL analysis"
120id: "1d7add81-9822-576a-bcae-c4440e75e393"