Silver Fox Wraps ValleyRAT in ZPAQ and a ByteDance Binary: A Telegram Chinese Language Pack MSI Lure
Detection stack
- AIDR
- Alert
- ETL
- Query
Summary
A rogue MSI installer posing as a Telegram Chinese language pack delivers a layered infection chain involving ValleyRAT, a BYOVD-based kernel rootkit, and a signed ByteDance executable abused for DLL sideloading. The installer also misuses the legitimate zpaqfranz archiving utility as a living-off-the-land binary and deploys the vulnerable wnBios driver to gain access to physical memory. Researchers linked the infrastructure behind the operation to CTG Server Ltd in Hong Kong and attributed the activity to the Silver Fox APT group. The campaign appears aimed at Chinese-speaking users in multiple countries across the Asia-Pacific region.
Investigation
Researchers reconstructed the full attack flow, starting with the MSI custom action and continuing through the extraction of ZPAQ archives, the selective use of the ByteDance SodaMusicLauncher binary for DLL sideloading, and the deployment of the wnBios kernel driver. Analysis of embedded configuration data exposed operator identifiers and command-and-control details. The supporting infrastructure was tied to bulletproof hosting previously associated with Silver Fox. Investigators also uncovered persistence techniques and antivirus-aware evasion logic used throughout the intrusion chain.
Mitigation
Prevent execution of the zpaqfranz binary outside approved backup or development environments and closely monitor MSI installations that rely on VBScript custom actions. Limit creation of the AppShellElevationService and detect unsigned DLLs placed alongside trusted signed binaries. Block outbound communication to the identified /21 network range operated by CTG Server Ltd and deny traffic over the custom C2 port 5040. Strengthen host-based protections against the malicious file names and process names observed in this campaign.
Response
Deploy detections for the identified files, spawned processes, and suspicious service creation events. Conduct hunts for the vulnerable kernel driver and the malware’s distinctive XOR-based decryption logic. Isolate potentially affected systems, collect memory images for deeper rootkit investigation, and reset any credentials exposed during the compromise. Threat intelligence teams should continue tracking CTG Server infrastructure for related follow-on activity.
"graph TB %% Class definitions classDef technique fill:#ffcc99 classDef tool fill:#c2e0ff classDef malware fill:#ffd9b3 classDef process fill:#d9ffcc %% Node definitions initial_access["<b>Technique</b> – <b>T1204.004 User Execution: Malicious Copy and Paste</b><br/>Victim runs a malicious MSI disguised as a Telegram Chinese language pack."] class initial_access technique system_binary_proxy["<b>Technique</b> – <b>T1218.007 System Binary Proxy Execution: Msiexec</b><br/>MSI invokes a custom action via msiexec."] class system_binary_proxy technique vbscript_interpreter["<b>Technique</b> – <b>T1059.005 Command and Scripting Interpreter: Visual Basic</b><br/>VBScript interpreter runs the malicious custom action."] class vbscript_interpreter technique obfuscation["<b>Technique</b> – <b>T1027 Obfuscated Files or Information</b><br/>Payloads are compressed and XORu2011encrypted, hidden inside archives."] class obfuscation technique lolbin_zpaqfranz["<b>Tool</b> – <b>Name</b>: zpaqfranz.exe (LOLBin)<br/><b>Description</b>: Legitimate decompression utility used to unpack nested ZPAQ archives."] class lolbin_zpaqfranz tool powershell_xor["<b>Technique</b> – <b>T1059.001 Command and Scripting Interpreter: PowerShell</b><br/>PowerShell performs XOR decryption of payloads."] class powershell_xor technique dll_sideloading["<b>Technique</b> – <b>T1055.001 Process Injection: Dynamicu2011link Library Injection</b><br/>Malicious DLLs (powrprof.dll, wsc.dll) placed beside signed ByteDance SodaMusicLauncher.exe for sideloading."] class dll_sideloading technique signed_launcher["<b>Process</b> – <b>Name</b>: SodaMusicLauncher.exe<br/><b>Publisher</b>: ByteDance"] class signed_launcher process windows_service["<b>Technique</b> – <b>T1543.003 Create or Modify System Process: Windows Service</b><br/>Registry keys create AppShellElevationService service for persistence."] class windows_service technique priv_esc_driver["<b>Technique</b> – <b>T1068 Exploitation for Privilege Escalation</b><br/>Loads vulnerable wnBios driver (BYOVD) granting arbitrary physical memory read/write."] class priv_esc_driver technique rootkit_bootkit["<b>Technique</b> – <b>T1014 Rootkit</b> & <b>T1542.003 Preu2011OS Boot: Bootkit</b><br/>Driver functions as kernelu2011mode rootkit and bootkit."] class rootkit_bootkit technique scheduled_task["<b>Technique</b> – <b>T1053.005 Scheduled Task/Job</b><br/>DesignAccent.exe installed as a scheduled task for persistence."] class scheduled_task technique c2_valleyrat["<b>Malware</b> – <b>Name</b>: ValleyRAT<br/><b>Function</b>: Beaconing to C2 server on TCP port 5040 and NetBIOS port 139."] class c2_valleyrat malware c2_nonstandard_port["<b>Technique</b> – <b>T1571 Nonu2011Standard Port</b><br/>Uses custom TCP port 5040 for C2 communications."] class c2_nonstandard_port technique c2_nonapp_protocol["<b>Technique</b> – <b>T1095 Nonu2011Application Layer Protocol</b><br/>Communicates over NetBIOS (port 139)."] class c2_nonapp_protocol technique c2_dynamic_resolution["<b>Technique</b> – <b>T1568 Dynamic Resolution</b><br/>Resolves C2 addresses at runtime."] class c2_dynamic_resolution technique %% Connections showing flow initial_access –>|uses| system_binary_proxy system_binary_proxy –>|executes| vbscript_interpreter vbscript_interpreter –>|triggers| obfuscation obfuscation –>|leverages| lolbin_zpaqfranz obfuscation –>|leverages| powershell_xor powershell_xor –>|prepares| dll_sideloading dll_sideloading –>|targets| signed_launcher signed_launcher –>|enables| windows_service windows_service –>|creates| priv_esc_driver priv_esc_driver –>|installs| rootkit_bootkit rootkit_bootkit –>|facilitates| scheduled_task scheduled_task –>|loads| c2_valleyrat c2_valleyrat –>|uses| c2_nonstandard_port c2_valleyrat –>|uses| c2_nonapp_protocol c2_valleyrat –>|uses| c2_dynamic_resolution "
Attack Flow
Detections
Possible Powershell Obfuscation Indicators (via powershell)
View
Call Suspicious .NET Classes/Methods from Powershell CommandLine (via process_creation)
View
Suspicious Command and Control by Unusual Top Level Domain (TLD) DNS Request (via dns)
View
Possible IP Lookup Domain Communications Attempted (via dns)
View
Call Suspicious .NET Methods from Powershell (via powershell)
View
IOCs (HashSha256) to detect: Silver Fox Wraps ValleyRAT in ZPAQ and a ByteDance Binary: A Telegram Chinese Language Pack MSI Lure
View
IOCs (HashMd5) to detect: Silver Fox Wraps ValleyRAT in ZPAQ and a ByteDance Binary: A Telegram Chinese Language Pack MSI Lure
View
IOCs (DestinationIP) to detect: Silver Fox Wraps ValleyRAT in ZPAQ and a ByteDance Binary: A Telegram Chinese Language Pack MSI Lure
View
IOCs (SourceIP) to detect: Silver Fox Wraps ValleyRAT in ZPAQ and a ByteDance Binary: A Telegram Chinese Language Pack MSI Lure
View
Detect Kernel Driver Load Events with wnBios for Physical Memory Access [Windows Image Load]
View
Detect Execution of Malicious Binaries Used by Silver Fox APT [Windows Process Creation]
View
ValleyRAT C2 Communication on Port 5040 [Windows Network Connection]
View
Simulation Execution
Prerequisite: The Telemetry & Baseline Pre‑flight Check must have passed.
Rationale: This section details the precise execution of the adversary technique (TTP) designed to trigger the detection rule. The commands and narrative MUST directly reflect the TTPs identified and aim to generate the exact telemetry expected by the detection logic.
-
Attack Narrative & Commands:
The threat actor receives a spear‑phishing link (T1566.002) that drops
zpaqfranz.exeonto the victim workstation. The binary is a legitimate‑looking compression tool repurposed as a LOLBin (T1036). The attacker then launches it via PowerShell (T1059.001) with a hidden command line that instructs the tool to decompress a packed ValleyRAT payload (T1027) and execute it. The process runs under the current user context, generating a Windows process‑creation event that matches the rule’sImage|endswith 'zpaqfranz.exe'condition.Step‑by‑step:
- Stage the malicious binary in
%TEMP%. - Execute the binary with PowerShell, passing a dummy argument (
-extract) to mimic the real payload. - Maintain the process for a short period, then exit.
- Stage the malicious binary in
-
Regression Test Script:
# Silver Fox LOLBin Execution Simulation $tempPath = "$env:TEMPzpaqfranz.exe" # 1. Copy a benign executable to masquerade as the malicious LOLBin # (In a real test you would drop the actual malicious binary.) Copy-Item -Path "$env:SystemRootSystem32calc.exe" -Destination $tempPath -Force # 2. Execute the LOLBin via PowerShell (simulating T1059.001) $args = "-extract C:Temppayload.bin" Write-Host "Launching $tempPath $args" Start-Process -FilePath $tempPath -ArgumentList $args -NoNewWindow # 3. Wait a few seconds to ensure the event is logged Start-Sleep -Seconds 5 # 4. Optional: simulate cleanup (delete the dropped binary) Remove-Item -Path $tempPath -Force -
Cleanup Commands:
# Remove any residual artefacts from the simulation $tempPath = "$env:TEMPzpaqfranz.exe" if (Test-Path $tempPath) { Remove-Item $tempPath -Force } # Terminate stray calc.exe processes that may have been launched inadvertently Get-Process -Name "calc" -ErrorAction SilentlyContinue | Stop-Process -Force