Iran-Linked Password-Spraying Campaign Targets 300+ Israeli Microsoft 365 Organizations

Summary
What happened: Multiple Israeli Microsoft 365 tenants targeted in coordinated password-spraying attacks—publicly attributed to Iranian-linked threat actors (Microsoft Threat Intelligence, March 2024).
Who is affected: Any org running M365 with legacy authentication, weak credential hygiene, or misconfigured Identity and Access Management (IAM) controls.
Immediate steps:
- Review Azure AD sign-in logs for distributed failed login attempts
- Enforce phishing-resistant Multi-Factor Authentication (MFA)
- Disable legacy protocols (e.g., IMAP, SMTP AUTH, POP3)
- Audit OAuth apps and service principal permissions
Next Steps / TL;DR
- Suspend compromised accounts and rotate credentials
- Block legacy authentication ("Azure AD > Conditional Access > Block legacy auth")
- Enforce MFA (FIDO2, Windows Hello for Business, or Microsoft Authenticator passwordless)
- Review mailbox rules and OAuth app consents
- Initiate incident response procedures
Cold Coffee, Hot Mess: A DevSecOps View of the M365 Attack
It’s March 2024. I’m five cups deep, and another M365 tenant pops up in IR triage—hit by password spraying traced to Iranian APTs, same as the public advisories. Over 300 organizations targeted, per Microsoft. No magic—just brute force, dead-simple technique.
What Actually Happened
Attackers leveraged cloud-scale password spraying (MITRE ATT&CK T1110.002) against M365 accounts. Patterns observed:
- High volume of failed logins (ResultType: 50126/50140) across many users in a short window
- Attempts from distributed IPs (geolocated in Iran, VPN, Tor)
- User agent strings: non-browser clients, legacy auth, IMAP, SMTP AUTH
- Identical weak passwords across accounts ("Password123!", "Spring2024", etc.)
Most victims left legacy authentication enabled, failed to enforce MFA, and neglected monitoring sign-in anomalies (Azure AD logs, Defender for Identity).
Attribution: Iranian-linked activity per Microsoft, CISA & Reuters (source1, source2, source3).
Composite Case Study: IAM Complacency in Action
Anonymized/Composite case—drawn from multiple engagements, 2021-2024, mid-size financials and healthcare (~2,000–4,000 users)
Client's password policy: "8 characters, no expiry." MFA: optional; legacy auth exposed for "compatibility." In IAM logs: thousands of failed sign-in attempts (ResultType: 50126), spike from Tor and overseas IP ranges. Alerts ignored—SIEM rules disabled due to “alert fatigue.” Breach outcome: ransomware group gained access, exfiltrated sensitive mailboxes, lateral movement via OAuth apps. Remediation took weeks, audit failures lingered.
Indicators of Compromise & Attack Patterns
- Azure AD Sign-in logs:
- Multiple users, high failed sign-in rates
- Source IPs with geodiversity (outside usual business regions)
- Failure reasons: Invalid credential (ResultType: 50126), legacy protocol attempt
- Non-browser user agent strings:
- “IMAP”, “SMTP”, “POP3”
- Spikes in “Sign-in failures”
- 50+ accounts targeted per 15 minutes from unique IPs
- Mail delivery & mailbox anomaly logs
- Suspicious mailbox rules, mass forwarding
- OAuth app consent grants
- Service principals suddenly granted broad permissions
Telemetry sources:
- Azure AD sign-in logs
- Azure AD Identity Protection
- Defender for Cloud Apps
- Exchange Online audit logs
Immediate Response Checklist
- Isolate compromised accounts; reset credentials
- Block legacy authentication (Azure AD Conditional Access policy: Block legacy authentication docs)
- Enforce phishing-resistant MFA (FIDO2, Windows Hello for Business, Microsoft Authenticator passwordless docs)
- Revoke suspicious OAuth app consents and unused service principals
- Audit mailbox rules for exfiltration or auto-forwarding
- Notify IR stakeholders
- Initiate incident response playbook

Detection & Hunting Queries
Azure AD:
- Filter sign-in logs by “ResultType: 50126/50140”
- Alert: >50 failed sign-ins from unique IPs in 15 minutes across >30 accounts
- Filter “Application: IMAP, SMTP, POP3”
- Group by Location/IP to identify geo-anomalies
- Highlight identical Username + Password attempts across accounts
- Audit mailbox rule creation in Exchange Online
- OAuth Application filter: newly consented apps with high privilege scopes
SIEM (Splunk/ELK):
- failed_login_count >50 in 15 min
- user_agent IN (“IMAP”, “SMTP AUTH”)
- src_ip NOT IN approved_country_list
- password_guess_pattern: identical password string used across accounts
Technical Fault Lines: Architecture & Defaults
Legacy Protocols Still Enabled
- IMAP, SMTP AUTH, POP3—default enabled for backward compatibility as of late 2023 (docs)
- SMTP AUTH default enabled unless explicitly disabled
- Weak password sync via Azure AD Connect from on-prem Active Directory; old policies persist
Overprivileged Service Principals
- OAuth apps with mailbox read/write across tenant
- Forgotten service principals granted persistent consent
Monitoring Gaps
- Zero real-time session monitoring
- No integration with Azure AD Identity Protection alerts
- Endpoint telemetry missing in SIEM
Remediation & Hardening
Immediate Changes:
- Disable legacy authentication protocols (Exchange Online: disable IMAP/SMTP/POP3 docs)
- Enforce MFA for all users—prefer FIDO2, Windows Hello, Authenticator passwordless; SMS/TOTP is vulnerable to phishing (Microsoft guidance)
- Azure AD Smart Lockout configured: lock after 10 failed attempts for 60 seconds (docs)
- Review and revoke service principal and OAuth app permissions monthly
- Audit mailbox rules quarterly
- Review conditional access policies quarterly; Use Microsoft’s Conditional Access templates (docs)
- Enable Azure AD Identity Protection risk policies (docs)
Long-term Strategy:
- Annual password hygiene reviews
- Integrate continuous detection and response with Defender for Cloud Apps, Azure Sentinel
- Educate users on credential hygiene—because social engineering is still easier than brute force
- IR playbook maintenance: log retention, role assignments, evidence preservation
- Regulatory reporting triggers reviewed after every incident
Incident Response Playbook Outline
-
Containment:
- Suspend compromised accounts
- Block legacy authentication
- Revoke malicious OAuth apps/service principals
-
Evidence Preservation:
- Export Azure AD, Exchange, Defender logs (30–90 days, retention as per legal/regulatory requirements)
-
Communication Plan:
- Notify internal stakeholders
- Prepare external disclosure if required (clients, regulators, press)
-
Post-Incident Review:
- Update detection thresholds
- Review IAM and Conditional Access policies
- Check log retention and recovery plans
References & Further Reading
- Microsoft Threat Intelligence: Iranian cyber operations targeting Israel, March 2024
- CISA Alert: Iranian Cyber Activity in M365
- MITRE ATT&CK: Password Spraying (T1110.002)
- Microsoft Conditional Access: Block Legacy Authentication
- Microsoft Disabling Basic Auth in Exchange Online
- Microsoft Phishing-Resistant MFA Guidance
- Microsoft Identity Protection Risk Policies
- Defender for Identity Documentation
- Azure AD Sign-in Logs Overview
- Exchange Online Audit Logging
Author Bio
Eitan Levinson, CISSP | Lead DevSecOps Architect, CloudSec
- 18 years hands-on in cloud and IAM security
- Azure Security Engineer, Microsoft Certified: Identity, CISM
- Led incident response on dozens of M365 breaches (Exchange Online, Azure AD Conditional Access, Defender for Cloud Apps)
- LinkedIn: linkedin.com/in/eitanlevinson
Author note:
Direct experience on M365 incident response—disabling legacy auth, tuning Conditional Access, and forensic mailbox rules. I build detection queries that catch the stuff Microsoft’s default settings miss.
Not every breach is a nation-state problem—but most are a failure to take basic steps. Too many teams treat “cloud” as a panacea. They’re wrong. Attackers count on that. If your M365 setup still trusts old defaults, you won’t notice the next cold coffee until the flames are licking your inbox.