EvilTokens PhaaS Device Code Phishing Campaign

·

Active Threat
EvilTokens PhaaS
Device Code Phishing Campaign
Full technical reverse engineering and live infrastructure analysis of the EvilTokens Phishing-as-a-Service platform — from initial sample discovery through API enumeration, live backend exploitation evidence, and complete IOC documentation.
Classification CRITICAL
Threat Actor eviltokens
Active Since Early March 2026
Active Victims 2,795 sessions
NZ Impact Confirmed (AKL edge)
MFA Bypass Yes — by design
Report Author Rudra Verma - Cyberhawk
Sources LIVE Reverse Engineering
01 Executive Summary
2,795
Active Stolen Sessions
73.2%
Attack Success Rate
1,000+
Domains Confirmed
+1/min
New Victim Rate
⚠
CRITICAL — Active NZ Targeting Confirmed. Cloudflare CF-RAY header 9e53ddf71e92d998-AKL confirms this infrastructure is actively serving phishing pages from Cloudflare's Auckland (AKL) edge node, directly targeting New Zealand organisations. This constitutes a national-scale incident warranting immediate CERT NZ notification.
What is EvilTokens?

EvilTokens is a newly emerged Phishing-as-a-Service (PhaaS) platform first identified in cybercrime communities in early March 2026. It delivers a turnkey Microsoft device code phishing kit to cybercriminals and is assessed as the first PhaaS to offer ready-made Microsoft device code phishing pages combined with full post-compromise tooling — a capability that sets it apart from every existing AiTM-based PhaaS platform.

Why This Is Uniquely Dangerous

Unlike traditional phishing that spoofs login pages, EvilTokens exploits the OAuth 2.0 Device Authorization Grant — a legitimate Microsoft flow designed for input-limited devices. The victim authenticates on the real Microsoft website. There is no fake login page. MFA is bypassed by design. Standard security awareness training about "fake websites" provides zero protection.

Once tokens are harvested, the attacker escalates to a Primary Refresh Token (PRT), registering a new device in Entra ID. This grants full silent access to all Microsoft 365 applications — Outlook, SharePoint, Teams, Azure — bypassing MFA entirely and establishing persistent access for up to 90 days.

Cyberhawk Investigation Summary

This report documents a live reverse engineering investigation conducted on 1 April 2026. Using passive extraction techniques and legitimate TI research methods, the team retrieved and analysed a live EvilTokens phishing page, mapped the backend API infrastructure, and discovered a fully unauthenticated /health endpoint that exposed the live victim count (2,795 active sessions), server metrics, and a 73.2% success rate — confirming this is an operational, production-grade attack platform actively targeting NZ.

02 Threat Actor Assessment
AttributeDetail
Operator Handleeviltokensadmin
Platform TypePhishing-as-a-Service (PhaaS) — affiliate model
First SeenEarly March 2026 (cybercrime communities)
Affiliate MgmtFully featured Telegram bot panel
Backend DevAI-generated ("vibe coded") JavaScript — assessed entirely via LLM
Known TargetsFinance, HR, Logistics, Sales departments — Americas, Europe, Middle East, Asia, Oceania (incl. AU/NZ)
Planned ExpansionGmail and Okta phishing pages announced
InfrastructureCloudflare Workers + Railway.com PaaS + AWS S3
Delivery MethodPDF, HTML, XLSX, SVG, DOCX attachments — QR codes and hyperlinks
Automation Level

The EvilTokens operator runs a fully automated token persistence engine via the BAV2ROPC user agent, firing twice daily (11:00 AM and 8:00 PM operator timezone) to silently refresh all harvested tokens. Once a victim is compromised, the attacker's access is maintained automatically without any further human interaction.

AI-Augmented Operations

The entire backend JavaScript codebase is assessed to have been AI-generated. The PhaaS also integrates AI-powered automation for BEC fraud execution — using harvested access to draft and send fraudulent business emails, request wire transfers, and harvest financial credentials at scale without manual operator involvement.

03 Attack Chain Analysis
Full Kill Chain Overview
[PHISHING EMAIL] Attachment: PDF / XLSX / SVG / HTML / DOCX Content: "Review required — time sensitive document" │ ▼ Victim opens attachment, clicks hyperlink or scans QR code [LAYER 1 — AWS S3 LOADER] s3.us-east-1.amazonaws.com / [GUID] / ing.html → Serves a fake spinner "Preparing your secure document..." → 2,000ms delay (defeats automated URL scanners with short TTL) → JS: fetch(auth.loadingdocuments.uk/lp/[token]) → document.write() → Browser URL bar stays on safe-looking S3 URL the entire time │ ▼ Cloudflare Turnstile bot challenge passes (real browser) [LAYER 2 — CLOUDFLARE WORKER FRONTEND] auth.loadingdocuments.uk (cfWorker;dur=730, cfOrigin=0) → Serves Adobe Acrobat Sign lure page (9,479 bytes) → Displays device code: FM624XDF7 (pre-generated from API) → "Review & Sign" button → opens real microsoft.com/devicelogin popup → JS polls /api/status/[SID] every 3 seconds │ ▼ Victim enters code on REAL Microsoft page and authenticates [LAYER 3 — ORIGIN API SERVER] api.loadingdocuments.uk:8443 → /api/status/[SID] transitions from "pending" → "captured" → Page shows "Access granted. You may close this window." → Backend stores access_token + refresh_token in SQLite DB │ ▼ Affiliate notified via Telegram bot [LAYER 4 — POST-COMPROMISE EXPLOITATION] access_token (60 min window): → Exchange Online: email exfiltration via Graph API → SharePoint/OneDrive: file download → Teams: conversation harvesting refresh_token (90-day rolling): → Silent re-authentication, no MFA challenge PRT escalation: → Register new device in Entra ID → Convert refresh_token → PRT → Access ALL M365 apps silently — Outlook, Azure, SharePoint → Full tenant lateral movement — MFA bypassed entirely [LAYER 5 — PERSISTENCE ENGINE — Railway.com] BAV2ROPC automated script — runs 11:00 AM + 8:00 PM daily → Silently refreshes all tokens on schedule → Uses Railway.com IPs (162.220.232.0/22, 162.220.234.0/22) → Clean to Microsoft Identity Protection — no risk flags raised

1
Initial Access — Phishing Email
Victim receives a phishing email impersonating Adobe Acrobat Sign, DocuSign, SharePoint, or a voicemail/quarantine notification. Targets are primarily finance, HR, logistics, and sales staff. The email contains an attachment or QR code linking to the AWS S3 loader page.
2
URL Reputation Laundering — S3 Loader
The victim's browser lands on a legitimate-looking AWS S3 URL. A 2-second delay defeats automated URL scanners. The loader JS silently fetches the EvilTokens lure page and writes it into the DOM using document.write() — the URL bar continues to show the S3 address throughout the entire attack.
s3.us-east-1.amazonaws.com/49-qwer-hyper-552df-raven-931-5p/[GUID]/ing.html
3
Lure Page Served — Device Code Displayed
The Cloudflare Worker serves a high-fidelity Adobe Acrobat Sign impersonation page (9,479 bytes). A pre-generated Microsoft device code is displayed prominently (FM624XDF7). All CSS class names are obfuscated (_uo30jc, _nihz1a) to defeat CSS-based detection. The Adobe logo is rendered as raw SVG polygons — not an image — defeating image hash detection.
Live device code: FM624XDF7 → microsoft.com/devicelogin?otc=FM624XDF7
4
Victim Authenticates on Real Microsoft Page
The "Review & Sign" button opens a genuine microsoft.com/devicelogin popup. The victim enters the device code and authenticates normally using their real credentials and MFA. They believe they are securely signing a document. The attacker's device is silently granted full OAuth access. The victim sees "Access granted. You may close this window."
5
Token Harvest — Backend API Captures Credentials
The backend API polls Microsoft's token endpoint via /api/status/[SID]. When the victim completes authentication, the session transitions from "pending" to "captured". The backend stores the access_token (60-minute window) and refresh_token (90-day rolling) in a SQLite database. Affiliate is notified via Telegram bot.
POST /api/generate → session_id + user_code | GET /api/status/[SID] → "captured"
6
Post-Compromise — Data Exfiltration & Persistence
Within the 60-minute access token window: emails, files, and Teams conversations are exfiltrated via Graph API. The refresh token is used to establish 90-day persistent access. PRT escalation registers a new attacker-controlled device in Entra ID — granting silent access to all M365 services with no MFA challenge. Railway.com automation maintains access indefinitely.
04 Infrastructure Architecture
Tier 1 — Cloudflare Worker Frontend

The phishing lure page is hosted as a Cloudflare Worker behind the custom domain auth.loadingdocuments.uk. Confirmed by Server-Timing: cfWorker;dur=730 with cfOrigin=0 (no external backend for page serving). This means the lure page has zero infrastructure origin — it runs entirely within Cloudflare's edge network, making it impossible to take down via origin server disruption.

Tier 2 — Origin API Server

The token management API runs at api.loadingdocuments.uk:8443 on a 4-core server with no authentication on multiple endpoints. The /health endpoint is fully open, exposing live victim counts and server metrics. The /api/generate and /api/status/[SID] endpoints require zero credentials. The server uses SQLite with WAL mode and runs 21 worker threads.

Tier 3 — Railway.com Token Replay Engine

Post-compromise automation runs from Railway.com infrastructure. Three IPs account for 84% of all token replay events. Railway is specifically chosen because its IP ranges (162.220.232.0/22, 162.220.234.0/22) carry no risk score in Microsoft Identity Protection — sign-ins from these IPs are flagged as normal.

Domain Naming Convention

All Cloudflare Workers domains follow a deterministic schema based on lure type and affiliate's Microsoft email. Victim-personalised variants embed the target email address (dots/@ replaced by dashes) in the subdomain for tracking.

[lure]-[3char].[username]-[domain]-s-account.workers.dev
Lure TypeDomain Pattern
Adobe Acrobatadobe-[a-z0-9]{3}.[a-z0-9-]{3,}-s-account.workers.dev
DocuSigndocusign-[a-z0-9]{3}.[a-z0-9-]{3,}-s-account.workers.dev
Quarantine Alertquarantine-[a-z0-9]{3}.[a-z0-9-]{3,}-s-account.workers.dev
Voicemailvoicemail-[a-z0-9]{3}.[a-z0-9-]{3,}-s-account.workers.dev
SharePointsharepoint-[a-z0-9]{3}.[a-z0-9-]{3,}-s-account.workers.dev
OneDriveonedrive-[a-z0-9]{3}.[a-z0-9-]{3,}-s-account.workers.dev
Password Expirypage-password-[a-z0-9]{3}.[a-z0-9-]{3,}-s-account.workers.dev
Railway IPEvent CountRole
162.220.234.41254 eventsPrimary token attack engine
162.220.234.66132 eventsSecondary engine
162.220.232.5797 eventsThird-highest volume
162.220.232.9938 eventsSAML token replay
162.220.232.23515 eventsSAML + OAuth mixed
⚡
Synthetic User Agent — High-Fidelity IOC: The Railway token replay engine uses a physically impossible iPhone User-Agent: iPhone OS 18_7 + Safari Version/26.3. iOS 26 does not exist. This combination, originating from Railway.com IP ranges, has near-zero false positives and can be used as a production detection rule in Microsoft Sentinel.
05 Phase 1 — Sample Discovery & Initial Triage
Step 1.1 Active Sample URL Received
An active phishing URL was identified originating from an S3 bucket. This URL represents Layer 1 of the EvilTokens delivery chain — the initial loader page that redirects victims to the actual phishing infrastructure.
SAMPLE URL — LIVE PHISHING LOADER
https://49-qwer-hyper-552df-raven-931-5p.s3.us-east-1.amazonaws.com/
59406576-3EDFGFHJH-43423F0KGTR65-768JER-RF-HUEDS-RET657/ing.html