Attachment: Callback Phishing solicitation via text-based file with a large unknown recipient list

Callback Phishing via text-based file attachment, with a large number of recipients that are unknown to the organization, and a short body and subject from an unknown sender.

Sublime rule (View on GitHub)

 1name: "Attachment: Callback Phishing solicitation via text-based file with a large unknown recipient list"
 2description: "Callback Phishing via text-based file attachment, with a large number of recipients that are unknown to the organization, and a short body and subject from an unknown sender."
 3type: "rule"
 4severity: "medium"
 5source: |
 6  type.inbound
 7  and (
 8    length(recipients.to) > 10
 9    and length(filter(recipients.to,
10                      .email.domain.domain not in $org_domains
11                      and .email.email not in $recipient_emails
12                      and (
13                        .email.domain.valid
14                        or strings.icontains(.display_name, "undisclosed")
15                      )
16               )
17    ) >= 10
18  )
19  and length(subject.subject) <= 10
20  // there are no links, all the links are to aka.ms, or an extraction from a warning banner that match the senders domain
21  and (
22    length(body.links) == 0
23    or length(filter(body.links,
24                     (
25                       .display_text is null
26                       and .display_url.url == sender.email.domain.root_domain
27                     )
28                     or .href_url.domain.domain == "aka.ms"
29                     or network.whois(.display_url.domain).days_old < 30
30              )
31    ) == length(body.links)
32  )
33  and (body.current_thread.text is null or length(body.current_thread.text) < 50)
34  and 0 < length(attachments) < 4
35  and any(attachments,
36          (.content_type == "text/plain" or .file_type in ("doc", "docx"))
37          and any(file.explode(.),
38                  (.depth == 0 or (.depth == 1 and .flavors.mime == "text/plain"))
39                  and any(.scan.strings.strings,
40                          strings.ilike(.,
41                                        "*mcafee*",
42                                        "*norton*",
43                                        "*geek squad*",
44                                        "*paypal*",
45                                        "*ebay*",
46                                        "*symantec*",
47                                        "*best buy*",
48                                        "*lifelock*",
49                                        "*geek total*"
50                          )
51                          and any(..scan.strings.strings,
52                                  regex.icontains(.,
53                                                  '\b\+?(\d{1}.)?\(?\d{3}?\)?.~?.?\d{3}.?~?.\d{4}\b'
54                                  )
55                          )
56                  )
57          )
58  )
59  and profile.by_sender().prevalence != "common"
60  and not profile.by_sender().solicited
61  and not profile.by_sender().any_false_positives
62  
63  // negate highly trusted sender domains unless they fail DMARC authentication
64  and (
65    (
66      sender.email.domain.root_domain in $high_trust_sender_root_domains
67      and (
68        any(distinct(headers.hops, .authentication_results.dmarc is not null),
69            strings.ilike(.authentication_results.dmarc, "*fail")
70        )
71      )
72    )
73    or sender.email.domain.root_domain not in $high_trust_sender_root_domains
74  )
75    
76
77attack_types:
78  - "Callback Phishing"
79tactics_and_techniques:
80  - "Evasion"
81  - "Out of band pivot"
82  - "Social engineering"
83detection_methods:
84  - "Content analysis"
85  - "File analysis"
86  - "Header analysis"
87  - "Sender analysis"
88
89id: "ca39c83a-b308-532d-894b-528bdaef2748"
to-top