Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Impersonation: Brand, Lookalike domain, Social engineering |
Event coverage
Rule body MQL
type.inbound
and (
// Twitter logic
(
sender.display_name =~ "twitter"
or strings.ilevenshtein(sender.display_name, 'twitter') <= 1
or strings.ilike(sender.email.domain.domain, '*twitter*')
)
// "X" logic
or (
(
3 of (
strings.iends_with(sender.email.domain.root_domain, "-x.com"),
strings.icontains(sender.email.local_part, "x-corp"),
any(body.links,
strings.iends_with(.href_url.domain.root_domain, "-x.com")
or strings.istarts_with(.href_url.domain.subdomain, "x-corp")
),
strings.ilike(body.current_thread.text,
"*content dispute*",
"*copyright*",
"*appeal*"
),
strings.contains(body.current_thread.text, '1355 Market Street'),
strings.contains(body.current_thread.text, 'San Francisco, CA 94103'),
strings.contains(body.current_thread.text, 'X Corp'),
strings.ilike(body.current_thread.text, '*865 FM 1209*bastrop*')
)
or (
length(ml.logo_detect(file.message_screenshot()).brands) == 1
and any(ml.logo_detect(file.message_screenshot()).brands,
.name == "X" and .confidence == "high"
)
and (
any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "cred_theft" and .confidence == "high"
)
or any(ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).intents,
.name == "cred_theft" and .confidence == "high"
)
)
)
)
and any(beta.ml_topic(body.current_thread.text).topics,
.name in (
"Reminders and Notifications",
"Security and Authentication",
"Legal and Compliance",
"Customer Service and Support"
)
)
)
)
and sender.email.domain.domain not in~ (
'twitter.com',
'privaterelay.appleid.com',
'stripe.com',
'x.com',
'twitter.discoursemail.com',
'slack.com'
)
// negate Hearsay Systems which sends notifications from sender domain ending in twitter.com
and not (
strings.ends_with(sender.email.domain.domain, '.hearsay.twitter.com')
and strings.ends_with(headers.message_id, '@hearsaysystems.com>')
)
and sender.email.email not in $recipient_emails
Detection logic
Scope: inbound message.
Impersonation of Twitter.
- inbound message
any of:
any of:
- sender.display_name is 'twitter'
- sender.display_name is similar to 'twitter'
- sender.email.domain.domain matches '*twitter*'
all of:
any of:
at least 3 of:
- sender.email.domain.root_domain ends with '-x.com'
- sender.email.local_part contains 'x-corp'
any of
body.linkswhere any holds:- .href_url.domain.root_domain ends with '-x.com'
- .href_url.domain.subdomain starts with 'x-corp'
body.current_thread.text matches any of 3 patterns
*content dispute**copyright**appeal*
- body.current_thread.text contains '1355 Market Street'
- body.current_thread.text contains 'San Francisco, CA 94103'
- body.current_thread.text contains 'X Corp'
- body.current_thread.text matches '*865 FM 1209*bastrop*'
all of:
- length(ml.logo_detect(file.message_screenshot()).brands) is 1
any of
ml.logo_detect(file.message_screenshot()).brandswhere all hold:- .name is 'X'
- .confidence is 'high'
any of:
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'cred_theft'
- .confidence is 'high'
any of
ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).intentswhere all hold:- .name is 'cred_theft'
- .confidence is 'high'
any of
beta.ml_topic(body.current_thread.text).topicswhere:- .name in ('Reminders and Notifications', 'Security and Authentication', 'Legal and Compliance', 'Customer Service and Support')
- sender.email.domain.domain not in ('twitter.com', 'privaterelay.appleid.com', 'stripe.com', 'x.com', 'twitter.discoursemail.com', 'slack.com')
not:
all of:
- sender.email.domain.domain ends with '.hearsay.twitter.com'
- headers.message_id ends with '@hearsaysystems.com>'
- sender.email.email not in $recipient_emails
Inspects: body.current_thread.text, body.links, body.links[].href_url.domain.root_domain, body.links[].href_url.domain.subdomain, headers.message_id, sender.display_name, sender.email.domain.domain, sender.email.domain.root_domain, sender.email.email, sender.email.local_part, type.inbound. Sensors: beta.ml_topic, beta.ocr, file.message_screenshot, ml.logo_detect, ml.nlu_classifier, strings.contains, strings.ends_with, strings.icontains, strings.iends_with, strings.ilevenshtein, strings.ilike, strings.istarts_with. Reference lists: $recipient_emails.
Indicators matched (31)
| Field | Match | Value |
|---|---|---|
sender.display_name | equals | twitter |
strings.ilevenshtein | fuzzy | twitter |
strings.ilike | substring | *twitter* |
strings.iends_with | suffix | -x.com |
strings.icontains | substring | x-corp |
strings.istarts_with | prefix | x-corp |
strings.ilike | substring | *content dispute* |
strings.ilike | substring | *copyright* |
strings.ilike | substring | *appeal* |
strings.contains | substring | 1355 Market Street |
strings.contains | substring | San Francisco, CA 94103 |
strings.contains | substring | X Corp |
19 more
strings.ilike | substring | *865 FM 1209*bastrop* |
ml.logo_detect(file.message_screenshot()).brands[].name | equals | X |
ml.logo_detect(file.message_screenshot()).brands[].confidence | equals | high |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | cred_theft |
ml.nlu_classifier(body.current_thread.text).intents[].confidence | equals | high |
ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).intents[].name | equals | cred_theft |
ml.nlu_classifier(beta.ocr(file.message_screenshot()).text).intents[].confidence | equals | high |
beta.ml_topic(body.current_thread.text).topics[].name | member | Reminders and Notifications |
beta.ml_topic(body.current_thread.text).topics[].name | member | Security and Authentication |
beta.ml_topic(body.current_thread.text).topics[].name | member | Legal and Compliance |
beta.ml_topic(body.current_thread.text).topics[].name | member | Customer Service and Support |
sender.email.domain.domain | member | twitter.com |
sender.email.domain.domain | member | privaterelay.appleid.com |
sender.email.domain.domain | member | stripe.com |
sender.email.domain.domain | member | x.com |
sender.email.domain.domain | member | twitter.discoursemail.com |
sender.email.domain.domain | member | slack.com |
strings.ends_with | suffix | .hearsay.twitter.com |
strings.ends_with | suffix | @hearsaysystems.com> |