Detection rules › Sublime MQL

ClickFunnels link infrastructure abuse

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

Email contains a ClickFunnels (mass mailing platform) tracking link but does not originate from ClickFunnels sending infrastructure. The myclickfunnels.com domain has been abused by threat actors to attempt credential phishing.

Threat classification

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

CategoryValues
Attack typesCredential Phishing
Tactics and techniquesFree email provider, Free subdomain host, Social engineering

Event coverage

Rule body MQL

type.inbound
and (
  (
    length(body.links) < 15
    and any(body.links, .href_url.domain.root_domain == "myclickfunnels.com")
  )
  or (
    length(attachments) <= 3
    and (
      any(attachments,
          (.file_type in $file_types_images or .file_type == "pdf")
          and any(file.explode(.),
                  .scan.qr.type is not null
                  and .scan.qr.url.domain.root_domain == "myclickfunnels.com"
                  // exclude images taken with mobile cameras and screenshots from android
                  and not any(.scan.exiftool.fields,
                              .key == "Model"
                              or (
                                .key == "Software"
                                and strings.starts_with(.value, "Android")
                              )
                  )
                  // exclude images taken with mobile cameras and screenshots from Apple
                  and not any(.scan.exiftool.fields,
                              .key == "DeviceManufacturer"
                              and .value == "Apple Computer Inc."
                  )
          )
      )
      or (
        length(attachments) == 0
        //
        // This rule makes use of a beta feature and is subject to change without notice
        // using the beta feature in custom rules is not suggested until it has been formally released
        //
        and beta.parse_exif(file.message_screenshot()).image_height < 2000
        and beta.parse_exif(file.message_screenshot()).image_width < 2000
        and any(beta.scan_qr(file.message_screenshot()).items,
                .type is not null
                and .url.domain.root_domain == "myclickfunnels.com"
        )
      )
    )
  )
  or (
    length(attachments) <= 3
    and (
      any(attachments,
          (
            .file_type in ("pdf")
            or .file_extension in ("pdf", "eml")
            or .file_extension in $file_extensions_macros
            or (
              .content_type in ("message/rfc822") or .file_extension in ('eml')
            )
          )
          and any(file.explode(.),
                  any(.scan.url.urls,
                      .domain.root_domain == "myclickfunnels.com"
                  )
          )
      )
    )
  )
)
and not (
  any(headers.domains, strings.ends_with(.domain, "mailer.myclickfunnels.com"))
  or (
    (
      any(headers.hops,
          .index == 0
          and any(.authentication_results.dkim_details,
                  .domain == "mailer.myclickfunnels.com"
          )
      )
    )
    and any(distinct(headers.hops, .authentication_results.dmarc is not null),
            .index == 0
            and strings.ilike(.authentication_results.dmarc, "*pass")
    )
  )
)
// negating legit replies
and not (
  (
    strings.istarts_with(subject.subject, "RE:")
    or strings.istarts_with(subject.subject, "FW:")
    or strings.istarts_with(subject.subject, "FWD:")
    or strings.istarts_with(subject.subject, "Automatic reply:")
  )
  and (length(headers.references) > 0 and headers.in_reply_to is not null)
)
// negate highly trusted sender domains unless they fail DMARC authentication
and (
  (
    sender.email.domain.root_domain in $high_trust_sender_root_domains
    and (
      any(distinct(headers.hops, .authentication_results.dmarc is not null),
          strings.ilike(.authentication_results.dmarc, "*fail")
      )
    )
  )
  or sender.email.domain.root_domain not in $high_trust_sender_root_domains
)

Detection logic

Scope: inbound message.

Email contains a ClickFunnels (mass mailing platform) tracking link but does not originate from ClickFunnels sending infrastructure. The myclickfunnels.com domain has been abused by threat actors to attempt credential phishing.

  1. inbound message
  2. any of:
    • all of:
      • length(body.links) < 15
      • any of body.links where:
        • .href_url.domain.root_domain is 'myclickfunnels.com'
    • all of:
      • length(attachments) ≤ 3
      • any of:
        • any of attachments where all hold:
          • any of:
            • .file_type in $file_types_images
            • .file_type is 'pdf'
          • any of file.explode(.) where all hold:
            • .scan.qr.type is set
            • .scan.qr.url.domain.root_domain is 'myclickfunnels.com'
            • not:
              • any of .scan.exiftool.fields where any holds:
                • .key is 'Model'
                • all of:
                  • .key is 'Software'
                  • .value starts with 'Android'
            • not:
              • any of .scan.exiftool.fields where all hold:
                • .key is 'DeviceManufacturer'
                • .value is 'Apple Computer Inc.'
        • all of:
          • length(attachments) is 0
          • beta.parse_exif(file.message_screenshot()).image_height < 2000
          • beta.parse_exif(file.message_screenshot()).image_width < 2000
          • any of beta.scan_qr(file.message_screenshot()).items where all hold:
            • .type is set
            • .url.domain.root_domain is 'myclickfunnels.com'
    • all of:
      • length(attachments) ≤ 3
      • any of attachments where all hold:
        • any of:
          • .file_type in ('pdf')
          • .file_extension in ('pdf', 'eml')
          • .file_extension in $file_extensions_macros
          • any of:
            • .content_type in ('message/rfc822')
            • .file_extension in ('eml')
        • any of file.explode(.) where:
          • any of .scan.url.urls where:
            • .domain.root_domain is 'myclickfunnels.com'
  3. none of:
    • any of headers.domains where:
      • .domain ends with 'mailer.myclickfunnels.com'
    • all of:
      • any of headers.hops where all hold:
        • .index is 0
        • any of .authentication_results.dkim_details where:
          • .domain is 'mailer.myclickfunnels.com'
      • any of distinct(headers.hops) where all hold:
        • .index is 0
        • .authentication_results.dmarc matches '*pass'
  4. not:
    • all of:
      • subject.subject starts with any of 4 patterns
        • RE:
        • FW:
        • FWD:
        • Automatic reply:
      • all of:
        • length(headers.references) > 0
        • headers.in_reply_to is set
  5. any of:
    • all of:
      • sender.email.domain.root_domain in $high_trust_sender_root_domains
      • any of distinct(headers.hops) where:
        • .authentication_results.dmarc matches '*fail'
    • sender.email.domain.root_domain not in $high_trust_sender_root_domains

Inspects: attachments[].content_type, attachments[].file_extension, attachments[].file_type, body.links, body.links[].href_url.domain.root_domain, headers.domains, headers.domains[].domain, headers.hops, headers.hops[].authentication_results.dkim_details, headers.hops[].authentication_results.dkim_details[].domain, headers.hops[].authentication_results.dmarc, headers.hops[].index, headers.in_reply_to, headers.references, sender.email.domain.root_domain, subject.subject, type.inbound. Sensors: beta.parse_exif, beta.scan_qr, file.explode, file.message_screenshot, strings.ends_with, strings.ilike, strings.istarts_with, strings.starts_with. Reference lists: $file_extensions_macros, $file_types_images, $high_trust_sender_root_domains.

Indicators matched (22)

FieldMatchValue
body.links[].href_url.domain.root_domainequalsmyclickfunnels.com
attachments[].file_typeequalspdf
file.explode(attachments[])[].scan.qr.url.domain.root_domainequalsmyclickfunnels.com
file.explode(attachments[])[].scan.exiftool.fields[].keyequalsModel
file.explode(attachments[])[].scan.exiftool.fields[].keyequalsSoftware
strings.starts_withprefixAndroid
file.explode(attachments[])[].scan.exiftool.fields[].keyequalsDeviceManufacturer
file.explode(attachments[])[].scan.exiftool.fields[].valueequalsApple Computer Inc.
beta.scan_qr(file.message_screenshot()).items[].url.domain.root_domainequalsmyclickfunnels.com
attachments[].file_typememberpdf
attachments[].file_extensionmemberpdf
attachments[].file_extensionmembereml
10 more
attachments[].content_typemembermessage/rfc822
file.explode(attachments[])[].scan.url.urls[].domain.root_domainequalsmyclickfunnels.com
strings.ends_withsuffixmailer.myclickfunnels.com
headers.hops[].authentication_results.dkim_details[].domainequalsmailer.myclickfunnels.com
strings.ilikesubstring*pass
strings.istarts_withprefixRE:
strings.istarts_withprefixFW:
strings.istarts_withprefixFWD:
strings.istarts_withprefixAutomatic reply:
strings.ilikesubstring*fail