Link: Financial account issue with suspicious indicators

Detects messages to single recipients containing language about account or payment issues combined with suspicious links or high-confidence credential theft indicators related to financial communications.

Sublime rule (View on GitHub)

 1name: "Link: Financial account issue with suspicious indicators"
 2description: "Detects messages to single recipients containing language about account or payment issues combined with suspicious links or high-confidence credential theft indicators related to financial communications."
 3type: "rule"
 4severity: "medium"
 5source: |
 6  type.inbound
 7  // single recipient
 8  and length(recipients.to) == 1
 9  // problem phrase commonly observed in lures
10  and regex.icontains(body.current_thread.text,
11                      '(?:issue|problem) with your.{0,20}(?:card|account|renewal|payment|billing)'
12  )
13  // link is suspicious for one reason or another
14  and any(body.links,
15          (
16            .href_url.domain.domain in $url_shorteners
17            or .href_url.domain.root_domain in $url_shorteners
18            or .href_url.domain.root_domain in $free_file_hosts
19            or .href_url.domain.domain in $free_file_hosts
20            or .href_url.domain.root_domain in $free_subdomain_hosts
21            or .href_url.domain.domain in $free_subdomain_hosts
22            or .href_url.domain.root_domain in $self_service_creation_platform_domains
23            or .href_url.domain.domain in $self_service_creation_platform_domains
24            or .href_url.domain.tld in $suspicious_tlds
25            or network.whois(.href_url.domain).days_old < 30
26            or .href_url.domain.root_domain == 'sa.com'
27          )
28          and not .href_url.domain.root_domain in (
29            'app.link',
30            'sng.link',
31            'onelink.me'
32          )
33          // no campaigns
34          and not regex.icontains(.href_url.url,
35                                  '&utm_(?:campaign|medium|source)'
36          )
37  )
38  
39  // high confidence cred theft with a topic of either financial or payment comms
40  and any(ml.nlu_classifier(body.current_thread.text).intents,
41          .name == 'cred_theft' and .confidence == 'high'
42  )
43  and any(ml.nlu_classifier(body.current_thread.text).topics,
44          .name in ("Financial Communications", "Payment Information")
45          and .confidence == 'high'
46  )
47  // negate highly trusted sender domains unless they fail DMARC authentication
48  and (
49    (
50      sender.email.domain.root_domain in $high_trust_sender_root_domains
51      and not coalesce(headers.auth_summary.dmarc.pass, false)
52    )
53    or sender.email.domain.root_domain not in $high_trust_sender_root_domains
54  )  
55attack_types:
56  - "Credential Phishing"
57tactics_and_techniques:
58  - "Free file host"
59  - "Free subdomain host"
60  - "Social engineering"
61detection_methods:
62  - "Content analysis"
63  - "Natural Language Understanding"
64  - "URL analysis"
65  - "Whois"
66id: "d4d64041-8adb-533b-8918-fac88fb3dfae"
to-top