Brand impersonation: SoFi

Detects messages impersonating SoFi by analyzing sender display name, domain, body content including specific address references and phone numbers, while excluding legitimate SoFi communications with proper DMARC authentication.

Sublime rule (View on GitHub)

 1name: "Brand impersonation: SoFi"
 2description: "Detects messages impersonating SoFi by analyzing sender display name, domain, body content including specific address references and phone numbers, while excluding legitimate SoFi communications with proper DMARC authentication."
 3type: "rule"
 4severity: "medium"
 5source: |
 6  type.inbound
 7  // standard brand template
 8  and (
 9    // disclaimer
10    (
11      regex.icontains(body.current_thread.text,
12                      '\bsofi (?:bank|invest|securities|team|tech|wealth)\b'
13      )
14      and regex.icontains(body.current_thread.text,
15                          '©.20[0-9]{2}.(?:sofi|social finance)'
16      )
17      // phone numbers
18      and regex.icontains(body.current_thread.text,
19                          '\(855\)[\s\-\.]456[\s\-\.]7634',
20                          '\(844\)[\s\-\.]908[\s\-\.]7634'
21      )
22    )
23  
24    // address
25    or (
26      regex.icontains(body.current_thread.text, '\bsofi\b')
27      and strings.icontains(body.current_thread.text, "2750 E Cottonwood Pkwy")
28      and strings.icontains(body.current_thread.text, "Salt Lake City, UT 84121")
29    )
30  
31    // observed cred theft ttp
32    or (
33      regex.icontains(sender.display_name, '\bsofi\b')
34      and strings.icontains(body.current_thread.text,
35                            "trade confirmation",
36                            "self-directed investing account"
37      )
38    )
39  )
40  
41  // negate legitimate replies
42  and not (
43    (length(headers.references) > 0 or headers.in_reply_to is not null)
44    and (subject.is_forward or subject.is_reply)
45    and length(body.previous_threads) >= 1
46  )
47  
48  // topic negations
49  and not any(ml.nlu_classifier(body.current_thread.text).topics,
50              .name in ("Newsletters and Digests")
51  )
52  
53  // negate sofi & related domains
54  and not (
55    sender.email.domain.root_domain in (
56      "sofi.com", // parent domain
57      "sofi.org", // observed sender domain
58      "samsung.com", // financial partnership
59      "investordelivery.com" // financials delivery platform
60    )
61    and coalesce(headers.auth_summary.dmarc.pass, false)
62  )
63  
64  // negate high trust sender root domains unless they fail authentication
65  and not (
66    sender.email.domain.root_domain in $high_trust_sender_root_domains
67    and coalesce(headers.auth_summary.dmarc.pass, false)
68  )  
69attack_types:
70  - "Credential Phishing"
71tactics_and_techniques:
72  - "Impersonation: Brand"
73  - "Social engineering"
74detection_methods:
75  - "Content analysis"
76  - "Header analysis"
77  - "Sender analysis"
78  - "Natural Language Understanding"
79  - "URL analysis"
80id: "a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d"
to-top