Detection rules › Sublime MQL

Credential phishing: Engaging language and other indicators (untrusted sender)

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

Message contains various suspicious indicators as well as engaging language resembling credential theft from an untrusted sender.

Threat classification

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

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

Event coverage

Rule body MQL

type.inbound
and (
  regex.icontains(subject.subject,
                  "termination.*notice",
                  "38417",
                  ":completed",
                  "[il1]{2}mit.*ma[il1]{2} ?bo?x",
                  "[il][il][il]egai[ -]",
                  "[li][li][li]ega[li] attempt",
                  "[ng]-?[io]n .*block",
                  "[ng]-?[io]n .*cancel",
                  "[ng]-?[io]n .*deactiv",
                  "[ng]-?[io]n .*disabl",
                  "action.*required",
                  "abandon.*package",
                  "about.your.account",
                  "acc(ou)?n?t (is )?on ho[li]d",
                  "acc(ou)?n?t.*terminat",
                  "acc(oun)?t.*[il1]{2}mitation",
                  "access.*limitation",
                  "account (will be )?block",
                  "account.*de-?activat",
                  "account.*locked",
                  "account.*re-verification",
                  "account.*security",
                  "account.*suspension",
                  "account.has.expired",
                  "account.will.be.blocked",
                  "account v[il]o[li]at",
                  "activity.*acc(oun)?t",
                  "almost.full",
                  "app[li]e.[il]d",
                  "authenticate.*account",
                  "been.*suspend",
                  "crediential.*notif",
                  "clos.*of.*account.*processed",
                  "confirm.your.account",
                  "courier.*able",
                  "crediential.*notif",
                  "deactivation.*in.*progress",
                  "delivery.*attempt.*failed",
                  "disconnection.*notice",
                  "document.received",
                  "documented.*shared.*with.*you",
                  "dropbox.*document",
                  "e-?ma[il1]+ .{010}suspen",
                  "e-?ma[il1]{1} user",
                  "e-?ma[il1]{2} acc",
                  "e-?ma[il1]{2} preview",
                  "e-?ma[il1]{2}.*up.?grade",
                  "e.?ma[il1]{2}.*server",
                  "e.?ma[il1]{2}.*suspend",
                  "email.update",
                  "faxed you",
                  "fraud(ulent)?.*charge",
                  "from.helpdesk",
                  "fu[il1]{2}.*ma[il1]+[ -]?box",
                  "has.been.*suspended",
                  "has.been.limited",
                  "have.locked",
                  "he[li]p ?desk upgrade",
                  "heipdesk",
                  "i[il]iega[il]",
                  "ii[il]ega[il]",
                  "incoming e?mail",
                  "incoming.*fax",
                  "lock.*security",
                  "ma[il1]{1}[ -]?box.*quo",
                  "ma[il1]{2}[ -]?box.*fu[il1]",
                  "ma[il1]{2}box.*[il1]{2}mit",
                  "ma[il1]{2}box stor",
                  "mail on.?hold",
                  "mail.*box.*migration",
                  "mail.*de-?activat",
                  "mail.update.required",
                  "mails.*pending",
                  "messages.*pending",
                  "missed.*shipping.*notification",
                  "missed.shipment.notification",
                  "must.update.your.account",
                  "new [sl][io]g?[nig][ -]?in from",
                  "new voice ?-?mail",
                  "notifications.*pending",
                  "office.*3.*6.*5.*suspend",
                  "office365",
                  "on google docs with you",
                  "online doc",
                  "password.*compromised",
                  "(?:payroll|salary|bonus).*Distribution",
                  "periodic maintenance",
                  "potential(ly)? unauthorized",
                  "refund not approved",
                  "report",
                  "revised.*policy",
                  "scam",
                  "scanned.?invoice",
                  "secured?.update",
                  "security breach",
                  "securlty",
                  "signed.*delivery",
                  "status of your .{314}? ?delivery",
                  "susp[il1]+c[il1]+ous.*act[il1]+v[il1]+ty",
                  "suspicious.*sign.*[io]n",
                  "suspicious.activit",
                  "temporar(il)?y deactivate",
                  "temporar[il1]{2}y disab[li]ed",
                  "temporarily.*lock",
                  "un-?usua[li].activity",
                  "unable.*deliver",
                  "unauthorized.*activit",
                  "unauthorized.device",
                  "undelivered message",
                  "unread.*doc",
                  "unusual.activity",
                  "(?:unrecognized|Unusual|suspicious|unknown) (?:log|sign).?[io]n attempt",
                  "upgrade.*account",
                  "upgrade.notice",
                  "urgent message",
                  "urgent.verification",
                  "v[il1]o[li1]at[il1]on security",
                  "va[il1]{1}date.*ma[il1]{2}[ -]?box",
                  "verification ?-?require",
                  "verification( )?-?need",
                  "verify.your?.account",
                  "web ?-?ma[il1]{2}",
                  "web[ -]?ma[il1]{2}",
                  "will.be.suspended",
                  "your (customer )?account .as",
                  "your.office.365",
                  "your.online.access",
                  "de.activation",
                  "attn_task",
                  // https://github.com/sublime-security/static-files/blob/main/suspicious_subjects.txt
                  "account has been limited",
                  "action required",
                  "almost full",
                  "apd notifi cation",
                  "are you at your desk",
                  "are you available",
                  "attached file to docusign",
                  "banking is temporarily unavailable",
                  "bankofamerica",
                  "closing statement invoice",
                  "completed: docusign",
                  "de-activation of",
                  "delivery attempt",
                  "delivery stopped for shipment",
                  "detected suspicious",
                  "detected suspicious actvity",
                  "docu sign",
                  "document for you",
                  "document has been sent to you via docusign",
                  "document is ready for signature",
                  "docusign",
                  "encrypted message",
                  "failed delivery",
                  "fedex tracking",
                  "file was shared",
                  "freefax",
                  "fwd: due invoice paid",
                  "has shared",
                  "inbox is full",
                  "invitation to comment",
                  "invitation to edit",
                  "invoice due",
                  "left you a message",
                  "message from",
                  "new message",
                  "new voicemail",
                  "on desk",
                  "out of space",
                  "password reset",
                  "payment status",
                  "pay notification",
                  "quick reply",
                  "re: w-2",
                  "required",
                  "required: completed docusign",
                  "remittance",
                  "ringcentral",
                  "scanned image",
                  "secured files",
                  "secured pdf",
                  "security alert",
                  "new sign-in",
                  "new sign in",
                  "sign-in attempt",
                  "sign in attempt",
                  "staff review",
                  "suspicious activity",
                  "unrecognized login attempt",
                  "unusual signin",
                  "upgrade immediately",
                  "urgent",
                  "wants to share",
                  "w2",
                  "you have notifications pending",
                  "your account",
                  "your amazon order",
                  "your document settlement",
                  "your order with amazon",
                  "your password has been compromised",
  )
  or (
    regex.icontains(subject.subject, 'account.has.been')
    and not regex.icontains(subject.subject, 'account.has.been.*created')
  )
  or (
    regex.icontains(sender.display_name,
                    "Admin",
                    "Administrator",
                    "Alert",
                    "Assistant",
                    "Authenticat(or|ion)",
                    "Billing",
                    "Benefits",
                    "Bonus",
                    "CEO",
                    "CFO",
                    "CIO",
                    "CTO",
                    "Chairman",
                    "Claim",
                    "Confirm",
                    "Cpanel Mail",
                    "Critical",
                    "Customer Service",
                    "Deal",
                    "Discount",
                    "Director",
                    "Exclusive",
                    "Executive",
                    "Fax",
                    "Free",
                    "Gift",
                    '\bHR\b',
                    "Helpdesk",
                    "Human Resources",
                    "Immediate",
                    "Important",
                    "Info",
                    "Information",
                    "Invoice",
                    '\bIT\b',
                    '\bLegal\b',
                    "Lottery",
                    "Management",
                    "Manager",
                    "Member Services",
                    "Notification",
                    "Offer",
                    "Official Communication",
                    "Operations",
                    "Order",
                    "Partner",
                    "Payment",
                    "Payroll",
                    "Postmaster",
                    "President",
                    "Premium",
                    "Prize",
                    "Receipt",
                    "Refund",
                    "Registrar",
                    "Required",
                    "Reward",
                    "Sales",
                    "Secretary",
                    "Security",
                    "Server",
                    "Service",
                    "Storage",
                    "Support",
                    "Sweepstakes",
                    "System",
                    "Tax",
                    "Tech Support",
                    "Update",
                    "Upgrade",
                    "Urgent",
                    "Validate",
                    "Verify",
                    "VIP",
                    "Webmaster",
                    "Winner",
                    "DocReq\\b"
    )
    // add negation for common FPs in the sender display_name
    and not strings.icontains(sender.display_name, "service bulletin")
    and not strings.icontains(sender.display_name, "automotive service")
  )
)
and (
  4 of (
    any(recipients.to,
        .email.domain.valid
        and (
          strings.icontains(body.current_thread.text, .email.email)
          or strings.icontains(body.current_thread.text, .email.local_part)
        )
    ),
    any(ml.nlu_classifier(body.current_thread.text).intents,
        .name == "cred_theft" and .confidence in ("medium", "high")
    ),
    any(ml.nlu_classifier(body.current_thread.text).entities,
        .name == "request"
    ),
    // recipient email address base64 encoded in link
    any(body.links,
        any(recipients.to,
            any(beta.scan_base64(..href_url.url,
                                 ignore_padding=true,
                                 format="url"
                ),
                strings.icontains(., ..email.email)
            )
        )
    ),
    (
      // freemail providers should never be sending this type of email
      sender.email.domain.domain in $free_email_providers

      // if not freemail, it's suspicious if the sender's root domain
      // doesn't match any links in the body
      or all(body.links,
             .href_url.domain.root_domain != sender.email.domain.root_domain
             and (
               .href_url.domain.root_domain not in $org_domains
               // ignore recipient email addresses in the body in relation to this check
               or (
                 .href_url.domain.root_domain in $org_domains
                 and any(recipients.to,
                         strings.icount(body.current_thread.text, .email.email) == strings.icount(body.current_thread.text,
                                                                                                  .email.domain.domain
                         )
                 )
               )
             )
      )

      // bulk mailers should also never be sending this type of email
      or all(filter(body.links,
                    .href_url.domain.domain not in (
                      "aka.ms",
                      "mimecast.com",
                      "mimecastprotect.com",
                      "cisco.com"
                    )
             ),
             .href_url.domain.root_domain in $bulk_mailer_url_root_domains
      )
    ),
    // in case it's embedded in an image attachment
    // note: don't use message_screenshot() because it's not limited to current_thread
    // and may FP
    any(attachments,
        .file_type in $file_types_images
        and any(file.explode(.),
                any(ml.nlu_classifier(.scan.ocr.raw).intents,
                    .name == "cred_theft" and .confidence == "high"
                )
        )
    ),
    strings.contains(body.current_thread.text,
                     "Your mailbox can no longer send or receive messages."
    ),
    any(body.links,
        strings.icontains(.href_url.query_params, 'redirect')
        or any(.href_url.rewrite.encoders,
               strings.icontains(., "open_redirect")
        )
    ),
    // multiple entities displaying urgency
    length(filter(ml.nlu_classifier(body.current_thread.text).entities,
                  .name == "urgency"
           )
    ) >= 2
    // and any body links
    and any(body.links,
            // display text contains a request
            any(ml.nlu_classifier(.display_text).entities, .name == "request")
    ),
    any(body.links,
        // display text contains a request
        (
          any(ml.nlu_classifier(.display_text).entities, .name == "request")
          or regex.match(.display_text, '^[^a-z]+$')
        )
        and (
          .href_url.domain.domain in $url_shorteners
          or .href_url.domain.domain in $social_landing_hosts
          or .href_url.domain.root_domain in $url_shorteners
          or .href_url.domain.root_domain in $social_landing_hosts
          or .href_url.domain.domain in $free_file_hosts
          or (
            .href_url.domain.root_domain in (
              "mimecast.com",
              "mimecastprotect.com"
            )
            and any(.href_url.query_params_decoded['domain'],
                    strings.parse_url(strings.concat("https://", .)).domain.domain in $url_shorteners
                    or strings.parse_url(strings.concat("https://", .)).domain.root_domain in $url_shorteners
                    or strings.parse_url(strings.concat("https://", .)).domain.domain in $free_file_hosts
                    or strings.parse_url(strings.concat("https://", .)).domain.root_domain in $free_subdomain_hosts
                    or strings.parse_url(strings.concat("https://", .)).domain.domain in $social_landing_hosts
                    or strings.parse_url(strings.concat("https://", .)).domain.root_domain in $social_landing_hosts
            )
          )
        )
    ),
    // common greetings via email.local_part
    any(recipients.to,
        length(.email.local_part) > 2
        and 
        // use count to ensure the email address is not part of a disclaimer
        strings.icount(body.current_thread.text, .email.local_part) > 
        // sum allows us to add more logic as needed
        strings.icount(body.current_thread.text,
                       strings.concat('was sent to ', .email.email)
        ) + strings.icount(body.current_thread.text,
                           strings.concat('intended for ', .email.email)
        )
    )
  )
  or (
    (
      // recipient's email address is in the body
      any(recipients.to,
          // use count to ensure the email address is not part of a disclaimer
          strings.icount(body.current_thread.text, .email.email) > 
          // sum allows us to add more logic as needed
          sum([
                strings.icount(body.current_thread.text,
                               strings.concat('was sent to ', .email.email)
                ),
                strings.icount(body.current_thread.text,
                               strings.concat('intended for ', .email.email)
                )
              ]
          )
      )
      // suspicious display text
      or (
        length(body.links) == 1
        and all(body.links,
                strings.ilike(.display_text, "*click here*", "*password*")
        )
      )
    )
    // link leads to a suspicious TLD or contains an IP address or contains multiple redirects
    and any(body.links,
            (
              ml.link_analysis(., mode="aggressive").effective_url.domain.tld in $suspicious_tlds
              or length(distinct(map(ml.link_analysis(., mode="aggressive").redirect_history,
                                     .domain.root_domain
                                 )
                        )
              ) >= 4
              or (
                any(body.ips,
                    any(body.links, strings.icontains(.href_url.url, ..ip))
                )
              )
            )
    )
  )
)
// exclude Google shared calendar messages
// Subject: "<sender name> has shared a calendar with you"
and headers.return_path.domain.domain != "calendar-server.bounces.google.com"
// negate calendar invites
and not (
  0 < length(attachments) < 3
  and all(attachments, .content_type in ("text/calendar", "application/ics"))
)
// negate replies
and (
  (
    (length(headers.references) > 0 or headers.in_reply_to is null)
    and not (
      (
        strings.istarts_with(subject.subject, "RE:")
        or strings.istarts_with(subject.subject, "R:")
        or strings.istarts_with(subject.subject, "ODG:")
        or strings.istarts_with(subject.subject, "答复:")
        or strings.istarts_with(subject.subject, "AW:")
        or strings.istarts_with(subject.subject, "TR:")
        or strings.istarts_with(subject.subject, "FWD:")
        or regex.icontains(subject.subject,
                           '^(\[[^\]]+\]\s?){0,3}(re|fwd?)\s?:'
        )
      )
    )
  )
  or length(headers.references) == 0
)
// bounce-back and DMARC report negations
and not (
  strings.like(sender.email.local_part,
               "*postmaster*",
               "*mailer-daemon*",
               "*administrator*"
  )
  and (
    any(attachments,
        .content_type in (
          "message/rfc822",
          "message/delivery-status",
          "text/calendar"
        )
    )
    or (
      length(attachments) == 1
      and all(attachments, .content_type in ("application/gzip"))
      and regex.icontains(subject.subject,
                          '(?:(Report\sDomain).*(Submitter).*(Report-ID))'
      )
    )
  )
)
and (
  (
    profile.by_sender().prevalence != "common"
    and not profile.by_sender_email().solicited
  )
  or (
    profile.by_sender().any_messages_malicious_or_spam
    and not profile.by_sender().any_messages_benign
  )
)
// 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
)
// FP avoidance
and not any(beta.ml_topic(body.current_thread.text).topics,
            .name in (
              "Advertising and Promotions",
              "Political Mail",
              "News and Current Events",
              "Newsletters and Digests"
            )
            and .confidence == "high"
)

Detection logic

Scope: inbound message.

Message contains various suspicious indicators as well as engaging language resembling credential theft from an untrusted sender.

  1. inbound message
  2. any of:
    • subject.subject matches any of 198 patterns
      • termination.*notice
      • 38417
      • :completed
      • [il1]{2}mit.*ma[il1]{2} ?bo?x
      • [il][il][il]egai[ -]
      • [li][li][li]ega[li] attempt
      • [ng]-?[io]n .*block
      • [ng]-?[io]n .*cancel
      • [ng]-?[io]n .*deactiv
      • [ng]-?[io]n .*disabl
      • action.*required
      • abandon.*package
      • about.your.account
      • acc(ou)?n?t (is )?on ho[li]d
      • acc(ou)?n?t.*terminat
      • acc(oun)?t.*[il1]{2}mitation
      • access.*limitation
      • account (will be )?block
      • account.*de-?activat
      • account.*locked
      • account.*re-verification
      • account.*security
      • account.*suspension
      • account.has.expired
      • account.will.be.blocked
      • account v[il]o[li]at
      • activity.*acc(oun)?t
      • almost.full
      • app[li]e.[il]d
      • authenticate.*account
      • been.*suspend
      • crediential.*notif
      • clos.*of.*account.*processed
      • confirm.your.account
      • courier.*able
      • crediential.*notif
      • deactivation.*in.*progress
      • delivery.*attempt.*failed
      • disconnection.*notice
      • document.received
      • documented.*shared.*with.*you
      • dropbox.*document
      • e-?ma[il1]+ .{010}suspen
      • e-?ma[il1]{1} user
      • e-?ma[il1]{2} acc
      • e-?ma[il1]{2} preview
      • e-?ma[il1]{2}.*up.?grade
      • e.?ma[il1]{2}.*server
      • e.?ma[il1]{2}.*suspend
      • email.update
      • faxed you
      • fraud(ulent)?.*charge
      • from.helpdesk
      • fu[il1]{2}.*ma[il1]+[ -]?box
      • has.been.*suspended
      • has.been.limited
      • have.locked
      • he[li]p ?desk upgrade
      • heipdesk
      • i[il]iega[il]
      • ii[il]ega[il]
      • incoming e?mail
      • incoming.*fax
      • lock.*security
      • ma[il1]{1}[ -]?box.*quo
      • ma[il1]{2}[ -]?box.*fu[il1]
      • ma[il1]{2}box.*[il1]{2}mit
      • ma[il1]{2}box stor
      • mail on.?hold
      • mail.*box.*migration
      • mail.*de-?activat
      • mail.update.required
      • mails.*pending
      • messages.*pending
      • missed.*shipping.*notification
      • missed.shipment.notification
      • must.update.your.account
      • new [sl][io]g?[nig][ -]?in from
      • new voice ?-?mail
      • notifications.*pending
      • office.*3.*6.*5.*suspend
      • office365
      • on google docs with you
      • online doc
      • password.*compromised
      • (?:payroll|salary|bonus).*Distribution
      • periodic maintenance
      • potential(ly)? unauthorized
      • refund not approved
      • report
      • revised.*policy
      • scam
      • scanned.?invoice
      • secured?.update
      • security breach
      • securlty
      • signed.*delivery
      • status of your .{314}? ?delivery
      • susp[il1]+c[il1]+ous.*act[il1]+v[il1]+ty
      • suspicious.*sign.*[io]n
      • suspicious.activit
      • temporar(il)?y deactivate
      • temporar[il1]{2}y disab[li]ed
      • temporarily.*lock
      • un-?usua[li].activity
      • unable.*deliver
      • unauthorized.*activit
      • unauthorized.device
      • undelivered message
      • unread.*doc
      • unusual.activity
      • (?:unrecognized|Unusual|suspicious|unknown) (?:log|sign).?[io]n attempt
      • upgrade.*account
      • upgrade.notice
      • urgent message
      • urgent.verification
      • v[il1]o[li1]at[il1]on security
      • va[il1]{1}date.*ma[il1]{2}[ -]?box
      • verification ?-?require
      • verification( )?-?need
      • verify.your?.account
      • web ?-?ma[il1]{2}
      • web[ -]?ma[il1]{2}
      • will.be.suspended
      • your (customer )?account .as
      • your.office.365
      • your.online.access
      • de.activation
      • attn_task
      • account has been limited
      • action required
      • almost full
      • apd notifi cation
      • are you at your desk
      • are you available
      • attached file to docusign
      • banking is temporarily unavailable
      • bankofamerica
      • closing statement invoice
      • completed: docusign
      • de-activation of
      • delivery attempt
      • delivery stopped for shipment
      • detected suspicious
      • detected suspicious actvity
      • docu sign
      • document for you
      • document has been sent to you via docusign
      • document is ready for signature
      • docusign
      • encrypted message
      • failed delivery
      • fedex tracking
      • file was shared
      • freefax
      • fwd: due invoice paid
      • has shared
      • inbox is full
      • invitation to comment
      • invitation to edit
      • invoice due
      • left you a message
      • message from
      • new message
      • new voicemail
      • on desk
      • out of space
      • password reset
      • payment status
      • pay notification
      • quick reply
      • re: w-2
      • required
      • required: completed docusign
      • remittance
      • ringcentral
      • scanned image
      • secured files
      • secured pdf
      • security alert
      • new sign-in
      • new sign in
      • sign-in attempt
      • sign in attempt
      • staff review
      • suspicious activity
      • unrecognized login attempt
      • unusual signin
      • upgrade immediately
      • urgent
      • wants to share
      • w2
      • you have notifications pending
      • your account
      • your amazon order
      • your document settlement
      • your order with amazon
      • your password has been compromised
    • all of:
      • subject.subject matches 'account.has.been'
      • not:
        • subject.subject matches 'account.has.been.*created'
    • all of:
      • sender.display_name matches any of 77 patterns
        • Admin
        • Administrator
        • Alert
        • Assistant
        • Authenticat(or|ion)
        • Billing
        • Benefits
        • Bonus
        • CEO
        • CFO
        • CIO
        • CTO
        • Chairman
        • Claim
        • Confirm
        • Cpanel Mail
        • Critical
        • Customer Service
        • Deal
        • Discount
        • Director
        • Exclusive
        • Executive
        • Fax
        • Free
        • Gift
        • \bHR\b
        • Helpdesk
        • Human Resources
        • Immediate
        • Important
        • Info
        • Information
        • Invoice
        • \bIT\b
        • \bLegal\b
        • Lottery
        • Management
        • Manager
        • Member Services
        • Notification
        • Offer
        • Official Communication
        • Operations
        • Order
        • Partner
        • Payment
        • Payroll
        • Postmaster
        • President
        • Premium
        • Prize
        • Receipt
        • Refund
        • Registrar
        • Required
        • Reward
        • Sales
        • Secretary
        • Security
        • Server
        • Service
        • Storage
        • Support
        • Sweepstakes
        • System
        • Tax
        • Tech Support
        • Update
        • Upgrade
        • Urgent
        • Validate
        • Verify
        • VIP
        • Webmaster
        • Winner
        • DocReq\\b
      • not:
        • sender.display_name contains 'service bulletin'
      • not:
        • sender.display_name contains 'automotive service'
  3. any of:
    • at least 4 of:
      • any of recipients.to where all hold:
        • .email.domain.valid
        • any of:
          • strings.icontains(body.current_thread.text)
          • strings.icontains(body.current_thread.text)
      • any of ml.nlu_classifier(body.current_thread.text).intents where all hold:
        • .name is 'cred_theft'
        • .confidence in ('medium', 'high')
      • any of ml.nlu_classifier(body.current_thread.text).entities where:
        • .name is 'request'
      • any of body.links where:
        • any of recipients.to where:
          • any of beta.scan_base64(.href_url.url) where:
            • strings.icontains(.)
      • any of:
        • sender.email.domain.domain in $free_email_providers
        • all of body.links where all hold:
          • .href_url.domain.root_domain is not sender.email.domain.root_domain
          • any of:
            • .href_url.domain.root_domain not in $org_domains
            • all of:
              • .href_url.domain.root_domain in $org_domains
              • any of recipients.to where:
                • strings.icount(body.current_thread.text) is strings.icount(body.current_thread.text, .email.domain.domain)
        • all of filter(body.links) where:
          • .href_url.domain.root_domain in $bulk_mailer_url_root_domains
      • any of attachments where all hold:
        • .file_type in $file_types_images
        • any of file.explode(.) where:
          • any of ml.nlu_classifier(.scan.ocr.raw).intents where all hold:
            • .name is 'cred_theft'
            • .confidence is 'high'
      • body.current_thread.text contains 'Your mailbox can no longer send or receive messages.'
      • any of body.links where any holds:
        • .href_url.query_params contains 'redirect'
        • any of .href_url.rewrite.encoders where:
          • . contains 'open_redirect'
      • all of:
        • length(filter(ml.nlu_classifier(body.current_thread.text).entities, .name == 'urgency')) ≥ 2
        • any of body.links where:
          • any of ml.nlu_classifier(.display_text).entities where:
            • .name is 'request'
      • any of body.links where all hold:
        • any of:
          • any of ml.nlu_classifier(.display_text).entities where:
            • .name is 'request'
          • .display_text matches '^[^a-z]+$'
        • any of:
          • .href_url.domain.domain in $url_shorteners
          • .href_url.domain.domain in $social_landing_hosts
          • .href_url.domain.root_domain in $url_shorteners
          • .href_url.domain.root_domain in $social_landing_hosts
          • .href_url.domain.domain in $free_file_hosts
          • all of:
            • .href_url.domain.root_domain in ('mimecast.com', 'mimecastprotect.com')
            • any of .href_url.query_params_decoded['domain'] where any holds:
              • strings.parse_url(strings.concat('https://', .)).domain.domain in $url_shorteners
              • strings.parse_url(strings.concat('https://', .)).domain.root_domain in $url_shorteners
              • strings.parse_url(strings.concat('https://', .)).domain.domain in $free_file_hosts
              • strings.parse_url(strings.concat('https://', .)).domain.root_domain in $free_subdomain_hosts
              • strings.parse_url(strings.concat('https://', .)).domain.domain in $social_landing_hosts
              • strings.parse_url(strings.concat('https://', .)).domain.root_domain in $social_landing_hosts
      • any of recipients.to where all hold:
        • length(.email.local_part) > 2
        • strings.icount(body.current_thread.text) > strings.icount(body.current_thread.text) + strings.icount(body.current_thread.text)
    • all of:
      • any of:
        • any of recipients.to where:
          • strings.icount(body.current_thread.text) > sum([strings.icount(body.current_thread.text, strings.concat('was sent to ', .email.email)), strings.icount(body.current_thread.text, strings.concat('intended for ', .email.email))])
        • all of:
          • length(body.links) is 1
          • all of body.links where:
            • .display_text matches any of 2 patterns
              • *click here*
              • *password*
      • any of body.links where any holds:
        • ml.link_analysis(.).effective_url.domain.tld in $suspicious_tlds
        • length(distinct(map(ml.link_analysis(., mode='aggressive').redirect_history, .domain.root_domain))) ≥ 4
        • any of body.ips where:
          • any of body.links where:
            • strings.icontains(.href_url.url)
  4. headers.return_path.domain.domain is not 'calendar-server.bounces.google.com'
  5. not:
    • all of:
      • all of:
        • length(attachments) > 0
        • length(attachments) < 3
      • all of attachments where:
        • .content_type in ('text/calendar', 'application/ics')
  6. any of:
    • all of:
      • any of:
        • length(headers.references) > 0
        • headers.in_reply_to is missing
      • none of:
        • subject.subject starts with 'RE:'
        • subject.subject starts with 'R:'
        • subject.subject starts with 'ODG:'
        • subject.subject starts with '答复:'
        • subject.subject starts with 'AW:'
        • subject.subject starts with 'TR:'
        • subject.subject starts with 'FWD:'
        • subject.subject matches '^(\\[[^\\]]+\\]\\s?){0,3}(re|fwd?)\\s?:'
    • length(headers.references) is 0
  7. not:
    • all of:
      • sender.email.local_part matches any of 3 patterns
        • *postmaster*
        • *mailer-daemon*
        • *administrator*
      • any of:
        • any of attachments where:
          • .content_type in ('message/rfc822', 'message/delivery-status', 'text/calendar')
        • all of:
          • length(attachments) is 1
          • all of attachments where:
            • .content_type in ('application/gzip')
          • subject.subject matches '(?:(Report\\sDomain).*(Submitter).*(Report-ID))'
  8. any of:
    • all of:
      • profile.by_sender().prevalence is not 'common'
      • not:
        • profile.by_sender_email().solicited
    • all of:
      • profile.by_sender().any_messages_malicious_or_spam
      • not:
        • profile.by_sender().any_messages_benign
  9. any of:
    • all of:
      • sender.email.domain.root_domain in $high_trust_sender_root_domains
      • not:
        • headers.auth_summary.dmarc.pass
    • sender.email.domain.root_domain not in $high_trust_sender_root_domains
  10. not:
    • any of beta.ml_topic(body.current_thread.text).topics where all hold:
      • .name in ('Advertising and Promotions', 'Political Mail', 'News and Current Events', 'Newsletters and Digests')
      • .confidence is 'high'

Inspects: attachments[].content_type, attachments[].file_type, body.current_thread.text, body.ips, body.ips[].ip, body.links, body.links[].display_text, body.links[].href_url.domain.domain, body.links[].href_url.domain.root_domain, body.links[].href_url.query_params, body.links[].href_url.query_params_decoded['domain'], body.links[].href_url.rewrite.encoders, body.links[].href_url.url, headers.auth_summary.dmarc.pass, headers.in_reply_to, headers.references, headers.return_path.domain.domain, recipients.to, recipients.to[].email.domain.domain, recipients.to[].email.domain.valid, recipients.to[].email.email, recipients.to[].email.local_part, sender.display_name, sender.email.domain.domain, sender.email.domain.root_domain, sender.email.local_part, subject.subject, type.inbound. Sensors: beta.ml_topic, beta.scan_base64, file.explode, ml.link_analysis, ml.nlu_classifier, profile.by_sender, profile.by_sender_email, regex.icontains, regex.match, strings.concat, strings.contains, strings.icontains, strings.icount, strings.ilike, strings.istarts_with, strings.like, strings.parse_url. Reference lists: $bulk_mailer_url_root_domains, $file_types_images, $free_email_providers, $free_file_hosts, $free_subdomain_hosts, $high_trust_sender_root_domains, $org_domains, $social_landing_hosts, $suspicious_tlds, $url_shorteners.

Indicators matched (320)

FieldMatchValue
regex.icontainsregextermination.*notice
regex.icontainsregex38417
regex.icontainsregex:completed
regex.icontainsregex[il1]{2}mit.*ma[il1]{2} ?bo?x
regex.icontainsregex[il][il][il]egai[ -]
regex.icontainsregex[li][li][li]ega[li] attempt
regex.icontainsregex[ng]-?[io]n .*block
regex.icontainsregex[ng]-?[io]n .*cancel
regex.icontainsregex[ng]-?[io]n .*deactiv
regex.icontainsregex[ng]-?[io]n .*disabl
regex.icontainsregexaction.*required
regex.icontainsregexabandon.*package
308 more
regex.icontainsregexabout.your.account
regex.icontainsregexacc(ou)?n?t (is )?on ho[li]d
regex.icontainsregexacc(ou)?n?t.*terminat
regex.icontainsregexacc(oun)?t.*[il1]{2}mitation
regex.icontainsregexaccess.*limitation
regex.icontainsregexaccount (will be )?block
regex.icontainsregexaccount.*de-?activat
regex.icontainsregexaccount.*locked
regex.icontainsregexaccount.*re-verification
regex.icontainsregexaccount.*security
regex.icontainsregexaccount.*suspension
regex.icontainsregexaccount.has.expired
regex.icontainsregexaccount.will.be.blocked
regex.icontainsregexaccount v[il]o[li]at
regex.icontainsregexactivity.*acc(oun)?t
regex.icontainsregexalmost.full
regex.icontainsregexapp[li]e.[il]d
regex.icontainsregexauthenticate.*account
regex.icontainsregexbeen.*suspend
regex.icontainsregexcrediential.*notif
regex.icontainsregexclos.*of.*account.*processed
regex.icontainsregexconfirm.your.account
regex.icontainsregexcourier.*able
regex.icontainsregexdeactivation.*in.*progress
regex.icontainsregexdelivery.*attempt.*failed
regex.icontainsregexdisconnection.*notice
regex.icontainsregexdocument.received
regex.icontainsregexdocumented.*shared.*with.*you
regex.icontainsregexdropbox.*document
regex.icontainsregexe-?ma[il1]+ .{010}suspen
regex.icontainsregexe-?ma[il1]{1} user
regex.icontainsregexe-?ma[il1]{2} acc
regex.icontainsregexe-?ma[il1]{2} preview
regex.icontainsregexe-?ma[il1]{2}.*up.?grade
regex.icontainsregexe.?ma[il1]{2}.*server
regex.icontainsregexe.?ma[il1]{2}.*suspend
regex.icontainsregexemail.update
regex.icontainsregexfaxed you
regex.icontainsregexfraud(ulent)?.*charge
regex.icontainsregexfrom.helpdesk
regex.icontainsregexfu[il1]{2}.*ma[il1]+[ -]?box
regex.icontainsregexhas.been.*suspended
regex.icontainsregexhas.been.limited
regex.icontainsregexhave.locked
regex.icontainsregexhe[li]p ?desk upgrade
regex.icontainsregexheipdesk
regex.icontainsregexi[il]iega[il]
regex.icontainsregexii[il]ega[il]
regex.icontainsregexincoming e?mail
regex.icontainsregexincoming.*fax
regex.icontainsregexlock.*security
regex.icontainsregexma[il1]{1}[ -]?box.*quo
regex.icontainsregexma[il1]{2}[ -]?box.*fu[il1]
regex.icontainsregexma[il1]{2}box.*[il1]{2}mit
regex.icontainsregexma[il1]{2}box stor
regex.icontainsregexmail on.?hold
regex.icontainsregexmail.*box.*migration
regex.icontainsregexmail.*de-?activat
regex.icontainsregexmail.update.required
regex.icontainsregexmails.*pending
regex.icontainsregexmessages.*pending
regex.icontainsregexmissed.*shipping.*notification
regex.icontainsregexmissed.shipment.notification
regex.icontainsregexmust.update.your.account
regex.icontainsregexnew [sl][io]g?[nig][ -]?in from
regex.icontainsregexnew voice ?-?mail
regex.icontainsregexnotifications.*pending
regex.icontainsregexoffice.*3.*6.*5.*suspend
regex.icontainsregexoffice365
regex.icontainsregexon google docs with you
regex.icontainsregexonline doc
regex.icontainsregexpassword.*compromised
regex.icontainsregex(?:payroll|salary|bonus).*Distribution
regex.icontainsregexperiodic maintenance
regex.icontainsregexpotential(ly)? unauthorized
regex.icontainsregexrefund not approved
regex.icontainsregexreport
regex.icontainsregexrevised.*policy
regex.icontainsregexscam
regex.icontainsregexscanned.?invoice
regex.icontainsregexsecured?.update
regex.icontainsregexsecurity breach
regex.icontainsregexsecurlty
regex.icontainsregexsigned.*delivery
regex.icontainsregexstatus of your .{314}? ?delivery
regex.icontainsregexsusp[il1]+c[il1]+ous.*act[il1]+v[il1]+ty
regex.icontainsregexsuspicious.*sign.*[io]n
regex.icontainsregexsuspicious.activit
regex.icontainsregextemporar(il)?y deactivate
regex.icontainsregextemporar[il1]{2}y disab[li]ed
regex.icontainsregextemporarily.*lock
regex.icontainsregexun-?usua[li].activity
regex.icontainsregexunable.*deliver
regex.icontainsregexunauthorized.*activit
regex.icontainsregexunauthorized.device
regex.icontainsregexundelivered message
regex.icontainsregexunread.*doc
regex.icontainsregexunusual.activity
regex.icontainsregex(?:unrecognized|Unusual|suspicious|unknown) (?:log|sign).?[io]n attempt
regex.icontainsregexupgrade.*account
regex.icontainsregexupgrade.notice
regex.icontainsregexurgent message
regex.icontainsregexurgent.verification
regex.icontainsregexv[il1]o[li1]at[il1]on security
regex.icontainsregexva[il1]{1}date.*ma[il1]{2}[ -]?box
regex.icontainsregexverification ?-?require
regex.icontainsregexverification( )?-?need
regex.icontainsregexverify.your?.account
regex.icontainsregexweb ?-?ma[il1]{2}
regex.icontainsregexweb[ -]?ma[il1]{2}
regex.icontainsregexwill.be.suspended
regex.icontainsregexyour (customer )?account .as
regex.icontainsregexyour.office.365
regex.icontainsregexyour.online.access
regex.icontainsregexde.activation
regex.icontainsregexattn_task
regex.icontainsregexaccount has been limited
regex.icontainsregexaction required
regex.icontainsregexalmost full
regex.icontainsregexapd notifi cation
regex.icontainsregexare you at your desk
regex.icontainsregexare you available
regex.icontainsregexattached file to docusign
regex.icontainsregexbanking is temporarily unavailable
regex.icontainsregexbankofamerica
regex.icontainsregexclosing statement invoice
regex.icontainsregexcompleted: docusign
regex.icontainsregexde-activation of
regex.icontainsregexdelivery attempt
regex.icontainsregexdelivery stopped for shipment
regex.icontainsregexdetected suspicious
regex.icontainsregexdetected suspicious actvity
regex.icontainsregexdocu sign
regex.icontainsregexdocument for you
regex.icontainsregexdocument has been sent to you via docusign
regex.icontainsregexdocument is ready for signature
regex.icontainsregexdocusign
regex.icontainsregexencrypted message
regex.icontainsregexfailed delivery
regex.icontainsregexfedex tracking
regex.icontainsregexfile was shared
regex.icontainsregexfreefax
regex.icontainsregexfwd: due invoice paid
regex.icontainsregexhas shared
regex.icontainsregexinbox is full
regex.icontainsregexinvitation to comment
regex.icontainsregexinvitation to edit
regex.icontainsregexinvoice due
regex.icontainsregexleft you a message
regex.icontainsregexmessage from
regex.icontainsregexnew message
regex.icontainsregexnew voicemail
regex.icontainsregexon desk
regex.icontainsregexout of space
regex.icontainsregexpassword reset
regex.icontainsregexpayment status
regex.icontainsregexpay notification
regex.icontainsregexquick reply
regex.icontainsregexre: w-2
regex.icontainsregexrequired
regex.icontainsregexrequired: completed docusign
regex.icontainsregexremittance
regex.icontainsregexringcentral
regex.icontainsregexscanned image
regex.icontainsregexsecured files
regex.icontainsregexsecured pdf
regex.icontainsregexsecurity alert
regex.icontainsregexnew sign-in
regex.icontainsregexnew sign in
regex.icontainsregexsign-in attempt
regex.icontainsregexsign in attempt
regex.icontainsregexstaff review
regex.icontainsregexsuspicious activity
regex.icontainsregexunrecognized login attempt
regex.icontainsregexunusual signin
regex.icontainsregexupgrade immediately
regex.icontainsregexurgent
regex.icontainsregexwants to share
regex.icontainsregexw2
regex.icontainsregexyou have notifications pending
regex.icontainsregexyour account
regex.icontainsregexyour amazon order
regex.icontainsregexyour document settlement
regex.icontainsregexyour order with amazon
regex.icontainsregexyour password has been compromised
regex.icontainsregexaccount.has.been
regex.icontainsregexaccount.has.been.*created
regex.icontainsregexAdmin
regex.icontainsregexAdministrator
regex.icontainsregexAlert
regex.icontainsregexAssistant
regex.icontainsregexAuthenticat(or|ion)
regex.icontainsregexBilling
regex.icontainsregexBenefits
regex.icontainsregexBonus
regex.icontainsregexCEO
regex.icontainsregexCFO
regex.icontainsregexCIO
regex.icontainsregexCTO
regex.icontainsregexChairman
regex.icontainsregexClaim
regex.icontainsregexConfirm
regex.icontainsregexCpanel Mail
regex.icontainsregexCritical
regex.icontainsregexCustomer Service
regex.icontainsregexDeal
regex.icontainsregexDiscount
regex.icontainsregexDirector
regex.icontainsregexExclusive
regex.icontainsregexExecutive
regex.icontainsregexFax
regex.icontainsregexFree
regex.icontainsregexGift
regex.icontainsregex\bHR\b
regex.icontainsregexHelpdesk
regex.icontainsregexHuman Resources
regex.icontainsregexImmediate
regex.icontainsregexImportant
regex.icontainsregexInfo
regex.icontainsregexInformation
regex.icontainsregexInvoice
regex.icontainsregex\bIT\b
regex.icontainsregex\bLegal\b
regex.icontainsregexLottery
regex.icontainsregexManagement
regex.icontainsregexManager
regex.icontainsregexMember Services
regex.icontainsregexNotification
regex.icontainsregexOffer
regex.icontainsregexOfficial Communication
regex.icontainsregexOperations
regex.icontainsregexOrder
regex.icontainsregexPartner
regex.icontainsregexPayment
regex.icontainsregexPayroll
regex.icontainsregexPostmaster
regex.icontainsregexPresident
regex.icontainsregexPremium
regex.icontainsregexPrize
regex.icontainsregexReceipt
regex.icontainsregexRefund
regex.icontainsregexRegistrar
regex.icontainsregexRequired
regex.icontainsregexReward
regex.icontainsregexSales
regex.icontainsregexSecretary
regex.icontainsregexSecurity
regex.icontainsregexServer
regex.icontainsregexService
regex.icontainsregexStorage
regex.icontainsregexSupport
regex.icontainsregexSweepstakes
regex.icontainsregexSystem
regex.icontainsregexTax
regex.icontainsregexTech Support
regex.icontainsregexUpdate
regex.icontainsregexUpgrade
regex.icontainsregexUrgent
regex.icontainsregexValidate
regex.icontainsregexVerify
regex.icontainsregexVIP
regex.icontainsregexWebmaster
regex.icontainsregexWinner
regex.icontainsregexDocReq\\b
strings.icontainssubstringservice bulletin
strings.icontainssubstringautomotive service
ml.nlu_classifier(body.current_thread.text).intents[].nameequalscred_theft
ml.nlu_classifier(body.current_thread.text).intents[].confidencemembermedium
ml.nlu_classifier(body.current_thread.text).intents[].confidencememberhigh
ml.nlu_classifier(body.current_thread.text).entities[].nameequalsrequest
body.links[].href_url.domain.domainmemberaka.ms
body.links[].href_url.domain.domainmembermimecast.com
body.links[].href_url.domain.domainmembermimecastprotect.com
body.links[].href_url.domain.domainmembercisco.com
ml.nlu_classifier(file.explode(attachments[])[].scan.ocr.raw).intents[].nameequalscred_theft
ml.nlu_classifier(file.explode(attachments[])[].scan.ocr.raw).intents[].confidenceequalshigh
strings.containssubstringYour mailbox can no longer send or receive messages.
strings.icontainssubstringredirect
strings.icontainssubstringopen_redirect
ml.nlu_classifier(body.current_thread.text).entities[].nameequalsurgency
ml.nlu_classifier(body.links[].display_text).entities[].nameequalsrequest
regex.matchregex^[^a-z]+$
body.links[].href_url.domain.root_domainmembermimecast.com
body.links[].href_url.domain.root_domainmembermimecastprotect.com
strings.ilikesubstring*click here*
strings.ilikesubstring*password*
attachments[].content_typemembertext/calendar
attachments[].content_typememberapplication/ics
strings.istarts_withprefixRE:
strings.istarts_withprefixR:
strings.istarts_withprefixODG:
strings.istarts_withprefix答复:
strings.istarts_withprefixAW:
strings.istarts_withprefixTR:
strings.istarts_withprefixFWD:
regex.icontainsregex^(\[[^\]]+\]\s?){0,3}(re|fwd?)\s?:
strings.likesubstring*postmaster*
strings.likesubstring*mailer-daemon*
strings.likesubstring*administrator*
attachments[].content_typemembermessage/rfc822
attachments[].content_typemembermessage/delivery-status
attachments[].content_typememberapplication/gzip
regex.icontainsregex(?:(Report\sDomain).*(Submitter).*(Report-ID))
beta.ml_topic(body.current_thread.text).topics[].namememberAdvertising and Promotions
beta.ml_topic(body.current_thread.text).topics[].namememberPolitical Mail
beta.ml_topic(body.current_thread.text).topics[].namememberNews and Current Events
beta.ml_topic(body.current_thread.text).topics[].namememberNewsletters and Digests
beta.ml_topic(body.current_thread.text).topics[].confidenceequalshigh