Learn › Exchange Online › 9 · Security hardening

Business email compromise patterns

BEC follows a script: get in, persist quietly, watch, then strike (invoice fraud, wire redirection). Each step has a mailbox-level signature and a detection — the anatomy that turns 'the CEO got hacked' into a repeatable response.

The flow — what actually happens

Plain-language first; the packet-level view underneath each step is what you'd see in a Wireshark trace, and what healthy looks like.

  1. Entry

    Phished creds (often via a Teams or mail lure — the Copilot/Teams security concepts), MFA fatigue, or token theft. The attacker now IS the user, with all their access and none of the anomaly a new device usually triggers — if MFA was satisfied.

    On the wire Entra sign-in logs: the impossible-travel, the new ASN, the MFA-satisfied-from-nowhere event. This is where BEC is cheapest to catch — before it touches a mailbox.
  2. Persistence and concealment

    First moves are always the same: an INBOX RULE that files/deletes security notifications and replies (so the victim never sees the conversation the attacker is having as them), sometimes a forwarding address, sometimes an OAuth app grant for token-persistence past a password reset.

    On the wire New-InboxRule audit events, mailbox-forwarding changes, and OAuth consent grants — the three highest-signal BEC events; a rule named ' ' or '.' moving mail to RSS Feeds is the classic tell.
  3. Reconnaissance

    The attacker reads: finance threads, invoice formats, who authorises what, the CEO's writing style, the supplier relationships. Quiet, patient, often days — using YOUR mailbox search to find the payload. (Copilot makes this faster, the oversharing concept's threat edition — mail edition here.)

    On the wire Mailbox audit read/search events at anomalous volume/pattern; the account touching finance folders it never opened before — insider-risk-shaped signals on a compromised insider.
  4. The strike

    A crafted mail: 'updated bank details for the invoice', wire-transfer urgency, the supplier thread hijacked mid-conversation with a lookalike domain for external legs. The money moves before anyone in the loop suspects the sender isn't the sender.

    On the wire Outbound trace to finance/suppliers, the lookalike-domain external send (impersonation protection's job — anti-phish concept), and often a spike that trips outbound reputation (the deliverability smoke of a compromise).

The detection-per-step table (build these as alerts)

Step Detection
Entry Risky sign-in / impossible travel (Entra Identity Protection); the sign-in-logs canary
Persistence New-InboxRule with delete/forward actions; mailbox forwarding changes; new OAuth grants — ALERT on all three, they're rare and high-signal
Recon Anomalous mailbox read/search volume; access to unusual folders (mailbox audit + insider risk)
Strike Outbound to finance patterns; lookalike-domain sends; outbound-reputation smoke (reputation concept)

The response sequence (rehearsed, ordered)

  1. Contain the identity: revoke sessions/tokens (not just password — token theft survives resets), disable or force re-auth.
  2. Kill persistence: delete the malicious inbox rules, remove forwarding, REVOKE the OAuth grants (the step everyone forgets — the app keeps token access through a password reset).
  3. Assess the strike: trace outbound during the window — did money-mails go? Warn recipients/suppliers DIRECTLY (phone, not the compromised channel).
  4. Reputation triage if they sent volume (reputation concept's recovery).
  5. Forensics + hardening: what did they read (mailbox audit), how did they enter (sign-in logs), which control would've stopped it — feed the gaps back.

What to watch (proofs)

  • The three persistence alerts wired to your channel (serv365 delivery pattern): inbox-rule-create, forwarding-change, oauth-grant — the earliest cheap catch after entry.
  • Sign-in risk surfacing: Identity Protection risky-user/detection feed — BEC's front door.
  • The forwarding + rules standing census (forwarding concept's diff) — persistence that predates your alerting, found by the weekly sweep.
  • A tabletop per half-year on the response sequence, TIMED — because BEC response is a race, and the OAuth-revoke step is the one teams fumble live.

PowerShell for this concept

  • Get-InboxRule View Inbox rule properties. Inbox rules are used to process messages in the Inbox...
  • Get-Mailbox View mailbox objects and attributes, populate property pages, or supply mailbox...
  • Search-MailboxAuditLog > [!NOTE] > This cmdlet will be deprecated in the cloud-based service. To access audit...

Discussion

No messages yet — start the thread.

Sign in with your email to join the discussion — we send a one-time link, no password.