EXPLORE
← Back to Explore
sublimehighRule

Brand impersonation: Adobe (QR code)

Detects messages using Adobe image based lures, referencing or including a QR code from an Unsolicited sender. These messages often lead users to phishing sites or initiate unwanted downloads.

MITRE ATT&CK

initial-access

Detection Query

type.inbound
and (
  any(attachments,
      (.file_type in $file_types_images or .file_type == "pdf")
      and (
        any(ml.logo_detect(.).brands,
            .name == "Adobe" and .confidence in ("medium", "high")
        )
        or any(ml.logo_detect(file.message_screenshot()).brands,
               .name == "Adobe"
        )
        or any(file.explode(.),
               any(.scan.strings.strings,
                   regex.icontains(., "adobe (acrobat|sign)")
                   // negate PDF data, like "xmp:CreatorTool>Adobe Acrobat Pro (64-bit) 24.4.20272</xmp:CreatorTool>"
                   and not regex.icontains(.,
                                           "(creatortool|producer|creator).{1,5}adobe acrobat"
                   )
               )
        )
      )
  )
  or any(attachments,
         .file_extension in $file_extensions_macros
         and any(file.explode(.), .depth == 0 and .scan.docx.image_count > 0)
         and any(file.explode(.),
                 any(.scan.strings.strings, strings.ilike(., "*adobe*"))
         )
  )
)
and any(attachments,
        (
          .file_type in $file_types_images
          or .file_type == "pdf"
          or .file_type in $file_extensions_macros
        )
        and (
          any(file.explode(.),
              regex.icontains(.scan.ocr.raw, 'scan|camera')
              and regex.icontains(.scan.ocr.raw, '\bQR\b|Q\.R\.|barcode')
          )
          or (
            any(file.explode(.),
                .scan.qr.type == "url"
                // recipient email address is present in the URL, a common tactic used in credential phishing attacks
                and (
                  any(recipients.to,
                      (
                        (
                          .email.domain.valid
                          and (
                            strings.icontains(..scan.qr.data, .email.email)
                            or any(strings.scan_base64(..scan.qr.data,
                                                       format="url"
                                   ),
                                   strings.icontains(., ..email.email)
                            )
                          )
                        )
                        or strings.icontains(.display_name, "undisclosed")
                      )
                  )

                  // the recipients sld is in the senders display name
                  or any(recipients.to,
                         strings.icontains(sender.display_name,
                                           .email.domain.sld
                         )
                  )

                  // the recipient local is in the body
                  or any(recipients.to,
                         strings.icontains(body.current_thread.text,
                                           .email.local_part
                         )
                  )

                  // or the body is null
                  or body.current_thread.text is null
                  or body.current_thread.text == ""

                  // or the subject contains authentication/urgency verbiage
                  or regex.contains(subject.subject,
                                    "(Authenticat(e|or|ion)|2fa|Multi.Factor|(qr|bar).code|action.require|alert|Att(n|ention):)"
                  )

                  // high confidence cred theft in body
                  or any(ml.nlu_classifier(body.current_thread.text).intents,
                         .name == "cred_theft" and .confidence in ("high")
                  )
                )
            )
          )
        )
)
and (
  not sender.email.domain.root_domain in (
    "acrobat.com",
    "adobecc.com",
    "adobecces.com",
    "adobeccstatic.com",
    "adobe.com",
    "adobeexchange.com",
    "adobe-identity.com",
    "adobe.io",
    "adobejanus.com",
    "adobelogin.com",
    "adobe.net",
    "adobeprojectm.com",
    "adoberesources.net",
    "adobesc.com",
    "adobesign.com",
    "adobestock.com",
    "createjs.com",
    "licensingstack.com",
    "myportfolio.com",
    "photoshop.com",
    "typekit.com",
    "typekit.net"
  )
  or not any(headers.hops,
             .authentication_results.compauth.verdict is not null
             and .authentication_results.compauth.verdict == "pass"
  )
)

// negate highly trusted sender domains unless they fail DMARC authentication
and (
  (
    sender.email.domain.root_domain in $high_trust_sender_root_domains
    and not headers.auth_summary.dmarc.pass
  )
  or sender.email.domain.root_domain not in $high_trust_sender_root_domains
)

Data Sources

Email MessagesEmail HeadersEmail Attachments

Platforms

email
Raw Content
name: "Brand impersonation: Adobe (QR code)"
description: "Detects messages using Adobe image based lures, referencing or including a QR code from an Unsolicited sender. These messages often lead users to phishing sites or initiate unwanted downloads."
type: "rule"
severity: "high"
source: |
  type.inbound
  and (
    any(attachments,
        (.file_type in $file_types_images or .file_type == "pdf")
        and (
          any(ml.logo_detect(.).brands,
              .name == "Adobe" and .confidence in ("medium", "high")
          )
          or any(ml.logo_detect(file.message_screenshot()).brands,
                 .name == "Adobe"
          )
          or any(file.explode(.),
                 any(.scan.strings.strings,
                     regex.icontains(., "adobe (acrobat|sign)")
                     // negate PDF data, like "xmp:CreatorTool>Adobe Acrobat Pro (64-bit) 24.4.20272</xmp:CreatorTool>"
                     and not regex.icontains(.,
                                             "(creatortool|producer|creator).{1,5}adobe acrobat"
                     )
                 )
          )
        )
    )
    or any(attachments,
           .file_extension in $file_extensions_macros
           and any(file.explode(.), .depth == 0 and .scan.docx.image_count > 0)
           and any(file.explode(.),
                   any(.scan.strings.strings, strings.ilike(., "*adobe*"))
           )
    )
  )
  and any(attachments,
          (
            .file_type in $file_types_images
            or .file_type == "pdf"
            or .file_type in $file_extensions_macros
          )
          and (
            any(file.explode(.),
                regex.icontains(.scan.ocr.raw, 'scan|camera')
                and regex.icontains(.scan.ocr.raw, '\bQR\b|Q\.R\.|barcode')
            )
            or (
              any(file.explode(.),
                  .scan.qr.type == "url"
                  // recipient email address is present in the URL, a common tactic used in credential phishing attacks
                  and (
                    any(recipients.to,
                        (
                          (
                            .email.domain.valid
                            and (
                              strings.icontains(..scan.qr.data, .email.email)
                              or any(strings.scan_base64(..scan.qr.data,
                                                         format="url"
                                     ),
                                     strings.icontains(., ..email.email)
                              )
                            )
                          )
                          or strings.icontains(.display_name, "undisclosed")
                        )
                    )
  
                    // the recipients sld is in the senders display name
                    or any(recipients.to,
                           strings.icontains(sender.display_name,
                                             .email.domain.sld
                           )
                    )
  
                    // the recipient local is in the body
                    or any(recipients.to,
                           strings.icontains(body.current_thread.text,
                                             .email.local_part
                           )
                    )
  
                    // or the body is null
                    or body.current_thread.text is null
                    or body.current_thread.text == ""
  
                    // or the subject contains authentication/urgency verbiage
                    or regex.contains(subject.subject,
                                      "(Authenticat(e|or|ion)|2fa|Multi.Factor|(qr|bar).code|action.require|alert|Att(n|ention):)"
                    )
  
                    // high confidence cred theft in body
                    or any(ml.nlu_classifier(body.current_thread.text).intents,
                           .name == "cred_theft" and .confidence in ("high")
                    )
                  )
              )
            )
          )
  )
  and (
    not sender.email.domain.root_domain in (
      "acrobat.com",
      "adobecc.com",
      "adobecces.com",
      "adobeccstatic.com",
      "adobe.com",
      "adobeexchange.com",
      "adobe-identity.com",
      "adobe.io",
      "adobejanus.com",
      "adobelogin.com",
      "adobe.net",
      "adobeprojectm.com",
      "adoberesources.net",
      "adobesc.com",
      "adobesign.com",
      "adobestock.com",
      "createjs.com",
      "licensingstack.com",
      "myportfolio.com",
      "photoshop.com",
      "typekit.com",
      "typekit.net"
    )
    or not any(headers.hops,
               .authentication_results.compauth.verdict is not null
               and .authentication_results.compauth.verdict == "pass"
    )
  )
  
  // negate highly trusted sender domains unless they fail DMARC authentication
  and (
    (
      sender.email.domain.root_domain in $high_trust_sender_root_domains
      and not headers.auth_summary.dmarc.pass
    )
    or sender.email.domain.root_domain not in $high_trust_sender_root_domains
  )
attack_types:
  - "Credential Phishing"
tactics_and_techniques:
  - "Impersonation: Brand"
  - "PDF"
  - "QR code"
detection_methods:
  - "Computer Vision"
  - "Header analysis"
  - "QR code analysis"
  - "Sender analysis"
id: "2fc36c6d-86a2-5b12-b5a4-5d8744858381"