Detection rules › Sublime MQL
Link: Cryptocurrency fraud with suspicious links
Detects messages containing financial communications about cryptocurrency or bitcoin with links to suspicious domains, URL shorteners, newly registered domains, or domains with known cryptocurrency fraud indicators. The rule analyzes link behavior including redirects, specific abuse patterns, and JavaScript configurations commonly used in cryptocurrency scams. Excludes legitimate cryptocurrency platforms with proper authentication.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud |
| Tactics and techniques | Social engineering, Evasion, Free subdomain host, Scripting |
Event coverage
Rule body MQL
type.inbound
and any(ml.nlu_classifier(body.current_thread.text).topics,
.name in ("Financial Communications")
)
and strings.ilike(body.current_thread.text, "*cryptocurrency*", "*bitcoin*")
and not any(ml.nlu_classifier(body.current_thread.text).topics,
.name in (
'Advertising and Promotions',
'Newsletters and Digests',
'News and Current Events',
'Legal and Compliance'
)
)
and not any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "benign" and .confidence == "high"
)
and any(body.links,
(
.href_url.domain.tld in $suspicious_tlds
or .href_url.domain.root_domain in $url_shorteners
or network.whois(.href_url.domain).days_old < 30
// 1 distinct link domain that's not the sender domain
or length(distinct(filter(body.links,
.href_url.domain.root_domain != sender.email.domain.root_domain
),
.href_url.domain.root_domain
)
) == 1
)
and (
any(ml.link_analysis(., mode="aggressive").unique_urls_accessed,
// known paths
strings.ilike(.path, "/payouts/img/*", "/img/coins/*")
// abused service to fetch coin prices
or .domain.domain == "api.coingecko.com"
// suspicious TLD that isn't the original link domain
or (
.domain.tld in $suspicious_tlds
and .domain.root_domain != ..href_url.domain.root_domain
)
)
or any(ml.link_analysis(., mode="aggressive").redirect_history,
// traversed a domain that is not the body link domain OR the effective domain
.domain.root_domain != ..href_url.domain.root_domain
and .domain.root_domain != ml.link_analysis(.,
mode="aggressive"
).effective_url.domain.root_domain
)
// locate and extract the configuration on the page
or (
length(html.xpath(ml.link_analysis(., mode="aggressive").final_dom,
'//script/text()'
).nodes
) == 1
and any(html.xpath(ml.link_analysis(., mode="aggressive").final_dom,
'//script'
).nodes,
any(file.explode(.),
length(filter(.scan.javascript.identifiers,
strings.ilike(., "pay*")
)
) == 27
or any(.scan.javascript.strings,
strings.icontains(., "pay.php")
)
)
)
)
)
)
and not (
sender.email.domain.root_domain in (
"gemini.com",
"ledger.com",
"binance.com",
"trezor.io",
"kraken.com",
"solana.com",
"metamask.com",
"ethereum.org",
"bloomberg.com"
)
and headers.auth_summary.dmarc.pass
)
Detection logic
Scope: inbound message.
Detects messages containing financial communications about cryptocurrency or bitcoin with links to suspicious domains, URL shorteners, newly registered domains, or domains with known cryptocurrency fraud indicators. The rule analyzes link behavior including redirects, specific abuse patterns, and JavaScript configurations commonly used in cryptocurrency scams. Excludes legitimate cryptocurrency platforms with proper authentication.
- inbound message
any of
ml.nlu_classifier(body.current_thread.text).topicswhere:- .name in ('Financial Communications')
body.current_thread.text matches any of 2 patterns
*cryptocurrency**bitcoin*
not:
any of
ml.nlu_classifier(body.current_thread.text).topicswhere:- .name in ('Advertising and Promotions', 'Newsletters and Digests', 'News and Current Events', 'Legal and Compliance')
not:
any of
ml.nlu_classifier(body.current_thread.text).intentswhere all hold:- .name is 'benign'
- .confidence is 'high'
any of
body.linkswhere all hold:any of:
- .href_url.domain.tld in $suspicious_tlds
- .href_url.domain.root_domain in $url_shorteners
- network.whois(.href_url.domain).days_old < 30
- length(distinct(filter(body.links, .href_url.domain.root_domain != sender.email.domain.root_domain), .href_url.domain.root_domain)) is 1
any of:
any of
ml.link_analysis(., mode='aggressive').unique_urls_accessedwhere any holds:.path matches any of 2 patterns
/payouts/img/*/img/coins/*
- .domain.domain is 'api.coingecko.com'
all of:
- .domain.tld in $suspicious_tlds
- .domain.root_domain is not .href_url.domain.root_domain
any of
ml.link_analysis(., mode='aggressive').redirect_historywhere all hold:- .domain.root_domain is not .href_url.domain.root_domain
- .domain.root_domain is not ml.link_analysis(., mode='aggressive').effective_url.domain.root_domain
all of:
- length(html.xpath(ml.link_analysis(., mode='aggressive').final_dom, '//script/text()').nodes) is 1
any of
html.xpath(ml.link_analysis(., mode='aggressive').final_dom, '//script').nodeswhere:any of
file.explode(.)where any holds:- length(filter(.scan.javascript.identifiers, strings.ilike(., 'pay*'))) is 27
any of
.scan.javascript.stringswhere:- . contains 'pay.php'
not:
all of:
- sender.email.domain.root_domain in ('gemini.com', 'ledger.com', 'binance.com', 'trezor.io', 'kraken.com', 'solana.com', 'metamask.com', 'ethereum.org', 'bloomberg.com')
- headers.auth_summary.dmarc.pass
Inspects: body.current_thread.text, body.links, body.links[].href_url.domain, body.links[].href_url.domain.root_domain, body.links[].href_url.domain.tld, headers.auth_summary.dmarc.pass, sender.email.domain.root_domain, type.inbound. Sensors: file.explode, html.xpath, ml.link_analysis, ml.nlu_classifier, network.whois, strings.icontains, strings.ilike. Reference lists: $suspicious_tlds, $url_shorteners.
Indicators matched (23)
| Field | Match | Value |
|---|---|---|
ml.nlu_classifier(body.current_thread.text).topics[].name | member | Financial Communications |
strings.ilike | substring | *cryptocurrency* |
strings.ilike | substring | *bitcoin* |
ml.nlu_classifier(body.current_thread.text).topics[].name | member | Advertising and Promotions |
ml.nlu_classifier(body.current_thread.text).topics[].name | member | Newsletters and Digests |
ml.nlu_classifier(body.current_thread.text).topics[].name | member | News and Current Events |
ml.nlu_classifier(body.current_thread.text).topics[].name | member | Legal and Compliance |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | benign |
ml.nlu_classifier(body.current_thread.text).intents[].confidence | equals | high |
strings.ilike | substring | /payouts/img/* |
strings.ilike | substring | /img/coins/* |
ml.link_analysis(body.links[], mode='aggressive').unique_urls_accessed[].domain.domain | equals | api.coingecko.com |
11 more
strings.ilike | substring | pay* |
strings.icontains | substring | pay.php |
sender.email.domain.root_domain | member | gemini.com |
sender.email.domain.root_domain | member | ledger.com |
sender.email.domain.root_domain | member | binance.com |
sender.email.domain.root_domain | member | trezor.io |
sender.email.domain.root_domain | member | kraken.com |
sender.email.domain.root_domain | member | solana.com |
sender.email.domain.root_domain | member | metamask.com |
sender.email.domain.root_domain | member | ethereum.org |
sender.email.domain.root_domain | member | bloomberg.com |