CaptiveCrunch: Hotel and Conference Wi-Fi Is Now a Microsoft 365 Attack Surface

Storm-2945, a sub-cluster of the Russian state-sponsored threat actor Midnight Blizzard, has been compromising guest Wi-Fi captive portal systems at hotels and conference centers worldwide since May 2026 to steal Microsoft 365 OAuth tokens and install credential-stealing malware on travelers' devices. The campaign bypasses MFA and standard email security. Blocking Device Code Flow and enabling token binding protection via Conditional Access closes the primary exposure.

Summary

Since May 2026, the Russian state-sponsored threat actor Midnight Blizzard has been operating a campaign called CaptiveCrunch. A sub-cluster called Storm-2945 is compromising the captive portal systems used to authenticate users to guest Wi-Fi networks at hotels, conference centers, and co-working spaces worldwide.

When a business traveler connects to a compromised guest network, the campaign can deliver one or both of the following attacks:

  • Malware via ClickFix: The captive portal presents a fake browser or Windows update prompt. If accepted, a persistent remote access trojan called CornFlake is installed, disguised as "Cloud Sync Service" (svchost32.exe). CornFlake and a companion infostealer called ChocoShell harvest Microsoft 365 SSO tokens, Web Account Manager (WAM) tokens, browser session cookies, saved passwords, keystrokes, files, and Wi-Fi credentials. The stolen M365 tokens are exfiltrated to actor-controlled infrastructure.
  • Device code phishing via fake Microsoft pages: From July 2026, users at compromised portals have also been redirected to doppelganger Microsoft pages (on domains such as ms365-device.com and ms365-live.com). Users are prompted to enter a legitimate Microsoft device code, which hands the attacker a valid OAuth refresh token for the victim's M365 account without the attacker ever seeing the user's password or MFA response.

Microsoft attributes CaptiveCrunch to Midnight Blizzard, the Russian Foreign Intelligence Service (SVR) threat actor responsible for the SolarWinds supply chain attack and the 2024 Microsoft corporate breach. The campaign is confirmed active as of July 31, 2026, and Microsoft has noted that Storm-2945 is leveraging AI to support a significant portion of these operations.

Why This Matters

CaptiveCrunch does not require phishing emails, credential stuffing, or endpoint malware delivered through the corporate perimeter. When a device connects to a new Wi-Fi network, the operating system automatically redirects to the captive portal, the same step users expect at any hotel or conference venue. CaptiveCrunch hijacks that moment: the attacker controls what the portal serves, and the attack arrives inside a flow that looks and feels like a normal Wi-Fi login. The user must still take an action (accepting a fake update prompt or entering a device code on what appears to be a Microsoft authentication page) but the context makes the deception significantly more convincing than a standalone phishing email.

For Microsoft 365 operators and MSPs, the operational implications are direct:

  • Stolen M365 tokens give full cloud access without triggering MFA again. ChocoShell specifically targets Microsoft 365 SSO tokens and WAM tokens stored in the Windows token broker cache. A stolen refresh token gives the attacker authenticated access to Exchange Online, Teams, SharePoint, OneDrive, and every other M365 service the user is licensed for.
  • Token theft survives password resets. Refresh tokens stolen from the broker layer are not invalidated by a password reset alone. An MSP who resets the compromised user's password without also revoking all active sessions does not remove the attacker's access.
  • Device code phishing runs on legitimate Microsoft infrastructure. When the device code phishing component is used, authentication takes place on real Microsoft sign-in pages. URL filters, email security gateways, and anti-phishing controls that look for suspicious domains do not intervene.
  • Every traveling user in a managed estate is a potential entry point. Microsoft has confirmed compromised hospitality networks in multiple countries. ReliaQuest identified CaptiveCrunch activity at conference centers and venues used by corporate travelers. For MSPs managing clients with mobile workforces or conference attendees, the exposure exists across the entire tenant estate independently for each tenant.

What to Check Now

5 Overe Policies to Apply

Step 1: Confirm Device Code Flow is blocked in every managed tenant

The device code phishing component of CaptiveCrunch requires Device Code Flow to be available in the target tenant. If this authentication flow is blocked via Conditional Access, the phishing page cannot generate a valid authentication code for the attacker to use.

Review Conditional Access policies in each managed tenant for a rule blocking Device Code Flow authentication. Confirm the policy is in enforced mode, not report-only, and that it applies to all users without unintended exclusions. Two Overe policy controls address this directly, both requiring Entra ID P1 (included in Microsoft 365 Business Premium and E3):

  • Disable Device Code Flow: blocks the authentication path that CaptiveCrunch's phishing component exploits
  • Disable Authentication Transfer: blocks a related credential transfer mechanism that Storm-2945 also employs

Both are in the Conditional Access section of your Overe policy template.

Step 2: Enable token binding protection for Exchange Online and SharePoint Online

CornFlake and ChocoShell steal OAuth tokens from the Windows token broker layer. An attacker with a stolen token can attempt to replay it from attacker-controlled infrastructure, including in cases where the token carries an embedded device claim from the original device that a standard device compliance CA policy would not catch.

Token Protection addresses this by cryptographically binding access tokens to the specific device they were issued on, using the device's Trusted Platform Module (TPM). A bound token cannot be replayed from a different machine even if the raw token material is extracted.

The Overe policy control for this is Require token binding protection for eligible apps, in the Conditional Access section of your policy template. This control currently covers Exchange Online and SharePoint Online accessed from supported Windows devices. Requires Entra ID P1.

Step 3: Review sign-in logs for anomalous session geography and device code activity

Enable response on "Session Hijack" rule - Overe

CaptiveCrunch tokens are typically replayed from actor-controlled infrastructure that may be geographically distant from the user's normal location. Check Entra ID sign-in logs for:

  • Successful sign-ins from unfamiliar countries or IP ranges, particularly following a period of user travel
  • Anomalous OAuth device code authentication activity (visible in sign-in logs under authentication method)
  • Sign-ins on unmanaged or non-compliant devices from users whose tenants enforce device compliance

Overe Monitor surfaces risky sign-in alerts and session geography anomalies across managed tenants in real time. Two additional Conditional Access policy controls add automated enforcement alongside monitoring, blocking access from accounts showing high-risk signals without waiting for manual review. Both require Entra ID P2 (Microsoft 365 E5 or Entra ID P2 add-on):

  • Block High-Risk Sign-Ins: blocks any sign-in categorized as high risk
  • Block High-Risk Users: prevents users flagged as high risk from signing in at all

For tenants on Business Premium or E3, prioritize the P1 controls in Steps 1 and 2 first. The P2 controls above provide an additional detection and response layer for tenants with the appropriate licensing.

Step 4: Brief traveling users

Advise client users who travel for conferences, events, or client visits to use mobile data (personal hotspot or eSIM) rather than hotel or venue guest Wi-Fi for any Microsoft 365 access. If guest Wi-Fi is unavoidable, users should treat any prompt to download an update, run a script, or enter a Microsoft sign-in code as suspicious, even if it appears as part of the normal Wi-Fi login flow.

Step 5: If you suspect a device has already been compromised

A password reset alone does not close the exposure. Refresh tokens stolen from the Windows token broker layer are not invalidated when a password changes. If a traveling user may have connected to a compromised network, take the following steps:

  • Revoke all active sessions for the affected user in Entra ID
  • Review and revoke OAuth consent grants in the Entra ID admin portal, particularly for first-party Microsoft applications that ChocoShell targets for token extraction. This step requires manual review to identify which grants to target and must be completed in Entra ID directly.
  • Block the account temporarily while you review sign-in logs for evidence of token replay from unfamiliar infrastructure
  • Check for newly registered devices in the user's Entra ID profile, as related Midnight Blizzard campaigns have registered attacker-controlled devices to maintain persistence after initial containment attempts

Overe Respond and the Auto Response Engine can automate session revocation and account containment, removing active access immediately while investigation is underway. OAuth consent grant revocation requires a separate manual step in Entra ID.

Why This Matters for Conditional Access Assurance (CAA)

CaptiveCrunch has two Microsoft 365 entry points: device code phishing and token theft from compromised devices. Both are addressable through Conditional Access enforcement, but both require that the relevant CA policies are actually enforced, not just configured.

Configured does not mean enforced.

A Conditional Access policy blocking Device Code Flow may appear correctly set up in the Entra ID policy editor while leaving authentication gaps due to exclusions, policy overlap, or a policy left in report-only mode. Token binding protection may be scoped incorrectly or left in report-only mode across some tenants while appearing active in others.

Overe Conditional Access Assurance (CAA) validates whether intended CA protections are consistently enforced across real authentication flows, not just configured in the policy console. For MSPs managing multiple tenants, CAA surfaces enforcement gaps across the full estate so that a policy drift or exclusion in one client tenant does not go unnoticed while other tenants are under review.

See exactly where your tenants would fail

The Overe Microsoft 365 Attack Simulator runs through the session theft and AiTM scenario that CaptiveCrunch exploits, showing exactly which Conditional Access paths would allow a stolen token to succeed in a real tenant, before an attacker finds them first.

Try it at overe.io/attacksim

Source URLs

Severity
High
Productivity Impact
Medium
Fix Estimate
5-15 Minutes (with Overe)