Detection rules › Sublime MQL
Brand impersonation: Binance
Impersonation of the cryptocurrency exchange Binance.
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
| Message attribute |
|---|
| body.current_thread |
| sender |
| sender.email |
| subject |
| type |
Rule body MQL
type.inbound
and (
strings.ilike(sender.display_name, '*binance*')
or strings.ilevenshtein(sender.display_name, 'binance') <= 1
or strings.ilike(sender.email.domain.domain, '*binance*')
or strings.ilike(subject.subject, '*binance*')
)
and sender.email.domain.root_domain not in~ (
'binance.com',
'binance.us',
'trustwallet.com',
'binance.charity'
)
and any(ml.nlu_classifier(body.current_thread.text).entities,
.text == "Binance"
)
and any(ml.nlu_classifier(body.current_thread.text).entities,
.name == "financial"
)
and (
any(ml.nlu_classifier(body.current_thread.text).entities, .name == "urgency")
or any(ml.nlu_classifier(body.current_thread.text).entities,
.name == "request"
)
)
and (
any(ml.nlu_classifier(body.current_thread.text).entities,
.text in~ ("withdrawal", "deposit")
)
or any(ml.nlu_classifier(body.current_thread.text).intents, .name != "benign")
)
and (
// if this comes from a free email provider,
// flag if org has never sent an email to sender's email before
(
sender.email.domain.root_domain in $free_email_providers
and sender.email.email not in $recipient_emails
)
// if this comes from a custom domain,
// flag if org has never sent an email to sender's domain before
or (
sender.email.domain.root_domain not in $free_email_providers
and sender.email.domain.domain not in $recipient_domains
)
)
Detection logic
Scope: inbound message.
Impersonation of the cryptocurrency exchange Binance.
- inbound message
any of:
- sender.display_name matches '*binance*'
- sender.display_name is similar to 'binance'
- sender.email.domain.domain matches '*binance*'
- subject.subject matches '*binance*'
- sender.email.domain.root_domain not in ('binance.com', 'binance.us', 'trustwallet.com', 'binance.charity')
any of
ml.nlu_classifier(body.current_thread.text).entitieswhere:- .text is 'Binance'
any of
ml.nlu_classifier(body.current_thread.text).entitieswhere:- .name is 'financial'
any of:
any of
ml.nlu_classifier(body.current_thread.text).entitieswhere:- .name is 'urgency'
any of
ml.nlu_classifier(body.current_thread.text).entitieswhere:- .name is 'request'
any of:
any of
ml.nlu_classifier(body.current_thread.text).entitieswhere:- .text in ('withdrawal', 'deposit')
any of
ml.nlu_classifier(body.current_thread.text).intentswhere:- .name is not 'benign'
any of:
all of:
- sender.email.domain.root_domain in $free_email_providers
- sender.email.email not in $recipient_emails
all of:
- sender.email.domain.root_domain not in $free_email_providers
- sender.email.domain.domain not in $recipient_domains
Inspects: body.current_thread.text, sender.display_name, sender.email.domain.domain, sender.email.domain.root_domain, sender.email.email, subject.subject, type.inbound. Sensors: ml.nlu_classifier, strings.ilevenshtein, strings.ilike. Reference lists: $free_email_providers, $recipient_domains, $recipient_emails.
Indicators matched (12)
| Field | Match | Value |
|---|---|---|
strings.ilike | substring | *binance* |
strings.ilevenshtein | fuzzy | binance |
sender.email.domain.root_domain | member | binance.com |
sender.email.domain.root_domain | member | binance.us |
sender.email.domain.root_domain | member | trustwallet.com |
sender.email.domain.root_domain | member | binance.charity |
ml.nlu_classifier(body.current_thread.text).entities[].text | equals | Binance |
ml.nlu_classifier(body.current_thread.text).entities[].name | equals | financial |
ml.nlu_classifier(body.current_thread.text).entities[].name | equals | urgency |
ml.nlu_classifier(body.current_thread.text).entities[].name | equals | request |
ml.nlu_classifier(body.current_thread.text).entities[].text | member | withdrawal |
ml.nlu_classifier(body.current_thread.text).entities[].text | member | deposit |