Credential phishing content and link (untrusted sender)

Message contains credential theft language and a link to a credential phishing page from an unknown sender. We use Link Analysis in aggressive mode to increase our chances of scanning.

Sublime rule (View on GitHub)

 1name: "Credential phishing content and link (untrusted sender)"
 2description: |
 3  Message contains credential theft language and a link to a credential phishing page from an unknown sender.
 4  We use Link Analysis in aggressive mode to increase our chances of scanning.  
 5type: "rule"
 6severity: "high"
 7source: |
 8  type.inbound
 9  and (
10    any(ml.nlu_classifier(body.current_thread.text).intents,
11        .name == "cred_theft" and .confidence in ("medium", "high")
12    )
13    // embedded in an image attachment
14    // note: don't use message_screenshot() for now
15    // because it's not limited to current_thread and may FP
16    or any(attachments,
17           .file_type in $file_types_images
18           and any(file.explode(.),
19                   any(ml.nlu_classifier(.scan.ocr.raw).intents,
20                       .name == "cred_theft" and .confidence in ("medium", "high")
21                   )
22           )
23    )
24  )
25  and any(body.links,
26          .href_url.domain.root_domain not in ("outlook.com")
27          and .href_url.domain.domain != "play.google.com"
28          and ml.link_analysis(., mode="aggressive").effective_url.domain.domain != "play.google.com"
29          and ml.link_analysis(., mode="aggressive").credphish.disposition == "phishing"
30          and (
31            ml.link_analysis(., mode="aggressive").credphish.confidence in (
32              "medium",
33              "high"
34            )
35            or ml.link_analysis(., mode="aggressive").credphish.contains_captcha
36          )
37          and not .href_url.domain.root_domain == "c3reservations.com"
38  )
39  and (
40    (
41      profile.by_sender_email().prevalence in ("new", "outlier")
42      and not profile.by_sender_email().solicited
43    )
44    or (
45      profile.by_sender_email().any_messages_malicious_or_spam
46      and not profile.by_sender_email().any_messages_benign
47    )
48    // or there are no recipients
49    or length(recipients.to) == 0
50    // or the recipients are all invalid 
51    or all(recipients.to, .email.domain.valid == false)
52  
53    // or the sender exhibits a "self sender" pattern
54    or (
55      length(recipients.to) == 1
56      and recipients.to[0].email.email == sender.email.email
57    )
58  )
59  
60  // negate docusign 'via' messages
61  and not (
62    any(headers.hops,
63        any(.fields,
64            .name == "X-Api-Host" and strings.ends_with(.value, "docusign.net")
65        )
66    )
67    and strings.contains(sender.display_name, "via")
68  )
69  
70  // negate docusign originated emails
71  and not any(headers.hops,
72              regex.imatch(.received.server.raw, ".+.docusign.(net|com)")
73  )
74  
75  // negate highly trusted sender domains unless they fail DMARC authentication
76  and (
77    (
78      sender.email.domain.root_domain in $high_trust_sender_root_domains
79      and not headers.auth_summary.dmarc.pass
80    )
81    or sender.email.domain.root_domain not in $high_trust_sender_root_domains
82  )  
83attack_types:
84  - "Credential Phishing"
85tactics_and_techniques:
86  - "Social engineering"
87detection_methods:
88  - "Computer Vision"
89  - "Sender analysis"
90  - "URL analysis"
91  - "URL screenshot"
92id: "f0c95bb7-afeb-5c8d-a654-74b5e026007f"
to-top