Evolution of SprySOCKS: Analyzing the New Windows-Based Backdoor Variants
For much of its operational lifespan, the SprySOCKS backdoor has been a staple of the Linux environment, utilized extensively by the threat actor known as FishMonger (also identified as Earth Lusca or TAG-22). However, recent intelligence indicates a significant evolution in the adversary’s toolkit: the transition to Windows.
According to ESET research, two previously undocumented Windows builds have surfaced. These variants—internally designated as WIN_DRV and WIN_PLUS—maintain the original SprySOCKS protocol and command architecture while introducing sophisticated, Windows-native exploitation and persistence mechanisms.
Telemetry suggests active exploitation throughout 2023 and 2024, with a primary focus on government entities in Honduras, Taiwan, Thailand, and Pakistan. The core backdoor functionality remains robust, supporting over 30 commands for system reconnaissance, process/service management, file manipulation, SOCKS proxying, and interactive shell access. The implementation leverages open-source libraries such as HP-Socket for networking and Crypto++ for cryptographic operations, following the established multi-protocol, AES-ECB encrypted payload design.

Technical Breakdown: WIN_PLUS vs. WIN_DRV
The two variants represent different levels of operational complexity, tailored for varying degrees of stealth.
WIN_PLUS: The Lightweight Variant
The WIN_PLUS build utilizes a first-stage loader designed to mimic a print processor. This loader decrypts an AES-128-ECB encrypted container (using a hardcoded key) located within spool directories. It then employs techniques reminiscent of process doppelgänging to inject the backdoor into svchost.exe. Persistence is maintained by registering a custom print processor, allowing the malware to reside quietly within standard Windows printing workflows.
WIN_DRV: The Kernel-Mode Powerhouse
The WIN_DRV variant is significantly more advanced, aimed at deep system integration and evasion. Its execution chain begins with DLL side-loading and scheduled tasks to escalate privileges to SYSTEM. Once established, it deploys two critical kernel-mode components:
- DriverLoader: A signed component that memory-maps and launches the primary driver in-memory.
- RawWNPF: A sophisticated rootkit driver utilizing Minifilter and Windows Filtering Platform (WFP) drivers.
The RawWNPF driver acts as the primary stealth engine. It intercepts NtQuerySystemInformation to mask malicious processes, implements filesystem minifilter callbacks to hide its own files and registry keys, and utilizes WFP callouts to manipulate IPv4 traffic. One of its most notable capabilities is the ability to “hijack” TCP traffic; when the driver detects specifically crafted data on any open port, it transparently redirects the flow to the backdoor’s hidden listening port. Because this port is invisible to standard diagnostic tools like netstat, the backdoor remains effectively invisible to most network monitoring.

To bypass modern security requirements, the attackers have utilized a leaked PastDSE certificate to sign their drivers, ensuring they bypass signature enforcement on targeted systems. Furthermore, there is emerging evidence suggesting the possible use of a UEFI bootkit (potentially leveraging CVE-2023-24932) to achieve even deeper persistence.

Defensive Recommendations
Defenders should prioritize hunting for the following indicators of compromise (IOCs):
- Suspicious DLL side-loading involving signed executables that have been renamed to mimic legitimate Microsoft services.
- Encrypted containers located in
%SystemRoot%\Fontsor spool directories. - Anomalous WFP callouts and unexplained hidden processes or network connections.
- Outbound traffic directed toward the
207.148.64.0/20(Vultr-hosted) range.
Indicators of Compromise (IOCs)
Files
| SHA-1 | Filename | Detection | Description |
|---|---|---|---|
| 955BFC3DCC867256F9F46A606DEB0779FA3416D8 | KX1B5206BDC1743DD.dat | Win64/SprySOCKS.A | Encrypted SprySOCKS DriverLoader driver. |
| 44DC4A08C5EB0972C8E18B0E01284E06F09006BB | bthcam.sys | Win64/Agent.ESB | SprySOCKS DriverLoader driver. |
| AB87B29B6F79487C75CA08D102E79001E536F083 | KW1B5206BDC1743FP.dat | Win64/SprySOCKS.A | Encrypted SprySOCKS RawWNPF driver. |
| 6490B8E4AADE25A3EE2DA9A47F312DB2122470BC | X1B5206BDC1743DD.dat | Win64/SprySOCKS.A | Encrypted container for WIN_DRV components. |
| E7484C24B88A1A2407A8F09D734F9A993670285B | klelam00007.zip | Multi-detection | ZIP archive containing WIN_DRV components and side-loading binaries. |
| 621D1952839BE4B0A1B0E66E87BCE5062CA368ED | tpsvcloc.dll | Win64/Agent.CXZ | SprySOCKS loader. |
| 2457EED2AB28E37741F10914EF929DAD2C8079D4 | VSPMsg.dll | Win64/Agent.CXZ | First-stage loader for the SprySOCKS loader. |
| D2C706B1EAF662BF0CE124B5032F73ED84BDA24A | N/A | Win64/SprySOCKS.A | WIN_PLUS variant of the SprySOCKS backdoor. |
| 5F3B87CEF56683D9A9E19186E0FD0D8019B559C4 | N/A | Win64/Agent.CXZ | SprySOCKS loader. |
| C793CA31E3F6628B5C8986146953BF66232E9A30 | config.dat | Win64/SprySOCKS.A | Encrypted container for the WIN_PLUS variant. |
| 037DB2445F3D72388CB2CF8510563148E5A184BE | N/A | BAT/Runner.KS | Batch script for WIN_DRV persistence. |