Skip to content

Commit b8eb748

Browse files
zoomequipdID Generatoraidenmitchell
authored
Create brand_impersonation_greenvelope.yml (#3487)
Co-authored-by: ID Generator <[email protected]> Co-authored-by: Aiden Mitchell <[email protected]>
1 parent c0f54c7 commit b8eb748

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: "Brand impersonation: Greenvelope"
2+
description: "Detects messages impersonating Greenvelope invitations not originating from legitimate Greenvelope domain."
3+
type: "rule"
4+
severity: "medium"
5+
source: |
6+
type.inbound
7+
// Looking for greenvelope phrasing or indicators in HTML
8+
and (
9+
strings.icontains(body.html.inner_text, "Powered by greenvelope")
10+
11+
// Look for alt text in HTML for standardized greenvelope formatting if string is not avail.
12+
or strings.icontains(body.html.raw, 'alt="Greenvelope"')
13+
or strings.icontains(body.html.raw,
14+
'https://www.greenvelope.com/viewer/envelope.ashx'
15+
)
16+
or strings.icontains(body.current_thread.text, '© 2025 Greenvelope, LLC')
17+
or strings.icontains(body.current_thread.text,
18+
'8 The Green #8901, Dover, DE 19901'
19+
)
20+
)
21+
22+
// no links going to greenvlope cards/"admin" links
23+
and length(filter(body.links,
24+
.href_url.domain.root_domain == "greenvelope.com"
25+
and (
26+
// card links
27+
strings.istarts_with(.href_url.path, '/card/')
28+
// user links are links for the person that created the card
29+
or strings.istarts_with(.href_url.path, '/user/')
30+
)
31+
)
32+
) == 0
33+
34+
// Legitimate sender will be from greenvelope, negating known non-associated domains.
35+
and not (
36+
(
37+
sender.email.domain.root_domain in (
38+
"greenvelope.com",
39+
'greenvelope-email.com'
40+
)
41+
and headers.auth_summary.spf.pass
42+
)
43+
or headers.return_path.domain.root_domain in (
44+
"greenvelope.com",
45+
'greenvelope-email.com'
46+
)
47+
)
48+
49+
// avoid fwd/replies
50+
and not (
51+
subject.is_forward
52+
or subject.is_reply
53+
or length(headers.references) != 0
54+
or headers.in_reply_to is not null
55+
or length(body.previous_threads) > 0
56+
)
57+
58+
// Capping length to limit FP's
59+
and length(body.current_thread.text) < 1500
60+
attack_types:
61+
- "Credential Phishing"
62+
tactics_and_techniques:
63+
- "Impersonation: Brand"
64+
- "Social engineering"
65+
detection_methods:
66+
- "Content analysis"
67+
- "Sender analysis"
68+
id: "9cbbf9b8-a44a-5d86-8caa-3aef898841c1"

0 commit comments

Comments
 (0)