Skip to content

Commit 4e6f336

Browse files
[Shared Samples] [PR #4498] added rule: PR# 4498 - Link: Generic financial document and suspicious hosting template
1 parent a383909 commit 4e6f336

1 file changed

Lines changed: 78 additions & 0 deletions

File tree

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
name: "PR# 4498 - Link: Generic financial document and suspicious hosting template"
2+
description: "Detects messages with generic 'dear sir/madam' greetings that reference payment releases & timelines, contain links with suspicious hosting or open redirects, and exhibit unusual recipient patterns such as self-sending or missing recipients."
3+
type: "rule"
4+
severity: "medium"
5+
source: |
6+
type.inbound
7+
// standard generic greeting
8+
and (
9+
strings.istarts_with(body.current_thread.text, "dear sir/madam")
10+
// expectation of time
11+
and regex.icontains(body.current_thread.text,
12+
'will be released|\b[1-4].[1-4]\b.{1,10}days?'
13+
)
14+
)
15+
// link is malicious
16+
and any(body.links,
17+
// key phrasing or nlu
18+
(
19+
regex.icontains(.display_text,
20+
'(?:access|view).{0,10}|payment|statement'
21+
)
22+
or any(ml.nlu_classifier(body.current_thread.text).topics,
23+
.name == "Request to View Invoice" and .confidence != "low"
24+
)
25+
)
26+
// suspicious hosting
27+
and (
28+
.href_url.domain.root_domain in $free_file_hosts
29+
or .href_url.domain.tld in $suspicious_tlds
30+
or .href_url.domain.root_domain not in $tranco_1m
31+
// open redirect
32+
or strings.icontains(.href_url.query_params, '=https')
33+
)
34+
// negate org domains
35+
and .href_url.domain.valid != false
36+
and .href_url.domain.root_domain not in $org_domains
37+
)
38+
// suspicious sender behavior
39+
and (
40+
(
41+
length(recipients.to) == 1
42+
and length(recipients.cc) == 0
43+
and sender.email.email == recipients.to[0].email.email
44+
)
45+
// no recipient
46+
or (
47+
(
48+
length(recipients.to) == 0
49+
and length(recipients.bcc) == 0
50+
and length(recipients.cc) == 0
51+
)
52+
or any(recipients.to,
53+
strings.ilike(.display_name, "undisclosed?recipients")
54+
)
55+
)
56+
)
57+
58+
attack_types:
59+
- "BEC/Fraud"
60+
- "Credential Phishing"
61+
tactics_and_techniques:
62+
- "Free file host"
63+
- "Open redirect"
64+
- "Social engineering"
65+
- "Evasion"
66+
detection_methods:
67+
- "Content analysis"
68+
- "Natural Language Understanding"
69+
- "URL analysis"
70+
- "Header analysis"
71+
- "Sender analysis"
72+
id: "1a6e4ced-4391-597f-9184-d4d1c57dedc7"
73+
tags:
74+
- created_from_open_prs
75+
- rule_status_added
76+
- pr_author_missingn0pe
77+
references:
78+
- https://github.com/sublime-security/sublime-rules/pull/4498

0 commit comments

Comments
 (0)