Microsoft 365 mail lure delivered

Severity mediumCloud & SaaSSingle eventstablecloud.identity.m365_mail_lure_delivered · v1.0.0

A message whose subject carries a MONEY or CREDENTIAL instruction was delivered to a mailbox — it was not quarantined, not filtered, it landed.

What it detects

A message whose subject carries a MONEY or CREDENTIAL instruction was delivered to a mailbox — it was not quarantined, not filtered, it landed.

This rule answers a question an investigation asks constantly and could not previously answer: **who actually received it.** Once one account is known to be compromised, the next step is establishing the blast radius — which other users got the same lure, and whether the message reached them or was blocked. That is a message-trace question; the audit log cannot answer it.

The subject list is phrases, not words. "Invoice" appears in a finance mailbox all day; "update your bank details" does not. The phrasing of a lure is remarkably consistent because it has to survive a skim-read.

Severity is medium and confidence is low on purpose. A hit means a message ASKED for a payment change or a credential — it does not say the sender was hostile. Legitimate services send several of these.

MITRE ATT&CK mapping

  • T1566.002Phishing: Spearphishing Link· Initial Access
  • T1656Impersonation· Defense Evasion

False positives and triage

Real services send real versions of most of these. Microsoft sends quarantine digests, payroll providers send direct-deposit confirmations, and every SaaS product sends password-expiry mail.

The discriminator is the SENDER DOMAIN, not the subject: a genuine Microsoft quarantine notification comes from a Microsoft domain, and a genuine payroll notice from the payroll provider's. A payment-redirect subject from a free-mail domain, or from a look-alike of a supplier's domain, is the finding.

Read the direction too. A payment-redirect subject arriving INBOUND is an attempt on this tenant; the same subject going OUTBOUND from a tenant mailbox means the tenant is being used to defraud its own customers, which is a materially worse conversation to have and a different response.

Because one campaign lands in many mailboxes, expect this to fire in clusters. That is the intended behaviour — the cluster IS the blast radius — and the alert rollup groups them.

The rule

Declarative YAML read by the detection engine — data, never executed. Confidence 60%. Source: rules/cloud/m365_mail_lure_delivered.yaml, licensed under the Apache License 2.0.

id: cloud.identity.m365_mail_lure_delivered
version: 1.0.0
status: stable
severity: medium
confidence: 0.6
platforms: [application]
mitre_techniques: [T1566.002, T1656]
description: |
  A message whose subject carries a MONEY or CREDENTIAL instruction was delivered
  to a mailbox — it was not quarantined, not filtered, it landed.

  This rule answers a question an investigation asks constantly and could not
  previously answer: **who actually received it.** Once one account is known to be
  compromised, the next step is establishing the blast radius — which other users
  got the same lure, and whether the message reached them or was blocked. That is
  a message-trace question; the audit log cannot answer it.

  The subject list is phrases, not words. "Invoice" appears in a finance mailbox
  all day; "update your bank details" does not. The phrasing of a lure is
  remarkably consistent because it has to survive a skim-read.

  Severity is medium and confidence is low on purpose. A hit means a message
  ASKED for a payment change or a credential — it does not say the sender was
  hostile. Legitimate services send several of these.
match:
  provider: Office365
  event_action: message_delivered
  # knowledge/business-context.yaml -> mail_lure_subjects
  ext:m365.subject_contains_any:
    # payment_redirect
    - "bank details"
    - "banking details"
    - "change of bank"
    - "updated remittance"
    - "remittance advice"
    - "payment instruction"
    - "wire transfer request"
    - "update payment method"
    - "direct deposit"
    # credential_harvest
    - "password was reset"
    - "password expires"
    - "verify your account"
    - "unusual sign-in"
    - "action required: sign in"
    - "re-authenticate"
    - "mailbox is full"
    - "quarantine notification"
correlation_keys: [target_user_name, user_name]
false_positive_guidance: |
  Real services send real versions of most of these. Microsoft sends quarantine
  digests, payroll providers send direct-deposit confirmations, and every SaaS
  product sends password-expiry mail.

  The discriminator is the SENDER DOMAIN, not the subject: a genuine Microsoft
  quarantine notification comes from a Microsoft domain, and a genuine payroll
  notice from the payroll provider's. A payment-redirect subject from a
  free-mail domain, or from a look-alike of a supplier's domain, is the
  finding.

  Read the direction too. A payment-redirect subject arriving INBOUND is an
  attempt on this tenant; the same subject going OUTBOUND from a tenant mailbox
  means the tenant is being used to defraud its own customers, which is a
  materially worse conversation to have and a different response.

  Because one campaign lands in many mailboxes, expect this to fire in clusters.
  That is the intended behaviour — the cluster IS the blast radius — and the
  alert rollup groups them.

Related detections

Run this rule on your own logs — offline

KIROSEC runs this rule and the rest of the library over Windows, Linux, macOS and cloud audit logs on the analyst's own machine. Every alert links to the events that raised it, and nothing leaves the device.

Browse all detections