Detection rules › Sublime MQL

Sublime MQL rules: issuu

Issuu document with suspicious embedded link

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

Detects when an Issuu document contains suspicious links or text, where the document is set to open in full screen mode. The rule analyzes both embedded links and document content for malicious indicators, particularly focusing on suspicious top-level domains and language patterns.

Threat classification

Sublime's own taxonomy (not MITRE ATT&CK).

CategoryValues
Attack typesCredential Phishing
Tactics and techniquesSocial engineering, Free file host, Evasion

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.links
  • type

Rule body

type.inbound
and any(body.links,
        .href_url.domain.root_domain == "issuu.com"
        and .href_url.query_params == "fr=xKAE9_zU1NQ" // opens the document full screen
        // suspicious link in the Issuu document
        and (
          any(filter(ml.link_analysis(., mode="aggressive").additional_responses,
                     strings.icontains(.url.path, "/links/")
              ),
              // less than 3 links in the Issuu document
              length(.json["1"]) < 3
              and any(.json["1"],
                      strings.parse_url(.["url"]).domain.tld in $suspicious_tlds
                      or strings.parse_url(.["url"]).domain.domain in $free_subdomain_hosts
                      or strings.parse_url(.["url"]).domain.root_domain in $free_subdomain_hosts
                      or ml.link_analysis(strings.parse_url(.["url"])).credphish.disposition == "phishing"
              )
          )
          // or, credential phishing language on the page
          or any(ml.nlu_classifier(beta.ocr(ml.link_analysis(.,
                                                             mode="aggressive"
                                            ).screenshot
                                   ).text
                 ).intents,
                 .name == "cred_theft" and .confidence != "low"
          )
        )
)
and not profile.by_sender_email().any_messages_benign

Detection logic

Scope: inbound message.

Detects when an Issuu document contains suspicious links or text, where the document is set to open in full screen mode. The rule analyzes both embedded links and document content for malicious indicators, particularly focusing on suspicious top-level domains and language patterns.

  1. inbound message
  2. any of body.links where all hold:
    • .href_url.domain.root_domain is 'issuu.com'
    • .href_url.query_params is 'fr=xKAE9_zU1NQ'
    • any of:
      • any of filter(...) where all hold:
        • length(.json['1']) < 3
        • any of .json['1'] where any holds:
          • strings.parse_url(.['url']).domain.tld in $suspicious_tlds
          • strings.parse_url(.['url']).domain.domain in $free_subdomain_hosts
          • strings.parse_url(.['url']).domain.root_domain in $free_subdomain_hosts
          • ml.link_analysis(strings.parse_url(.['url'])).credphish.disposition is 'phishing'
      • any of ml.nlu_classifier(beta.ocr(ml.link_analysis(., mode='aggressive').screenshot).text).intents where all hold:
        • .name is 'cred_theft'
        • .confidence is not 'low'
  3. not:
    • profile.by_sender_email().any_messages_benign

Inspects: body.links, body.links[].href_url.domain.root_domain, body.links[].href_url.query_params, type.inbound. Sensors: beta.ocr, ml.link_analysis, ml.nlu_classifier, profile.by_sender_email, strings.icontains, strings.parse_url. Reference lists: $free_subdomain_hosts, $suspicious_tlds.

Indicators matched (4)

FieldMatchValue
body.links[].href_url.domain.root_domainequalsissuu.com
body.links[].href_url.query_paramsequalsfr=xKAE9_zU1NQ
strings.icontainssubstring/links/
ml.nlu_classifier(beta.ocr(ml.link_analysis(body.links[], mode='aggressive').screenshot).text).intents[].nameequalscred_theft

Stages and Predicates

Stage 1: mql_rule

and
  any(body.links)
    and
      or
        any(filter(...))
          and
            any(filter(...).json['1'])
              or
                ml.link_analysis func_call "ml.link_analysis(strings.parse_url(filter(...)[].json['1'][]['url'])).credphish.disposition == phishing"
                strings.parse_url func_call "strings.parse_url(filter(...)[].json['1'][]['url']).domain.domain in free_subdomain_hosts"
                strings.parse_url func_call "strings.parse_url(filter(...)[].json['1'][]['url']).domain.root_domain in free_subdomain_hosts"
                strings.parse_url func_call "strings.parse_url(filter(...)[].json['1'][]['url']).domain.tld in suspicious_tlds"
            filter(...).json['1'] length_compare "3"
        any(ml.nlu_classifier(beta.ocr(ml.link_analysis(body.links, mode='aggressive').screenshot).text).intents)
          and
            ml.nlu_classifier(beta.ocr(ml.link_analysis(body.links[], mode='aggressive').screenshot).text).intents[].confidence ne "low"
            ml.nlu_classifier(beta.ocr(ml.link_analysis(body.links[], mode='aggressive').screenshot).text).intents[].name eq "cred_theft"
      body.links.href_url.domain.root_domain eq "issuu.com"
      body.links.href_url.query_params eq "fr=xKAE9_zU1NQ"
  not
    profile.by_sender_email func_call "profile.by_sender_email().any_messages_benign"
  type.inbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.inboundeq
  • true transforms: boolean
field:"type.inbound" kind:eq value:"true"