Blog
Threat Intelligence 17 min read Updated: 2026-08-09

Kali365: the phishing-as-a-service market and the FBI warning

The FBI warned about Kali365, a phishing-as-a-service platform that takes Microsoft 365 tokens without a password. How the PhaaS market works, the affiliate model and the barrier to entry, what the institutions did, and which indicators and hunting queries to wire in on the SOC side.

Kali365: the phishing-as-a-service market and the FBI warning

On 21 May 2026 the FBI published alert I-052126-PSA warning about Kali365, a phishing-as-a-service platform that lets an attacker take Microsoft 365 access tokens without ever capturing a password. What is new here is not the technique but the way it is distributed: a subscription, a panel, an AI-assisted lure generator and support over Telegram. This piece is about the ecosystem selling those tools, and about what it leaves behind in your logs. The mechanics of the device code flow itself we take apart in our analysis of the VENOM campaign.

The phishing-as-a-service market in numbers
54.1%
of phishing-kit listings offered a finished service rather than code to deploy yourself
Flare, "The Phishing Kits Economy in Cybercrime Markets", January 2026
28%
of breaches Microsoft analysed started with phishing or social engineering
Microsoft Digital Defense Report 2025
338
domains seized in a single action against one PhaaS platform aimed at Microsoft 365
Microsoft Digital Crimes Unit and Cloudflare, September 2025
78,391
phishing incidents registered in Poland during 2025, 30% of everything recorded
CERT Polska / NASK, annual report for 2025

What Kali365 is, and why the FBI took an interest

Kali365 is a phishing-as-a-service platform aimed at Microsoft 365. The FBI alert states it was first seen in April 2026 and distributed primarily over Telegram. A subscriber gets AI-generated lures, ready-made campaign templates, a dashboard for tracking targets in real time, and OAuth token capture. The result is durable access to the victim environment, obtained without capturing a password and without breaking the second factor.

Two things tend to blur together in press coverage, and they are worth separating. The technique, abuse of the OAuth 2.0 Device Authorization Grant flow, is not new and was documented long before Kali365 existed. We walk through it step by step in a separate analysis. What is new is the product: the same technique wrapped in a subscription, with customer support, a template library and a panel, sold to someone who could not implement it themselves.

That distinction has operational consequences. Treat Kali365 as a campaign and you go looking for one group, one set of addresses and one lure style. Treat it as a platform and you assume from the outset that there are many independent operators sharing code and infrastructure while differing in target, language and calendar. The second view describes what actually shows up in logs far better.

What the FBI actually said, when, and to whom

The alert carries the number I-052126-PSA and the date 21 May 2026. It is a Public Service Announcement, a format addressed to a general audience of public institutions, businesses and individuals, rather than a closed bulletin for one sector. The reporting channel remains IC3, the Internet Crime Complaint Center. The text is short and, for this format, unusually specific.

  • Name and date — the platform is identified as Kali365, first observed in April 2026
  • Distribution channel — sales and support run primarily through Telegram
  • Effect of the attack — capture of Microsoft 365 access tokens and MFA bypass without intercepting the user credentials
  • Scope of access — the attacker reaches Outlook, Teams and OneDrive with no password and no further MFA challenge
  • What a subscriber gets — AI-generated lures, campaign templates, real-time target tracking dashboards and OAuth token capture
  • Recommendations — a Conditional Access policy blocking the device code flow, an audit of existing use of that flow, and exempting only break-glass accounts

What the alert leaves out is just as telling. The FBI publishes no list of addresses or domains, names no particularly exposed sectors and attributes the platform to no specific group. Under an affiliate model an indicator list ages faster than it can reach its readers, and the target profile belongs to the affiliate rather than to the platform. So the agency communicates what stays stable: the mechanism, and the control that switches it off.

What the phishing-as-a-service market looks like in 2026

Kali365 is not an isolated case but another entry in a catalogue that has been growing for years. Flare analysed 8,627 listings for phishing kits, collected over a year from forums, Telegram and open sources. More than half of them, 54.1% precisely, offered a finished service rather than code to stand up yourself. The market has moved from "buy a script and host it" to "buy access and log into the panel".

Horizontal share bar: publication channel of 8,627 phishing-kit listings — deep web forums 58.8%, open sources 19.4%, Telegram 14.1%, dark web 7.7%
Horizontal share bar: publication channel of 8,627 phishing-kit listings — deep web forums 58.8%, open sources 19.4%, Telegram 14.1%, dark web 7.7%

The channel split says more than the headline count. Deep web forums carried 58.8% of the listings, open sources 19.4%, Telegram 14.1%, and the dark web only 7.7%. The picture of phishing tooling changing hands exclusively in a hidden corner of the network reachable through Tor is simply out of date. That matters for monitoring: threat intelligence narrowed to .onion markets misses most of the phenomenon. Watching this layer is the job of threat exposure management tooling such as Flare.

Not everything advertised in those channels exists at all. In the same sample, 36.3% of entries were classified as real threats with high confidence, 20.5% as probably real, and 22.0% as scams or fake listings. A fifth of this market, in other words, robs its own customers. That explains why kit names multiply faster than working platforms do, and why detection built around a name is brittle.

The layers of the PhaaS ecosystem and what each one leaves in your logs
Ecosystem layerWhat it suppliesWhat a defender sees of it
Platform operatorCode, backend, subscriber panel, updates tracking changes at the identity providerNothing directly — only the same pattern recurring across unrelated victims
Infrastructure layerDomains, certificates, reverse proxies, address rotation, throwaway hostingFresh domains, certificates issued hours before a campaign, hosting with no history in your org
Lure generatorMessage copy, brand templates, language variants, per-recipient personalisationNo tell-tale language errors; clustering on content fails, clustering on structure still works
Affiliate, meaning the subscriberTarget selection, recipient lists, running the campaign, monetising the accessThe send pattern: who, how many at once, and inside what time window
Support channelAssistance, capture alerts, trading of templates and recipient listsNothing on the victim side — an argument for threat intelligence, not for detection
Secondary marketResale of captured sessions, mailboxes and access to further buyersSign-ins to the same account from unrelated networks days apart

Platform, infrastructure and operator are three separate layers, and a defender mostly sees traces of the last two. Detection built on the platform name aims at the one layer that leaves nothing measurable behind.

The affiliate model: who is really running the campaign against you

Under an affiliate model the platform operator attacks nobody. They maintain the code and the panel, refresh templates as the identity provider changes, and charge for access. The subscriber runs the campaign: picks the target, uploads a recipient list, chooses a template and collects the results. This division of labour is not new. Researchers from TNO, Eindhoven University of Technology and Delft University of Technology documented it in the Dutch phishing-kit market, showing plainly that ready-made tooling lowers the threshold for a criminal entrepreneur. Kali365 is the same phenomenon one layer up: today you do not even have to deploy the kit.

  • One platform, many calendars — two campaigns from the same infrastructure can be weeks apart and share nothing but the tooling vendor
  • One platform, many skill levels — the same kit serves a crew staging ransomware and a lone fraudster chasing a single transfer
  • Shared code, different lures — copy comes from a generator and can be unique per recipient, so content-based matching fails
  • Shared structure, different domains — what repeats is the page layout, the URL path and the redirect sequence, not the hostname
  • Monetisation outside the platform — a hijacked mailbox is often resold, so a second entry need not mean the same attacker returned

The conclusion is inconvenient: attribution to a platform name has little operational value. Knowing the lure came from Kali365 tells you nothing about who sent it, why, or whether they will be back. What has value is a description of behaviour: how delivery looked, what was done with the token, and what left the building.

Three mistakes in responding to a PhaaS warning
  • Do not treat an advisory indicator list as a permanent blocklist. PhaaS infrastructure rotates domains and addresses on a daily cycle, so a static block gives a false sense of coverage and, a few weeks later, produces nothing but noise.
  • Do not build detection around a kit name. Names come and go, some of them are vendor marketing and some are a fraud aimed at other criminals.
  • Do not close the case on a password reset. The password played no part in the attack, so changing it invalidates nothing — what needs revoking are sessions, refresh tokens and registered devices.

The barrier to entry, and what it changes for a mid-sized company

Until recently, an attack ending in OAuth token theft demanded three things at once: an understanding of authentication flows, the ability to stand up and maintain infrastructure, and the patience to write a convincing lure in the victim language. The PhaaS model removes each of those barriers separately. The platform backend handles the flow. The operator supplies and rotates the infrastructure. A generator writes the lure.

Removing those barriers does not make the attack harder to defend against. It makes there be more of them, and that is the real change in risk profile for a mid-sized company. It used to be reasonable to assume that an attacker technically capable of this would pick a target worth the effort. Under a subscription model that calculation breaks down, because the marginal cost of one more campaign is close to zero: hitting a 150-person firm costs the affiliate exactly what hitting a corporation costs.

Column chart: initial access method across breaches analysed by Microsoft — phishing and social engineering 28%, unpatched web-facing assets 18%, exposed remote access services 12%
Column chart: initial access method across breaches analysed by Microsoft — phishing and social engineering 28%, unpatched web-facing assets 18%, exposed remote access services 12%

The vector side of this is stable in the data. Microsoft reports that 28% of the breaches it analysed began with phishing or social engineering, ahead of unpatched web-facing assets (18%) and exposed remote access services (12%). The same report puts the growth in identity attacks at 32% during the first half of 2025, with more than 97% of them being password attacks. Generative AI adds lure quality on top: phishing run with it is, by Microsoft measurement, three times more effective than hand-written campaigns.

The Polish picture looks much the same. CERT Polska registered 260,783 unique incidents during 2025, of which 78,391 were phishing, roughly 30% of everything recorded. Neither size nor sector protects an organisation from this category.

Why takedowns do not settle the matter

The institutional response goes beyond warnings. In September 2025 the Microsoft Digital Crimes Unit, working with Cloudflare and US law enforcement, seized 338 domains belonging to RaccoonO365, a platform selling kits aimed at Microsoft 365; the case led to the arrest of the person running the operation. In March 2026 the same unit seized 330 active domains from the Tycoon 2FA platform, its first takedown coordinated through a Europol programme. Earlier, in April 2024, an international investigation coordinated by Europol dismantled LabHost, a phishing-as-a-service platform sold on a monthly subscription that facilitated phishing against customers of hundreds of financial institutions.

Three such actions in under two years show both the scale of the problem and the limits of this response. Seizing domains shuts down an instance, not the model: the code, the recipient lists and the customers move to the next platform, and the name changes faster than the rules in a mail gateway. Which is why the FBI alert ends with a configuration recommendation rather than an indicator list.

A lone attacker, or a platform customer
Traces of a targeted operation
Traces of an affiliate using a platform
Lure written for one organisation, with internal detail and real names in it
Lure from a generator: linguistically clean, generic, swapped per recipient
Domain registered well in advance and warmed with traffic before the campaign
Domain and certificate created hours before the first send
Narrow recipient list, assembled by hand
List uploaded in bulk, often in alphabetical or directory order
Infrastructure kept up for weeks, at a stable address
Addresses rotate daily, on throwaway hosting and edge services
One toolset visible consistently across the whole incident
The same page layout and URL path return in unrelated campaigns
Access used by the same actor from start to finish
Access is often resold — the second wave arrives from another network, in another style

Indicators and detection on the SOC side

This is the real reason to read PhaaS warnings at all. Indicators from an advisory have a short shelf life, but the patterns behind them last. Start, though, with the question most teams answer too late: do you have anything to search in the first place.

What you do not log, you will not find

Before writing the first query, check whether the sources below are collected and for how long they are kept. An affiliate campaign is often recognised only weeks later, and the default refresh token max inactive time in Microsoft Entra ID is 90 days. Shorter retention means the question "when did this start" will go unanswered.

  • Microsoft Entra sign-in logs — interactive and non-interactive; the latter are skipped most often, and they are where token replay shows
  • Entra audit log — application consent grants, service principal registrations, device registrations and authentication method changes
  • Exchange Online activity — inbox rules, forwarding, bulk file downloads, outbound sending
  • Mail telemetry — envelope and header sender, SPF, DKIM and DMARC verdicts, plus URLs from bodies and attachments including those lifted out of QR codes
  • Link click events — especially the ones where a user continued past the warning page
  • DNS and proxy — queries to freshly registered domains and to the edge services PhaaS uses for disposable pages
  • Retention — matched to the session lifecycle rather than to tool defaults; below 90 days you lose the beginning of the story

Infrastructure indicators

PhaaS infrastructure indicators fall into two classes with very different shelf lives. Addresses and domain names are disposable. The structure, meaning the way that infrastructure comes into being, repeats between campaigns and between platforms, and it is the structure that belongs in a rule.

  • Domain age — a lure domain is typically hours to days old; age is a stronger signal here than reputation
  • Certificate issued just before the campaign — a bulk domain-validated certificate created hours before the first send
  • Edge services as lure hosting — disposable subdomains on edge function platforms and tunnelling services, with no history in your organisation
  • Repeating URL path — the same directory and parameter scheme across unrelated campaigns despite different domains
  • Redirect chain — two or three hops through shorteners and well-reputed domains before traffic lands on the real page
  • A filter page in front of the lure — a "verification" screen whose job is to shed analysis automation and sandboxes
  • Envelope sender diverging from header sender while SPF passes — platform campaigns ride on someone else properly configured sending infrastructure

Affiliate patterns

Affiliate patterns are the signals telling you that the other side is a platform customer rather than the tool author. They earn their keep by letting you connect events that separately look like three small oddities from three different queues.

  • Bulk sending from one hijacked account — dozens or hundreds of messages in a short window, to recipients outside any prior correspondence
  • An inbox rule created within minutes of an unusual sign-in — typically moving mail containing "security", "alert", "sign-in" or "phish" to deleted items or archive
  • Consent granted to an application nobody in the organisation recognises — mail or file permissions given to an app outside the approved inventory
  • A new authentication method registered shortly after a sign-in from a new network — the persistence step that survives a password reset
  • The same client fingerprint across several users — one rare application ID or user agent appearing for people with nothing in common
  • A second entry after a gap — a sign-in to the same account from an unrelated network days later, the signature of resold access
Queries for PhaaS infrastructure and affiliate patterns
KQL
// Aimed at phishing-as-a-service infrastructure and affiliate behaviour rather
// than at the device code flow itself. Tune every threshold to your own tenant.

// 1. Lure hosting. Inbound mail pointing at throwaway edge or tunnelling hosts,
//    plus URLs lifted out of QR codes. Rarity does the work: a domain seen once,
//    delivered to a handful of people, is the shape of a rotating PhaaS front end.
let lookback = 14d;
let edgeHosts = dynamic(["workers.dev", "pages.dev", "trycloudflare.com", "r2.dev",
                         "web.app", "firebaseapp.com", "netlify.app", "vercel.app",
                         "onrender.com", "glitch.me", "ngrok-free.app", "ngrok.io"]);
EmailEvents
| where Timestamp > ago(lookback) and EmailDirection == "Inbound"
| join kind=inner (
    EmailUrlInfo
    | where Timestamp > ago(lookback)
    | project NetworkMessageId, UrlDomain, UrlLocation
) on NetworkMessageId
| where UrlLocation == "QRCode" or UrlDomain has_any (edgeHosts)
| summarize Messages = count(),
            Recipients = dcount(RecipientEmailAddress),
            SenderDomains = make_set(SenderMailFromDomain, 10),
            Delivered = countif(DeliveryAction == "Delivered"),
            FirstSeen = min(Timestamp), LastSeen = max(Timestamp)
        by UrlDomain, UrlLocation
| where Delivered > 0 and Recipients <= 25
| order by FirstSeen desc

// 2. Someone clicked through the Safe Links warning and a session appeared right
//    after. Neither half deserves an alert on its own; the pair does. Needs the
//    Defender tables and Entra sign-in logs in one workspace.
let clicks = UrlClickEvents
    | where Timestamp > ago(7d)
    | where ActionType == "ClickAllowed" or IsClickedThrough
    | project ClickTime = Timestamp, Upn = tolower(AccountUpn), Url, ThreatTypes;
clicks
| join kind=inner (
    SigninLogs
    | where TimeGenerated > ago(7d) and ResultType == 0
    | project SignInTime = TimeGenerated, Upn = tolower(UserPrincipalName),
              IPAddress, Asn = AutonomousSystemNumber, AppDisplayName, UserAgent
) on Upn
| where SignInTime between (ClickTime .. ClickTime + 30m)
| project Upn, ClickTime, Url, ThreatTypes, SignInTime, IPAddress, Asn,
          AppDisplayName, UserAgent
| order by ClickTime desc

// 3. The affiliate playbook once a mailbox falls: a rule that buries security
//    mail. UncommonForUser is what keeps this off ordinary housekeeping.
CloudAppEvents
| where Timestamp > ago(30d)
| where Application has "Exchange"
| where ActionType in ("New-InboxRule", "Set-InboxRule", "UpdateInboxRules")
| extend Raw = tostring(RawEventData)
| where Raw has_any ("security", "alert", "sign-in", "signin", "phish",
                     "protection", "quarantine", "helpdesk")
| where Raw has_any ("DeletedItems", "Junk", "Archive", "RSS", "MarkAsRead", "Delete")
| project Timestamp, AccountDisplayName, AccountObjectId, ActionType,
          IPAddress, Isp, CountryCode, UserAgent, UncommonForUser
| order by Timestamp desc

// 4. Consent handed to an application nobody recognises. Diff AppId against your
//    approved application inventory before triaging anything here.
AuditLogs
| where TimeGenerated > ago(30d)
| where OperationName in ("Consent to application", "Add OAuth2PermissionGrant",
                          "Add delegated permission grant",
                          "Add app role assignment grant to user")
| where Result == "success"
| extend Actor = tostring(InitiatedBy.user.userPrincipalName),
         ActorIp = tostring(InitiatedBy.user.ipAddress),
         AppName = tostring(TargetResources[0].displayName),
         AppId = tostring(TargetResources[0].id)
| summarize Grants = count(), Consenters = dcount(Actor),
            Who = make_set(Actor, 20), Ips = make_set(ActorIp, 20),
            FirstSeen = min(TimeGenerated)
        by AppName, AppId, OperationName
| order by FirstSeen desc

// 5. Affiliate reuse. A client application that shows up for a few unrelated
//    people this week and for nobody in the weeks before is a shared-toolkit
//    fingerprint, not a shared job function.
let baseline = SigninLogs
    | where TimeGenerated between (ago(30d) .. ago(7d))
    | summarize BaselineUsers = dcount(UserPrincipalName) by AppId;
SigninLogs
| where TimeGenerated > ago(7d) and ResultType == 0
| summarize Users = dcount(UserPrincipalName), Who = make_set(UserPrincipalName, 20),
            Asns = make_set(AutonomousSystemNumber, 10), Signins = count()
        by AppId, AppDisplayName
| join kind=leftouter (baseline) on AppId
| where isnull(BaselineUsers) or BaselineUsers <= 2
| where Users between (2 .. 15)
| project AppDisplayName, AppId, Users, Who, Asns, Signins, BaselineUsers
| order by Users desc
Run queries 1 to 3 in Microsoft Defender XDR advanced hunting, and queries 4 and 5 in Microsoft Sentinel or a Log Analytics workspace with the SigninLogs and AuditLogs tables connected. Query 2 joins tables from both worlds, so it needs a shared workspace. Tune the thresholds, the keyword list and the edge-host list to your own environment.

Telling signal from noise

Every query above will return rows in a healthy environment too, in its raw form. The difference between a detection and an alert generator is what you do with them next.

  • Count rarity, not presence — edge services and shorteners have legitimate uses; what is alarming is a domain appearing for the first time and only for a handful of recipients
  • Correlate two worlds — a click alone is not an incident and neither is a sign-in; "a click, then a session from a new network within half an hour" is
  • Build an inventory of known applications — without a list of approved IDs the consent query will keep returning integrations you deployed yourself
  • Separate a job role from a shared tool — a whole sales team on the same plugin is a business pattern; five unrelated people on the same rare client is an attack pattern
  • Establish what is normal before deciding what is suspicious — two weeks of baseline for flows, applications and egress networks saves months of tuning
  • Record your dismissals — an exception without a review date turns into a permanent blind spot

Target profile: who affiliates pick first

The platform is sector-agnostic; every Microsoft 365 tenant is a target. The choice belongs to the affiliate and follows whatever can be cashed out or resold quickly. Market data points the same way: among campaigns aimed at a single brand, Microsoft and Office 365 accounted for 21.4% of listings, behind only cryptocurrency at 53.9%. A Microsoft 365 account is attractive not in itself but as the key to correspondence, files and identity in whatever comes next.

  • Financial and accounting services — the shortest path from a hijacked mailbox to a changed account number in a thread already under way
  • Manufacturing and logistics — deadline pressure, a dispersed supply chain, and correspondence where an invoice attachment raises nothing
  • Healthcare — sensitive data, high downtime cost and a regulatory response clock that punishes late detection
  • Government and public sector — politically sensitive mailboxes and correspondence subject to public-records disclosure
  • Professional services and IT — one compromise yields privileged visibility into many client environments at once
  • Education and research — large user populations, federated identity and thin monitoring outside working hours

The order on that list comes from economics, not from technical weakness. All of these organisations run the same identity platform on the same defaults. What separates them is how quickly a hijacked mailbox turns into money.

What to do when an indicator fires

The full token-compromise response procedure, split by role and time frame, is in the runbook in our VENOM campaign analysis. What follows is the short decision path for the analyst on duty, before that procedure starts.

First steps once an indicator fires
  • Confirm it is a session, not a password — check whether the event window contains a successful sign-in from an unusual network; if it does, a password reset is not step one
  • Revoke sessions and refresh tokens — for the specific identity rather than the whole tenant, and note the time, because it anchors the rest of the analysis
  • Check authentication methods and devices — remove anything registered after the first suspicious sign-in
  • Review inbox rules and forwarding — including disabled rules and those created by a "user" that is in fact an application
  • Establish the scope of access — which files were downloaded, which conversations read, what was sent outside; this is the material for a notification assessment
  • Check who else received the same message — an affiliate campaign rarely aims at one person
  • Block what survives a domain change — a Conditional Access policy and an approved-application inventory outlast any address list

That last point is the one that closes the case for longer than a week. The recommendation in the FBI alert, a Conditional Access policy blocking the device code flow, an audit of existing use of that flow, and exempting only break-glass accounts, does not depend on what the platform will be called next quarter.

KEY TAKEAWAYS

  • 1
    The model is new, the technique is not — device code abuse was documented earlier; what changed is that it now ships as a subscription with a panel, templates and support
  • 2
    The FBI alert is dated 21 May 2026 and numbered I-052126-PSA — addressed to a general audience, carrying no indicator list but a specific configuration recommendation
  • 3
    The market does not live on the dark web — 58.8% of kit listings come from deep web forums and only 7.7% from the dark web
  • 4
    Attribution to a kit name is worth little — detect structure and behaviour instead: domain age, a repeating URL path, a rule hiding alerts, consent for an unknown app
  • 5
    The barrier to entry fell, so the profitability threshold for a target fell with it — a campaign against a mid-sized firm costs the affiliate what one against a corporation costs

Frequently asked questions

How does phishing-as-a-service differ from an ordinary phishing kit?

A kit is code the attacker has to deploy, maintain and hide themselves. Phishing-as-a-service is a finished service: the operator provides infrastructure, domain rotation, a panel and support, while the customer picks a target and launches. The difference comes down to how much technical skill you need to start at all. In a sample of 8,627 listings collected by Flare, 54.1% already offered finished services rather than code.

What exactly did the FBI warn about regarding Kali365?

Alert I-052126-PSA of 21 May 2026 describes Kali365 as a phishing-as-a-service platform first observed in April 2026 and distributed mainly over Telegram. The FBI states that the platform allows capture of Microsoft 365 access tokens and MFA bypass without intercepting credentials, and recommends as mitigation a Conditional Access policy blocking the device code flow together with an audit of existing use of that flow.

Does MFA protect against an attack run from such a platform?

Not in every variant. In device code abuse the victim completes a genuine authentication on the identity provider infrastructure, so the second factor is satisfied correctly and there is nothing to block. Phishing-resistant methods close the proxy variant but not this one. The control that works on this flow is a Conditional Access policy. We take apart the difference between phishing-resistant and phishable MFA in our VENOM campaign analysis.

Is blocking the IP addresses from an advisory enough?

No. PhaaS infrastructure rotates domains and addresses daily, and lures increasingly sit on shared edge services that cannot be blocked wholesale without side effects. Indicator lists have retrospective value, for searching logs backwards, rather than preventive value. What lasts are tenant-side controls and behaviour-based detections.

Which logs do you need to detect a campaign like this at all?

The minimum is Microsoft Entra sign-in logs, both interactive and non-interactive, the Entra audit log, Exchange Online activity, mail telemetry including URLs from bodies and attachments, and link click events. Without non-interactive sign-ins you will not see token replay, and without the audit log you will not see application consent or newly registered authentication methods.

Do PhaaS takedowns actually change anything?

They change things locally and for a while. In September 2025 the Microsoft Digital Crimes Unit, with Cloudflare, seized 338 domains from RaccoonO365, and in March 2026 it seized 330 domains from Tycoon 2FA in an action coordinated through a Europol programme. Customers move to the next platform faster than mail gateway rules get updated, so treat takedowns as a measure of the scale of the problem rather than as part of your own protection.

Is a mid-sized company really a target for a campaign like this?

Yes, and that is precisely what the subscription model changed. Once the cost of preparing a campaign is effectively fixed and low, the assumption that an attacker capable of this will pick a large target stops holding. Microsoft reports that 28% of the breaches it analysed start with phishing or social engineering, and CERT Polska registered 78,391 phishing incidents in Poland during 2025, about 30% of everything recorded.

Where do you start with a small team and a limited budget?

With two things that need no new licences: a Conditional Access policy switching off unused authentication flows, and an inventory of the applications allowed to request consent. The third step is checking whether the logs listed above are collected at all, and for how long. Only then does it make sense to build out detection, for instance as SOC-as-a-Service, because detection without source data is a pure cost.

In closing

The FBI warning about Kali365 is worth attention not because of this one platform but because of what its existence says about the market. Session hijacking has stopped being a skill and become a feature in somebody else panel. That does not change how hard the defence is; it changes how many organisations have to take it on. The answer is not another indicator list but two configuration decisions, a complete set of logs, and behaviour-based detection. The delivery channel itself remains ordinary phishing, which we sort out in our guide to the types of phishing; you can test your team against it with social engineering simulations.

Once an attack becomes a service, it stops selecting victims by difficulty and starts selecting them by return. For a defender that means the question "are we interesting enough to be worth someone time" has lost its meaning. What counts now is whether you can see the trace a platform customer leaves behind.

Sources

  1. 1.
    Kali365 Phishing-as-a-Service Kit Hijacks Microsoft 365 Access Tokens (I-052126-PSA)
    FBI IC3 · 2026-05-21 · accessed 2026-08-09
    FBI public service announcement I-052126-PSA: platform description, distribution channel, effect of the attack and recommended mitigations.
  2. 2.
    The Phishing Kits Economy in Cybercrime Markets
    Flare · 2026-01-15 · accessed 2026-08-09
    Analysis of 8,627 phishing-kit listings from forums, Telegram, dark web and open sources, collected over one year.
  3. 3.
    Microsoft Digital Defense Report 2025
    Microsoft · 2025-10 · accessed 2026-08-09
    Microsoft telemetry: initial access vectors, growth in identity attacks and the effectiveness of AI-assisted phishing.
  4. 4.
    How Microsoft is tackling the cybercrime economy
    Microsoft · accessed 2026-08-09
    Account of Microsoft Digital Crimes Unit actions, including the RaccoonO365 and Tycoon 2FA domain seizures.
  5. 5.
    International investigation disrupts phishing-as-a-service platform LabHost
    Europol · 2024-04 · accessed 2026-08-09
    Europol statement on the international investigation into a subscription-based PhaaS platform.
  6. 6.
    IOCTA 2026 — The evolving threat landscape: how encryption, proxies and AI are expanding cybercrime
    Europol · 2026-04-28 · accessed 2026-08-09
    Annual assessment of internet-facilitated organised crime in the EU; context for the crime-as-a-service model.
  7. 7.
    Catching Phishers By Their Bait: Investigating the Dutch Phishing Landscape through Phishing Kit Detection
    30th USENIX Security Symposium · 2021-08 · accessed 2026-08-09
    Study of the Dutch phishing-kit market: 70 kits collected, 10 families, and the effect of ready-made tooling on the barrier to entry.
  8. 8.
    Raport roczny z działalności CERT Polska w 2025 roku
    CERT Polska / NASK · 2026 · accessed 2026-08-09
    Reporting and incident statistics for Poland in 2025, including the share attributable to phishing.
  9. 9.
    App consent grant investigation
    Microsoft · accessed 2026-08-09
    Response playbook for application consent abuse: audit log operation names and investigation steps.
  10. 10.
    Configurable token lifetimes in the Microsoft identity platform
    Microsoft · 2026-04-08 · accessed 2026-08-09
    Token lifetimes in Microsoft Entra ID; the source for the 90-day refresh token max inactive time.

See what is circulating about your organisation in criminal channels

Flare monitors deep web forums, Telegram channels and dark web markets for leaked credentials, mentions of your domains and preparations for phishing campaigns.

Explore Flare

Secure your
future today

Cyber threats don't sleep, and neither do we. Whether you need an immediate response to a breach or a long-term strategic security partner, ZeroLayer is ready.

Book a 30-minute call

Pick a time that works for you and talk directly to our security team. A conversation about your situation, not a sales pitch.