SECURELEAF · CTI DIVISION
Dispensight Threat Intelligence
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: VirtualAllocEx → WriteProcessMemory → CreateRemoteThread, 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
- Screenshots —
CopyFromScreen / CopyPixelOperation (T1113).
- File enumeration —
GetFiles, FindFirstFileExW, FileInfo.
- Host/user recon —
GetProcesses, get_UserDomainName, get_MainModule.
- Remote config —
DownloadString 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.
| Type | Indicator | Context |
| SHA-256 | 1e0a8824261e3edb36d12fd5ce659cbb3989d4470809d2310cc56cd47da53555 | my_enterprise (loader) |
| SHA-256 | 41d8d77a24d3dc8d678423a5a4e69616cf60893f02ac8117e688970b1ff9e26e | my_sss (infostealer) |
| SHA-256 | 0f7a070dd42966ee67eeaa2dddf273749161c829f9d0a7d5fab40b4499f87f41 | my_sss recompile (detonated build) |
| SHA-256 | ce02b462fc089eb8b57e49287449630f2da4d9a78405e2e1b01d529682659d2a | .eml delivery carrier |
| MD5 | a1f7fc14f95158153c1fc1c5dc079af1 | my_enterprise |
| MD5 | d4b928f715e9636db9c571b64999353e | my_sss |
| IPv4 | 158.94.211.92 | Stage host + C2 · new |
| URL | http://158.94.211.92/enterprise/my_sss.bin | Stage-3 fetch |
| URI | /c0g1k2s3 | C2 exfil gate |
| HEADER | 4D 5A 45 52 E8 00 00 00 00 59 48 83 E9 09 | MZER 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)
T1027.009
Embedded polyglot
T1620
Reflective code loading
T1555.003
Browser credentials
T1552.001
Credentials in files
T1005
Data from local system
T1095
Non-app-layer protocol
T1543.003
Windows service persist.
T1497.003
Time-based stall (60s)
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.