Cato CTRL™ Threat Research: SilverFox Evolves: Abuse of New Drivers and Trusted Software Hijacking Enable Remote Access with ValleyRAT in Japan

Executive Summary

SilverFox is expanding its toolkit. In this campaign, the group combines new vulnerable-driver abuse, newly observed abuse of legitimate applications for DLL sideloading, defense evasion, and layered recovery mechanisms to keep ValleyRAT running.

We investigated an active campaign targeting a Japanese organization in the industrial manufacturing sector. The attack begins with an invoice-themed phishing lure and uses attacker-controlled content hosted through legitimate QQ and Tencent Cloud services. The attackers then abuse ConvertToPDF.exe and PDFDirect.exe to sideload a malicious PDFCORE8.dll. Based on the public research we reviewed, neither application had previously been documented as a DLL-sideloading host.

The malicious DLL embeds BootRepair.sys, EnPortv.sys, and wsftprm.sys. Although SilverFox’s use of vulnerable drivers is not new, we found no prior public association between the group and BootRepair.sys or EnPortv.sys. The malware integrates Bring Your Own Vulnerable Driver (BYOVD), DLL sideloading, NTDLL unhooking, process injection, registry-based payload storage, and two independent recovery mechanisms to impair security controls and maintain execution. The Cato SASE Platform blocked the malicious PDFCORE8.dll before ValleyRAT could establish remote access.

2026 Cato CTRL™ Threat Report | Download the report

Key Findings

  • We identified previously undocumented SilverFox use of BootRepair.sys and EnPortv.sys.
  • SilverFox abused ConvertToPDF.exe and PDFDirect.exe to sideload the malicious PDFCORE8.dll.
  • The loader embeds three vulnerable drivers in a reusable BYOVD framework designed to terminate security processes from kernel mode.
  • The malware integrates BYOVD, NTDLL unhooking, thread-context hijacking, registry storage, scheduled-task persistence and dual recovery mechanisms.
  • The campaign targeted a Japanese organization in the industrial manufacturing sector and ultimately deployed ValleyRAT for remote access.

SilverFox Expands Its Arsenal

SilverFox has previously used BYOVD techniques to impair security products and facilitate ValleyRAT deployment. Check Point Research documented a SilverFox campaign using a dual-driver framework that included a previously unclassified WatchDog Antimalware driver capable of terminating security processes from kernel mode.

Our investigation identified a different driver set. The malicious PDFCORE8.dll embeds BootRepair.sys, EnPortv.sys, and wsftprm.sys and manages them through shared resource-decryption, driver-deployment, service-creation, and device-communication routines.

The process-termination capabilities of these drivers were already known independently of this campaign. Huntress previously analyzed abuse of EnPortv.sys in an unrelated intrusion. PhantomKiller demonstrated how BootRepair.sys can receive a process identifier and invoke kernel-level process termination. CVE-2023-52271 documents how an affected version of wsftprm.sys can be abused to terminate protected processes.

Our research expands the group’s documented arsenal and reveals how several defense-evasion and execution-resilience capabilities are combined within a single framework.

Table 1. New additions to SilverFox’s documented arsenal

Cato CTRL Finding Threat Research Significance
Previously undocumented SilverFox use of BootRepair.sys and EnPortv.sys Adds two new driver associations to SilverFox’s known BYOVD arsenal.
Previously undocumented abuse of ConvertToPDF.exe and PDFDirect.exe Identifies two legitimate applications used by SilverFox to sideload the malicious PDFCORE8.dll.
Integrated three-driver BYOVD framework Shows how SilverFox manages BootRepair.sys, EnPortv.sys, and wsftprm.sys through reusable decryption, installation, service-management, and driver-communication logic.
Unified defense-evasion and recovery architecture Combines BYOVD, NTDLL unhooking, dynamic API resolution, thread-context hijacking, internal payload supervision, and an external watchdog in one modular execution framework.

The novelty is therefore not any single technique in isolation. It is the addition of two drivers not previously associated with SilverFox, two newly documented DLL-sideloading hosts, and the integration of kernel-level defense impairment, user-mode evasion, payload injection, and dual recovery mechanisms into one resilient attack chain targeting Japan.

Attribution Assessment

We assess with moderate-to-high confidence that this activity is linked to SilverFox. The assessment is based on the use of ValleyRAT, BYOVD-based security-process termination, DLL sideloading, the FaCai2024 marker, registry-based payload storage, related infrastructure patterns, and targeting consistent with previously reported SilverFox activity. No single artifact is treated as conclusive; the attribution is based on the combined overlap in tooling, execution flow, infrastructure, and victimology.

Technical Analysis Details

From an Invoice Lure to Trusted Execution

The campaign, initially shared by MisaKi on X, begins with an invoice-themed phishing email sent to a Japanese organization in the industrial manufacturing sector. When the recipient attempts to open the supposed invoice, they are directed to download a ZIP archive hosted through legitimate QQ file-delivery infrastructure.

The observed download originated from:
file[.]wx2[.]qq[.]com

At the time of publication, the specific malicious resource was no longer available. The threat actor abused the service to make the delivery traffic appear less suspicious and more difficult to distinguish from normal web activity.

The archive contains a downloader executable that retrieves the next-stage components from an attacker-controlled object hosted through Tencent Cloud infrastructure:

hrefbfdhfhgre-1422102728[.]cos[.]ap-hongkong[.]myqcloud[.]com

The retrieved files include:

  • PDFCORE8.dll – the malicious second-stage DLL
  • ConvertToPDF.exe or PDFDirect.exe – legitimate applications later used as DLL-sideloading hosts

The specific malicious Tencent Cloud object was also unavailable when we completed this analysis.

As shown in Figure 1, the infection progresses from a phishing lure and cloud-hosted delivery to trusted software hijacking, kernel-level defense impairment, process injection, and ValleyRAT execution.

SilverFox_infection_chain

Figure 1. SilverFox infection chain from phishing delivery to ValleyRAT execution

The downloader retrieves the malicious PDFCORE8.dll together with a legitimate application that is later used as the DLL-sideloading host. As shown in Figure 2, both components are delivered from the second-stage infrastructure and written to the compromised system.

Components_delivered_for_DLL_sideloading

Figure 2. Components delivered for DLL sideloading

Timestamped Files Complicate Static Detection

During multiple investigations, we observed timestamp-based filenames used for ZIP archives and executable payloads. One example was:

20260608154418.zip

The filename appears to encode the date and time at which the archive was generated. Changing filenames can reduce the effectiveness of simple filename-based blocking and make separate deliveries appear unrelated, even when the underlying payload or infrastructure remains similar.

In Figure 3, we show the timestamped archive and executable together with the next-stage files retrieved from the delivery server.

Timestamped_archive_and_next_stage

Figure 3. Timestamped archive and next-stage payload files

The downloader also impersonates Google Chrome during network communication by using a browser-like User-Agent string. This allows the traffic to resemble routine browser activity rather than communication generated by a standalone executable.

Figure 4 shows the Chrome User-Agent string used by the downloader during communication with the delivery infrastructure.

Spoofed_Chrome_User_Agent

Figure 4. Spoofed Chrome User-Agent used by the downloader

Trusted Software Hijacking Through DLL Sideloading

The second stage begins when the downloader writes the legitimate executable and malicious DLL to the user’s temporary directory. In some observed samples, the executable was renamed:

MicrosoftEdgeUpdate.exe

The renamed file was not a Microsoft binary. It was a legitimate signed application placed under a name intended to resemble a familiar Microsoft update component and reduce suspicion.

Figure 5 shows the renamed executable as it appeared on the affected system.

Legitimate_application

Figure 5. Legitimate application renamed to resemble a Microsoft update component

During our investigation, we identified two separate legitimate applications used through the same DLL-sideloading pattern:

  • ConvertToPDF.exe
  • PDFDirect.exe

Both applications are associated with Zeon Corporation. The threat actor placed a malicious implementation of PDFCORE8.dll in the same directory as the trusted executable. When either application started, Windows resolved the DLL dependency from the local working directory and loaded the attacker-controlled file.

Authenticode verification showed that the legitimate executables remained digitally signed and were not modified. The malicious behavior resulted from the way the applications located and loaded PDFCORE8.dll, not from alteration of the signed executable itself.

Based on the public research we reviewed, neither ConvertToPDF.exe or PDFDirect.exe had previously been documented as a DLL-sideloading host.

This distinction is important: the applications themselves are legitimate and our findings describe their abuse by the threat actor. We are not suggesting that Zeon participated in or knowingly enabled the campaign.

In Figure 6, we show the valid digital signature associated with the abused ConvertToPDF.exe sample.

Valid_digital_signature

Figure 6. Valid digital signature on the abused ConvertToPDF.exe application

Figure 7 shows the DLL imports of the legitimate application, including PDFCORE8.dll, which is abused for DLL sideloading.

PDFCORE8.dll_listed

Figure 7. PDFCORE8.dll listed among the legitimate application’s imported DLLs

Inside PDFCORE8.dll: A Self-Contained Execution Framework

Once loaded, PDFCORE8.dll acts as the main second-stage execution framework. Rather than retrieving every component from external infrastructure, the DLL stores several encrypted resources inside its Portable Executable resource section.

This design reduces the number of additional network requests required after the initial compromise. It also delays exposure of the embedded components until the malware needs them, limiting what static analysis tools can observe before runtime.

Our analysis identified four encrypted resources:

Resource ID Component Purpose
4019 wsftprm.sys Vulnerable kernel driver
4020 Watchdog batch script Loader supervision and recovery
4023 BootRepair.sys Vulnerable kernel driver
4024 EnPortv.sys Vulnerable kernel driver

None of these resources are stored in plaintext. The framework retrieves each component from the PE resource section, decrypts it immediately before use, writes it to disk only when necessary, executes or loads it, and later removes it when the corresponding stage is complete.

Figure 8 shows the encrypted resources embedded within PDFCORE8.dll.

Encrypted_drivers

Figure 8. Encrypted drivers and watchdog resources embedded in PDFCORE8.dll

The embedded resources include all three vulnerable drivers supported by the framework. Figure 9 shows BootRepair.sys and EnPortv.sys within PDFCORE8.dll, while Figure 10 shows the embedded wsftprm.sys resource.

BootRepair.sys_and_EnPortv.sys

Figure 9. BootRepair.sys and EnPortv.sys embedded in PDFCORE8.dll

wsftprm.sys embedded_in_PDFCORE8.dll

Figure 10. wsftprm.sys embedded in PDFCORE8.dll

On-Demand RC4 Resource Decryption

The embedded resources are protected with RC4 and remain encrypted until the execution framework requires them.

We recovered the following hardcoded 128-bit key from the loader:

BB7BBB62FD9C76D5DDF37F17DDC3E7FF

The malware does not rely on Windows cryptographic APIs to perform decryption. Instead, it includes its own RC4 implementation, including routines corresponding to the Key Scheduling Algorithm and Pseudo-Random Generation Algorithm.

The principal routines identified during reverse engineering were:

Routine Responsibility
FUN_10013E60() Resource extraction
FUN_10014900() RC4 Key Scheduling Algorithm
FUN_100149C0() RC4 Pseudo-Random Generation Algorithm

The loader decrypts each resource on demand rather than decrypting all embedded components during initialization. This allows drivers and scripts to remain concealed until the malware reaches the relevant stage of execution.

The recovered implementation follows the standard RC4 algorithm and does not appear to contain custom cryptographic modifications. In this campaign, RC4 serves primarily as an obfuscation layer that delays static exposure of the embedded components.

In Figure 11, we show the routine used to retrieve and decrypt an embedded resource immediately before use.

On_demand_RC4_decryption

Figure 11. On-demand RC4 decryption of embedded resources 

Figure 12 shows our validation of the recovered RC4 implementation and the resulting plaintext resource.

Validation_of_the_recovered_RC4

Figure 12. Validation of the recovered RC4 resource-decryption routine 

With the resources decrypted, the framework can deploy one of three signed but vulnerable drivers and establish kernel-level communication. The next section examines how SilverFox uses BootRepair.sys, EnPortv.sys, and wsftprm.sys to terminate security processes and expand its BYOVD capabilities.

SilverFox’s Modular BYOVD Framework

One of the most significant findings in this campaign is SilverFox’s modular BYOVD framework. Rather than depending on a single signed but vulnerable driver, the malware supports three options: BootRepair.sys, EnPortv.sys, and wsftprm.sys.

After selecting a driver, the framework decrypts it using the RC4 routine described in the previous section, writes it to disk, installs it as a kernel-mode service through the Windows Service Control Manager (SCM), and opens the driver’s device interface using CreateFile(). It then sends privileged requests through DeviceIoControl().

The malware does not implement a completely separate workflow for every driver. Instead, it reuses common routines for:

  • Resource extraction and decryption
  • Writing the driver to disk
  • Creating and starting the kernel service
  • Opening the driver’s device object
  • Sending driver-specific IOCTL requests

The primary elements that change between implementations are the driver image, device name, and IOCTL value.

This reusable architecture gives SilverFox multiple paths to kernel-level process termination. If one driver is unavailable, incompatible, or blocked, another supported driver may provide the same operational capability.

BootRepair.sys: A New SilverFox Driver Association

The malware embeds BootRepair.sys, a legitimately signed but vulnerable driver previously demonstrated in public offensive-security research. The driver exposes functionality that can be abused to terminate processes from kernel mode.

Our analysis shows that SilverFox can deploy BootRepair.sys through the shared BYOVD framework before communicating with its device interface.

The driver’s abuse potential was previously documented by the PhantomKiller project. However, based on the public reporting we reviewed, this is the first documented association between BootRepair.sys and SilverFox activity.

EnPortv.sys: Kernel-Assisted Process Termination

The malware also embeds EnPortv.sys, a legitimately signed driver originally distributed with the EnCase forensic software suite. Huntress previously documented abuse of the driver in an unrelated BYOVD intrusion.

In the sample we analyzed, the malware opens the following device object:

\.\EnPortv

Communication occurs through DeviceIoControl() using the observed IOCTL:

0x223078

Public analysis indicates that this request ultimately reaches ZwTerminateProcess(), allowing a caller to terminate processes from kernel mode, including protected endpoint-security processes.

Based on the public research we reviewed, this is also the first documented association between EnPortv.sys and SilverFox activity.

wsftprm.sys: A Known Driver in an Expanded Framework

The third embedded driver is wsftprm.sys, which exposes the following device object:

\.\Warsaw_PM

The malware communicates with the driver using:

0x22201C

This IOCTL ultimately invokes ZwTerminateProcess(), enabling process termination from kernel mode.

The affected driver behavior is documented under CVE-2023-52271. Unlike BootRepair.sys and EnPortv.sys, wsftprm.sys has previously appeared in public reporting on SilverFox-linked activity.

Why Three Drivers Matter

The inclusion of three drivers indicates that SilverFox is not relying on one fixed kernel-level exploitation path. By supporting multiple drivers through reusable logic, the malware broadens its operational options and may improve its ability to impair endpoint protection across different environments.

The design also makes the driver layer replaceable. The surrounding framework can retain the same broad workflow while changing the selected driver, device name, and IOCTL request.

The BYOVD implementation is only one part of a broader modular architecture. The same framework also incorporates NTDLL unhooking, runtime string construction, dynamic API resolution, process injection, internal payload monitoring, and an external watchdog.

Turning Kernel Access Against Security Products

After establishing communication with a vulnerable driver, the framework searches the compromised system for running security products.

Our analysis identified a hardcoded list of process names associated with endpoint detection and response, antivirus, and security-monitoring products. The user-mode component enumerates running processes and resolves the process identifier associated with each matching name.

Rather than attempting to terminate those processes directly from user mode, the framework sends the target PID to the loaded vulnerable driver. The driver then invokes ZwTerminateProcess() from kernel mode to terminate the selected process. This separation assigns two different responsibilities:

  • The user-mode component identifies target security processes and coordinates driver communication.
  • The vulnerable driver performs the kernel-mode process-termination.

This approach can bypass restrictions that may prevent ordinary user-mode processes from terminating protected security products.

Figure 13 shows the hardcoded list of security-related process names identified in the malware.

Security_processes

Figure 13. Security processes targeted for kernel-level termination

This kernel-mode process termination supports defense evasion by reducing the visibility and effectiveness of endpoint-security controls during later stages of execution.

Restoring NTDLL to Reduce User-Mode Visibility

In addition to terminating security processes through vulnerable drivers, the malware uses a separate user-mode defense-evasion technique.

Before invoking native Windows APIs associated with later execution stages, the malware restores the in-memory .text section of ntdll.dll using a clean copy mapped from the Windows system directory.

Endpoint-security products may place inline hooks inside the in-memory executable code of system libraries such as ntdll.dll to monitor native API activity. By replacing the potentially modified .text section with the clean version from disk, the malware removes those user-mode inline hooks before calling native Windows APIs.

Figure 14 shows the malware loading a clean copy of ntdll.dll from disk as the first step in restoring the library’s executable code.

Clean_ntdll.dll

Figure 14. Clean ntdll.dll mapped from disk

Figure 15 shows the PE-parsing logic used to locate the executable .text section before replacing the potentially hooked in-memory code

Identification_of_the_ntdll.dll

Figure 15. Identification of the ntdll.dll text section during unhooking

This technique does not eliminate all endpoint visibility. Kernel telemetry, behavioral analytics, network inspection, and other monitoring layers may still detect the activity. Its purpose is specifically to reduce visibility from user-mode inline hooks.

Reconstructing Strings at Runtime

The malware also avoids storing several sensitive library names as complete plaintext strings.

During initialization, the malware constructs names such as kernel32.dll dynamically by combining individual characters and short fragments immediately before use. Analysis of FUN_10009DF0() identified repeated calls to lstrcpyW() and lstrcatW() that progressively assemble the complete library name.

This technique reduces the number of meaningful indicators exposed through conventional static string extraction. The full library names exist only briefly in memory when the malware needs them.

Although runtime string construction is not sophisticated on its own, it supports the framework’s broader effort to conceal its dependencies and capabilities during static analysis.

Figure 16 shows the runtime reconstruction of kernel32.dll.

Runtime_reconstruction

Figure 16. Runtime reconstruction of the kernel32.dll library name

Resolving Windows APIs Only When Needed

After constructing the required library names, the malware dynamically resolves the Windows APIs needed for each execution stage.

Rather than exposing sensitive functions through the Import Address Table, the malware uses LoadLibraryW() and GetProcAddress() to resolve APIs immediately before use.

The dynamically resolved APIs support activities including process creation, remote memory allocation, process injection, driver-service installation, and communication with vulnerable drivers.

Figure 17 shows the runtime API-resolution pattern using LoadLibraryW() and GetProcAddress().

Dynamic_resolution

Figure 17. Dynamic resolution of Windows APIs during execution

With endpoint defenses impaired and user-mode monitoring reduced, the malware proceeds to retrieve shellcode and execute it inside a suspended svchost.exe process. The next section examines the thread-context hijacking workflow and the mechanisms SilverFox uses to restore execution when either the payload or loader is terminated.

Hijacking a Trusted Windows Process

After establishing communication with its command-and-control server at:

43[.]128[.]26[.]132

the malware downloads shellcode and executes it through thread-context hijacking.

The malware creates a new svchost.exe process in a suspended state using CreateProcessA() with the CREATE_SUSPENDED flag. It then allocates memory inside the suspended process with VirtualAllocEx(), writes the downloaded shellcode with WriteProcessMemory(), and retrieves the primary thread’s execution context using GetThreadContext().

The malware retrieves the suspended primary thread’s processor context using GetThreadContext(), modifies the saved execution context so that control is transferred to the injected shellcode when the thread resumes, and commits the updated context with SetThreadContext().

Finally, it invokes ResumeThread(), restoring the modified processor state and transferring execution to the injected payload.

The injection sequence is:

  • Create a suspended svchost.exe process using CreateProcessA() with the CREATE_SUSPENDED flag.
  • Allocate executable memory in the target process using VirtualAllocEx().
  • Copy the downloaded shellcode into the allocated region using WriteProcessMemory().
  • Retrieve the primary thread’s processor context using GetThreadContext().
  • Modify the saved instruction pointer so that it points to the injected shellcode.
  • Apply the modified processor context using SetThreadContext().
  • Resume the suspended primary thread using ResumeThread(), causing execution to continue from the injected shellcode.

Unlike techniques that create a new remote thread, thread-context hijacking reuses the target process’s existing primary thread. This allows the malware to execute under the context of a trusted Windows process without introducing an additional execution thread.

Our reverse engineering identified three principal routines responsible for this workflow:

Routine Responsibility
FUN_1000A500() Creates the suspended svchost.exe process
FUN_1000A1A0() Allocates remote memory and writes the shellcode
FUN_10009B50() Redirects the primary thread and resumes execution

As shown in Figure 18, the malware creates a suspended Windows process, writes the shellcode into the target process’s address space, modifies the suspended primary thread’s execution context to transfer control to the injected payload, and then resumes the thread.

hread_context_hijacking

Figure 18. Thread-context hijacking of a suspended svchost.exe process

Persistence Through a Scheduled Task

To maintain execution across system reboots and user logons, the malware creates a Windows Scheduled Task that launches the second-stage loader automatically.

During execution, the malware invokes schtasks.exe to register a task that runs the dropped loader when a user logs on. Compared with persistence through Run keys or the Startup folder, a Scheduled Task can provide a more reliable way to restart the malware while blending with legitimate system administration activity.

Dynamic analysis confirmed that the task launches the second-stage executable, allowing the malware to re-establish the execution chain after a reboot or user logon.

Figure 19 shows the Scheduled Task created to launch the second-stage loader.

Scheduled_Task

Figure 19. Scheduled Task used to relaunch the second-stage loader

Two Layers of Execution Recovery

SilverFox does not rely on a single mechanism to keep the malware running.

The malware combines internal payload supervision with an external watchdog script, creating two independent recovery layers.

The first layer monitors the injected payload. The second monitors the loader responsible for recreating that payload.

This design means that terminating only one component may not stop the intrusion:

  • If the injected payload exits, the loader can recreate it.
  • If the loader is terminated, the watchdog can relaunch it.

Internal Monitoring Recreates the Injected Payload

Our analysis identified FUN_1000A350(), a dedicated routine that checks whether the injected process remains active.

The routine reconstructs kernel32.dll at runtime and dynamically resolves:

  • OpenProcess()  
  • GetExitCodeProcess()

It opens the injected process using PROCESS_QUERY_INFORMATION and retrieves the process exit code. If the returned value is STILL_ACTIVE (0x103, or decimal 259), the payload is considered operational.

The logic can be represented as:

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid);

if (!hProcess)
    return FALSE; 

GetExitCodeProcess(hProcess, &exitCode); 

return exitCode == STILL_ACTIVE; 

If the process is no longer active, execution returns to the injection workflow and the payload is created again.

This demonstrates that process injection is not performed only once. The loader continuously supervises the injected payload and can recreate it after interruption.

Figure 20 shows the routine used to determine whether the injected process remains active.

FUN_1000A350()

Figure 20. FUN_1000A350() checking whether the injected payload remains active

An External Watchdog Restarts the Loader

The second recovery layer is implemented through an embedded batch script extracted from the resources inside PDFCORE8.dll.

After launching the second-stage executable, the malware starts cmd.exe and executes the watchdog script. The script repeatedly uses native Windows utilities, including:

  • tasklist.exe
  • find.exe
  • timeout.exe

Every 30 seconds, the script checks whether the monitored loader process is still running. If the process is no longer present, the script relaunches the executable and restores the second-stage execution chain.

Figure 21 shows the process tree created by the malware, including the loader, cmd.exe, and the embedded watchdog script.

Process_tree

Figure 21. Process tree showing the loader and watchdog execution chain

In Figure 22, we show the batch-script logic that checks the process state and restarts the loader after termination.

script_used_to_restore

Figure 22. Watchdog script used to restore the SilverFox loader

Why the Dual-Watchdog Design Matters

Together, the two mechanisms protect different parts of the execution chain:

  • The internal monitor protects the injected payload.
  • The external watchdog protects the loader.

This layered design increases resilience because defenders must interrupt both components and prevent either from restoring the other stage.

The recovery architecture also reinforces the modularity observed throughout the sample. Driver deployment, security-process termination, injection, payload monitoring, and loader recovery are implemented as coordinated components rather than isolated techniques.

Registry-Resident Payload and Configuration

The malware stores the downloaded shellcode in the Windows registry as a REG_BINARY value under:

HKCU\Console\0

Rather than downloading the payload again each time it is needed, the malware reconstructs it directly from the registry. This reduces repeated network activity and avoids storing the payload as a separate file on disk.

Figure 23 shows the shellcode stored in the registry.

Final_stage_shellcode

Figure 23. Final-stage shellcode stored under HKCU\Console\0

The malware stores its runtime configuration separately under:

HKLM\SOFTWARE\IpDates_sun

This REG_BINARY value contains command-and-control information, including:

  • Server: 43[.]128[.]26[.]132
  • Ports: 778 and 779

Separating the payload from its configuration allows the malware to modify communication settings without replacing the stored shellcode.

Figure 24 shows the configuration data stored in the registry.

command_and_control

Figure 24. ValleyRAT command-and-control configuration stored in the registry

Patching the Payload Before Execution

Before executing the registry-resident shellcode, the malware searches it for the marker:

FaCai2024

The marker does not represent executable instructions. Instead, it identifies a reserved region inside the payload where the malware inserts its runtime configuration.

The framework retrieves the configuration from:

HKLM\SOFTWARE\IpDates_sun

It then replaces the FaCai2024 placeholder with the recovered C2 information, producing a fully configured payload immediately before execution.

This separation gives the attacker operational flexibility. The same stored payload can be reused with updated server addresses or ports without changing the payload body itself.

The phrase “Fa Cai” (发财) is Mandarin Chinese for “become prosperous” or “make a fortune” and commonly appears in Lunar New Year greetings.

Earlier Tencent Security research on the FaCai phishing group documented the same FaCai2024 marker and related use of HKEY_CURRENT_USER\Console\0 to store binary payload data before in-memory execution. A subsequent Tencent Security report described continued use of the same registry location and memory-execution pattern in later FaCai activity. These overlaps provide additional behavioral context for the malware analyzed in our campaign.

Figure 25 shows the FaCai2024 marker and the configuration region patched before payload execution.

FaCai2024_marker

Figure 25. FaCai2024 marker used to patch configuration into the payload

ValleyRAT Establishes Remote Access

After patching is complete, the framework executes the reconstructed shellcode through the same thread-context hijacking workflow described earlier.

The resulting final-stage implant provides remote-access functionality, including command-and-control communication, task execution, and additional post-compromise capabilities.

ValleyRAT, also known as Winos 4.0, is the remote-access malware delivered in the final stage of the campaign.The campaign therefore progresses through a coordinated sequence:

  1. Invoice-themed phishing and cloud-hosted delivery
  2. DLL sideloading through trusted applications
  3. Decryption and deployment of vulnerable drivers
  4. Kernel-assisted termination of security products
  5. NTDLL unhooking and dynamic API resolution
  6. Shellcode injection into suspended svchost.exe
  7. Internal and external recovery mechanisms
  8. Registry-based payload reconstruction and configuration patching
  9. ValleyRAT execution and remote access

Detection Opportunities

Defenders can detect this campaign by looking for combinations of file, process, driver, registry, and network behaviors across the attack chain. Individual indicators may appear benign in isolation, but together they can reveal the broader SilverFox execution framework.

Key detection opportunities include:

  • Execution of ConvertToPDF.exe, PDFDirect.exe, or renamed copies from %TEMP% or other user-writable directories.
  • Loading of PDFCORE8.dll from the same directory as the trusted executable.
  • Creation and startup of kernel-driver services associated with BootRepair.sys, EnPortv.sys, or wsftprm.sys.
  • Creation of a suspended svchost.exe process followed by remote memory allocation, memory writes, thread-context modification, and thread resumption.
  • Writes of binary data to HKCU\Console\0 and configuration data to HKLM\SOFTWARE\IpDates_sun.
  • Repeated execution of tasklist.exe, find.exe, and timeout.exe from cmd.exe, consistent with the external watchdog script.
  • Network connections to attacker-controlled content hosted through QQ or Tencent Cloud infrastructure, especially when followed by local DLL sideloading or driver-service creation.

Detection logic should prioritize correlated behavior rather than relying only on a single filename, digital signature, domain, or driver hash. In this campaign, trusted applications and legitimate cloud services are used as part of the attack chain, making sequence-based detection especially important.

How Cato Blocks the SilverFox Attack Chain

SilverFox gains operational advantage by combining trusted software, legitimate cloud-hosted services, vulnerable drivers, and in-memory execution. Each individual component may appear less suspicious in isolation, but the complete sequence reveals a coordinated malware-delivery and defense-evasion chain.

The Cato SASE Platform blocks the campaign before ValleyRAT can establish remote access. In the observed incident, Cato’s Next Generation Anti-Malware (NGAM) capability identified and prevented the malicious PDFCORE8.dll before the later driver-deployment, process-injection, and payload-execution stages could complete.

This prevention is important because the malicious DLL is the central execution component. It contains the encrypted drivers and watchdog script, coordinates BYOVD deployment, performs defense evasion, retrieves the final shellcode, and manages the recovery mechanisms described earlier.

In addition to automated prevention, Cato Managed Detection and Response provides continuous monitoring, investigation, and expert-led response to help organizations identify and contain suspicious activity across the attack chain.

As shown in Figure 26, Cato NGAM detected and blocked the malicious PDFCORE8.dll, interrupting the attack before the embedded framework could continue.

Cato_NGAM

Figure 26. Cato NGAM blocks the malicious PDFCORE8.dll

Cato XOps then correlates the relevant events into a single investigation story, helping security teams understand how the malicious file, network activity, and affected endpoint relate to the broader campaign.

Figure 27 shows the Cato XOps Story view, which brings the related security events together for investigation.

Cato_XOps

Figure 27. Cato NGAM blocks the malicious PDFCORE8.dll

This layered visibility is particularly important in campaigns that abuse legitimate services and signed applications. Blocking based only on a domain name, executable signature, or isolated process may be insufficient when the threat actor deliberately combines trusted infrastructure with malicious content. Correlating file, network, and behavioral evidence makes it possible to identify the broader attack sequence rather than evaluate each artifact separately.

Coordinated Disclosure and Infrastructure Abuse Reporting

During our investigation, we notified the relevant organizations about the abuse of their software or infrastructure. These reports covered the DLL-sideloading behavior involving ConvertToPDF.exe and PDFDirect.exe, the malicious archive hosted through QQ file-delivery infrastructure, and the attacker-controlled objects hosted through Tencent Cloud.

In each case, the threat actor abused a legitimate product or service as part of the delivery or execution chain.

Date Organization / Service Reported Activity Status
July 1, 2026 ZEON / Right PDF Abuse of ConvertToPDF.exe and PDFDirect.exe for DLL sideloading Reported under ticket 13493; no response received as of July 20, 2026.
July 12, 2026 Tencent Abuse of QQ file-delivery infrastructure and Tencent Cloud object storage to host and deliver malicious campaign content Reported under ticket 69528; no response received as of July 20, 2026.

Research Scope

Our findings are based on the samples, telemetry, and infrastructure available during the investigation. We observed the campaign targeting a Japanese organization in the industrial manufacturing sector, but the available evidence does not establish the campaign’s complete victim scope. Technical conclusions in this report are limited to the behavior observed in the analyzed samples.

Conclusion

This campaign shows how SilverFox is expanding its defense-evasion and remote-access toolkit. The most significant additions are the previously undocumented SilverFox use of BootRepair.sys and EnPortv.sys, along with the abuse of ConvertToPDF.exe and PDFDirect.exe as DLL-sideloading hosts.

The malicious PDFCORE8.dll brings these capabilities together in one modular stage that combines vulnerable-driver deployment, security-process termination, NTDLL unhooking, thread-context hijacking, registry-based payload storage, and dual recovery mechanisms. This design improves resilience by allowing the malware to restore execution if either the payload or loader is interrupted.

For defenders, the campaign highlights the need to evaluate trusted applications and legitimate cloud services in context. Detection should focus on the full activity chain, including local DLL loading, kernel-driver service creation, suspended-process manipulation, registry-resident payloads, and repeated process recovery.

Indicators of Compromise

Network Infrastructure

Indicator Service Role
file[.]wx2[.]qq[.]com QQ Hosted or redirected users to the invoice-themed archive
hrefbfdhfhgre-1422102728[.]cos[.]ap-hongkong[.]myqcloud[.]com Tencent Cloud Hosted the malicious PDFCORE8.dll
43[.]128[.]26[.]132 Hosted the downloaded shellcode or next-stage payload

Registry Artifacts

Registry Path or Value Purpose
HKCU\Console\0 Stores the downloaded shellcode as REG_BINARY data
HKLM\SOFTWARE\IpDates_sun Stores C2 configuration
FaCai2024 Marker used to locate and patch the configuration region

Malicious File Hashes

Artifact SHA-256
PDFCORE8.dll
01ccc662c4b5d6ff79ede2e5dd7e508c7e2029fcc13e988e22345b0e5413ed01
PDFCORE8.dll
0952f2aacbeb3477b2465dfe3bac85d7906e958f866478cdbffec9be8cdb01c9
PDFCORE8.dll
0a0353fddca1ba1432b35411a8ce2536c9b35aad25d0819296748e13423c813b
PDFCORE8.dll
18db6fbabcf73332eb9bb392f7ae0cc3381f3528983587e17b7ceba8dc37e9f6
PDFCORE8.dll
25c5ef94956a60ea6bb764f8abc82898906662207b59506b9647fd1c57bbb66b
PDFCORE8.dll
2a5c7af5106a2cbd6b0f5a96a3716b29271f0b476a3c21a7c9b59fdc7d5e561b
PDFCORE8.dll
2b8a15c5d7e23a69b8052e1ec298c075324e8fa95ea06d191124326b848cb0ff
Downloader
0ef3119504f8aa3a534bfdbe20ed88727deabdf4e8f6e3e31298a34eef768662
Downloader
1355d2d73a1f21b4fa4e1b97432015052c004a0ca20a0b72d47011940fd51c6a
Downloader
31a276aae8a45873beecf4137bb27cd5a6dedde882a7b1e79f70ad0abeaa3ee1
Downloader
36eb85e475954e2815c40e0c1546895de5419aa704cadf01d9e096a70ee84517
Batch watchdog script
5e9c2eb32e1c5e0e9f69c8eda4e5ff2ec9e46d43e75ce098b830016ae17f291a

Vulnerable Drivers Observed in the Campaign

Filename SHA-256
BootRepair.sys
c0ec1488902568be9a4960c670dfa5edac0e096d106d782fa6bc26ee56793b75
EnPortv.sys
1f0f08699f74eb2fb690edd064cba4f2fad06761f67d0bbb585e5cd03c77ea17
wsftprm.sys
381dbc9012d02b3a42916813b99e481b1cc89d15da918b58db40ce330cc13fca

These hashes identify vulnerable driver samples observed in the campaign. The drivers are not inherently malicious, but their presence should be evaluated together with service creation, driver loading, and attempts to impair security processes.

Associated Legitimate Applications

The campaign abused the legitimate ConvertToPDF.exe and PDFDirect.exe applications to load the malicious PDFCORE8.dll through DLL sideloading. The applications themselves are not malicious and should not be blocked based on filename alone. Detection should focus on the surrounding execution context, including an unexpected PDFCORE8.dll in the same directory and execution from an unusual path.

MITRE ATT&CK Mapping

Tactic Technique ATT&CK ID
Initial Access Phishing T1566
Command and Control Application Layer Protocol: Web Protocols T1071.001
Execution DLL Side-Loading T1574.002
Privilege Escalation Exploitation for Privilege Escalation T1068
Defense Evasion Process Injection T1055
Defense Evasion Thread Execution Hijacking T1055.003
Defense Evasion Impair Defenses T1562
Defense Evasion Disable or Modify Security Tools T1562.001
Defense Evasion Obfuscated Files or Information T1027
Persistence Boot or Logon Initialization Scripts T1037
Persistence Scheduled Task/Job: Scheduled Task T1053.005

The post Cato CTRL™ Threat Research: SilverFox Evolves: Abuse of New Drivers and Trusted Software Hijacking Enable Remote Access with ValleyRAT in Japan appeared first on Cato Networks.

Similar Posts

Leave a Reply