Detection rules › Sublime MQL

Brand impersonation: Google fake sign-in warning

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

Detects messages with image attachments containing fake Google sign-in warnings with no links leading to Google sites.

Threat classification

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

CategoryValues
Attack typesCredential Phishing
Tactics and techniquesImpersonation: Brand, Social engineering

Event coverage

Rule body MQL

type.inbound
and length(body.links) > 0

// Google Logo in Attachment
and any(attachments,
        .file_type in $file_types_images
        and any(ml.logo_detect(.).brands, .name in ("Google"))
)
and any(attachments,
        .file_type in $file_types_images
        and (
          any(file.explode(.),
              // Fake activity warning
              3 of (
                strings.ilike(.scan.ocr.raw, "*new sign-in*"),
                strings.ilike(.scan.ocr.raw, "*google account*"),
                strings.ilike(.scan.ocr.raw, "*secure your account*"),
                strings.ilike(.scan.ocr.raw, "*check activity*"),
              )
          )
        )
)

// legitimate sign-in warnings contains links to google, gmail or googleapis.com
and (
  not all(body.links,
          .href_url.domain.root_domain in (
            "google.com",
            "gmail.com",
            "googleapis.com"
          )
          or .href_url.domain.root_domain is null
  )
)
and sender.email.domain.root_domain not in $org_domains
and sender.email.domain.root_domain != "google.com"

Detection logic

Scope: inbound message.

Detects messages with image attachments containing fake Google sign-in warnings with no links leading to Google sites.

  1. inbound message
  2. length(body.links) > 0
  3. any of attachments where all hold:
    • .file_type in $file_types_images
    • any of ml.logo_detect(.).brands where:
      • .name in ('Google')
  4. any of attachments where all hold:
    • .file_type in $file_types_images
    • any of file.explode(.) where:
      • at least 3 of 4: .scan.ocr.raw matches any of 4 patterns
        • *new sign-in*
        • *google account*
        • *secure your account*
        • *check activity*
  5. not:
    • all of body.links where any holds:
      • .href_url.domain.root_domain in ('google.com', 'gmail.com', 'googleapis.com')
      • .href_url.domain.root_domain is missing
  6. sender.email.domain.root_domain not in $org_domains
  7. sender.email.domain.root_domain is not 'google.com'

Inspects: attachments[].file_type, body.links, body.links[].href_url.domain.root_domain, sender.email.domain.root_domain, type.inbound. Sensors: file.explode, ml.logo_detect, strings.ilike. Reference lists: $file_types_images, $org_domains.

Indicators matched (8)

FieldMatchValue
ml.logo_detect(attachments[]).brands[].namememberGoogle
strings.ilikesubstring*new sign-in*
strings.ilikesubstring*google account*
strings.ilikesubstring*secure your account*
strings.ilikesubstring*check activity*
body.links[].href_url.domain.root_domainmembergoogle.com
body.links[].href_url.domain.root_domainmembergmail.com
body.links[].href_url.domain.root_domainmembergoogleapis.com