Skip to content

Commit 99fdf43

Browse files
[PR #3458] added rule: Brand impersonation: Booking.com
1 parent e25a28a commit 99fdf43

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
name: "Brand impersonation: Booking.com"
2+
description: "Detects messages purporting to be from Booking.com's support team that contain suspicious credential collection patterns. The sender is not from a legitimate Booking.com domain and shows a history of problematic behavior or lacks prior solicited communication. Additional checks enforce DMARC authentication for trusted domains."
3+
type: "rule"
4+
severity: "medium"
5+
source: |
6+
type.inbound
7+
and length(body.links) < 10
8+
and (
9+
any(ml.nlu_classifier(body.current_thread.text).topics,
10+
.name in (
11+
"Travel and Transportation",
12+
"Customer Service and Support",
13+
"Security and Authentication"
14+
)
15+
and .confidence != "low"
16+
)
17+
// handle instances in which ml_topic does not hit
18+
or (
19+
length(body.links) == 0
20+
and length(attachments) == 0
21+
and length(body.current_thread.text) < 1000
22+
and strings.icontains(sender.display_name, "booking.com")
23+
)
24+
)
25+
and (
26+
any(ml.nlu_classifier(body.current_thread.text).entities,
27+
.name == "org" and .text == "Booking.com"
28+
)
29+
or strings.icontains(body.current_thread.text, ' booking.com ')
30+
or strings.icontains(sender.display_name, "booking.com")
31+
)
32+
and (
33+
any(ml.nlu_classifier(body.current_thread.text).intents,
34+
.name == "cred_theft"
35+
)
36+
or any(body.links,
37+
strings.ilike(.display_text,
38+
"*review*",
39+
"*response*",
40+
"*respond*",
41+
"*complaint*",
42+
"*contact*",
43+
"*accommodation*"
44+
)
45+
or .display_url.domain.root_domain == "booking.com" and .mismatched
46+
or network.whois(.href_url.domain).days_old < 30
47+
or strings.icontains(.href_url.path, "/redir")
48+
)
49+
// check for text strings that betray intent
50+
or regex.icontains(body.current_thread.text, '(?:book\sa|open)\srooms', )
51+
or strings.ilike(body.current_thread.text, "* availab*", )
52+
// two seperate HTML elements impersonating the logo
53+
or (
54+
any(html.xpath(body.html, '//*[text()[normalize-space()]]').nodes,
55+
.display_text =~ "Booking"
56+
)
57+
and any(html.xpath(body.html, '//*[text()[normalize-space()]]').nodes,
58+
.display_text =~ ".com"
59+
)
60+
)
61+
)
62+
and not (
63+
sender.email.domain.root_domain in~ ('booking.com', 'siteminder.com')
64+
and headers.auth_summary.dmarc.pass
65+
)
66+
and (
67+
not profile.by_sender().solicited
68+
or (
69+
profile.by_sender().any_messages_malicious_or_spam
70+
and not profile.by_sender().any_messages_benign
71+
)
72+
)
73+
74+
// negate microsoft quarantine messages
75+
and not (
76+
sender.email.email == "quarantine@messaging.microsoft.com"
77+
and (
78+
headers.auth_summary.dmarc.pass
79+
// no sender auth but MS AuthAs is Internal
80+
or (
81+
not coalesce(headers.auth_summary.dmarc.pass, false)
82+
and any(headers.hops,
83+
.index == 0
84+
and any(.fields,
85+
.name == "X-MS-Exchange-CrossTenant-AuthAs"
86+
and .value == "Internal"
87+
)
88+
)
89+
)
90+
)
91+
)
92+
93+
attack_types:
94+
- "Credential Phishing"
95+
tactics_and_techniques:
96+
- "Impersonation: Brand"
97+
- "Social engineering"
98+
detection_methods:
99+
- "Natural Language Understanding"
100+
- "Header analysis"
101+
- "Sender analysis"
102+
id: "15cec561-2dbf-5a51-96d3-a98734640c3d"
103+
og_id: "d1d8882f-f7e2-522e-85e9-b33b1ab5c979"
104+
testing_pr: 3458
105+
testing_sha: 5929b020fcbb198354ab84f5c0038bc76f18832a

0 commit comments

Comments
 (0)