Windows RAT Uses Encrypted HTTP C2 and Registry Persistence After npm Infection

A recent investigation has unveiled a sophisticated malware campaign that targets Windows systems via a cleverly disguised package on the npm registry. This malicious package masquerades as a legitimate CSS build tool, but in reality, it stealthily installs a fully functional Remote Access Trojan (RAT) on developer machines.

The infection process begins with a typosquatted npm package named postcss-minify-selector-parser, which is designed to mimic the well-established postcss-selector-parser, a package that boasts over 150 million weekly downloads. When developers unwittingly install this counterfeit package, a hidden encoded blob within the entry file triggers a multi-stage attack chain.

As the attack unfolds, the payload ultimately deploys a Windows RAT capable of stealing credentials, executing shell commands, and establishing communication with a remote attacker. Security researchers at JFrog identified this threat and shared their findings in a detailed report published on June 22, 2026, with Cyber Security News (CSN). Their investigation also revealed two additional related packages, postcss-minify-selector and aes-decode-runner-pro, all linked to the same npm publisher. At the time of the report, these packages remained live and accessible on the registry.

Windows RAT Uses Encrypted HTTP C2 and Registry Persistence

The sophistication of this campaign lies in its ability to blend seamlessly into the development environment. The fake package employs identical keywords and even depends on the genuine postcss-selector-parser, making it easy to overlook during routine dependency audits. Developers engaged in fast-paced projects, particularly those who do not audit transitive dependencies, are at heightened risk, as the attackers have clearly understood the dynamics of trust within open-source ecosystems.

The true extent of the damage becomes apparent only after the complete payload chain executes. A PowerShell downloader retrieves a ZIP archive from a lookalike domain, extracts its contents, and initiates a VBS script to activate the RAT. This final implant operates as a bundled Python application compiled with Nuitka, complicating inspection efforts compared to typical script-based threats.

Once the RAT is active on a victim’s machine, it establishes a connection with a command-and-control (C2) server over HTTP. All communications are encrypted using RC4/ARC4 wrapping with MD5 checksum material, rendering it difficult to detect at the network level. The RAT sends an initial host profile to the C2 and enters a loop, awaiting commands from the attacker.

To ensure persistence across reboots, the malware creates a registry key under the Windows Run key, using the entry name csshost. It also stores a persistent victim UUID and host configuration in files placed in the TEMP directory, allowing the RAT to reconnect automatically the next time the machine starts, even if the attacker loses contact.

This RAT boasts a wide array of capabilities, including remote shell execution, file upload and download, randomized sleep commands, and virtual machine detection. The evasion techniques employed, such as WMI queries and MAC address prefix matching, indicate a threat actor with considerable technical acumen and operational experience.

Chrome Credential Theft and Exfiltration

In addition to remote control functionalities, the RAT features a dedicated module for stealing saved login data from Google Chrome. It accesses Chrome’s local profile files, including the Login Data SQLite database, and utilizes Windows decryption APIs to unlock stored passwords. Notably, it can also handle newer Chrome app-bound encryption, posing a threat even to recently protected credentials.

The auto.pyd module collects data from Chrome extensions, packaging the results into an in-memory archive before exfiltration. Output file references found within the binary, such as chromeloginsdump.txt and gather.tar.gz, suggest that the attacker designed this malware for organized batch exfiltration. This presents a significant and immediate risk for developers who store API keys, tokens, or credentials in their browsers.

JFrog advises anyone who has installed packages from this cluster to remove them immediately and to inspect their full dependency trees for potential risks. Security teams are urged to block network indicators associated with this campaign and to search endpoints for related file paths and executables. All browser-stored credentials and development tokens on affected machines should be treated as compromised and rotated without delay.

Indicators of Compromise (IoCs):

End-to-end Infection Chain (Source – JFrog)
Type Indicator Description
IP Address 95[.]216[.]92[.]207 C2 server IP address
Domain nvidiadriver[.]net Payload delivery domain
URL hxxp[:]//95[.]216[.]92[.]207:8080 C2 communication endpoint
URL hxxp[:]//nvidiadriver[.]net/verv1432/winpatch-xd7d[.]win Payload download URL
File Path %TEMP%winPatch.zip Downloaded malware archive
File Path %TEMP%winPatchupdate.vbs VBS bootstrapper file
File Path %TEMP%.store Persistent victim UUID storage
File Path %TEMP%.host Host configuration storage
Registry Key HKCUSoftwareMicrosoftWindowsCurrentVersionRuncsshost RAT persistence registry entry
File Name win-driver-xd7d/chost.exe Renamed Python launcher
File Name win-driver-xd7d/loader.py Python loader script
File Name win-driver-xd7d/api.cp310-winamd64.pyd HTTP C2 packet exchange module
File Name win-driver-xd7d/audiodriver.cp310-winamd64.pyd Main RAT orchestration module
File Name win-driver-xd7d/auto.cp310-winamd64.pyd Chrome credential theft module
File Name win-driver-xd7d/command.cp310-winamd64.pyd Host actions and shell execution module
File Name win-driver-xd7d/config.cp310-winamd64.pyd RAT configuration module
File Name win-driver-xd7d/util.cp310-winamd64.pyd Archive helper module
SHA-256 164e322d6fbc62e254d73583acd7f39444c884d3f5e6a5d27db143fc25bc88b3 audiodriver.cp310-winamd64.pyd
SHA-256 50ffce607867d8fa8eaf6ef5cd25a3c0e7e4415e881b9e55c04a67bcddb74fdf api.cp310-winamd64.pyd
SHA-256 17832aa629524ef6e8d8d6e9b6b902a8d324b559e3c36dbd0e221ab1690be871 auto.cp310-winamd64.pyd
SHA-256 c8075bbff748096e1c6a1ea0aa67bb6762fdd7551427a12425b35b94c1f1ecf2 command.cp310-winamd64.pyd
SHA-256 f6669bd504ce6b0e303be7ee47f2ebbc062989c88c41f0a3f436044a24869798 config.cp310-winamd64.pyd
SHA-256 282b9bc318ad1234cbd1b86424b784299b8be31545802a7c6b751166b814b990 util.cp310-winamd64.pyd
npm Package postcss-minify-selector-parser (XRAY-1002983) Primary malicious npm package
npm Package postcss-minify-selector (XRAY-1003986) Related malicious npm package
npm Package aes-decode-runner-pro (XRAY-989675) Related AES decoder package

Note: IP addresses and domains are intentionally defanged (e.g., [.]) to prevent accidental resolution or hyperlinking. Re-fang only within controlled threat intelligence platforms such as MISP, VirusTotal, or your SIEM.

Winsage
Windows RAT Uses Encrypted HTTP C2 and Registry Persistence After npm Infection