Brand impersonation: Meta/Facebook

Impersonation of Meta or Meta's subsidiary Facebook.

Sublime rule (View on GitHub)

  1name: "Brand impersonation: Meta/Facebook"
  2description: |
  3    Impersonation of Meta or Meta's subsidiary Facebook.
  4references:
  5  - "https://www.techrepublic.com/article/google-and-amazon-most-impersonated-brands-in-phishing-attacks/"
  6type: "rule"
  7severity: "low"
  8source: |
  9  type.inbound
 10  and (
 11    // sender display name is a strong enough indicator
 12    // that it can be used without any other impersonation logic
 13    (
 14      strings.ilike(sender.display_name,
 15                    '*facebook ads*',
 16                    '*facebook business*',
 17                    '*meta support*',
 18                    '*meta for business*',
 19                    '*meta policy*'
 20      )
 21      or strings.ilevenshtein(sender.display_name, 'facebook ads') <= 2
 22      or strings.ilevenshtein(sender.display_name, 'facebook business') <= 2
 23      or (
 24        strings.ilevenshtein(sender.display_name, 'meta support') <= 2
 25        // negation for Zeta Support
 26        and not (
 27          sender.display_name == "Zeta Support"
 28          and sender.email.domain.root_domain == 'zetaglobal.net'
 29        )
 30      )
 31      or strings.ilike(sender.email.domain.domain, '*facebook*')
 32    )
 33    // the use of these keywords (facebook, meta, meta.*support)
 34    // or the levenshtien distance to facebook
 35    // are less strong and thus need to be combined with logo detection or nlu 
 36    or (
 37      (
 38        (
 39          regex.icontains(sender.display_name,
 40                          '\bfacebook\b',
 41                          '\bmeta\b',
 42                          '\bmeta.*support\b'
 43          )
 44          // negate metageek.com
 45          and not (
 46            strings.icontains(sender.display_name, 'MetaGeek Support')
 47            and sender.email.domain.root_domain == "metageek.com"
 48          )
 49        )
 50        or strings.ilevenshtein(sender.display_name, 'facebook') <= 2
 51      )
 52      and (
 53        any(ml.logo_detect(beta.message_screenshot()).brands,
 54            .name in ("Facebook", "Meta")
 55        )
 56        or any(ml.nlu_classifier(body.current_thread.text).intents,
 57               .name in ("cred_theft", "callback_scam", "steal_pii")
 58               and .confidence in ("high")
 59        )
 60      )
 61    )
 62    // salesforce sender combined with logo detection and nlu is enough
 63    or (
 64      sender.email.domain.root_domain == "salesforce.com"
 65      and any(ml.logo_detect(beta.message_screenshot()).brands,
 66              .name in ("Facebook", "Meta")
 67      )
 68      and any(ml.nlu_classifier(body.current_thread.text).intents,
 69              .name in ("cred_theft", "callback_scam", "steal_pii")
 70              and .confidence in ("high")
 71      )
 72    )
 73    or 
 74    // or the body contains a facebook/meta footer with the address citing "community support" 
 75    (
 76      regex.icontains(body.current_thread.text,
 77                      "Meta Platforms, Inc., Attention: Community Support, 1 (Facebook|Meta) Way, Menlo Park, CA 94025"
 78      )
 79      // and it contains a link to spawn a chat with facebook - this is not the way support operates
 80      and (
 81        any(body.links,
 82            strings.ends_with(.href_url.domain.domain, 'facebook.com')
 83            and strings.starts_with(.href_url.path, '/msg/')
 84        )
 85        or (
 86          any(ml.nlu_classifier(body.current_thread.text).intents,
 87              .name in ("cred_theft", "callback_scam", "steal_pii")
 88              and .confidence in ("high")
 89          )
 90        )
 91      )
 92    )
 93  )
 94  and sender.email.domain.root_domain not in~ (
 95    'facebook.com',
 96    'facebookmail.com',
 97    'eventsatfacebook.com',
 98    'facebookenterprise.com',
 99    'meta.com',
100    'metamail.com',
101    'medallia.com'
102  )
103  // negate metaenterprise links
104  and not any(headers.reply_to, .email.email == "noreply@facebookmail.com")
105  and (
106    (
107      profile.by_sender().prevalence != "common"
108      and not profile.by_sender().solicited
109    )
110    or (
111      profile.by_sender().any_messages_malicious_or_spam
112      and not profile.by_sender().any_false_positives
113    )
114    // if saleforce is being abused, sender profiles aren't very useful
115    or sender.email.email in ("noreply@salesforce.com", "support@salesforce.com")
116    // sent via Google group
117    or any(headers.hops, any(.fields, .name == "X-Google-Group-Id"))
118  )
119  
120  // negate highly trusted sender domains unless they fail DMARC authentication
121  and (
122    (
123      sender.email.domain.root_domain in $high_trust_sender_root_domains
124      and not headers.auth_summary.dmarc.pass
125    )
126    or sender.email.domain.root_domain not in $high_trust_sender_root_domains
127  
128    // salesforce has been abused for meta phishing campaigns repeatedly 
129    or sender.email.domain.root_domain == "salesforce.com"
130  )
131  and not profile.by_sender().any_false_positives  
132
133attack_types:
134  - "Credential Phishing"
135tactics_and_techniques:
136  - "Impersonation: Brand"
137  - "Lookalike domain"
138  - "Social engineering"
139detection_methods:
140  - "Header analysis"
141  - "Sender analysis"
142id: "e38f1e3b-79be-5a59-b084-24a851daf6b9"
to-top