A phishing kit called SkyW4lker (also branded SkyW4lker x365 Sentinel) is quietly taking over Microsoft 365 accounts without ever stealing a password.
Instead of cracking logins or breaking MFA, it tricks employees into approving a legitimate Microsoft device-code sign-in, handing attackers a valid session to corporate mailboxes, documents, and connected apps.
The kit has been active since June 2026 and is accelerating fast. Researchers at ANY.RUN tracked 618 sandbox analyses tied to SkyW4lker between June and October 21, 2026, with monthly submissions climbing from 20 in June to 200 in September.
Nearly half (46–47%) of those submissions came from the United States, more than twice the share of any other country.
For US enterprises running on Microsoft 365, that makes SkyW4lker one of the more pressing identity threats of the quarter.
This article breaks down how the kit works, who it targets, how it was traced back to a sibling phishing platform, and what SOC teams and security leaders can do about it.
SkyW4lker is a device-code phishing kit: it rents or sells attackers a complete pipeline for turning a phishing click into a working Microsoft 365 session. It first appeared on June 23, 2026 and has been continuously updated since, with new endpoints and changing URL tokens.
| Attribute | Detail |
|---|---|
| Threat type | Phishing kit (device-code phishing) |
| Objective | Microsoft 365 / OAuth access tokens, plus harvested emails, passwords, and MFA status |
| Core techniques | Device-code abuse, obfuscated JavaScript (obfuscator.io), IP geolocation and ISP profiling, CAPTCHA gating (Cloudflare Turnstile and a self-hosted widget) |
| Delivery | Password-protected PDF/DOCX/XLSX/EML attachments; redirect links on Google Sites, Google Maps, Miro, Zoom, Smartsheet, Axure Cloud |
| Lure themes | Contracts, invoices, approved statements, Fedwire payment notices, service proposals |
| Hosting | Mostly DigitalOcean VPS (50 of 92 backend IPs), look-alike domains with Microsoft-themed subdomain chains, free dynamic-DNS hosts |
| Operator / brand | SkyW4lker (SkyW4lker x365 Sentinel) |
| Activity window | June 2026 – present |
| Related kit | Gabagool (credential phishing, active since April 2026) |
The United States accounts for roughly 47% of all SkyW4lker-related sandbox submissions. The organizations submitting samples cluster in technology, manufacturing, and government, sectors where Microsoft 365 is the default collaboration layer and where a compromised mailbox can expose contracts, financial data, and supply-chain partners.
The risk is structural rather than technical. Device-code phishing succeeds against accounts that have MFA enabled, because the user genuinely completes an MFA-protected sign-in; they simply do it on the attacker’s behalf. That means four things for enterprise security:
Protect corporate accounts from Microsoft 365 phishing attacks with faster detection and response. Talk to ANY.RUN about enterprise protection →
The full chain, from lure document to device-code prompt, was detonated and recorded in the ANY.RUN Interactive Sandbox. You can replay it and pull indicators here: View the SkyW4lker analysis session →
The phishing page is a thin front end for a PHP backend, and ANY.RUN’s In-Browser Data Inspection exposes how it works by showing the live DOM and HTTP traffic side by side.
The main script loads helper modules, wires up the page’s buttons, and talks to the backend through one endpoint, /session_public.php, with two actions:
| Module | What it does |
|---|---|
| client_geo.js | Fingerprints the visitor’s location via ip-api.com, ipapi.co, or ipwho.is (or a server-side client_geo.php). Used to profile targets and feed the admin dashboard. |
| url_helper.js | Utility wrappers for building GET parameters and normalizing URLs. |
| endpoint.js | Tracks the victim’s state and logs email, password, browser, MFA status, and country to php/endpoints/accounts.php. |
The JavaScript is obfuscated in obfuscator.io style; 520 of the 618 analyses carry ANY.RUN’s obfuscated-js tag.
That is deliberate friction for anyone trying to reverse the page statically, which is why detonating it in an interactive sandbox and watching the requests is the faster route.
Finding one SkyW4lker page is easy. Finding the other 170-plus domains, the shared hosting, the admin panel, and the sibling kit is where most investigations stall.
Traditionally that means repeated IOC lookups, manual correlation across old cases, and a lot of copy-pasting between tools.
ANY.RUN’s Related Threat Context feature collapsed that work. Inside the sandbox session, a Related analyses panel listed earlier submissions that used the same /session_public.php URL pattern, giving analysts an instant starting cluster instead of a blank search box.
From there, a one-click pivot into Threat Intelligence Lookup on the distinctive endpoint returned additional phishing activity, expanded the campaign to its current size, and exposed infrastructure overlaps that would otherwise have taken days to assemble.
The same workflow applies to any suspicious URL or indicator a SOC receives: start from the alert, see what the community has already analyzed, and build on it rather than starting over.
The payoff shows up at both tiers. Tier-1 analysts spend less time re-researching indicators that someone else already resolved and get enough evidence to triage confidently.
Tier-2 analysts receive richer context up front and can focus on the cases that actually need deep analysis.
Give your SOC the context needed to speed up phishing investigations, reduce repetitive work, and boost Tier-1 productivity. See how the Interactive Sandbox connects threats →
Because each phishing page runs its own backend, the operator’s control panel usually lives on the same host.
Combining Threat Intelligence Lookup results with external data turned up a login form at /admin/index.php, and its stylesheet (command-center.css) describes what the kit offers its customers:
Searching ANY.RUN Threat Intelligence for SkyW4lker’s module paths (/js/client_geo.js, /js/url_helper.js, /js/endpoint.js) also returns sessions tagged Gabagool, a credential-phishing kit first seen on April 23, 2026, two months before SkyW4lker.
| Feature | SkyW4lker | Gabagool |
|---|---|---|
| First seen | June 23, 2026 | April 23, 2026 |
| Analyses in six months | 618 | 458 |
| Shared JS modules | client_geo.js, url_helper.js, endpoint.js (since July 2026) | Same three modules (since late April 2026) |
| Visit endpoint | /assets/php/endpoints/confirm_visit.php | Identical |
| Self-hosted CAPTCHA | /assets/private_captcha/public/widget.js?v=4 | Identical |
| Landing token | zt[A-Za-z0-9]{32}op, then it[A-Za-z0-9]{32}us from Aug 10 | Same tokens, it…us from Aug 5 |
| Shared hosts and directories | 5200m[.]com/kvme2/, torvion[.]life/ofulium/, ghethim[.]com/hyllen/ | Same directories, within days of each other |
| Hosting | Mostly DigitalOcean | Mostly DigitalOcean; shared IP 172.86.85[.]51 |
| Main endpoint | session_public.php (device-code flow) | accounts.php (username/password harvesting) |
Some Gabagool sessions even load the kit from directories literally named skywalker and skyw4lker on goldcreekconcrete[.]com and goldcreekconcrete[.]org.
ANY.RUN’s assessment: the same developer built both kits, and they are best understood as two modes of one phishing platform, one that harvests passwords, one that harvests device-code tokens.
Whether a single operator runs both, or multiple customers bought the same product, the data cannot yet say.
Give your SOC the speed to handle more threats with 20% less Tier-1 investigation time and 30% fewer escalations. Book an enterprise demo →
SkyW4lker is a reminder that MFA is necessary but not sufficient. Three priorities:
| Tactic | Technique | How SkyW4lker does it |
|---|---|---|
| Reconnaissance | T1589.002 Email Addresses | Recipient address appended to the landing URL to personalize the page |
| Reconnaissance | T1590.005 IP Addresses | client_geo.js records IP, ISP, organization, and location at action=start |
| Resource Development | T1583.001 Domains | Typo-squatted company domains with Microsoft-themed subdomain chains; free dynamic-DNS hosts |
| Resource Development | T1583.003 VPS | DigitalOcean for 50 of 92 backend IPs |
| Resource Development | T1608.005 Link Target | Intermediate pages on Cloudflare R2, Linode object storage, Mintlify |
| Initial Access | T1566.001 Spearphishing Attachment | Password-protected PDF/XLS/DOCX/EML named *-protected.pdf or DOC <random>.pdf |
| Initial Access | T1566.002 Spearphishing Link | Google Sites, Axure Cloud, Smartsheet pages; maps.google[.]ie/url?q= redirects |
| Execution | T1204.001 Malicious Link | Victim opens //it[A-Za-z0-9]{32}us landing path |
| Defense Evasion | T1656 Impersonation | Subjects like “Approved Statement” and “Fedwire Funds Service Processed” |
| Defense Evasion | T1497 Sandbox Evasion | Cloudflare Turnstile and self-hosted CAPTCHA in front of the payload page |
| Defense Evasion | T1027 Obfuscation | obfuscator.io-style JavaScript (520 of 618 analyses) |
| Credential Access | T1528 Steal Application Access Token | Abuses login.microsoftonline[.]com/common/oauth2/deviceauth while polling action=poll |
| Collection | T1056.003 Web Portal Capture | endpoint.js logs email, password, browser, MFA status, and country |
All indicators were observed in ANY.RUN analyses between June 23 and October 21, 2026. The full list of 173 phishing domains, plus live sandbox sessions, is available in the original ANY.RUN research.
| Pattern | Purpose | Seen |
|---|---|---|
| //it[A-Za-z0-9]{32}us | Current landing token (may end ? or ??) | Aug 10 – Oct 19, 2026 |
| //zt[A-Za-z0-9]{32}op | Earlier landing token | Jun 25 – Sep 28, 2026 |
| /assets/php/endpoints/session_public.php?action=start&ip=… | Session registration with geolocation | Jun 23 – Oct 21, 2026 |
| /assets/php/endpoints/session_public.php?action=poll&session_id= | Device-code status polling | Jun 23 – Oct 21, 2026 |
| /assets/js/client_geo.js | Geolocation module | Jul 7 – Oct 19, 2026 |
| /assets/js/endpoint.js | Session state and credential logging | Jul 22 – Oct 20, 2026 |
| /assets/js/url_helper.js | URL helper module | Jul – Oct 2026 |
| /assets/php/endpoints/confirm_visit.php | Visit confirmation | Aug 31 – Oct 15, 2026 |
| /assets/private_captcha/public/widget.js?v=4 | Self-hosted CAPTCHA gate | Jul 7 – Sep 28, 2026 |
| /assets/php/attach/js/mstoken_document_(adobe|onedrive|excel)_[A-Za-z0-9]{50}.js | Brand-specific document script | Jul 20 – Oct 20, 2026 |
| (docshare|sdocshares|pdocshared|efaxdoc|reauth|statement|copilot|login|auth).*(outlook|onedrive|copilot|office365).* | Microsoft-themed hostname chain on look-alike domains | Jun – Oct 2026 |
SkyW4lker is not a novel exploit; it is a well-engineered abuse of a feature Microsoft 365 ships by default.
Its growth from 20 to 200 sandbox submissions a month in a single quarter, its concentration on US enterprises, and its shared lineage with Gabagool all point to a phishing platform that will keep shipping new modes as long as device-code sign-ins stay open and SOCs keep treating phishing alerts one at a time.
The defensive answer is equally unglamorous: restrict device-code authentication where it is not needed, correlate email and identity events, and give analysts the ability to detonate what filters cannot inspect and to see, in one view, what the rest of the community has already found about the same infrastructure.
Protect corporate accounts from Microsoft 365 phishing attacks with faster detection and response. Contact ANY.RUN sales →
ANY.RUN helps SOC and MSSP teams detect and investigate threats faster. Its Interactive Sandbox lets analysts open suspicious files and URLs, supply passwords, pass CAPTCHAs, and watch full attack chains unfold, while Threat Intelligence Lookup, Feeds, and Reports connect each case to activity seen across more than 16,000 organizations and 700,000 security professionals. ANY.RUN is SOC 2 Type II certified.
Research credit: ShiFu, Threat Intelligence Analyst, ANY.RUN. Original report published October 27, 2026.
OpenAI has launched GPT-6 Cyber, a security-focused AI model that found 81 new high-severity Firefox…
Shopify is making IP allowlisting mandatory for public apps that call its Admin API, adding…
Microsoft’s Windows Paint vulnerability, CVE-2026-83844, could allow an unauthenticated attacker to execute code over a…
Melbourne, Florida, November 5th, 2026, CyberNewswire OpenMatter Network, a pioneer in decentralized infrastructure for agentic…
A new Android bug named GhostMap can leave a phone stuck in a crash loop…
A China-aligned hacking group is abusing Sogou Input Method, one of the most popular Chinese…