Researchers tie the LinX Coders phishing-as-a-service toolkit to 9,332 compromise events across 94 countries, with 63.7% of victims in the United States and stolen session cookies accounting for more than half of all outcomes.

A phishing-as-a-service (PhaaS) toolkit tracked as Mirage2FA has been linked to the potential compromise of 4,532 Microsoft 365 accounts in a campaign that targeted 3,518 organizations, according to new research published by threat intelligence analysts ShiFu and raptur3 at ANY.RUN.

The kit does not drop malware. Instead, it uses browser-executed HTML, XHTML, and SVG attachments to funnel victims to a fake Microsoft login page backed by an adversary-in-the-middle (AiTM) reverse proxy.

The proxy relays the username, password, and one-time 2FA code to Microsoft in real time and captures the authenticated session cookie that comes back, letting the attacker enter the account without ever typing a password or completing MFA again.

 Mirage2FA phishing targets US companies in technology and manufacturing (Source: ANY.RUN)

Nearly Half of Targeted Accounts Were Potentially Compromised

ANY.RUN’s telemetry shows the campaign reached 9,426 unique email addresses, and roughly 48% of them were potentially compromised.

Victim activity was logged in 94 countries, but the United States dominates with 2,885 victims, or 63.7% of the total, far ahead of India (5.1%), Singapore (4.1%), the United Kingdom (1.7%), and Canada (1.7%).

Technology companies were hit hardest at 19.2% of victims, followed by manufacturing (11.1%), education (9.9%), consulting (8.3%), telecommunications (6.6%), healthcare (5.4%), and finance (3.1%).

MSSPs also feature among the most affected sectors, a detail that matters because a single compromised provider account can expose the customers it manages.

The operator has been active since at least September 2024, but the tempo changed in 2026.

Sandbox detections began a steady climb in March, and July alone produced 445 Mirage2FA sessions in ANY.RUN’s Interactive Sandbox with the month only partially recorded, out of 1,249 sessions analyzed in total.

ANY.RUN’s threat intelligence shows a steady rise in Mirage2FA attacks through 2026 (Source: ANY.RUN)
 Technology and manufacturing are the main industries targeted by Mirage2FA (Source: ANY.RUN)
US companies are the core target of Mirage2FA attacks (Source: ANY.RUN)

Session Cookies Make Up More Than Half of All Thefts

Of the 9,332 compromise events recorded, 4,561 (51%) involved the theft of an authenticated session cookie, affecting 2,541 unique victims.

Another 3,044 events (34%) captured a password together with a 2FA code, 1,339 (15%) were single sign-on logins, and 388 fell into other categories.

Mirage2FA steals login information from affected companies, with cookie theft the most common outcome (Source: ANY.RUN)

The dominance of cookie theft changes the incident response math. Because the attacker holds a valid session rather than just a password, a password reset does not evict them.

Mirage2FA stores the stolen cookies as Base64-encoded .txt dumps on its operator panel, ready to be replayed against Microsoft 365, SSO-connected applications, and internal workflows.

One in three successful login events (33.3%) came from mobile devices, where users have fewer visual cues to spot a phishing page.

The business impact reaches well beyond the mailbox. A hijacked identity gives the attacker trusted access to connected cloud services, enables fraud against employees, customers, and suppliers, and widens the blast radius to every SSO-connected application, while containment costs rise because a credential reset alone no longer closes the door.

The Full Attack Chain: From Attachment to Account Takeover

The attack begins with a phishing email, frequently themed around HR notices or 401(k) benefit updates and sent in volume through Amazon SES (MITRE ATT&CK T1566.001/.002).

The message carries a .htm, .xhtml, or .svg attachment, or a QR code that pushes the victim to open the phishing link on a phone.

The entire attack flow of Mirage2FA, from phishing email to Microsoft 365 takeover (Source: ANY.RUN)

When the victim opens the file, the browser runs an embedded stager (T1204.002). The stager carries a per-recipient token, the victim’s email address Base64-encoded into a placeholder named LINXB64EMAIL, and fetches the harvesting logic from a remote loader using a URL of the form /xls/.js (T1105).

In ANY.RUN’s sandbox, the attachment first shows a “Verify you’re human” slider before loading a Microsoft-branded password prompt with the victim’s email already filled in.

Behind the page, the browser pulls the loader from user.cheacker[.]store, opens a WebSocket to the command-and-control server, posts to an xwps.php handler on a second domain, and queries api.ipify.org to fingerprint the victim’s IP address.

Full attack chain analyzed inside ANY.RUN’s Interactive Sandbox: the quarantined email carries an .html attachment that launches the phishing flow (Source: ANY.RUN)
The fake verification step carried out inside ANY.RUN’s sandbox (Source: ANY.RUN)
Victims enter their credentials on a fake Microsoft login page while the loader, WebSocket, and IP-check traffic appear in the sandbox network log (Source: ANY.RUN)

The credentials and 2FA code are relayed to the legitimate Microsoft service over that WebSocket channel (T1557, T1111).

Once Microsoft accepts them, the proxy receives a valid authenticated session, which is exfiltrated along with the credentials (T1539) and reused to read mail and impersonate the user (T1071.001).

Across the 1,249 sandbox sessions, the dominant behaviors were phishing, obfuscated JavaScript execution, WebSocket activity tied to the AiTM channel, IP and browser fingerprinting, QR-code delivery, and Amazon SES activity.

Six Stager Variants, Zero Binary Malware

ANY.RUN catalogued 629 .htm samples (453 of them obfuscated), 198 XHTML samples (31 obfuscated), and 187 SVG samples (12 obfuscated).

The plain .htm variant is a two-line stub that sets a uid token and pulls /api/xls/a1p2i.js from the kit’s domain.

Non-obfuscated .htm loader stub pulling a1p2i.js from pectech[.]store (Source: ANY.RUN)

The non-obfuscated XHTML version builds a full-screen iframe, writes a document into it, and injects the same a1p2i.js loader, reading the token from a ?ref= parameter.

Dynamic iframe plus remote loader in the plain XHTML variant (Source: ANY.RUN)

Its obfuscated counterpart hides the logic behind a hex-to-string decoder, rsy(), and reads the token from ?sdv= or the URL fragment.

Hex-string decoder used by the obfuscated XHTML stager (Source: ANY.RUN)

The obfuscated .htm variant is self-contained: it Base64-decodes a blob, XORs every byte with 0xAD (173), and passes the result to eval().

XOR + Base64 + eval loader with the 0xAD key in the obfuscated .htm variant (Source: ANY.RUN)

SVG files abuse the

A dozen samples wrap that redirect in an obfuscator.io-style string-array decoder to hide the destination.

Inline-script redirect in a plain SVG stager (Source: ANY.RUN)
obfuscator.io-style _0x wrapper used in a minority of SVG samples (Source: ANY.RUN)

Infrastructure Points to a Single Operator: LinX Coders

The loader and C2 traffic resolve to 185.174.100.224 on AS-Colocrossing, which serves domains including user.cheacker[.]store, hvr.volatilesour[.]store, ver.bandhiem[.]com, and pynutech[.]store.

Loader requests follow a fixed structure, https:///<3-letter-code>/xls/.js, with routing codes such as api, ulr, eor, pxk, dsk, and tsk and token suffixes c2v or cpt. Pivoting on that pattern in ANY.RUN’s Threat Intelligence Lookup surfaced dozens of related loader URLs on the same IP address.

TI Lookup provides real-time intel related to Mirage2FA attacks: a single /xls/*.js query exposes the loader cluster on 185.174.100.224 (Source: ANY.RUN)
An open directory on the kit’s infrastructure exposes the xwps.php handler alongside dated backup copies (Source: ANY.RUN)

The researchers attribute the kit to a group branding itself LinX Coders. The evidence includes the LINXCODERSEMAIL substitution placeholder, Telegram bots named linxlogsss…bot and linxxlogss…bot, a channel called LinXcoded that advertises a “LinX Sender,” a “2FA Cookies Attachment/Link,” and a “LinXMail Token Link App,” and operator test messages sent from IP addresses in the same 185.174.100.0/24 subnet as the production C2.

Build markers evolved from LINXCODERSEMAIL to LINXEMAIL to LINXB64EMAIL, and the most recent operator test, a login using the password linxz, was logged on July 3, 2026.

The analysts caution that the IP and geolocation data comes from the panel’s own logging and could reflect VPN use or spoofing; the stronger signal is the reuse of the same addresses across multiple bots and their subnet overlap with infrastructure ANY.RUN observed independently.

A single bot ID also ties the 2024–2025 test messages to the 2026 lure activity. Over that period the kit moved from plain loaders to XOR, hex, and obfuscator.io wrappers, added new /xls/ routes and token variants, and rotated its domains.

The LinXcoded channel sells the sender, the 2FA cookie-stealing attachment, and the token app behind the campaign (Source: ANY.RUN)

What Defenders Should Do

ANY.RUN recommends blocking or quarantining .htm, .xhtml, and .svg attachments at the mail gateway, adding detections for HTML smuggling and obfuscated JavaScript, and scrutinizing QR-code lures and mail arriving via Amazon SES.

High-risk users, including administrators, executives, and finance teams, should move to phishing-resistant MFA such as FIDO2/WebAuthn keys or passkeys, backed by shorter session lifetimes, token binding, and Continuous Access Evaluation in Microsoft Entra ID.

For hunting, the report highlights patterns that outlive any single domain:

  • Loader requests matching /[a-z]{3}/xls/[a-z0-9]+(?:c2v|cpt)?\.js, with /api/xls/a1p2i.js as the canonical endpoint
  • DNS queries where a Base64-encoded email address appears as the subdomain label of cheacker[.]store
  • An outbound WebSocket connection to an unknown host immediately after a JavaScript loader fetch
  • HTML attachments containing atob(…).map(x => x.charCodeAt(0) ^ 173) followed by eval(…)
  • SVG documents with an inline
  • LINX* placeholder strings and in-page variables such as uid, self.u, and RSTRING2

When session theft is confirmed, ANY.RUN advises treating it as an identity incident rather than a credential reset: revoke all active sessions and tokens, review Microsoft 365 mail-forwarding rules and OAuth grants, and audit every action taken through the compromised identity.

Actionable IOCs based on data from 16K SOCs and 700K analysts, delivered to SIEM, TIP, SOAR, NDR, and firewalls (Source: ANY.RUN)

Indicators of Compromise (Selection)

Type Indicator
C2 / loader IP 185.174.100.224 (AS-Colocrossing)
Loader domains user.cheacker[.]store, hvr.volatilesour[.]store, ver.bandhiem[.]com, pynutech[.]store
Phishing domains (sample) pectech[.]store, bns.baseasix[.]com, adp.pslcertlive[.]site, office.pcvgtech[.]store, hpn.bandhiem[.]com, vrf.iar0nline[.]com, ans.rsxbenefits[.]com
Loader path /<3-letter-code>/xls/.js (canonical: /api/xls/a1p2i.js)
Build markers LINXB64EMAIL, LINXEMAIL, LINXCODERSEMAIL, LINXCODERSRANDSTRING, #LINXMASKEMAIL, #LINXRANDSTRING, linxz
Obfuscation key XOR 0xAD (173) + Base64 + eval
Activity window September 2024 – July 2026 (observed)

The full report includes the complete list of more than 60 phishing domains and 21 operator testing IP addresses.