China-Linked Hackers Launch PlugX Malware Campaign Targeting Persian Gulf Amid Middle East Conflict

On March 1, 2026, security researchers from ThreatLabz detected a new cyber espionage campaign attributed to a China-linked threat actor targeting countries in the Persian Gulf. Notably, the operation began within the first 24 hours of renewed hostilities in the Middle East, suggesting the attackers rapidly adapted current geopolitical events to support their social engineering efforts.

The attackers used an Arabic-language lure referencing missile strikes to trick victims into opening malicious files. The campaign ultimately delivered a variant of the PlugX backdoor through a complex multi-stage infection chain.

Based on the techniques, infrastructure, and malware observed during the investigation, ThreatLabz attributes the activity to a China-nexus threat actor with high confidence. Researchers also assess, with moderate confidence, that the campaign may be linked to the group commonly known as Mustang Panda.

This analysis explores the complete attack sequence, including the use of Windows shortcut (LNK) files, CHM droppers, obfuscated shellcode loaders, and the final PlugX payload.

Source : Zscaler

Key Findings

ThreatLabz identified a cyber campaign in March 2026 conducted by a China-associated threat actor targeting organizations in the Persian Gulf region.

The attackers deployed a multi-stage infection chain that ultimately installed a PlugX backdoor on compromised systems.

Both the shellcode loader and the PlugX malware were heavily obfuscated using techniques such as control flow flattening (CFF) and mixed boolean arithmetic (MBA), which significantly complicate reverse engineering.

The PlugX variant used in this campaign communicates with its command-and-control infrastructure through HTTPS and resolves domains using DNS-over-HTTPS (DoH).


Technical Analysis

Attack Chain Overview

The attack began with a ZIP archive designed to exploit interest in the ongoing Middle East conflict. Inside the archive was a Windows shortcut file (LNK). When the victim opened this file, it triggered the download of a malicious Windows Compiled HTML Help (CHM) file from a remote server controlled by the attackers.

The CHM file served as the initial delivery mechanism for a series of malicious payloads. The infection process progressed through several stages:

  1. A shellcode loader
  2. Highly obfuscated shellcode
  3. Deployment of a PlugX backdoor variant

As part of the deception strategy, the attack also displayed a decoy PDF containing images of missile strikes. The Arabic text in the document translated to: “Iranian missile strikes against US base in Bahrain.”

This decoy was meant to convince victims they had opened a legitimate news-related file while the malware executed in the background.


Stage 1: ZIP Archive, LNK File, and CHM Downloader

The initial ZIP archive contained a Windows shortcut named: photo_2026-03-01_01-20-48.pdf.lnk

The filename was intentionally crafted with a double extension so it appeared to be a PDF document.

When executed, the shortcut used the command-line tool cURL to download a malicious CHM file from the following URL: hxxps://www.360printsol[.]com/2026/alfadhalah/thumbnail?img=index.png

The LNK then invoked the legitimate Windows HTML Help executable (hh.exe) with the -decompile parameter to extract the contents of the CHM file.

Three files were unpacked during this step:

FilenameDescription
0.lnkSecond-stage Windows shortcut
3Decoy PDF used for social engineering
4TAR archive containing malicious components

After extraction, the first LNK executed the second-stage shortcut (0.lnk).


Stage 2: Secondary LNK, Decoy File, and TAR Extraction

The second LNK carried out several operations:

  1. It renamed the decoy file 3 to photo_2026-03-01_01-20-48.pdf so the victim would see what appeared to be a legitimate document.
  2. It treated file 4 as a TAR archive and extracted its contents into the system’s %AppData% directory.
  3. It executed the file:
%AppData%\BaiduNetdisk\ShellFolder.exe --path a

This directory name was chosen to mimic the legitimate Baidu Netdisk application, helping the malware blend into the system.

ShellFolder.exe then used DLL sideloading to load a malicious DLL named ShellFolderDepend.dll.


ShellFolderDepend.dll: Shellcode Loader

The malicious DLL is a 32-bit component responsible for establishing persistence and launching the next stage of the attack.

All strings inside the DLL are encrypted and only decrypted during runtime using a custom XOR algorithm that combines an index value with a base constant.

KEY_BASE = 0x34
decrypted = []
for i, byte in enumerate(encrypted_bytes):
key = (i + KEY_BASE) & 0xFF
decrypted.append(chr(byte ^ key))
return "".join(decrypted)

Persistence Mechanism

Before executing the shellcode, the malware checks whether Bitdefender Agent (bdagent.exe) is running.

Two persistence methods are used depending on the result:

If Bitdefender is present

The malware creates a registry Run key using reg.exe:

HKCU\Software\Microsoft\Windows\CurrentVersion\Run
Value: BaiNetdisk

If Bitdefender is not detected

The same registry key is created using the Windows API function RegSetValueExA.


API Hooking

Before decrypting the shellcode, the loader installs two inline API hooks:

Hook on GetCommandLineW

This hook alters the command-line return value to:

ShellFolder.exe 701 0

This manipulation makes it appear that the program was executed with specific arguments.

Hook on CreateProcessAsUserW

The hook restores the original API bytes and then calls Sleep indefinitely, preventing any child processes from being created.


Shellcode Decryption

The loader retrieves encrypted shellcode from a file named Shelter.ex.

The shellcode is decrypted using the Windows native API function SystemFunction033, which implements RC4, with the key:

20260301@@@

After decryption, the loader:

  1. Allocates executable memory using VirtualAlloc
  2. Copies the shellcode into memory
  3. Transfers execution to it

PlugX Shellcode Loader

The shellcode responsible for loading the backdoor is heavily obfuscated. It employs control flow flattening (CFF) to disguise the execution logic.

Instead of executing code sequentially, the shellcode operates like a state machine. Each code block updates a state variable and then returns execution to a dispatcher that determines the next block to execute.

This technique significantly complicates reverse engineering.

API String Encryption

API names are encrypted and decrypted dynamically using another XOR routine. The algorithm is similar to the one used earlier but uses a different base constant: 0x36 instead of 0x34

The XOR logic itself is disguised using mixed boolean arithmetic, such as: (~x & K) | (x & ~K)

which mathematically equals: x ^ K


Payload Decryption

The shellcode contains an encrypted payload that is decrypted using a custom pseudo-random number generator (PRNG).

The process begins with a seed value:

0xc56dd7ea

The PRNG generates a keystream used to decrypt the embedded data.

seed = 0xc56dd7eadef prng_decrypt(encrypted_data, seed):
state = seed
decrypted_blob = bytearray(len(encrypted_data)) for i in range(len(encrypted_data)):
state = (state + (state >> 3) + 0x13233366) & 0xFFFFFFFF
decrypted_blob[i] = encrypted_data[i] ^ (state & 0xFF) return decrypted_blob

The resulting data structure includes:

  • a 16-byte header
  • a payload compressed using the LZNT1 algorithm

The shellcode decompresses the payload using the Windows API RtlDecompressBuffer.


Anti-Forensics Techniques

The decompressed payload contains a corrupted PE header.

Critical structures such as:

  • IMAGE_DOS_HEADER
  • DOS stub
  • PE signature

are intentionally overwritten with random ASCII data.

However, certain fields—like the e_lfanew pointer and the COFF file header—remain intact so the loader can still process the binary internally.

This manipulation is designed to evade memory forensic tools.


Reflective DLL Injection

The decrypted payload is loaded directly into memory through reflective DLL injection.

The loader performs several steps:

  1. Allocates memory with VirtualAlloc
  2. Maps all DLL sections into memory
  3. Applies relocations
  4. Resolves imported functions
  5. Marks the region executable

The first 0x20 bytes of the image base are repurposed as a context structure that contains configuration data for PlugX.


PlugX Backdoor

The final payload is a PlugX backdoor, also heavily obfuscated using the same techniques seen earlier:

  • Control Flow Flattening (CFF)
  • Mixed Boolean Arithmetic (MBA)
  • Encrypted API strings

The malware receives its configuration through the context structure passed to DllMain.

The configuration is decrypted in two stages.


PlugX Configuration

Stage 1

A custom algorithm decrypts the overall configuration blob.

Stage 2

Individual configuration fields are further decrypted using RC4 with the key:

qwedfgx202211

The decoded configuration includes:

FieldValue
Target file extensions.doc, .pdf, .xls, .ppt, *.mp3, *.wav
Date filterLast 30 days
C2 serverhttps://91.193.17[.]117:443
Persistence path%ProgramFiles%\Microsoft\Display Broker
Registry nameDesktopDialogBroker
Service nameMicrosoft Desktop Dialog Broker
Service descriptionManages connection and configuration of local and remote display dialogs
RC4 key for C2 trafficVD*1^N1OCLtAGM$U

Command and Control Capabilities

This PlugX variant supports multiple communication channels:

  • TCP
  • HTTPS
  • UDP
  • DNS-over-HTTPS via https://dns.google/dns-query

The malware can execute numerous commands, including:

  • Collecting system information
  • Launching plugins
  • Scanning the local network
  • Proxying traffic through other infected systems
  • Updating its configuration

It also includes several built-in plugins for functionality such as:

  • file system access
  • process monitoring
  • registry editing
  • keylogging
  • remote shell access
  • screen capture
  • network analysis
  • SQL interaction

Threat Attribution

ThreatLabz attributes the campaign to a China-linked threat actor with high confidence and believes it may be associated with Mustang Panda.

Several indicators support this assessment.

First, the campaign used the PlugX backdoor, a tool historically linked to Chinese cyber-espionage groups.

Second, the RC4 key used for decrypting the configuration (qwedfgx202211) matches one used in the DOPLUGS campaign reported in 2024.

Third, the shellcode decryption key format (YYYYMMDD@@@) closely resembles patterns used in earlier attacks attributed to Chinese actors.

Additionally, Mustang Panda is known for rapidly exploiting geopolitical events to craft convincing phishing lures. The use of a Middle East conflict-themed document aligns with this behavior.

Finally, the specific implementation of control flow flattening and the configuration decryption routines resemble code previously observed in attacks attributed to the PKPLUG group, another alias of Mustang Panda.


Conclusion

This campaign demonstrates how rapidly cyber-espionage groups can exploit real-world events to increase the effectiveness of their attacks. By referencing current geopolitical developments, the attackers crafted convincing lures that could easily deceive victims.

The operation relied on a sophisticated multi-stage infection chain involving LNK files, CHM droppers, encrypted shellcode, and a heavily obfuscated PlugX backdoor.

ThreatLabz advises organizations and individuals to remain cautious when opening unsolicited files or links claiming to provide breaking news about geopolitical conflicts, particularly those related to the ongoing Middle East situation.