Vendor impersonation: Thread hijacking with typosquat domain

Detects potential thread hijacking where the sender uses a domain similar to known senders, exhibits BEC behavior, and shows signs of compromised thread continuity through domain spoofing or thread manipulation.

Sublime rule (View on GitHub)

 1name: "Vendor impersonation: Thread hijacking with typosquat domain"
 2description: "Detects potential thread hijacking where the sender uses a domain similar to known senders, exhibits BEC behavior, and shows signs of compromised thread continuity through domain spoofing or thread manipulation."
 3type: "rule"
 4severity: "high"
 5source: |
 6  type.inbound
 7  and subject.is_reply
 8  and sender.email.domain.root_domain not in $sender_domains
 9  // current sender has not been seen in the thread before
10  and any(body.previous_threads,
11          length(regex.iextract(.preamble, '<(?P<previous_email>\S*)>')) > 0
12          and any(regex.iextract(.preamble, '<(?P<previous_email>\S*)>'),
13                  strings.parse_email(.named_groups['previous_email']).domain.domain not in $org_domains
14          )
15  )
16  and all(body.previous_threads,
17          all(regex.iextract(.preamble, '<(?P<previous_email>\S*)>'),
18              strings.parse_email(.named_groups['previous_email']).domain.domain != sender.email.domain.domain
19          )
20  )
21  and any($sender_domains,
22          0 < strings.ilevenshtein(., sender.email.domain.root_domain) < 3
23  )
24  and any(ml.nlu_classifier(body.current_thread.text).intents,
25          .name == "bec" and .confidence != "low"
26  )
27  // risky category
28  and any(ml.nlu_classifier(body.current_thread.text).topics,
29          .name in (
30            "Financial Communications",
31            "E-Signature",
32            "Benefit Enrollment"
33          )
34          and .confidence == "high"
35  )
36  and 1 of (
37    not network.whois(sender.email.domain).found,
38    any(body.previous_threads, strings.icontains(.preamble, sender.display_name))
39  )
40  and (
41    profile.by_sender_domain().prevalence == "new"
42    or profile.by_sender_domain().days_known < 3
43  )  
44
45attack_types:
46  - "BEC/Fraud"
47tactics_and_techniques:
48  - "Lookalike domain"
49  - "Social engineering"
50  - "Spoofing"
51detection_methods:
52  - "Content analysis"
53  - "Natural Language Understanding"
54  - "Sender analysis"
55  - "Whois"
56id: "9c2f38ed-dfc3-5251-aaf1-3d35cf18369e"
to-top