SOP-10: Business Email Compromise (BEC) Response

·

Business Email Compromise is one of the highest-impact cyber threats facing organisations — the FBI IC3 consistently reports billions in annual losses. Unlike malware-heavy attacks, BEC relies on trusted email channels and legitimate-looking requests. Detection requires monitoring identity, mail flow, and financial systems together.

Modern BEC almost always begins with an Adversary-in-the-Middle (AiTM) phishing kit that captures session cookies, bypassing MFA entirely. From there, attackers set up silent inbox rules to hide their tracks, conduct recon inside the mailbox, and pivot to fraud or lateral phishing within the organisation.

◈ Table of Contents

01 Background 02 Identification 03 Containment 04 Eradication 05 Escalation
01

Background

CONTEXT
B1BEC Attack Phases & MITRE Mapping
PhaseMITREKey IndicatorSeverity
AiTM phishing / session token theftT1539, T1566.002Sign-in from new geography/ASN immediately after phishing click; risk event in Entra ID ProtectionCRITICAL
Inbox rule creation (hide/redirect)T1114.003New Outlook rule redirecting to RSS/deleted items; keywords: invoice, payment, wire, bankHIGH
Mail forwarding to external addressT1114.003ForwardingSmtpAddress set on mailbox; ExternalOofOptions changedHIGH
OAuth app consent grantT1528New OAuth app granted Mail.Read / Mail.ReadWrite / Mail.Send permissionsHIGH
Wire transfer fraud emailT1566.002, T1496Finance or exec account sending payment instruction emails to external recipientsCRITICAL
Lateral phishing from compromised accountT1566.001High-volume outbound email to internal/external from compromised account post-takeoverCRITICAL
B2Log Sources
SourceTable / PortalKey Events
Entra ID Sign-in LogsSigninLogs (Sentinel) / Entra PortalRisk events, impossible travel, new ASN, token replay detection
Unified Audit Log (M365)OfficeActivity (Sentinel) / PurviewNew-InboxRule, Set-Mailbox, ConsentGranted, EmailSendingLimitExceeded
Defender for Office 365EmailEvents, EmailUrlInfoPhishing click, AiTM kit fingerprint, post-delivery detonation
Entra ID ProtectionAADRiskyUsers, AADUserRiskEventsUnfamiliar sign-in properties, leaked credentials, impossible travel
02

Identification

INVESTIGATE
BEC Investigation Workflow
I1Inbox Rule Detection & Mail ForwardingKQL + SPL
KQL — Sentinel: Suspicious inbox rules
// Detect new inbox rules that redirect/delete mail (BEC hallmark) OfficeActivity | where TimeGenerated > ago(7d) | where Operation in ("New-InboxRule", "Set-InboxRule") | extend RuleParams = parse_json(Parameters) | where RuleParams has_any ( "DeleteMessage", "ForwardTo", "RedirectTo", "MoveToFolder", "MarkAsRead", "StopProcessingRules" ) // High-value targets | where UserId has_any ("cfo@", "finance@", "ap@", "ceo@", "exec@") or RuleParams has_any ("invoice", "payment", "wire", "bank", "transfer") | project TimeGenerated, UserId, ClientIP, RuleParams, UserAgent | order by TimeGenerated desc
KQL — Mail forwarding to external address
OfficeActivity | where TimeGenerated > ago(7d) | where Operation == "Set-Mailbox" | extend Params = tostring(Parameters) | where Params has "ForwardingSmtpAddress" | where Params !has "@yourdomain.com" // replace with your domain | project TimeGenerated, UserId, ClientIP, Params | order by TimeGenerated desc
SPL — Splunk UAL: Inbox rule creation
index=o365 Operation IN ("New-InboxRule","Set-InboxRule") | spath Parameters | where like(Parameters, "%DeleteMessage%") OR like(Parameters, "%ForwardTo%") OR like(Parameters, "%invoice%") OR like(Parameters, "%payment%") | table _time, UserId, ClientIP, Parameters | sort -_time
I2AiTM Session Token Theft & Risky Sign-insKQL
KQL — Sentinel: Impossible travel + MFA bypass indicators
// Sign-in from new country/ASN right after successful MFA SigninLogs | where TimeGenerated > ago(7d) | where UserPrincipalName == "[email protected]" | where ResultType == 0 // success | extend CountryCode = tostring(LocationDetails.countryOrRegion) | extend ASN = tostring(NetworkLocationDetails[0].networkNames[0]) | order by TimeGenerated asc | project TimeGenerated, UserPrincipalName, IPAddress, CountryCode, ASN, AuthenticationDetails, ConditionalAccessStatus, RiskLevelDuringSignIn, UserAgent, AppDisplayName
KQL — Entra ID token theft / unfamiliar sign-in
AADUserRiskEvents | where TimeGenerated > ago(7d) | where RiskEventType in ( "unfamiliarFeatures", "anonymizedIPAddress", "impossibleTravel", "tokenIssuerAnomaly" ) | project TimeGenerated, UserPrincipalName, RiskLevel, RiskEventType, IPAddress, Location, AdditionalInfo | order by TimeGenerated desc

AiTM kits steal the post-MFA session cookie — the sign-in log will show MFA succeeded (ResultType=0, AuthenticationRequirement=multiFactorAuthentication) followed immediately by activity from a completely different IP and country. That pattern is near-certain AiTM.

I3OAuth Consent Grant AbuseKQL
KQL — Sentinel: Suspicious app consent grants
// New OAuth apps granted Mail permissions — common BEC persistence mechanism AuditLogs | where TimeGenerated > ago(7d) | where OperationName == "Consent to application" | extend Scopes = tostring(TargetResources[0].modifiedProperties[0].newValue) | where Scopes has_any ("Mail.Read", "Mail.ReadWrite", "Mail.Send", "MailboxSettings.ReadWrite") | extend AppName = tostring(TargetResources[0].displayName) | extend InitiatedBy = tostring(InitiatedBy.user.userPrincipalName) | project TimeGenerated, InitiatedBy, AppName, Scopes | order by TimeGenerated desc

After an account takeover, attackers often grant a rogue OAuth app Mail.ReadWrite permissions — this lets them read mail indefinitely even after the password is reset, because OAuth tokens survive password changes. Always revoke OAuth grants during containment.

03

Containment

STOP IT
C1Account Takeover ContainmentImmediate
  • 1
    Block sign-in: Entra ID → Users → [user] → Account enabled → NO. This terminates all future authentication.
  • 2
    Revoke all sessions: Users → [user] → Revoke sessions. This invalidates existing session tokens including the stolen one.
  • 3
    Revoke OAuth grants: Entra ID → Enterprise applications → [app] → Permissions → Revoke user consent. Or via PowerShell: Revoke-AzureADUserAllRefreshToken -ObjectId [UPN]
  • 4
    Remove malicious inbox rules: Exchange Admin Center → Recipients → Mailboxes → [user] → Manage mailbox → Inbox rules → Delete the attacker-created rule.
  • 5
    Remove mail forwarding: Exchange Online PowerShell → Set-Mailbox [UPN] -ForwardingSmtpAddress $null -DeliverToMailboxAndForward $false
  • 6
    If wire transfer fraud email was sent — notify Finance immediately with the recipient email addresses and amounts mentioned. Time is critical for bank recall.
C2Purge Phishing Emails from Organisation
  • 1
    If the compromised account sent phishing internally — use Defender for Office 365 Threat Explorer to find all recipients: security.microsoft.com → Email & collaboration → Explorer → From: [compromised UPN]
  • 2
    Soft-delete the phishing emails org-wide: Threat Explorer → Select messages → Delete → Soft delete. This removes from inbox but retains in recoverable items for forensics.
  • 3
    Check if any recipient clicked a link — review EmailUrlInfo for clicks post-delivery and cross-reference with those users' SigninLogs for subsequent risky sign-ins.
04

Eradication

CLEAN UP
E1Full Account Remediation
  • 1
    Reset password via out-of-band channel (phone call to user's manager — not email). Enforce complex password.
  • 2
    Clear all MFA methods and re-register via a Temporary Access Pass (TAP): Entra ID → Users → [user] → Authentication methods → Delete all TOTP/authenticator entries → Issue TAP.
  • 3
    Review all inbox rules on the mailbox (not just the attacker's rule) — confirm legitimate rules are intact.
  • 4
    Enable Litigation Hold on the mailbox to preserve evidence before re-enabling the account: Set-Mailbox [UPN] -LitigationHoldEnabled $true
  • 5
    Re-enable account after full remediation. Monitor sign-in logs for the next 7 days for anomalies.
Eradication Complete When
  • All sessions revoked, OAuth grants removed, inbox rules cleaned
  • Mail forwarding to external addresses disabled
  • Password reset and MFA re-registered via TAP
  • Phishing emails purged from all recipient inboxes
  • Finance team notified of any fraudulent payment instructions
05

Escalation

TIERS
ESC1Escalation Tiers
TierTriggerAction
L1 → L2Inbox rule created, mail forwarding confirmed, account blockedHand off with: affected UPN, risky sign-in timestamps, inbox rule details, OAuth apps identified
L2 → CISO + LegalWire transfer fraud email sent or payment processed; multiple mailboxes compromised; PII exfiltrated via forwardingCISO + Legal + HR notified. If payment processed — contact bank within 24h for recall. Potential regulatory notification.
L2 → Finance DirectorAny email from compromised account referencing payment, wire, invoice, or bank account changeFinance Director verbally confirms with the email sender via phone before any payment action. Hard stop on all payments referenced in suspicious emails.

Authorized security research & penetration testing only. Unauthorized use is illegal. Authored by Rudra Verma | Senior Security Architect | CyberHawk Consultancy.

◈ Stay Connected

Follow CyberHawk Threat Intel for SOC SOPs, threat intelligence, and hands-on analyst tooling.

Website YouTube Twitter / X TikTok Telegram
SOPs Blog Courses

"They can't exploit you if you are the Exploit."