Detection rules › Sublime MQL

Link: Cryptocurrency fraud with suspicious links

Severity
high
Type
rule
Source
github.com/sublime-security/sublime-rules

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).

CategoryValues
Attack typesBEC/Fraud
Tactics and techniquesSocial 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.

  1. inbound message
  2. any of ml.nlu_classifier(body.current_thread.text).topics where:
    • .name in ('Financial Communications')
  3. body.current_thread.text matches any of 2 patterns
    • *cryptocurrency*
    • *bitcoin*
  4. not:
    • any of ml.nlu_classifier(body.current_thread.text).topics where:
      • .name in ('Advertising and Promotions', 'Newsletters and Digests', 'News and Current Events', 'Legal and Compliance')
  5. not:
    • any of ml.nlu_classifier(body.current_thread.text).intents where all hold:
      • .name is 'benign'
      • .confidence is 'high'
  6. any of body.links where 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_accessed where 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_history where 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').nodes where:
          • any of file.explode(.) where any holds:
            • length(filter(.scan.javascript.identifiers, strings.ilike(., 'pay*'))) is 27
            • any of .scan.javascript.strings where:
              • . contains 'pay.php'
  7. 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)

FieldMatchValue
ml.nlu_classifier(body.current_thread.text).topics[].namememberFinancial Communications
strings.ilikesubstring*cryptocurrency*
strings.ilikesubstring*bitcoin*
ml.nlu_classifier(body.current_thread.text).topics[].namememberAdvertising and Promotions
ml.nlu_classifier(body.current_thread.text).topics[].namememberNewsletters and Digests
ml.nlu_classifier(body.current_thread.text).topics[].namememberNews and Current Events
ml.nlu_classifier(body.current_thread.text).topics[].namememberLegal and Compliance
ml.nlu_classifier(body.current_thread.text).intents[].nameequalsbenign
ml.nlu_classifier(body.current_thread.text).intents[].confidenceequalshigh
strings.ilikesubstring/payouts/img/*
strings.ilikesubstring/img/coins/*
ml.link_analysis(body.links[], mode='aggressive').unique_urls_accessed[].domain.domainequalsapi.coingecko.com
11 more
strings.ilikesubstringpay*
strings.icontainssubstringpay.php
sender.email.domain.root_domainmembergemini.com
sender.email.domain.root_domainmemberledger.com
sender.email.domain.root_domainmemberbinance.com
sender.email.domain.root_domainmembertrezor.io
sender.email.domain.root_domainmemberkraken.com
sender.email.domain.root_domainmembersolana.com
sender.email.domain.root_domainmembermetamask.com
sender.email.domain.root_domainmemberethereum.org
sender.email.domain.root_domainmemberbloomberg.com