Skip to content

Commit 2cbfb19

Browse files
[PR #3470] added rule: VIP impersonation with charitable donation fraud
1 parent e9be4cc commit 2cbfb19

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
name: "VIP impersonation with charitable donation fraud"
2+
description: "Fake email thread shows a VIP requesting a donation to a charity, usually addressed to Accounts Payable departments. Can result in monetary loss."
3+
type: "rule"
4+
severity: "high"
5+
source: |
6+
type.inbound
7+
and strings.ilike(body.current_thread.text,
8+
"*charity*",
9+
"*gala*",
10+
"*donation*",
11+
"*donor*"
12+
)
13+
and any(ml.nlu_classifier(body.current_thread.text).entities,
14+
.name == "financial"
15+
)
16+
and any(ml.nlu_classifier(body.current_thread.text).entities,
17+
.name == "request"
18+
)
19+
and (
20+
any($org_vips, strings.icontains(body.html.inner_text, .display_name))
21+
or any($org_vips, strings.icontains(body.plain.raw, .display_name))
22+
)
23+
and (
24+
(
25+
(subject.is_forward or subject.is_reply)
26+
and (
27+
(length(headers.references) == 0 and headers.in_reply_to is null)
28+
or not any(headers.hops,
29+
any(.fields, strings.ilike(.name, "In-Reply-To"))
30+
)
31+
)
32+
)
33+
// fake thread, but no indication in the subject line
34+
// current_thread pulls the recent thread, but the full body contains the fake "original" email
35+
or (
36+
not ((subject.is_forward or subject.is_reply))
37+
and (
38+
3 of (
39+
strings.icontains(body.html.display_text, "from:"),
40+
strings.icontains(body.html.display_text, "to:"),
41+
strings.icontains(body.html.display_text, "sent:"),
42+
strings.icontains(body.html.display_text, "subject:")
43+
)
44+
or length(body.previous_threads) > 0
45+
)
46+
and (
47+
length(body.current_thread.text) + 100 < length(body.html.display_text)
48+
)
49+
// negating bouncebacks
50+
and not any(attachments,
51+
.content_type in ("message/delivery-status", "message/rfc822")
52+
)
53+
)
54+
)
55+
and (
56+
profile.by_sender().prevalence in ("new", "rare")
57+
or profile.by_sender().days_known > 30
58+
)
59+
and not profile.by_sender().any_messages_benign
60+
61+
attack_types:
62+
- "BEC/Fraud"
63+
tactics_and_techniques:
64+
- "Impersonation: Employee"
65+
- "Impersonation: VIP"
66+
- "Social engineering"
67+
detection_methods:
68+
- "Content analysis"
69+
- "Header analysis"
70+
- "Natural Language Understanding"
71+
- "Sender analysis"
72+
id: "7b436ae3-ccdd-5a28-8254-f7001d84941a"
73+
og_id: "35a56b8e-9293-5ccf-95d3-c990152d8f48"
74+
testing_pr: 3470
75+
testing_sha: 29a34151c5996071b29990b56857e3a1cdb712c1

0 commit comments

Comments
 (0)