TA4922 PackClient RAT Campaign Threat Hunt

Threat Overview

Proofpoint published new research on August 27, 2026 describing PackClient, a modular remote-access and command-and-control framework actively used by the Chinese-speaking threat actor TA4922 and apparently marketed to other actors through Telegram.

Observed campaigns used tax-themed phishing in China and India. Delivery chains included ZIP and IMG archives, DLL sideloading, rundll32.exe execution of xMain.dll, a staged %TEMP%\svchost.exe payload, RunOnce persistence, a separate -guard process that restarts the core RAT, raw TCP C2, and later deployment of ManageEngine RMM.

References

Impacted Systems

PlatformWindows endpoints
Threat actorTA4922; Proofpoint notes PackClient also appears to be sold to other actors
Initial accessTax/compliance-themed phishing with ZIP/IMG archives and malicious executables/DLLs
ExecutionDLL sideloading and rundll32.exe loading xMain.dll; staged executables under %TEMP%
PersistenceHKCU RunOnce value RuntimeBroker; separate -guard process
C2Raw TCP; observed ports include 6666; HTTP staging from Rejetto HFS also observed
Post-compromiseRemote shell, screen capture, proxying, keylogging, browser-data enumeration, plugin/payload delivery, ManageEngine RMM
Targeting observedOrganizations with operations in mainland China and organizations in India
Known activityConfirmed observed campaigns by Proofpoint

What this hunt looks for

Looks for the PackClient process tree (rundll32 → temp svchost.exesvchost.exe -guard), RunOnce persistence, suspicious xMain.dll execution, and raw TCP C2 activity.

Required logs

DeviceProcessEvents, DeviceRegistryEvents, DeviceNetworkEvents; optionally EmailEvents/EmailAttachmentInfo where Defender for Office 365 telemetry is available.

First-Pass — PackClient rundll32 / xMain.dll Pattern

DeviceProcessEvents
| where TimeGenerated >= ago(30d)
| where FileName =~ "rundll32.exe"
| where ProcessCommandLine has "xMain.dll" and ProcessCommandLine has "XMain"
| project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, SHA256
| sort by TimeGenerated asc

Follow-Up — Temp svchost.exe With PackClient Guard Flag

DeviceProcessEvents
| where TimeGenerated >= ago(30d)
| where FileName =~ "svchost.exe"
| where FolderPath has_any (@"\Temp\",@"\AppData\Local\Temp\")
| where ProcessCommandLine has "-guard" or InitiatingProcessCommandLine has_any ("xMain.dll","XMain")
| project TimeGenerated, DeviceName, AccountName, FolderPath, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, SHA256
| sort by TimeGenerated asc

Follow-Up — PackClient RunOnce Persistence

DeviceRegistryEvents
| where TimeGenerated >= ago(30d)
| where RegistryKey has @"\Software\Microsoft\Windows\CurrentVersion\RunOnce"
| where RegistryValueName =~ "RuntimeBroker"
| where RegistryValueData has_any (@"\Temp\svchost.exe",@"\AppData\Local\Temp\")
| project TimeGenerated, DeviceName, RegistryKey, RegistryValueName, RegistryValueData, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessAccountName
| sort by TimeGenerated asc

Follow-Up — Raw TCP 6666 From Suspicious Temp Processes

DeviceNetworkEvents
| where TimeGenerated >= ago(30d)
| where RemotePort == 6666
| where InitiatingProcessFileName in~ ("svchost.exe","rundll32.exe")
| where InitiatingProcessFolderPath has_any (@"\Temp\",@"\AppData\Local\Temp\") or InitiatingProcessCommandLine has_any ("xMain.dll","-guard")
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessFolderPath, InitiatingProcessCommandLine, RemoteIP, RemoteUrl, RemotePort, ActionType
| sort by TimeGenerated asc

Leave a comment