Business Email Compromise (BEC) attempt from untrusted sender
Detects potential Business Email Compromise (BEC) attacks by analyzing text within the email body from first-time senders.
Sublime rule (View on GitHub)
1name: "Business Email Compromise (BEC) attempt from untrusted sender"
2description: |
3 Detects potential Business Email Compromise (BEC) attacks by analyzing text within the email body from first-time senders.
4type: "rule"
5severity: "medium"
6source: |
7 type.inbound
8 and any(ml.nlu_classifier(body.current_thread.text).intents,
9 .name in ("bec") and .confidence == "high"
10 )
11 // negating legit replies
12 and not (
13 (
14 strings.istarts_with(subject.subject, "RE:")
15 // out of office auto-reply
16 // the NLU model will handle these better natively soon
17 or strings.istarts_with(subject.subject, "Automatic reply:")
18 )
19 and (
20 length(headers.references) > 0
21 or any(headers.hops, any(.fields, strings.ilike(.name, "In-Reply-To")))
22 )
23 )
24 and (
25 (
26 profile.by_sender().prevalence in ("new", "outlier")
27 and not profile.by_sender().solicited
28 )
29 or (
30 profile.by_sender().any_messages_malicious_or_spam
31 and not profile.by_sender().any_false_positives
32 )
33 )
34
35 // negate highly trusted sender domains unless they fail DMARC authentication
36 and
37 (
38 (
39 sender.email.domain.root_domain in $high_trust_sender_root_domains
40 and (
41 any(distinct(headers.hops, .authentication_results.dmarc is not null),
42 strings.ilike(.authentication_results.dmarc, "*fail")
43 )
44 )
45 )
46 or sender.email.domain.root_domain not in $high_trust_sender_root_domains
47 )
48
49attack_types:
50 - "BEC/Fraud"
51tactics_and_techniques:
52 - "Social engineering"
53detection_methods:
54 - "Content analysis"
55 - "Header analysis"
56 - "Natural Language Understanding"
57 - "Sender analysis"
58id: "96d4c35a-ca53-559e-9db3-349dbbdffc20"