Alpha Cyber

SPECTRALVIPER: The Obfuscated Backdoor Behind an APT32 Espionage Set

SPECTRALVIPER is a heavily obfuscated x64 Windows backdoor used against large, strategically important Vietnamese companies.

Alpha Cyber Research5 min readupdated 8 Jul 2026
  • Nation-State
Dont Get Bit by SpectralViper

Bottom line. SPECTRALVIPER is built to defeat signature-based detection: control-flow-flattened code, AES-encrypted strings, two encrypted C2 channels, and delivery through renamed legitimate tools and DLL side-loading. Do not rely on hashes alone. Hunt for the behaviour, renamed ProcDump loading DLLs, unbacked/floating shellcode in trusted processes, DLL side-loading via nslookup/ExtExport, and in-memory AMSI/ETW patching, and block the published C2 domains. Organisations in Vietnam’s strategic sectors (finance, food/agribusiness, government) should treat themselves as in-scope.

Background

SPECTRALVIPER is a previously undisclosed backdoor uncovered during analysis of an intrusion set tracked as REF2754, which targeted a nationally important Vietnamese agribusiness. It does not travel alone: the same set deploys P8LOADER (an obfuscated x64 PE loader), POWERSEAL (a .NET PowerShell runner with built-in AMSI/ETW evasion) and DONUTLOADER shellcode used to stage the backdoor.

The activity is assessed as Vietnamese state-affiliated and overlaps with the group reported as APT32 / OceanLotus (also Canvas Cyclone). A related intrusion against a Vietnamese financial-services firm used the same malware families and deployment conventions, and both victims sit squarely on Vietnam’s strategic-interest map, capital and former state-owned enterprises on one side, national food-security supply chains on the other, consistent with an intelligence-gathering mission rather than financial crime.

What we observed

The intrusion chain is deliberately quiet and lives off legitimate tooling:

  • A living-off-the-land foothold: the backdoor was dropped over SMB from an already-compromised endpoint, then loaded by abusing a renamed copy of the SysInternals ProcDump utility (masquerading as windbg.exe) with the -md flag to load an unsigned malicious DLL, a LOLBAS technique that hides the load behind a trusted binary. Variants also side-load a malicious dnsapi.dll via nslookup.exe, or load a DLL via Internet Explorer’s ExtExport.exe.
  • Staged in memory: an unsigned DLL carried DONUTLOADER shellcode that was injected into sessionmsg.exe (the Microsoft Remote Session Message Server) to load SPECTRALVIPER, and from there the situational P8LOADER or POWERSEAL components, keeping the malicious code off disk and inside trusted processes.
  • A capable backdoor: SPECTRALVIPER is a C++ x64 backdoor with 33-36 command handlers offering PE loading and injection (x86/x64), token theft and impersonation, file upload/download and full file/directory manipulation. It can run as an EXE or masquerade as a DLL exporting legitimate names (e.g. sqlite3), with its real entry point hidden among the exports.
  • Two encrypted ways home: SPECTRALVIPER communicates over HTTP, beaconing at a random 10-99 second interval, protecting data with RSA-1024 plus AES and hiding it in a ‘euconsent-v2’ cookie, or over a Windows named pipe using a Diffie-Hellman key exchange and AES. The named pipe is created with no security attributes, so it is reachable by anyone on the host.
  • Anti-analysis throughout: every family is heavily obfuscated with control-flow flattening and multi-level dummy functions, and AES-encrypted strings; POWERSEAL further patches AMSI and ETW in memory (via NtWriteVirtualMemory) to blind Microsoft Defender and event tracing before running attacker PowerShell.

SPECTRALVIPER intrusion chain

Foothold via SMBdropped from peerRenamed ProcDumploads rogue DLLDONUTLOADERinjects sessionmsgSPECTRALVIPERobfuscated x64P8LOADER / POWERSEALload + PowerShell

Every stage borrows a trusted binary or a trusted process. Signature detection struggles; memory and behaviour hunting is where this chain shows itself.

Attribution

The intrusion is assessed with moderate confidence as a Vietnamese state-affiliated operation that overlaps with prior reporting on APT32 / OceanLotus (Canvas Cyclone). The assessment rests on shared, largely bespoke tooling (SPECTRALVIPER, P8LOADER, POWERSEAL) reused across two Vietnamese victims, consistent deployment and naming conventions, and victimology that maps cleanly onto Vietnam’s national strategic priorities. As with any nation-state cluster judged on overlap rather than a smoking gun, treat the APT32 link as a strong lead rather than a certainty; the malware families themselves are documented with high confidence.

Confidence: 80%.

SPECTRALVIPER hides its own code from itself, control-flow flattened, strings AES-locked, then talks home two ways, so defenders only ever see half the conversation.

Tactics, techniques & procedures (MITRE ATT&CK)

Techniques below are drawn directly from the analysed samples/reporting – no technique is asserted without evidence:

TacticTechniqueIDEvidence
Lateral MovementRemote Services: SMB / Windows Admin SharesT1021.002The backdoor was dropped over SMB from a previously compromised endpoint on the network.
Defense EvasionMasquerading: Rename System UtilitiesT1036.003SysInternals ProcDump was renamed to windbg.exe and abused (-md) as a LOLBAS to load an unsigned malicious DLL.
Defense EvasionHijack Execution Flow: DLL Side-LoadingT1574.002A malicious dnsapi.dll is side-loaded via nslookup.exe; ExtExport.exe is used similarly.
Defense EvasionProcess InjectionT1055DONUTLOADER injects into sessionmsg.exe; SPECTRALVIPER injects shellcode and PEs into processes.
Privilege EscalationAccess Token Manipulation: Make and Impersonate TokenT1134.003SPECTRALVIPER steals and impersonates security tokens to elevate and access resources.
Defense EvasionImpair Defenses: Disable or Modify ToolsT1562.001POWERSEAL patches AMSI and ETW in memory via NtWriteVirtualMemory before running PowerShell.
Defense EvasionObfuscated Files or InformationT1027Control-flow flattening, multi-level dummy functions and AES-encrypted strings across the toolset.
Command and ControlApplication Layer Protocol: Web ProtocolsT1071.001HTTP beaconing (random 10-99s interval, RSA-1024 + AES, ‘euconsent-v2’ cookie); alternate named-pipe C2 uses Diffie-Hellman + AES.

Indicators of compromise

Defenders can block or hunt the following:

IndicatorTypeNote
stablewindowsapp[.]comdomainSPECTRALVIPER C2
webmanufacturers[.]comdomainSPECTRALVIPER C2
toppaperservices[.]comdomainSPECTRALVIPER C2
hosting-wordpress-services[.]comdomainSPECTRALVIPER C2
appointmentmedia[.]comdomainSPECTRALVIPER C2 (most recently registered)
d1c32176b46ce171dbce46493eb3c5312db134b0a3cfa266071555c704e6cff8sha256SPECTRALVIPER (1.dll)
7e35ba39c2c77775b0394712f89679308d1a4577b6e5d0387835ac6c06e556cbsha256SPECTRALVIPER (asdgb.exe)
56d2d05988b6c23232b013b38c49b7a9143c6649d81321e542d19ae46f4a4204sha256SPECTRALVIPER-related sample

Detection

Copy-ready hunting query:

# Behavioural hunts for the SPECTRALVIPER / REF2754 (APT32) chain
# 1) Renamed ProcDump abused as a DLL loader (LOLBAS)
index=edr process_name="windbg.exe" command_line="* -md *"   OR (original_file_name="procdump*" AND process_name!="procdump*.exe")
# 2) DLL side-loading via nslookup / ExtExport (signed binary loading unsigned DLL from user path)
index=edr parent_process IN ("nslookup.exe","extexport.exe") OR (process_name IN ("nslookup.exe","extexport.exe") AND dll_signed=false)
# 3) Unbacked / floating shellcode in trusted processes (DONUTLOADER / P8LOADER)
index=edr (process_name IN ("sessionmsg.exe","RuntimeBroker.exe") AND memory_region_type="Private" AND thread_start_unbacked=true)
# 4) In-memory AMSI / ETW patching before PowerShell (POWERSEAL)
index=edr (api="NtWriteVirtualMemory" target IN ("amsi.dll","ntdll.dll")) OR event="amsi_bypass"
# 5) Unsecured named pipes and C2 domains
index=edr pipe_name IN ("\\.\pipe\raSeCIR4gg","\\.\pipe\ydZb0bIrT")  OR (index=dns domain IN ("stablewindowsapp.com","webmanufacturers.com","toppaperservices.com","hosting-wordpress-services.com","appointmentmedia.com"))

# Detection content: Elastic YARA -- Windows_Trojan_SpectralViper, Windows_Trojan_P8Loader, Windows_Trojan_PowerSeal.

Recommendations

  • Detect on behaviour, not hashes: SPECTRALVIPER is heavily obfuscated and recompiled per target, so prioritise memory and behavioural detections, unbacked/floating executable regions in trusted processes, DLL side-loading, and LOLBAS abuse, over static signatures.
  • Hunt the specific tells: renamed ProcDump (windbg.exe with -md), nslookup.exe/ExtExport.exe loading unsigned DLLs, and in-memory AMSI/ETW patching (NtWriteVirtualMemory into amsi.dll/ntdll.dll) immediately before PowerShell execution.
  • Block and monitor the C2 domains, deploy the Elastic YARA rules (SpectralViper, P8Loader, PowerSeal), and alert on unsecured named pipes created without security attributes on servers.
  • Constrain lateral movement: the foothold arrived over SMB from a peer, so enforce SMB segmentation, least-privilege admin shares, and monitoring of file writes to public/library paths (e.g. C:\Users\Public\Libraries) from remote hosts.
  • Elevated targeting for strategic sectors: Vietnamese finance, agribusiness/food-security and government organisations, and their regional partners, should assume heightened APT32 interest and rehearse an IR playbook that assumes an obfuscated, memory-resident backdoor with token-impersonation capability.

Keep reading

Related research

Contact

Talk to someone who has seen this before.

You speak directly to the people doing the work, wherever in the world you operate.

Or email [email protected]