Get the Zoom link
Cloud Security Office Hours Banner

M365 Token Spray and Replay 2026

Step-by-step kill chain mapped to MITRE ATT&CK Cloud, sourced from official post-mortems and primary technical analyses.

July to September 2026 Critical Entra ID / M365

M365 Token Spray and Replay - Tokens Captured After MFA → Replayed From One Rented /24 → Rogue Entra Devices → MFA Methods Wiped and Replaced → Hidden Inbox Rules Around Payroll Mail

Huntress published this account on October 22, 2026. Between July 14 and September 22 it tracked an operator who replayed stolen Microsoft 365 sign-in sessions from rented hosts in one address block, 193.26.115.0/24 at 1337 Services GmbH, and it responded to related incidents at 79 organizations. Because each session was minted after the victim passed MFA, replaying it needed no second factor. Inside, the operator registered rogue Entra devices, wiped victims' MFA methods and registered its own, and created inbox rules with one-to-three-character or punctuation names that hid mail, in one case mail about payroll. One compromised mailbox sent a payroll-related email to an outside CPA. Three caveats belong next to the headline. Huntress's text counts organizations and sign-in events. The 97 compromised accounts in The Hacker News's headline come from a "by the numbers" graphic in Huntress's report, and the text never repeats that figure or says how the accounts were counted. Huntress says the tokens came from several sources, including adversary-in-the-middle relays and device-code phishing, and gives no breakdown of how many tokens came from each. And it reports no confirmed financial loss or data theft; its figures come from its own customer environments.

79 organizations where Huntress responded to related incidents
497+ successful Microsoft 365 sign-in events Huntress detected, against 200,000+ failed login attempts traced to the same /24
48+ rogue Entra devices registered, and, in 19 organizations, MFA methods wiped and replaced within three hours of the first campaign sign-in, per Huntress
Threat actor: unattributed; Huntress names the hosting provider of the replay range, not an actor
📄 Huntress - M365 Token Spray and Replay Campaign Compromises Business Email Accounts ↗ 📄 Microsoft Learn - Revoke user access in an emergency in Microsoft Entra ID ↗ 📄 The Hacker News - Microsoft 365 Token-Replay Attacks coverage ↗
🎣 Initial Access: Fake Sign-in Pages and Device Codes
01
Victims reached fake sign-in pages and device-code prompts, and Huntress names more than one source for the stolen tokens
T1566.002 - Phishing: Spearphishing Link

Huntress says the tokens came from multiple sources: adversary-in-the-middle (AiTM) relays behind fake sign-in pages, device-code phishing, and social engineering during a legitimate login. It lists these for the campaign as a whole. It lists these for the campaign as a whole and gives no breakdown by method. It does tie some replays to a source: the browser sessions replayed from 193.26.115[.]199 and 193.26.115[.]210 came through AiTM relays, and sign-ins from 193.26.115[.]16 used the device-code flow. It does not say where the scripted Build A replays got their tokens, and it does not describe how the lures reached victims.

The device-code route shows up in the second phase, when Huntress recorded sign-ins through the Microsoft Office device-code flow from 193.26.115[.]16. In that flow the victim is tricked into entering a code on Microsoft's own sign-in page, and completing it hands the attacker a valid refresh token and access token.

Sources Huntress names: AiTM relays, device-code phishing, social engineering during a real login
Breakdown by method: not given; AiTM tied to the Build B replays, device code to 193.26.115[.]16
Lure delivery: not described
Device-code sign-ins: Microsoft Office client, from 193.26.115[.]16 (Phase 2)
PhishingDevice Code FlowAiTMT1566.002
🔑 Credential Access: A Session Minted After MFA
02
On July 21 an AiTM relay caught a victim at the MFA prompt and kept the session that sign-in produced
T1557 - Adversary-in-the-Middle

Huntress gives one case in full. At 17:18:20 UTC on July 21, an AiTM relay at 185.238.2[.]195 caught the victim at the MFA prompt. The relay passed the prompt through to Microsoft and kept the resulting session. The session token is issued after MFA succeeds, so replaying it does not trigger MFA again.

Huntress describes the operation as two tiers on different providers: relays that capture sessions, and separate hosts that replay them. A later relay, an IPv6 address at Evoxt Sdn. Bhd., first appeared on September 2. On September 22 a victim reached the MFA prompt through it at 20:46 UTC and completed MFA a minute later.

July 21 relay: 185.238.2[.]195, victim caught at the MFA prompt at 17:18:20 UTC
Phase 4 relay: 2400:8d60:2::1:841d:5dd (Evoxt Sdn. Bhd.), first seen September 2
What the relay keeps: a session already past MFA
AiTMSession TheftMFAT1557
🔀 Lateral Movement: Replayed From One Rented Range
03
The stolen sessions were replayed from one rented /24 within minutes: 12 minutes after capture on July 21, four on September 22
T1550.001 - Use Alternate Authentication Material: Application Access Token

On July 21 the session was hijacked from 193.26.115[.]199 at 17:30:21 UTC, and at 17:43:15 the same session was in use from a second 1337 Services address, 124.198.132[.]33. Across the campaign the operator rotated through six addresses in 193.26.115.0/24 (1337 Services GmbH, AS210558) over four phases. Microsoft Entra ID Protection independently raised verified threat actor IP detections against four of the six, but flagged them one at a time, not as a range. Huntress calls the pattern token spraying: password spraying with stolen tokens in place of guessed passwords. It traced more than 200,000 failed login attempts in the campaign window to the same range, against at least 497 successful sign-in events.

Huntress saw two builds. Build A was scripted: a node user agent (a bare Mozilla/5.0 on one host) making OAuth2:Token requests with the Microsoft Office and Microsoft Authentication Broker client IDs against Microsoft Graph, Exchange Online, SharePoint Online and the Device Registration Service. Build B replayed browser sessions with a current Chrome or Edge user agent through the OfficeHome client. Huntress cannot say for certain why the operator rotated addresses. Huntress notes the effect: a block written for one address did nothing against the next, and blocking any single address would have stopped one phase at most.

The busiest burst came from 193.26.115[.]72 on September 11. Within two hours Huntress had sent incident reports to 22 customers. The report gives two different totals for that address: 303 successful sign-ins across 29 organizations over four days in its Phase 3 section, and 232 across 28 in its mitigation section. It does not reconcile them.

Replay range: 193.26.115[.]0/24, 1337 Services GmbH, AS210558
Capture to replay: 12 minutes (July 21), 4 minutes (September 22)
Build A: node UA, OAuth2:Token, clients d3590ed6-52b3-4102-aeff-aad2292ab01c (Office) and 29d9ed98-a469-4536-ade2-f981bc1d605e (Auth Broker)
Build B: browser UA, Login:reprocess, client 4765445b-32c6-49b0-83e6-1d93765276ca (OfficeHome)
Phase 3 (.72): 303 sign-ins in 29 orgs, or 232 in 28, depending on the section
Token ReplayToken Spraying1337 ServicesT1550.001
🔐 Persistence: Rogue Entra Devices
04
The scripted build registered at least 48 rogue Entra devices named DESKTOP- plus eight hex characters
T1098.005 - Account Manipulation: Device Registration

Huntress first detected the campaign on July 14, 2026, as a sign-in from 193.26.115[.]221 by an Entra-joined device with a name of this form. A fake device appeared in 13 of the 14 incidents Huntress responded to that day. By August 3 the operator had signed in to 37 organizations and registered 37 rogue Entra devices, and Huntress counts at least 48 distinct devices across the campaign.

Huntress explains why the device matters: a registered device can give the attacker a more durable way to request tokens than the stolen session, and it stays in the directory until someone deletes it. The name format, DESKTOP- plus eight uppercase hex characters, does not match the default Windows gives a new machine. Huntress also says the pattern is rare but not unique to this campaign, so confirm a device before deleting it. The report gives no timing between first sign-in and device registration.

Device name: DESKTOP- plus 8 uppercase hex characters, e.g. DESKTOP-54521F46
Count: at least 48 distinct devices
By August 3: 37 organizations signed in to, 37 devices registered
Resource: Device Registration Service, 01cb2876-7ebd-4aa4-9cc9-d28bd4d359a9
Entra IDDevice RegistrationPersistenceT1098.005
🔐 Persistence: The Victim's MFA Replaced
05
In 19 organizations the victim's MFA methods were wiped and a new one registered within three hours of the first campaign sign-in
T1556.006 - Modify Authentication Process: Multi-Factor Authentication

The existing methods were wiped through Microsoft's security-info registration service, and a new authenticator was registered minutes later. In the July 21 case a new authenticator app labelled iPhone 13 was activated at 18:08:50 UTC, about 38 minutes after the hijack and about 50 minutes after the relay caught the victim. The Hacker News reported this as less than 51 minutes after the hijack, which matches Huntress's timestamps only when measured from the relay capture. In one incident the operator used a deviceless authenticator method that was already on the account.

Resetting the password does not undo any of this. In Huntress's words, "A password reset alone does not remove attacker-registered devices or MFA methods." Microsoft described a similar swap in Storm-2949, where existing methods were removed and an attacker-controlled Microsoft Authenticator enrolled. There, Microsoft assessed with high confidence, the way in was abuse of self-service password reset, with the user talked into approving MFA prompts.

Removed through: Microsoft's security-info registration service
Replaced with: a new authenticator, minutes later
July 21: iPhone 13 authenticator activated at 18:08:50 UTC
Scope: 19 organizations, within three hours of the first campaign sign-in
MFAAuthenticatorSecurity InfoT1556.006
🙈 Stealth: Inbox Rules With Forgettable Names
06
Inbox rules with names like a single dot or "sss" hid mail, and one hid any message mentioning payroll, direct deposit, bank or bonus
T1564.008 - Hide Artifacts: Email Hiding Rules

The rules were named ., sss, ss, iT, ,., ........, s and d. Most marked mail as read and deleted it, or moved it to RSS Feeds, RSS Subscriptions or Conversation History. Rule s hid messages containing payroll, direct deposit, bank or bonus. Rule d moved all mail from one external CPA's address to Conversation History and marked it read. In four mailboxes the rules were created through the Outlook REST API rather than Outlook itself. Every rule came from a VPN or rented hosting (ExpressVPN, NordVPN, CrownCloud, DataWagon, GLOBALTELEHOST, LeaseWeb, Dynu, Interserver), and none from the 1337 Services network.

In the September 11 burst the operator used a compromised mailbox to send a payroll-related email to an external CPA, and in that mailbox the operator modified rule s and, five minutes later, created rule d, both from the same Interserver address, 167.148.41[.]96. Huntress reports no outcome for that email. In the first phase, a mailbox carrying the sss rule sent spam to hundreds of external recipients before Microsoft Entra ID Protection rated the account high risk. Huntress says access of this kind sets the stage for business email compromise; it does not report a completed fraud, a financial loss or data theft.

Rule names: .  sss  ss  iT  ,.  ........  s  d
Destinations: RSS Feeds, RSS Subscriptions, Conversation History, or deleted
Rule s keywords: payroll, direct deposit, bank, bonus
Created from: VPNs and rented hosting, never 1337 Services; in four mailboxes, via the Outlook REST API
Payroll email to the CPA: sent; outcome not reported
Inbox RulesExchange OnlinePayrollT1564.008

🛡 How to Defend Against This Chain

Revoke sessions and reset the password, then remove what the attacker registered. That is Huntress's containment order. A password reset by itself does not invalidate the access token, which Huntress says stays valid for about 90 minutes, and it leaves rogue devices and attacker MFA methods in place. Microsoft's emergency revocation guidance differs in order and scope: disable the account, revoke sessions, then disable the user's registered devices. Its page gives one hour as the default access token lifetime (Microsoft's token-lifetime documentation says 60 to 90 minutes), and notes that an app holding an access token keeps access until that token expires unless the service supports continuous access evaluation. It does not mention MFA methods, which Huntress's list adds, and in hybrid tenants it also disables the on-premises account and resets the password twice. Replays of sessions that were no longer valid failed with AADSTS50133 (SsoArtifactRevoked), which Microsoft returns after a password expires or is changed: three attempts against one organization in August, and one on September 3.
Audit Entra devices and authentication methods on every account that was replayed. Huntress's audit list covers devices named DESKTOP-, Device- or Work Pc plus eight hex characters, particularly ones registered from hosting IP addresses. Confirm each before deleting, since the pattern is not unique to this campaign. For MFA, look for methods cleared and re-registered within minutes, remove any authenticator the user does not recognize, and check deviceless methods already on the account, which one incident here used. A device left in the directory can still give the attacker a way to request tokens after the stolen session is dead.
Require MFA or block for all users, all cloud apps and all client app types in Conditional Access. That is Huntress's main recommendation. All 1,052 sign-ins blocked from 193.26.115[.]72 came from four organizations, while in the 29 organizations the address got into, nothing stopped it. Huntress does not say which policies those four organizations had.
Triage by credential validity, not by spray volume. A Conditional Access block (AADSTS53003) happens after authentication succeeds, so Huntress treats it as evidence of a valid stolen credential rather than a defense that held. Ranking tenants by failed attempts would have pointed responders at the four where Conditional Access was already working, the most-sprayed and least-compromised ones.
Restrict device-code flow and user consent. Huntress recommends Conditional Access authentication-flow policies to restrict device code, with restricted service accounts and exclusions where the flow is needed, and turning off standard users' ability to consent to new applications. Separately from this campaign, ANY.RUN has described a device-code phishing kit it calls SkyW4lker, in which the victim enters a code on Microsoft's legitimate page and the operator's backend collects the resulting tokens; neither ANY.RUN nor Huntress connects the two, and ANY.RUN gives the same Conditional Access advice.
Hunt for the replay and for the cover-up together. Huntress's hunts: OAuth2:Token and Cmsi:Cmsi sign-ins from hosting providers using the Microsoft Office or Authentication Broker client with a node or bare Mozilla/5.0 user agent, especially against mailboxes or the Device Registration Service; new enterprise applications, which can keep access to a tenant; and inbox rules with one-to-three-character or punctuation-only names, rules that route mail to RSS Feeds, RSS Subscriptions or Conversation History, and rules keyed to payroll or banking terms. Blocking the /24 would have covered all six main replay hosts, but not the relays, a few other 1337 Services addresses, or the VPN and hosting addresses that created the rules.

Related defense topics