Detection rules › Sublime MQL

Sublime MQL rules: canva

Canva design with suspicious embedded link

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

Detects when a Canva design contains links to suspicious domains or credential harvesting sites. The rule examines embedded scripts within Canva documents for suspicious URLs and analyzes link text for malicious intent.

Threat classification

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

CategoryValues
Attack typesCredential Phishing
Tactics and techniquesEvasion, Social engineering, Free file host

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 == "canva.com"
        and strings.starts_with(.href_url.path, "/design/")
        and any(html.xpath(ml.link_analysis(.).final_dom,
                           "/html/body/script[2]"
                ).nodes,
                any(regex.iextract(.raw,
                                   '\"[A-Z]\":{[^\}]+\"[a-z]\":\"(?P<display_text>[^\"]+)\"},\"[a-z]\":{[^\}]+"[a-z]":"(?<url>https:\/\/[^\s"'')\]}]+)\"'
                    ),
                    strings.parse_url(.named_groups["url"]).domain.root_domain not in (
                      "canva.com",
                      "sentry.io",
                      "googleusercontent.com"
                    )
                    and (
                      any(ml.nlu_classifier(.named_groups['display_text']).intents,
                          .name == "cred_theft"
                      )
                      or strings.parse_url(.named_groups["url"]).domain.tld in $suspicious_tlds
                      or strings.parse_url(.named_groups["url"]).domain.domain in $free_subdomain_hosts
                      or strings.parse_url(.named_groups["url"]).domain.root_domain in $free_subdomain_hosts
                      or ml.link_analysis(strings.parse_url(.named_groups["url"]
                                          )
                      ).credphish.disposition == "phishing"
                    )
                )
                // parse out links using file.explode
                or any(file.explode(.),
                       any(filter(.scan.url.urls,
                                  .domain.root_domain not in (
                                    "canva.com",
                                    "sentry.io",
                                    "googleusercontent.com"
                                  )
                           ),
                           .domain.tld in $suspicious_tlds
                           or .domain.domain in $free_subdomain_hosts
                           or .domain.root_domain in $free_subdomain_hosts
                           or ml.link_analysis(.).credphish.disposition == "phishing"
                       )
                )
        )
)
and not profile.by_sender_email().any_messages_benign

Detection logic

Scope: inbound message.

Detects when a Canva design contains links to suspicious domains or credential harvesting sites. The rule examines embedded scripts within Canva documents for suspicious URLs and analyzes link text for malicious intent.

  1. inbound message
  2. any of body.links where all hold:
    • .href_url.domain.root_domain is 'canva.com'
    • .href_url.path starts with '/design/'
    • any of html.xpath(ml.link_analysis(.).final_dom, '/html/body/script[2]').nodes where any holds:
      • any of regex.iextract(.raw) where all hold:
        • strings.parse_url(.named_groups['url']).domain.root_domain not in ('canva.com', 'sentry.io', 'googleusercontent.com')
        • any of:
          • any of ml.nlu_classifier(.named_groups['display_text']).intents where:
            • .name is 'cred_theft'
          • strings.parse_url(.named_groups['url']).domain.tld in $suspicious_tlds
          • strings.parse_url(.named_groups['url']).domain.domain in $free_subdomain_hosts
          • strings.parse_url(.named_groups['url']).domain.root_domain in $free_subdomain_hosts
          • ml.link_analysis(strings.parse_url(.named_groups['url'])).credphish.disposition is 'phishing'
      • any of file.explode(.) where:
        • any of filter(.scan.url.urls) where any holds:
          • .domain.tld in $suspicious_tlds
          • .domain.domain in $free_subdomain_hosts
          • .domain.root_domain in $free_subdomain_hosts
          • ml.link_analysis(.).credphish.disposition is 'phishing'
  3. not:
    • profile.by_sender_email().any_messages_benign

Inspects: body.links, body.links[].href_url.domain.root_domain, body.links[].href_url.path, type.inbound. Sensors: file.explode, html.xpath, ml.link_analysis, ml.nlu_classifier, profile.by_sender_email, regex.iextract, strings.parse_url, strings.starts_with. Reference lists: $free_subdomain_hosts, $suspicious_tlds.

Indicators matched (4)

FieldMatchValue
body.links[].href_url.domain.root_domainequalscanva.com
strings.starts_withprefix/design/
regex.iextractregex\"[A-Z]\":{[^\}]+\"[a-z]\":\"(?P<display_text>[^\"]+)\"},\"[a-z]\":{[^\}]+"[a-z]":"(?<url>https:\/\/[^\s"')\]}]+)\"
ml.nlu_classifier(regex.iextract(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[].raw)[].named_groups['display_text']).intents[].nameequalscred_theft

Stages and Predicates

Stage 1: mql_rule

and
  any(body.links)
    and
      any(html.xpath(ml.link_analysis(body.links).final_dom, '/html/body/script[2]').nodes)
        or
          any(regex.iextract(html.xpath(ml.link_analysis(body.links).final_dom, '/html/body/script[2]').nodes.raw))
            and
              or
                any(ml.nlu_classifier(regex.iextract(html.xpath(ml.link_analysis(body.links).final_dom, '/html/body/script[2]').nodes.raw).named_groups['display_text']).intents)
                  ml.nlu_classifier(regex.iextract(html.xpath(ml.link_analysis(body.links).final_dom, '/html/body/script[2]').nodes.raw).named_groups['display_text']).intents.name eq "cred_theft"
                ml.link_analysis func_call "ml.link_analysis(strings.parse_url(regex.iextract(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[].raw)[].named_groups['url'])).credphish.disposition == phishing"
                strings.parse_url func_call "strings.parse_url(regex.iextract(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[].raw)[].named_groups['url']).domain.domain in free_subdomain_hosts"
                strings.parse_url func_call "strings.parse_url(regex.iextract(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[].raw)[].named_groups['url']).domain.root_domain in free_subdomain_hosts"
                strings.parse_url func_call "strings.parse_url(regex.iextract(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[].raw)[].named_groups['url']).domain.tld in suspicious_tlds"
              strings.parse_url func_call "strings.parse_url(regex.iextract(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[].raw)[].named_groups['url']).domain.root_domain not in (canva.com, sentry.io, googleusercontent.com)"
          any(file.explode(html.xpath(ml.link_analysis(body.links).final_dom, '/html/body/script[2]').nodes))
            any(filter(file.explode(html.xpath(ml.link_analysis(body.links).final_dom, '/html/body/script[2]').nodes).scan.url.urls))
              or
                ml.link_analysis func_call "ml.link_analysis(filter(file.explode(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[])[].scan.url.urls)[]).credphish.disposition == phishing"
                 macro "filter(file.explode(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[])[].scan.url.urls)[].domain.domain in free_subdomain_hosts"
                 macro "filter(file.explode(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[])[].scan.url.urls)[].domain.root_domain in free_subdomain_hosts"
                 macro "filter(file.explode(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[])[].scan.url.urls)[].domain.tld in suspicious_tlds"
      body.links.href_url.domain.root_domain eq "canva.com"
      body.links.href_url.path starts_with "/design/"
  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"

Canva infrastructure abuse

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

A fraudulent invoice/receipt found in the body of the message sent by exploiting Canva's design sharing feature.

Threat classification

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

CategoryValues
Attack typesBEC/Fraud, Callback Phishing
Tactics and techniquesSocial engineering, Impersonation: Brand, Impersonation: Employee, Free email provider

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • body.html
  • sender.email
  • type

Rule body

type.inbound
and length(attachments) <= 1
and sender.email.domain.root_domain in ("canva.com")
and (
  strings.ilike(body.html.display_text, "*take a look at the design*")
  or regex.icontains(body.current_thread.text, 'invited.{0,10}(?:class|school)')
  or strings.icontains(body.current_thread.text, "no longer have access")
)
and (
  (
    // icontains a phone number
    (
      regex.icontains(strings.replace_confusables(body.current_thread.text),
                      '.*\+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4}.*\n'
      )
      or regex.icontains(strings.replace_confusables(body.current_thread.text),
                         '.*\+[ilo0-9]{1,3}[ilo0-9]{10}.*\n'
      )
      // +12028001238
      or regex.icontains(strings.replace_confusables(body.current_thread.text),
                         '.*[ilo0-9]{3}\.[ilo0-9]{3}\.[ilo0-9]{4}.*\n'
      )
      // 202-800-1238
      or regex.icontains(strings.replace_confusables(body.current_thread.text),
                         '.*[ilo0-9]{3}-[ilo0-9]{3}-[ilo0-9]{4}.*\n'
      )
      // (202) 800-1238
      or regex.icontains(strings.replace_confusables(body.current_thread.text),
                         '.*\([ilo0-9]{3}\)[\s-]+[ilo0-9]{3}[\s-]+[ilo0-9]{4}.*\n'
      )
      // (202)-800-1238
      or regex.icontains(strings.replace_confusables(body.current_thread.text),
                         '.*\([ilo0-9]{3}\)-[ilo0-9]{3}-[ilo0-9]{4}.*\n'
      )
      or ( // 8123456789
        regex.icontains(strings.replace_confusables(body.current_thread.text),
                        '.*8[ilo0-9]{9}.*\n'
        )
        and regex.icontains(strings.replace_confusables(body.current_thread.text
                            ),
                            '\+[1l]'
        )
      )
    )
    and (
      (
        4 of (
          strings.ilike(body.html.inner_text, '*you did not*'),
          strings.ilike(body.html.inner_text, '*is not for*'),
          strings.ilike(body.html.inner_text, '*done by you*'),
          regex.icontains(body.html.inner_text, "didn\'t ma[kd]e this"),
          strings.ilike(body.html.inner_text, '*Fruad Alert*'),
          strings.ilike(body.html.inner_text, '*Fraud Alert*'),
          strings.ilike(body.html.inner_text, '*fraudulent*'),
          strings.ilike(body.html.inner_text, '*using your PayPal*'),
          strings.ilike(body.html.inner_text, '*subscription*'),
          strings.ilike(body.html.inner_text, '*antivirus*'),
          strings.ilike(body.html.inner_text, '*order*'),
          strings.ilike(body.html.inner_text, '*support*'),
          strings.ilike(body.html.inner_text, '*sincerely apologize*'),
          strings.ilike(body.html.inner_text, '*receipt*'),
          strings.ilike(body.html.inner_text, '*invoice*'),
          strings.ilike(body.html.inner_text, '*Purchase*'),
          strings.ilike(body.html.inner_text, '*transaction*'),
          strings.ilike(body.html.inner_text, '*Market*Value*'),
          strings.ilike(body.html.inner_text, '*BTC*'),
          strings.ilike(body.html.inner_text, '*call*'),
          strings.ilike(body.html.inner_text, '*get in touch with our*'),
          strings.ilike(body.html.inner_text, '*quickly inform*'),
          strings.ilike(body.html.inner_text, '*quickly reach *'),
          strings.ilike(body.html.inner_text, '*detected unusual transactions*'),
          strings.ilike(body.html.inner_text, '*without your authorization*'),
          strings.ilike(body.html.inner_text, '*cancel*'),
          strings.ilike(body.html.inner_text, '*renew*'),
          strings.ilike(body.html.inner_text, '*refund*'),
          strings.ilike(body.html.inner_text, '*+1*'),
          regex.icontains(body.html.inner_text, 'help.{0,3}desk'),
          strings.ilike(body.html.inner_text, '* your funds*'),
          strings.ilike(body.html.inner_text, '* your checking*'),
          strings.ilike(body.html.inner_text, '* your saving*'),
          strings.ilike(body.html.inner_text, '*transfer*'),
          strings.ilike(body.html.inner_text, '*secure your account*'),
          strings.ilike(body.html.inner_text, '*recover your*'),
          strings.ilike(body.html.inner_text, '*unusual activity*'),
          strings.ilike(body.html.inner_text, '*suspicious transaction*'),
          strings.ilike(body.html.inner_text, '*transaction history*'),
          strings.ilike(body.html.inner_text, '*please ignore this*'),
          strings.ilike(body.html.inner_text, '*report activity*'),
        )
      )
      or regex.icontains(body.current_thread.text,
                         'note from.{0,50}(?:call|reach|contact|paypal)'
      )
      or any(ml.nlu_classifier(body.current_thread.text).intents,
             .name == "callback_scam"
      )
      or (
        // Unicode confusables words obfuscated in note
        regex.icontains(body.html.inner_text,
                        '\+𝟭|𝗽𝗮𝘆𝗺𝗲𝗻𝘁|𝗛𝗲𝗹𝗽 𝗗𝗲𝘀𝗸|𝗿𝗲𝗳𝘂𝗻𝗱|𝗮𝗻𝘁𝗶𝘃𝗶𝗿𝘂𝘀|𝗰𝗮𝗹𝗹|𝗰𝗮𝗻𝗰𝗲𝗹'
        )
      )
      or strings.ilike(body.html.inner_text, '*kindly*')
    )
  )
)

Detection logic

Scope: inbound message.

A fraudulent invoice/receipt found in the body of the message sent by exploiting Canva's design sharing feature.

  1. inbound message
  2. length(attachments) ≤ 1
  3. sender.email.domain.root_domain in ('canva.com')
  4. any of:
    • body.html.display_text matches '*take a look at the design*'
    • body.current_thread.text matches 'invited.{0,10}(?:class|school)'
    • body.current_thread.text contains 'no longer have access'
  5. all of:
    • any of:
      • strings.replace_confusables(body.current_thread.text) matches '.*\\+?([ilo0-9]{1}.)?\\(?[ilo0-9]{3}?\\)?.[ilo0-9]{3}.?[ilo0-9]{4}.*\\n'
      • strings.replace_confusables(body.current_thread.text) matches '.*\\+[ilo0-9]{1,3}[ilo0-9]{10}.*\\n'
      • strings.replace_confusables(body.current_thread.text) matches '.*[ilo0-9]{3}\\.[ilo0-9]{3}\\.[ilo0-9]{4}.*\\n'
      • strings.replace_confusables(body.current_thread.text) matches '.*[ilo0-9]{3}-[ilo0-9]{3}-[ilo0-9]{4}.*\\n'
      • strings.replace_confusables(body.current_thread.text) matches '.*\\([ilo0-9]{3}\\)[\\s-]+[ilo0-9]{3}[\\s-]+[ilo0-9]{4}.*\\n'
      • strings.replace_confusables(body.current_thread.text) matches '.*\\([ilo0-9]{3}\\)-[ilo0-9]{3}-[ilo0-9]{4}.*\\n'
      • all of:
        • strings.replace_confusables(body.current_thread.text) matches '.*8[ilo0-9]{9}.*\\n'
        • strings.replace_confusables(body.current_thread.text) matches '\\+[1l]'
    • any of:
      • at least 4 of 41: body.html.inner_text matches any of 41 patterns
        • *you did not*
        • *is not for*
        • *done by you*
        • didn\'t ma[kd]e this
        • *Fruad Alert*
        • *Fraud Alert*
        • *fraudulent*
        • *using your PayPal*
        • *subscription*
        • *antivirus*
        • *order*
        • *support*
        • *sincerely apologize*
        • *receipt*
        • *invoice*
        • *Purchase*
        • *transaction*
        • *Market*Value*
        • *BTC*
        • *call*
        • *get in touch with our*
        • *quickly inform*
        • *quickly reach *
        • *detected unusual transactions*
        • *without your authorization*
        • *cancel*
        • *renew*
        • *refund*
        • *+1*
        • help.{0,3}desk
        • * your funds*
        • * your checking*
        • * your saving*
        • *transfer*
        • *secure your account*
        • *recover your*
        • *unusual activity*
        • *suspicious transaction*
        • *transaction history*
        • *please ignore this*
        • *report activity*
      • body.current_thread.text matches 'note from.{0,50}(?:call|reach|contact|paypal)'
      • any of ml.nlu_classifier(body.current_thread.text).intents where:
        • .name is 'callback_scam'
      • body.html.inner_text matches '\\+𝟭|𝗽𝗮𝘆𝗺𝗲𝗻𝘁|𝗛𝗲𝗹𝗽 𝗗𝗲𝘀𝗸|𝗿𝗲𝗳𝘂𝗻𝗱|𝗮𝗻𝘁𝗶𝘃𝗶𝗿𝘂𝘀|𝗰𝗮𝗹𝗹|𝗰𝗮𝗻𝗰𝗲𝗹'
      • body.html.inner_text matches '*kindly*'

Inspects: body.current_thread.text, body.html.display_text, body.html.inner_text, sender.email.domain.root_domain, type.inbound. Sensors: ml.nlu_classifier, regex.icontains, strings.icontains, strings.ilike, strings.replace_confusables.

Indicators matched (57)

FieldMatchValue
sender.email.domain.root_domainmembercanva.com
strings.ilikesubstring*take a look at the design*
regex.icontainsregexinvited.{0,10}(?:class|school)
strings.icontainssubstringno longer have access
regex.icontainsregex.*\+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4}.*\n
regex.icontainsregex.*\+[ilo0-9]{1,3}[ilo0-9]{10}.*\n
regex.icontainsregex.*[ilo0-9]{3}\.[ilo0-9]{3}\.[ilo0-9]{4}.*\n
regex.icontainsregex.*[ilo0-9]{3}-[ilo0-9]{3}-[ilo0-9]{4}.*\n
regex.icontainsregex.*\([ilo0-9]{3}\)[\s-]+[ilo0-9]{3}[\s-]+[ilo0-9]{4}.*\n
regex.icontainsregex.*\([ilo0-9]{3}\)-[ilo0-9]{3}-[ilo0-9]{4}.*\n
regex.icontainsregex.*8[ilo0-9]{9}.*\n
regex.icontainsregex\+[1l]
45 more
strings.ilikesubstring*you did not*
strings.ilikesubstring*is not for*
strings.ilikesubstring*done by you*
regex.icontainsregexdidn\'t ma[kd]e this
strings.ilikesubstring*Fruad Alert*
strings.ilikesubstring*Fraud Alert*
strings.ilikesubstring*fraudulent*
strings.ilikesubstring*using your PayPal*
strings.ilikesubstring*subscription*
strings.ilikesubstring*antivirus*
strings.ilikesubstring*order*
strings.ilikesubstring*support*
strings.ilikesubstring*sincerely apologize*
strings.ilikesubstring*receipt*
strings.ilikesubstring*invoice*
strings.ilikesubstring*Purchase*
strings.ilikesubstring*transaction*
strings.ilikesubstring*Market*Value*
strings.ilikesubstring*BTC*
strings.ilikesubstring*call*
strings.ilikesubstring*get in touch with our*
strings.ilikesubstring*quickly inform*
strings.ilikesubstring*quickly reach *
strings.ilikesubstring*detected unusual transactions*
strings.ilikesubstring*without your authorization*
strings.ilikesubstring*cancel*
strings.ilikesubstring*renew*
strings.ilikesubstring*refund*
strings.ilikesubstring*+1*
regex.icontainsregexhelp.{0,3}desk
strings.ilikesubstring* your funds*
strings.ilikesubstring* your checking*
strings.ilikesubstring* your saving*
strings.ilikesubstring*transfer*
strings.ilikesubstring*secure your account*
strings.ilikesubstring*recover your*
strings.ilikesubstring*unusual activity*
strings.ilikesubstring*suspicious transaction*
strings.ilikesubstring*transaction history*
strings.ilikesubstring*please ignore this*
strings.ilikesubstring*report activity*
regex.icontainsregexnote from.{0,50}(?:call|reach|contact|paypal)
ml.nlu_classifier(body.current_thread.text).intents[].nameequalscallback_scam
regex.icontainsregex\+𝟭|𝗽𝗮𝘆𝗺𝗲𝗻𝘁|𝗛𝗲𝗹𝗽 𝗗𝗲𝘀𝗸|𝗿𝗲𝗳𝘂𝗻𝗱|𝗮𝗻𝘁𝗶𝘃𝗶𝗿𝘂𝘀|𝗰𝗮𝗹𝗹|𝗰𝗮𝗻𝗰𝗲𝗹
strings.ilikesubstring*kindly*

Stages and Predicates

Stage 1: mql_rule

and
  or
    any(ml.nlu_classifier(body.current_thread.text).intents)
      ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
    body.current_thread.text regex_match "note from.{0,50}(?:call|reach|contact|paypal)"
    body.html.inner_text match " your checking"
    body.html.inner_text match " your funds"
    body.html.inner_text match " your saving"
    body.html.inner_text match "+1"
    body.html.inner_text match "BTC"
    body.html.inner_text match "Fraud Alert"
    body.html.inner_text match "Fruad Alert"
    body.html.inner_text match "Purchase"
    body.html.inner_text match "antivirus"
    body.html.inner_text match "call"
    body.html.inner_text match "cancel"
    body.html.inner_text match "detected unusual transactions"
    body.html.inner_text match "done by you"
    body.html.inner_text match "fraudulent"
    body.html.inner_text match "get in touch with our"
    body.html.inner_text match "invoice"
    body.html.inner_text match "is not for"
    body.html.inner_text match "kindly"
    body.html.inner_text match "order"
    body.html.inner_text match "please ignore this"
    body.html.inner_text match "quickly inform"
    body.html.inner_text match "quickly reach "
    body.html.inner_text match "receipt"
    body.html.inner_text match "recover your"
    body.html.inner_text match "refund"
    body.html.inner_text match "renew"
    body.html.inner_text match "report activity"
    body.html.inner_text match "secure your account"
    body.html.inner_text match "sincerely apologize"
    body.html.inner_text match "subscription"
    body.html.inner_text match "support"
    body.html.inner_text match "suspicious transaction"
    body.html.inner_text match "transaction history"
    body.html.inner_text match "transaction"
    body.html.inner_text match "transfer"
    body.html.inner_text match "unusual activity"
    body.html.inner_text match "using your PayPal"
    body.html.inner_text match "without your authorization"
    body.html.inner_text match "you did not"
    body.html.inner_text regex_match "\\+𝟭|𝗽𝗮𝘆𝗺𝗲𝗻𝘁|𝗛𝗲𝗹𝗽 𝗗𝗲𝘀𝗸|𝗿𝗲𝗳𝘂𝗻𝗱|𝗮𝗻𝘁𝗶𝘃𝗶𝗿𝘂𝘀|𝗰𝗮𝗹𝗹|𝗰𝗮𝗻𝗰𝗲𝗹"
    body.html.inner_text regex_match "didn\\'t ma[kd]e this"
    body.html.inner_text regex_match "help.{0,3}desk"
    body.html.inner_text wildcard "*Market*Value*"
  or
    and
      strings.replace_confusables(body.current_thread.text) regex_match ".*8[ilo0-9]{9}.*\\n"
      strings.replace_confusables(body.current_thread.text) regex_match "\\+[1l]"
    strings.replace_confusables(body.current_thread.text) regex_match ".*[ilo0-9]{3}-[ilo0-9]{3}-[ilo0-9]{4}.*\\n"
    strings.replace_confusables(body.current_thread.text) regex_match ".*[ilo0-9]{3}\\.[ilo0-9]{3}\\.[ilo0-9]{4}.*\\n"
    strings.replace_confusables(body.current_thread.text) regex_match ".*\\([ilo0-9]{3}\\)-[ilo0-9]{3}-[ilo0-9]{4}.*\\n"
    strings.replace_confusables(body.current_thread.text) regex_match ".*\\([ilo0-9]{3}\\)[\\s-]+[ilo0-9]{3}[\\s-]+[ilo0-9]{4}.*\\n"
    strings.replace_confusables(body.current_thread.text) regex_match ".*\\+?([ilo0-9]{1}.)?\\(?[ilo0-9]{3}?\\)?.[ilo0-9]{3}.?[ilo0-9]{4}.*\\n"
    strings.replace_confusables(body.current_thread.text) regex_match ".*\\+[ilo0-9]{1,3}[ilo0-9]{10}.*\\n"
  or
    body.current_thread.text contains "no longer have access"
    body.current_thread.text regex_match "invited.{0,10}(?:class|school)"
    body.html.display_text match "take a look at the design"
  attachments length_compare "1"
  sender.email.domain.root_domain eq "canva.com"
  type.inbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
body.current_thread.textcontains
  • no longer have access
field:"body.current_thread.text" kind:contains value:"no longer have access"
body.current_thread.textregex_match
  • invited.{0,10}(?:class|school)
  • note from.{0,50}(?:call|reach|contact|paypal)
field:"body.current_thread.text" kind:regex_match
body.html.display_textwildcard
  • *take a look at the design*
field:"body.html.display_text" kind:wildcard value:"*take a look at the design*"
body.html.inner_textregex_match
    • +𝟭
    • 𝗽𝗮𝘆𝗺𝗲𝗻𝘁
    • 𝗛𝗲𝗹𝗽 𝗗𝗲𝘀𝗸
    • 𝗿𝗲𝗳𝘂𝗻𝗱
    • 𝗮𝗻𝘁𝗶𝘃𝗶𝗿𝘂𝘀
    • 𝗰𝗮𝗹𝗹
    • 𝗰𝗮𝗻𝗰𝗲𝗹
  • didn\'t ma[kd]e this
  • help.{0,3}desk
field:"body.html.inner_text" kind:regex_match
body.html.inner_textwildcard
  • * your checking*
  • * your funds*
  • * your saving*
  • *+1*
  • *BTC*
  • *Fraud Alert*
  • *Fruad Alert*
  • *Market*Value*
  • *Purchase*
  • *antivirus*
  • *call*
  • *cancel*
  • *detected unusual transactions*
  • *done by you*
  • *fraudulent*
  • *get in touch with our*
  • *invoice*
  • *is not for*
  • *kindly*
  • *order*
  • *please ignore this*
  • *quickly inform*
  • *quickly reach *
  • *receipt*
  • *recover your*
  • *refund*
  • *renew*
  • *report activity*
  • *secure your account*
  • *sincerely apologize*
  • *subscription*
  • *support*
  • *suspicious transaction*
  • *transaction history*
  • *transaction*
  • *transfer*
  • *unusual activity*
  • *using your PayPal*
  • *without your authorization*
  • *you did not*
field:"body.html.inner_text" kind:wildcard
sender.email.domain.root_domainin
  • canva.com
field:"sender.email.domain.root_domain" kind:in value:"canva.com"
strings.replace_confusables(body.current_thread.text)regex_match
  • .*8[ilo0-9]{9}.*\n
  • .*[ilo0-9]{3}-[ilo0-9]{3}-[ilo0-9]{4}.*\n
  • .*[ilo0-9]{3}.[ilo0-9]{3}.[ilo0-9]{4}.*\n
  • .*([ilo0-9]{3})-[ilo0-9]{3}-[ilo0-9]{4}.*\n
  • .*([ilo0-9]{3})[\s-]+[ilo0-9]{3}[\s-]+[ilo0-9]{4}.*\n
  • .*+?([ilo0-9]{1}.)?(?[ilo0-9]{3}?)?.[ilo0-9]{3}.?[ilo0-9]{4}.*\n
  • .*+[ilo0-9]{1,3}[ilo0-9]{10}.*\n
  • +[1l]
field:"strings.replace_confusables(body.current_thread.text)" kind:regex_match
type.inboundeq
  • true transforms: boolean
field:"type.inbound" kind:eq value:"true"