You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
name: "Reconnaissance: Large unknown recipient list"
2
+
description: |
3
+
Recon messages, a form of deliverability testing, are used to validate whether a recipient address is valid or not, potentially preceding an attack.
4
+
5
+
There's a large number of recipients that are unknown to the organization, no links or attachments, and a short body and subject from an unknown sender.
6
+
type: "rule"
7
+
severity: "low"
8
+
source: |
9
+
type.inbound
10
+
and (
11
+
length(recipients.to) > 10
12
+
and length(filter(recipients.to,
13
+
.email.domain.domain not in $org_domains
14
+
and .email.email not in $recipient_emails
15
+
and (
16
+
.email.domain.valid
17
+
or strings.icontains(.display_name, "undisclosed")
18
+
)
19
+
)
20
+
) >= 10
21
+
)
22
+
and (
23
+
length(subject.subject) <= 10
24
+
or subject.subject == body.current_thread.text
25
+
or (subject.is_reply and length(body.previous_threads) == 0)
26
+
)
27
+
or not (
28
+
length(subject.subject) <= 10
29
+
or subject.subject == body.current_thread.text
30
+
or (subject.is_reply and length(body.previous_threads) == 0)
31
+
)
32
+
and (
33
+
length(body.links) == 0
34
+
or length(filter(body.links,
35
+
(
36
+
.display_text is null
37
+
and .display_url.url == sender.email.domain.root_domain
38
+
)
39
+
or .href_url.domain.domain == "aka.ms"
40
+
or network.whois(.display_url.domain).days_old < 30
41
+
)
42
+
) == length(body.links)
43
+
)
44
+
and (
45
+
length(attachments) == 0
46
+
or (
47
+
length(attachments) == 1
48
+
and any(attachments,
49
+
.file_type in ("pdf", "png", "jpg", "tif", "heif", "doc", "docx")
50
+
and any(file.explode(.),
51
+
length(.scan.ocr.raw) < 20
52
+
or length(.scan.strings.strings) == 1
53
+
)
54
+
)
55
+
)
56
+
)
57
+
and (
58
+
body.current_thread.text is null
59
+
or length(body.current_thread.text) < 50
60
+
// body length without disclaimer is shorter than 50 characters
0 commit comments