Suspicious newly registered reply-to domain with engaging financial or urgent language

Detects messages from a mismatched newly registered Reply-to domain that contain a financial or urgent request, or a request and an NLU tag with medium to high confidence, from an untrusted sender. This technique is typically observed in Vendor impersonation.

Sublime rule (View on GitHub)

 1name: "Suspicious newly registered reply-to domain with engaging financial or urgent language"
 2description: |
 3  Detects messages from a mismatched newly registered Reply-to domain that contain a financial or urgent request, or a request and 
 4  an NLU tag with medium to high confidence, from an untrusted sender. This technique is typically observed in Vendor impersonation.  
 5type: "rule"
 6severity: "medium"
 7source: |
 8  type.inbound
 9  and length(body.current_thread.text) < 5000
10  and (
11    any(headers.reply_to,
12        ( // mismatched reply-to and sender domain
13          .email.domain.root_domain != sender.email.domain.root_domain
14          // newly registered reply-to domain
15          and network.whois(.email.domain).days_old <= 30
16        )
17        or (
18          network.whois(.email.domain).days_old <= 90
19          and any(regex.iextract(body.current_thread.text,
20                                 'message id:\s*\S+@([a-z0-9.-]+\.[a-z]{2,})'
21                  ),
22                  .groups[0] != sender.email.domain.root_domain
23          )
24        )
25    )
26    or (
27      network.whois(sender.email.domain).days_old < 30
28      and sender.email.domain.tld in $suspicious_tlds
29    )
30  )
31  // request is being made
32  and any(ml.nlu_classifier(body.current_thread.text).entities,
33          .name == "request"
34  )
35  // there's financial/urgency OR a tag of medium/high confidence
36  and (
37    any(ml.nlu_classifier(body.current_thread.text).entities,
38        .name in ("financial", "urgency")
39    )
40    or any(ml.nlu_classifier(body.current_thread.text).tags,
41           .name is not null and .confidence in ("medium", "high")
42    )
43  )
44  and (
45    not profile.by_sender().solicited
46  
47    //
48    // This rule makes use of a beta feature and is subject to change without notice
49    // using the beta feature in custom rules is not suggested until it has been formally released
50    //
51    or not beta.profile.by_reply_to().solicited
52    or (
53      profile.by_sender().any_messages_malicious_or_spam
54      and not profile.by_sender().any_messages_benign
55    )
56  )
57  // negate highly trusted sender domains unless they fail DMARC authentication
58  and not (
59    sender.email.domain.root_domain in $high_trust_sender_root_domains
60    and coalesce(headers.auth_summary.dmarc.pass, false)
61  )  
62attack_types:
63  - "BEC/Fraud"
64tactics_and_techniques:
65  - "Social engineering"
66detection_methods:
67  - "Content analysis"
68  - "Header analysis"
69  - "Natural Language Understanding"
70  - "Sender analysis"
71  - "URL analysis"
72  - "Whois"
73id: "db4d9bb3-0eca-5525-9a99-7c1c773b580f"
to-top