Back to all posts
Published on · by Renaud Deraison

The nine-step attack that dies at step one

Microsoft documented a nine-stage ransomware chain that begins with an external Teams message impersonating the helpdesk and ends with Rclone quietly exfiltrating the network share. Eight of those nine steps need the host operating system. None of them can run against a tab.

Microsoft published a nine-stage attack chain this week: a Teams message from a fake helpdesk, a Quick Assist session, a DLL side-load through a signed vendor binary, WinRM across the network, Rclone out to attacker cloud storage. Eight of the nine stages need the host operating system to be a real desktop. A browser tab running inside a disposable VM is not one.

On April 20, 2026, Microsoft's threat-analysis team published a breakdown of a nine-stage attack chain that multiple ransomware affiliates are now using in production. The opening move is social: a message arrives in Microsoft Teams from an external tenant, from someone who claims to be IT, and asks the target to start a remote support session to address "an account issue" or "install a security update." The closing move is financial: Rclone, a legitimate cloud sync utility, streaming the file server out to attacker-controlled object storage while the ransomware encrypts what is left behind.

Microsoft's wording is worth quoting directly: "threat actors are increasingly abusing external Microsoft Teams collaboration to impersonate IT or helpdesk personnel and convince users to grant remote assistance access." The novelty here is not the social engineering — pretending to be the helpdesk is as old as the helpdesk — it is the delivery surface. Teams is the collaboration client that sits on every corporate desktop, signed in at all times, auto-launching at boot, with a notification API that makes an external message look identical to an internal one. It is, in 2026, a better phishing channel than email.

The chain, end to end.

Here is what the nine stages actually do on a Windows machine. The numbers are Microsoft's; the plain-language descriptions are ours.

SOCIAL — STAGE 1HOST OPERATING SYSTEM — STAGES 2 TO 91External TeamsDM"IT helpdesk"2QuickAssistnative .exe3Hands-oncontrolattacker's4Recon& privPowerShell5DroppayloadProgramData6DLLside-loadvia Adobe7HTTPSC2blends in8WinRMlateralto DC9RcloneexfilcloudEvery step here runs on the Windows desktop the user is logged into.WHAT EACH HOST STAGE NEEDSStage 2 · launch a signed native Windows executable (Quick Assist)Stage 4 · spawn cmd.exe and PowerShell, read AD group membershipStage 5 · write files to C:\ProgramData, persist across rebootStage 6 · place a DLL next to a legitimately signed vendor .exe on diskStage 8 · open a WinRM session to a domain-joined host on the LANStage 9 · read local credentials and file shares, invoke rclone.exe
The chain Microsoft documented. Stage 1 is a message from a stranger inside the company's chat client. Stages 2 through 9 are a sequence of operations on the Windows host — Quick Assist, PowerShell reconnaissance, a DLL loaded by a legitimately signed Adobe or Autodesk binary, Windows Remote Management across domain-joined machines, and Rclone exfiltrating the file server. The ransomware encryption is after the data is out.

The chain is efficient and boring, which is what good ransomware tradecraft looks like in 2026. Nothing here is a zero-day. Quick Assist is a first-party Microsoft remote-support tool that ships with Windows. PowerShell is a first-party administrative shell. DLL side-loading — dropping an attacker-controlled library next to a legitimately signed program so that the signed program loads the malicious code — is two decades old. WinRM is how domain administrators are supposed to manage Windows fleets. Rclone is an open-source cloud sync utility you can install from Homebrew. The attack is made of supported, signed, IT-blessed primitives. That is what makes it hard to detect with traditional endpoint tooling: every individual step looks like something the IT team does on purpose.

The positive thesis: decapitate the chain at step one.

Now consider what that same chain looks like if stage one is not a notification popping up in a native Windows desktop client, but a notification popping up inside a browser tab. Inside a Bromure browser tab. Inside a disposable Linux VM that has no persistent disk, no domain join, no Windows binaries, no WinRM listener, no Rclone, no Adobe Reader to side-load into, no shared filesystem with the host, and that will be destroyed when the window closes.

Stage 1 still lands. The external Teams tenant can still send the DM. The user still sees the message. The social-engineering pressure is still there. Nothing about Bromure prevents a stranger claiming to be the helpdesk from typing "I need to install a security update on your machine, let me start a Quick Assist session" into a chat window.

But stage 2 is where it stops. The browser tab cannot launch Quick Assist, because Quick Assist is a native Windows binary and the tab is a Chromium window inside a Linux VM that has no Quick Assist installed, no ability to install one, and no IPC channel to the Windows machine on the other side of whatever device is running Bromure. And because the chain is strictly sequential — every subsequent stage needs the artifact of the stage before it — decapitating at step two means stages 3 through 9 never get to happen.

NATIVE TEAMS DESKTOP CLIENT — all 9 stages run on the host1Teams DM(on host)2Quick Assist3Remote control4Recon5Payload drop6DLL side-load7HTTPS C28WinRM lateral9Rclone exfilNine for nine.TEAMS IN A BROMURE TAB (teams.microsoft.com) — only stage 1 lands1Teams DM(in tab VM)2Quick Assistno native .exe3Remote controlnothing to drive4Reconno PowerShell5Payload dropno shared disk6DLL side-loadno Adobe to host it7HTTPS C2VM dies at close8WinRM lateralnot on LAN9Rclone exfilno host credsOne for nine. Stage 1 lands in an ephemeral VM. Stages 2–9 need a host they cannot reach.Caveat: this is only true if the user opens Teams in the browser. A native-client install is a host app, and lives on row A.
The same chain, viewed through two user habits. Top: Teams as a native desktop client on the host OS — every stage has what it needs. Bottom: Teams opened at teams.microsoft.com inside a Bromure tab — stage one lands inside the ephemeral VM, every stage after it is something the VM is structurally unable to do.

There is a tempting reading of this diagram that is too strong: "use Bromure, be immune to ransomware." That is not the claim. The claim is narrower, and the narrower version is more honest and more useful.

What the boundary actually is.

The thing doing the work here is not some clever Teams-specific filter. It is a structural property of how Bromure runs web content. Each tab in Bromure runs inside its own disposable Linux VM on your Mac. The browser the user sees is Chromium, running inside that Linux guest. The tab is bounded by the VM. The host is bounded by the hypervisor. When you close the tab, the VM is destroyed. When you open a new tab, a new VM is created from a clean disk image.

EPHEMERAL TAB VM (Linux guest)Teams · teams.microsoft.com!External · contoso-support.com"Hi — IT helpdesk here. I needyou to accept a Quick Assist"message inputstage 1 lives here, and nowhere elsedisposable · no host filesystem · no native binariesdestroyed when the tab closesHYPERVISORmacOS HOST — what stages 2-9 wantQuick Assist binaryPowerShell / cmd.exeC:\ProgramDataSigned Adobe .exeRegistry · run keysWinRM listener on LANDomain credentialsFile share · rclone.exe
Where the boundary sits. The helpdesk impostor can type into the chat window (stage 1). Every stage after that needs an action on the macOS host — a native binary to launch, a filesystem to persist into, a LAN to pivot across. The hypervisor boundary is between the attacker and all of those. The chat window is on one side; the helpdesk toolkit the attacker wants to use is on the other.

When the attacker at stage 2 says accept my Quick Assist session, the mechanism they are asking to invoke does not exist on the other side of the boundary. There is no Quick Assist in a Linux guest. There is no way for a web page, even one the user fully trusts, to reach out from the guest into the host to launch a macOS or Windows native binary. There is no bridge for that; it would defeat the entire point of the architecture. The attacker's chain depends on a set of capabilities — launch native app, write to a persistent filesystem, load a DLL beside a signed vendor binary, open a WinRM session, read host credentials — and the tab VM has none of them, by construction.

This is not a feature we added specifically for the Teams helpdesk threat. It is the same property that makes Bromure useful against browser zero-days, malicious extensions, and infostealers in general. Stage 1 is the only part of the chain that cares about what the user clicked. Every subsequent stage needs the user's desktop. Put the browser in a different computer than the desktop, and the chain stops being about the user's decisions and starts being about the architecture of the machine.

What this does not solve.

If the same user has Microsoft Teams installed as a native desktop client — the Microsoft Teams.app on macOS, or the Windows desktop client, both running outside Bromure, both signed into the same user account — then the external-tenant DM lands on the host. At that point we are back on row A of the diagram. Stage 1 is a native notification. Stage 2 is the user accepting a Quick Assist session on their actual desktop. The tab VM never enters the story. Bromure cannot protect what does not run inside Bromure.

Likewise: if the organization's IT policy is to block external Teams DMs at the tenant level — which Microsoft's writeup recommends — stage 1 never reaches the user in either world, and the architecture discussion is moot. That is the right first fix. Bromure is a defense for the case where the first fix did not get applied, or the user is on a personal device, or the policy has a carve-out, or the attacker found a tenant that did not enforce it.

What the browser habit changes

Opening Teams at teams.microsoft.com inside a Bromure tab moves stage one into an ephemeral Linux VM on your Mac. If you click the "accept support" link the impostor sends, the tool they wanted is not where the click lands. The ask fails because the capability is not present.

What the native client does not

If you already have the Teams desktop app installed and signed in, the DM arrives there and the host is exposed exactly as Microsoft describes. Removing the desktop client, or relegating it to a dedicated work machine, is the behavioral change Bromure enables — not one it imposes.

What Bromure does not stop

A user who is talked into typing their corporate password into a form inside the Bromure tab still loses that password. The browser's anti-phishing sweep will try to catch the form, but a determined social-engineering target can defeat any such guard. Credential phishing and VM-boundary defense are different problems.

The honest shape of the claim

For a user whose work habit is browser-Teams, Bromure turns a nine-step intrusion into a one-step conversation. For a user whose work habit is the native client, Bromure changes nothing about this attack. That is the entire point of publishing this post instead of a shorter, louder one.

Why the browser habit is worth defending.

Most corporate chat clients — Teams, Slack, Discord, Zoom — ship as both a native desktop app and a web app at the same URL. The web version is feature-complete for the vast majority of what most people do in them: read messages, write messages, search, attach files, take calls. The web version does not auto-launch at boot. The web version does not maintain a persistent process on the host that attackers can probe. The web version does not ship an update channel that has, in the past, been the vector for its own supply-chain incidents. And, uniquely if the browser in question is Bromure, the web version lives inside a computer that does not share a filesystem with the user's real machine.

The pitch here is not that every user should uninstall the Teams desktop app tomorrow. It is that the web-first option exists, has been quietly acceptable for years, and — in light of what Microsoft described on April 20 — is now the materially safer one for any user who does not specifically need a feature that only the desktop client offers. Bromure makes this choice meaningful. A web Teams session inside a regular Chrome window is still a session that shares a filesystem with every other program on your Mac. A web Teams session inside a Bromure tab is not.

One story, and what it changes.

Microsoft's nine-step writeup will not be the last of its kind. The shape — external social channel → remote-access tool → reconnaissance → signed-binary persistence → lateral movement → exfiltration — is the shape most human-operated ransomware intrusions now take, regardless of which chat client they start in. The collaboration client is the new email inbox. The "click to accept the support session" is the new "click to enable macros." The subsequent hands-on-keyboard work is the attack itself.

If the user's daily work happens on a machine where the chat client and the file server share an operating system, the attacker only needs to get one foot inside that operating system to do the other eight steps. If the user's daily work happens in a browser that runs inside a VM the chat client cannot escape, the attacker needs a whole different set of primitives to finish the job, primitives the current generation of ransomware playbooks does not have.

That is not immunity. It is decapitation at step one. Install Bromure, use teams.microsoft.com in it instead of the native client for the parts of your work chat you can, and let the next nine-step chain be the attacker's problem.