EtherHiding ClickFix
Executive Summary
EtherHiding ClickFix is a malware-delivery pattern, not a single campaign: it fuses ClickFix (a fake-CAPTCHA / "verify you are human" prompt that tricks a victim into pressing Win+R or opening Terminal, pasting a clipboard-hijacked command, and executing it — MITRE T1204.004) with EtherHiding (storing the live command-and-control address inside a public blockchain smart contract — chiefly Polygon, also observed on BNB Smart Chain — so operators rotate infrastructure with a single on-chain transaction instead of re-infecting every compromised site). Between March and August 2026 at least six independent vendors — Cribl SecOps, AllSecure, LevelBlue SpiderLabs, PhishEye, FileScan.io/OPSWAT, and Cynet — documented distinct operator clusters running this pattern, most originating from compromised WordPress sites (injected script in robots.txt, page footers, or must-use plugins) and distributing payloads ranging from commodity infostealers (Vidar) and loaders (GULoader, HijackLoader) to a custom RAT (Starland RAT) and, in AllSecure's research, a backdoor plus malicious browser extension pair whose tradecraft aligns with DPRK cluster UNC5342 / Contagious Interview.
The one step common to every reported variant is the user-driven paste-and-run action itself — the smart-contract lookup happens silently in the browser before the victim ever sees a prompt, so Falcon's earliest reliable signal is the process spawned immediately afterward (explorer.exe/Terminal → PowerShell/cmd/mshta/rundll32 with a hidden window and an iex(irm ...) or UNC-path pattern). Because the C2 configuration layer lives on-chain, domain and IP blocking alone under-serves this threat: a takedown only removes one disposable front-end while the contract — and the attacker's ability to repoint every future execution — persists.
Defender priority: Detect the paste-and-run execution pattern (Q1/Q2) as the highest-fidelity, lowest-effort control; pair it with outbound monitoring for public blockchain RPC calls from non-developer endpoints (Q3) and a standing user-awareness message that no legitimate site ever asks for Win+R-and-paste. Treat any host that executed the pasted command as compromised — rotate credentials and cryptocurrency wallet keys reachable from that endpoint before declaring the incident closed.
Source Review & Web Hunter Notes
| Tier | Source | Published | Key contribution | Decision |
|---|---|---|---|---|
| T1 | Cribl SecOps | ~2026-08-11 | Original quote for the robots.txt injection + Polygon RPC + smart-contract lookup mechanism; own contract/wallet IOC set | Carry forward |
| T1 | GBHackers (syndicating AllSecure) | ~2026-08-11 | Flagship atomic IOC set: domains, dual EtherHiding contracts, getter selector, XOR keys, DPRK/UNC5342 attribution | Carry forward |
| T1 | AllSecure (originating research) | 2026-07-29 | Originating DPRK-wallet-trail research; page is JS-rendered, only metadata mechanically extractable — corroborated via GBHackers syndication | Carry forward (partial) |
| T1 | The Hacker News — ThreatsDay | 2026-08-13 | "Blockchain-Hidden C2" roundup item anchoring the campaign; verbatim Cribl quote | Carry forward |
| T1 | LevelBlue SpiderLabs | 2026-04-09 | ErrTraffic v3 MaaS framework; WordPress mu-plugin backdoor (session-manager.php); own contract + TLD pattern | Carry forward |
| T1 | PhishEye | Campaign window Mar–Jun 2026 | Explicit Win+R-paste mechanic; 97-domain rotation; contract shared with LevelBlue; XOR key; defender guidance | Carry forward |
| T1 | FileScan.io Threat Labs | 2026-07-20, updated 2026-07-30 | Deepest forensic trace: live eth_call, 14 sibling contracts, MITRE mapping, PowerShell/Sysmon telemetry guidance | Carry forward |
| T1 | OPSWAT | 2026-08-13 | Summarizes FileScan.io; confirms formal MITRE T1204.004 mapping for ClickFix | Carry forward |
| T2 | Cynet | 2026-07-31 | HijackLoader + Starland RAT variants; concrete hashes and C2; independent EtherHiding contract | Carry forward |
| T2 | cybersecuritynews.com + GBHackers (GULoader) | Incident 2026-06-16 | BNB Smart Chain Testnet variant; rundll32 UNC-path LOLBin execution; real hashes, corroborated by two outlets | Carry forward |
| T2 | GBHackers (ErrTraffic family) | recent, undated | Broader ErrTraffic payload family (Vidar, Okobot, LegionLoader, OnionDrop, BabaDedaLoader); errtraffic_session= cookie indicator | Carry forward (behavioral only) |
Web-hunter note: "EtherHiding ClickFix" spans at least five independently reported operator clusters sharing the same technique but distinct infrastructure (different contracts, wallets, and function selectors). This pack treats the AllSecure/GBHackers DPRK-linked instance as the flagship IOC set (matches this build's source brief exactly) and carries the other clusters as corroborating, separately-labeled "related infrastructure" — do not merge their atomic indicators into one campaign identity. No text addressed to an AI/assistant was found in any fetched source; all fetched content was treated strictly as research material.
Hunt Brief & Attack Chain
Hunt hypotheses
- H1 · High: A host whose Run dialog or Terminal spawns a shell/scripting interpreter immediately after explorer.exe/Terminal, carrying an
iex(irm ...)-style download-and-execute pattern, indicates ClickFix paste-and-run. - H2 · High: PowerShell launched with a hidden window flag combined with
Invoke-RestMethod/iexis a distinctive fingerprint of the ClickFix stager fetch documented independently by FileScan.io and Cribl. - H3 · Medium: Outbound DNS/HTTP calls to public blockchain RPC endpoints from a browser-spawned or script-hosting process (not a known Web3/dev tool) indicate live EtherHiding contract resolution.
- H4 · High: rundll32.exe loading a DLL via a UNC path with an ordinal export is the documented GULoader/ClickFix LOLBin execution stage.
- H5 · High: DNS lookups for the specific atomic stager/C2 domains published across these sources are a direct, high-confidence hit.
- H6 · Medium: A schtasks.exe-created task running every minute, spawned from a Run-dialog PowerShell one-liner, matches the Starland RAT persistence pattern.
- H7 · Medium: A Node.js process launched from Terminal/shell shortly after a ClickFix Terminal paste, running from a cache/temp path outside normal developer tooling, matches the AllSecure macOS RAT loader.
- H8 · Medium: A newly-written DLL loaded immediately by a process spawned from msiexec.exe matches the HijackLoader-style sideload chain documented by Cynet.
Attack chain
| Step | Documented behavior | Best telemetry | Hunt angle |
|---|---|---|---|
| 1 | Victim reaches a compromised WordPress site (search result or malvertising); injected JS lives in robots.txt, a page footer, or a must-use plugin | Web server / WAF logs, file-integrity monitoring — not Falcon endpoint (server not assumed to run the sensor) | Native audit-log hunt (§7) |
| 2 | Injected script performs an eth_call/RPC POST to a public Polygon or BNB Smart Chain endpoint, reading the current C2/stager domain out of a smart contract (EtherHiding) | Browser network activity; corporate DNS/proxy logs; Falcon DnsRequest/NetworkConnectIP4 from the browser process | Q3 |
| 3 | Script renders a fake CAPTCHA/verification overlay, silently writes a command to the clipboard, and instructs the victim to press Win+R (Windows) or open Terminal (macOS) and paste | Browser-internal clipboard API — not directly visible to Falcon | User-awareness control (§12); detected only via its consequence, step 4 |
| 4 | Victim pastes and executes; explorer.exe/Terminal spawns PowerShell/cmd/mshta/rundll32 with a hidden window and an iex(irm) or UNC LOLBin pattern | ProcessRollup2 | Q1, Q2, Q4 |
| 5 | Secondary payload retrieved: GULoader shellcode, an MSI installer masquerading as legitimate software, or a ZIP containing a Python/Node.js RAT | NewExecutableWritten, PeFileWritten | Q8 |
| 6 | Persistence established: per-minute scheduled task, startup LNK, or malicious browser extension | ProcessRollup2 (schtasks.exe) | Q6, native hunt for extensions (§7) |
| 7 | Ongoing beacon: RAT reads attacker commands from the EtherHiding contract or connects to the rotated stager/C2 domain every few minutes | DnsRequest, NetworkConnectIP4 | Q3, Q5 |
| 8 | Data theft: browser-saved credentials, cryptocurrency wallets, SSH keys, and cloud tokens exfiltrated over the same channel | Limited endpoint visibility — file-open telemetry on wallet/browser-profile paths is not part of the standard event set | Gap — see Coverage Map (§15) |
Consolidated IOC Table
Flagship instance (AllSecure / GBHackers — macOS ClickFix → Terminal → Node.js RAT + malicious Chrome extension; tradecraft aligned to DPRK UNC5342 / Contagious Interview):
| Type | Value | Confidence | Action | Context | Expiry |
|---|---|---|---|---|---|
| Domain | real-tumble[.]pro | High | detect | Stage-0 delivery / malvertising landing domain | 2027-02-16 |
| URL | rg-telemetry[.]sbs/api | High | detect | Backdoor C2 endpoint | 2027-02-16 |
| URL | th-updates[.]sbs/analytics | High | detect | Malicious browser-extension C2 endpoint | 2027-02-16 |
| Ethereum contract (Polygon) | 0x2acA749b59529f5CBCd6fbd34B35b1A546713dF6 | High | enrich / pivot | EtherHiding contract resolving the backdoor's C2 | 2027-02-16 |
| Ethereum contract (Polygon) | 0x85a6d913aaC80286f01Fa082ef0B96C188673043 | High | enrich / pivot | EtherHiding contract resolving the extension's C2 | 2027-02-16 |
| Function selector | 0x3bc5de30 | High | enrich | Contract getter selector used to read the stored C2 value | 2027-02-16 |
| XOR key | 9f10d0899beff7952f586a49305f8b14 | High | enrich | Decodes the on-chain response for the backdoor channel | 2027-02-16 |
| XOR key | 2752df77aeb348657f5fb59a22d65f4a | High | enrich | Decodes the on-chain response for the extension channel | 2027-02-16 |
Related infrastructure — independently reported EtherHiding-ClickFix clusters, kept source-tagged and separate from the flagship set above:
| Type | Value | Confidence | Action | Context / Source | Expiry |
|---|---|---|---|---|---|
| Ethereum contract (Polygon) | 0x0C7Cb01C83203aC0a50Abc3a9AFF3c9Ca727eF55 | Medium | hunt | Cribl SecOps instance; decoded to thu-ipad-03[.]cfd at capture time | 2026-11-16 |
| Domain | thu-ipad-03[.]cfd | Medium | hunt | Cribl SecOps — decoded second-stage domain (perishable, rotates) | 2026-11-16 |
| Ethereum contract (Polygon) | 0xB6bC9e1D0b2fB96Ab7C47E04Cb0BE477410bC1f2 | High | hunt | FileScan.io/OPSWAT — independently corroborated by two outside researchers | 2027-02-16 |
| Domain | authorization-cdn-press-enter[.]info | Medium | hunt | FileScan.io — stager domain live at capture; already rotated to auth-id-browser[.]info | 2026-11-16 |
| Domain | wpteamcdn[.]beer | High | hunt | FileScan.io — ClickFix lure/injection domain | 2027-02-16 |
| Domain | claudesave[.]beer | High | hunt | FileScan.io — Claude-AI-impersonation lure domain on shared infrastructure | 2027-02-16 |
| Ethereum contract (Polygon) | 0x08207B087F61d7e95E441E15fd6d40BEfd6eD308 | High | hunt | LevelBlue SpiderLabs + PhishEye — ErrTraffic v3 contract, reported independently by both | 2027-02-16 |
| Domain | superboomer[.]world | Medium | hunt | PhishEye — ErrTraffic-family Traffic Distribution System domain | 2026-11-16 |
| Ethereum contract (Polygon) | 0x308e9ecc849533a042f13fD77E5C82eC3c62e9f2 | Medium | hunt | Cynet — Starland RAT EtherHiding contract | 2026-11-16 |
| Domain | ho9894htrg43[.]com | Medium | hunt | Cynet — Starland RAT C2 | 2026-11-16 |
| Domain | autum-path[.]vo8xalon[.]in[.]net | High | detect | cybersecuritynews.com + GBHackers — GULoader C2, BNB Smart Chain Testnet variant, corroborated by two outlets | 2027-02-16 |
| Domain (RPC) | bsc-testnet[.]drpc[.]org | High | hunt | GULoader/BSC variant — EtherHiding RPC endpoint | 2027-02-16 |
| SHA256 | 172a25a9ed8b798d8baeec29424b46627b5b39723b37c787f928d3700509001e | High | detect | GULoader/BSC variant — malicious web content sample (ANY.RUN) | 2027-02-16 |
| HTTP cookie (behavioral) | errtraffic_session= | Medium | hunt | GBHackers — ErrTraffic family web-layer indicator (WAF/proxy logs, not endpoint) | 2026-11-16 |
Domains and stager URLs in this family rotate on the order of days (FileScan.io measured 2–7 day cadence; PhishEye measured 97 domains across one campaign window). Treat every domain/URL row as perishable — the Ethereum/Polygon contract addresses are the durable pivot, not the domains they currently resolve to.
Affected Surface & Telemetry Matrix
| Surface | Required telemetry | Priority | Visibility / gap |
|---|---|---|---|
| Windows endpoints | ProcessRollup2, NetworkConnectIP4, DnsRequest, NewExecutableWritten | Critical | Falcon sensor telemetry is authoritative for the whole post-paste execution chain (steps 4–7) |
| macOS endpoints | ProcessRollup2 (macOS sensor), NetworkConnectIP4 | High | Covers the Terminal-paste → Node.js RAT chain documented by AllSecure; Chrome extension/Secure-Preferences tampering has limited direct field coverage — rely on MDM (§7) |
| Corporate web/proxy layer | DNS/proxy logs, network flow | High | Falcon endpoint DNS/NetworkConnect telemetry covers this only when the browser runs on a Falcon-monitored endpoint; network-appliance-only visibility needs proxy logs directly |
| WordPress / web-server infrastructure (initial compromise surface) | Native web-server access/error logs, WAF, file-integrity monitoring | Critical | Not Falcon-visible unless the WordPress host itself runs the sensor (uncommon); native audit-log hunts (§7) are the primary control here |
| Browser extension layer (Chrome/Edge) | MDM extension inventory, PeFileWritten/NewExecutableWritten (partial) | Medium | Falcon endpoint events are not built to fingerprint extension-manifest or Secure-Preferences content changes; managed-extension allowlisting is the reliable control |
| Cryptocurrency / blockchain infrastructure (Polygon, BNB Smart Chain) | None on-endpoint — public ledger only | Informational | Contract/wallet addresses are useful for on-chain pivot and threat-intel enrichment, not for blocking; RPC providers can be asked to flag abusive contracts but cannot remove them |
ATT&CK Mapping
| Tactic | Technique | Name | Observed behavior |
|---|---|---|---|
| Initial Access | T1189 | Drive-by Compromise | Injected script on a compromised WordPress site triggers on visit, no phishing email or link involved |
| Execution | T1204.004 | Malicious Copy and Paste | ClickFix fake-CAPTCHA/verification overlay instructs Win+R (Windows) or Terminal (macOS) paste-and-run — formally mapped by MITRE, confirmed by OPSWAT/FileScan.io |
| Execution | T1059.001 | Command and Scripting Interpreter: PowerShell | Hidden-window iex(irm ...) download cradle |
| Execution | T1218.011 | System Binary Proxy Execution: Rundll32 | rundll32.exe loads an attacker DLL via a UNC path with an ordinal export (GULoader stage) |
| Persistence | T1053.005 | Scheduled Task/Job: Scheduled Task | Per-minute schtasks.exe task re-executing the PowerShell stager (Starland RAT) |
| Persistence | T1176 | Browser Extensions | Malicious extension masquerading as a legitimate Chrome extension, patched into Secure Preferences |
| Defense Evasion | T1027 | Obfuscated Files or Information | Base64 + single-byte XOR obfuscation of the injected JavaScript loader |
| Defense Evasion | T1140 | Deobfuscate/Decode Files or Information | XOR-decoding of the on-chain smart-contract response into a usable C2 domain |
| Command and Control | T1102 | Web Service | Closest ATT&CK analogue for EtherHiding per FileScan.io's own assessment; a public blockchain read differs meaningfully from the web-service C2 the sub-technique was written for — no exact sub-technique exists yet |
| Command and Control | T1583.001 | Acquire Infrastructure: Domains | Rapid domain rotation (2–7 day cadence) via bulk registrars (Dynadot observed) fronted by Cloudflare |
| Credential Access | T1555.003 | Credentials from Web Browsers | Infostealer component targets 150+ wallet types plus browser-saved credentials, SSH keys, and cloud tokens |
| Discovery | T1082 | System Information Discovery | RAT reconnaissance beacon reports machine GUID, OS version, AV product, domain, and privilege level |
Native Audit-Log Hunts
These checks live outside Falcon's endpoint event stream — on the web server, the domain-name system, or the browser-management console — and cover the steps of the chain (1, 3, 6-extension) that Falcon endpoint telemetry does not directly see.
- PowerShell ScriptBlock logging (Event ID 4104): if not already enabled fleet-wide, turn it on and search for the
-w h/-windowstyle hidden+iex(irm ...)fingerprint. This is the same signature Q2 hunts in Falcon telemetry, but 4104 captures the fully deobfuscated script block text, which is useful when the CommandLine itself is truncated or further obfuscated. - WordPress site integrity (organization-owned properties only): scan
robots.txt, themeheader.php/footer.php/functions.php, and themu-pluginsdirectory for injected<script>blocks containingfromCharCode,atob(,createElement("script"), or outboundfetch()/XMLHttpRequestcalls to RPC-sounding hostnames. Specifically check for an unfamiliarsession-manager.php-style file inmu-plugins— LevelBlue's documented ErrTraffic v3 backdoor filename. - Web server / WAF access logs: search for a
Set-Cookie: errtraffic_session=response header, and for requests matching/api/index.php?a=dlor/api/?a=tds_cfgpatterns. - Enterprise DNS resolver logs: flag first-time lookups to blockchain RPC domains (
polygon-rpc.com,publicnode.com,drpc.org,bnbchain.org,alchemyapi.io,infura.io,ankr.com,quiknode.pro) from subnets that are not your dev/Web3 team — mirrors Q3 but at the resolver instead of the endpoint, covering hosts without Falcon coverage. - Managed browser extension inventory (MDM/Chrome Enterprise console): review the extension allowlist/installed-extension report for IDs outside your approved catalog, and for any recent modification timestamp on
Secure Preferencesthat doesn't correlate with a scheduled Chrome update.
CrowdStrike LogScale CQL Hunt Queries
Looks for: explorer.exe spawning a shell/scripting interpreter whose command line carries an IEX/download-and-run pattern — the universal ClickFix fingerprint across every reported variant. FP: IT help-desk remote-support scripts and legitimate admin one-liners launched via the Run dialog will also match.
// HUNT: ClickFix Run-dialog paste-and-execute (Win+R / explorer.exe-spawned shell) // MITRE: T1204.004 // CONF: high FP: medium COST: low | REQUIRES: ProcessRollup2 // FALSE POSITIVES: help-desk remote-support one-liners, RMM tooling launched via Run dialog // TUNING: exclude ParentBaseFileName=explorer.exe children signed by your RMM/help-desk tooling; scope out known internal script-share paths // LOOKBACK: 7d #event_simpleName=ProcessRollup2 | ParentBaseFileName=/^explorer\.exe$/i | in(FileName, values=["powershell.exe","pwsh.exe","cmd.exe","mshta.exe","wscript.exe","cscript.exe","rundll32.exe"], ignoreCase=true) | CommandLine=/iex\(|invoke-expression\(|irm |invoke-restmethod|downloadstring|-enc |-w h|-windowstyle hidden/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine]) | sort(@timestamp, order=desc, limit=500)
Looks for: the precise FileScan.io/Cribl fingerprint — PowerShell launched with a hidden window and an iex(...)/Invoke-RestMethod pair in the same command line. FP: rare; some internal automation intentionally hides PowerShell windows while calling Invoke-RestMethod.
// HUNT: Hidden-window PowerShell IEX(IRM) download cradle (ClickFix / EtherHiding stager fetch) // MITRE: T1059.001, T1204.004 // CONF: high FP: low COST: low | REQUIRES: ProcessRollup2 // FALSE POSITIVES: internal automation that intentionally hides PowerShell windows while calling Invoke-RestMethod; verify against a change-managed script inventory // LOOKBACK: 7d #event_simpleName=ProcessRollup2 | FileName=/^(powershell|pwsh)(\.exe)?$/i | CommandLine=/-w(indowstyle)? +h(idden)?/i | CommandLine=/iex\(|invoke-expression\(/i | CommandLine=/irm |invoke-restmethod/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, CommandLine]) | sort(@timestamp, order=desc, limit=500)
Looks for: a process resolving a known public blockchain RPC gateway domain, joined back to the initiating process — the behavioral signature of a live EtherHiding contract read. FP: legitimate Web3/crypto developers, browser extensions like MetaMask, and blockchain-monitoring tools on dev/finance workstations.
// HUNT: Outbound calls to public blockchain RPC endpoints (EtherHiding on-chain C2 resolution) // MITRE: T1102 // CONF: medium FP: medium COST: medium | REQUIRES: DnsRequest, ProcessRollup2 // FALSE POSITIVES: legitimate Web3/crypto developers, MetaMask and similar wallet extensions, blockchain-monitoring tools // TUNING: exclude aid/ComputerName groups belonging to your blockchain/dev/finance teams before promoting past investigate-only // LOOKBACK: 7d #event_simpleName=DnsRequest | DomainName=/polygon-rpc\.com|publicnode\.com|drpc\.org|bnbchain\.org|alchemyapi\.io|infura\.io|ankr\.com|quiknode\.pro/i | rename(field=ContextProcessId_decimal, as=TargetProcessId_decimal) | join(query={#event_simpleName=ProcessRollup2}, field=TargetProcessId_decimal, include=[FileName, ParentBaseFileName, CommandLine]) | table([@timestamp, ComputerName, UserName, FileName, ParentBaseFileName, DomainName, CommandLine]) | sort(@timestamp, order=desc, limit=500)
Looks for: rundll32.exe pointed at a remote UNC path with an ordinal-based export call — the exact pattern documented for the GULoader/ClickFix chain (rundll32.exe \\host\share\...,#1). FP: rare; some legitimate network-share software deployment uses rundll32 with UNC paths.
// HUNT: rundll32.exe executing a UNC-path DLL via ordinal export (GULoader / ClickFix LOLBin stage) // MITRE: T1218.011, T1105 // CONF: high FP: low COST: low | REQUIRES: ProcessRollup2 // FALSE POSITIVES: legitimate network-share software deployment tooling invoking rundll32 with UNC paths // LOOKBACK: 7d #event_simpleName=ProcessRollup2 | FileName=/^rundll32(\.exe)?$/i | CommandLine=/\\\\[a-z0-9.\-]+\\/i | CommandLine=/,#[0-9]+/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, CommandLine]) | sort(@timestamp, order=desc, limit=500)
Looks for: DNS lookups to the atomic domains published in §4 across the flagship and related-infrastructure IOC sets. FP: none expected — these are campaign-specific; treat any hit as confirmed positive requiring immediate triage. Domains are perishable (2–7 day rotation observed) — re-run against the current IOC table, not from memory.
// HUNT: Known EtherHiding-ClickFix stager/C2 domain hits // MITRE: T1071.001, T1583.001 // CONF: high FP: low COST: low | REQUIRES: DnsRequest // FALSE POSITIVES: none expected -- campaign-specific atomic indicators // LOOKBACK: 30d #event_simpleName=DnsRequest | DomainName=/rg-telemetry\.sbs|th-updates\.sbs|real-tumble\.pro|thu-ipad-03\.cfd|wpteamcdn\.beer|claudesave\.beer|ethercdnns\.beer|authorization-cdn-press-enter\.info|auth-id-browser\.info|superboomer\.world|ho9894htrg43\.com|autum-path\.vo8xalon\.in\.net/i | table([@timestamp, ComputerName, UserName, DomainName]) | sort(@timestamp, order=desc, limit=500)
Looks for: schtasks.exe run with /create and /sc minute, spawned from a PowerShell/cmd parent whose own command line carries an iex( pattern — the Starland RAT persistence signature. FP: legitimate short-interval monitoring/health-check scheduled tasks.
// HUNT: Recurring per-minute scheduled task created via paste-and-run PowerShell (Starland RAT / ClickFix persistence pattern) // MITRE: T1053.005, T1204.004 // CONF: medium FP: medium COST: low | REQUIRES: ProcessRollup2 // FALSE POSITIVES: legitimate short-interval monitoring or health-check scheduled tasks created via schtasks.exe // TUNING: correlate the /tr payload against a change-managed script inventory; exclude known RMM/monitoring command patterns // LOOKBACK: 7d #event_simpleName=ProcessRollup2 | FileName=/^schtasks(\.exe)?$/i | CommandLine=/\/create/i | CommandLine=/\/sc +minute/i | ParentBaseFileName=/^(cmd|powershell|pwsh)(\.exe)?$/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, CommandLine]) | sort(@timestamp, order=desc, limit=500)
Looks for: a node binary launched directly by Terminal/bash/zsh from a temp/cache/Application-Support path rather than a package-manager install location — matches AllSecure's ~38KB Node.js RAT loader. FP: developers legitimately running Node.js from nvm/Homebrew cache paths; scope to endpoints outside your engineering asset group.
// HUNT: Node.js runtime spawned from a user cache/temp directory shortly after Terminal execution (macOS ClickFix RAT loader pattern) // MITRE: T1204.004, T1059.007 // CONF: medium FP: medium COST: low | REQUIRES: ProcessRollup2 (macOS sensor) // FALSE POSITIVES: developers legitimately running Node.js from nvm/Homebrew cache paths // TUNING: exclude ImageFileName paths under known package-manager install locations (/usr/local/homebrew, /opt/homebrew, ~/.nvm) used by your engineering fleet // LOOKBACK: 7d #event_simpleName=ProcessRollup2 | ParentBaseFileName=/^(Terminal|bash|zsh|sh)$/i | FileName=/^node$/i | ImageFileName=/\/(tmp|Caches|Library\/Application Support)\//i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine]) | sort(@timestamp, order=desc, limit=500)
Looks for: a DLL written to disk and then loaded by a process whose parent is msiexec.exe — the HijackLoader-style MSI → signed-binary → sideloaded-DLL chain documented by Cynet (ESET SysInspector renamed, sciter-x.dll sideload). FP: standard MSI-based software installs that legitimately drop and load DLLs from the same install directory.
// HUNT: New DLL written immediately before load by a process spawned from msiexec (potential sideload chain) // MITRE: T1574.002, T1204.004 // CONF: medium FP: medium COST: medium | REQUIRES: NewExecutableWritten, ProcessRollup2 // FALSE POSITIVES: standard MSI-based software installs that legitimately drop and load DLLs from the same install directory // TUNING: exclude known-good installer families by ParentBaseFileName + AuthenticodeHashData combination against your approved-software baseline // LOOKBACK: 7d #event_simpleName=NewExecutableWritten | TargetFileName=/\.dll$/i | rename(field=ContextProcessId_decimal, as=TargetProcessId_decimal) | join(query={#event_simpleName=ProcessRollup2 | ParentBaseFileName=/^msiexec(\.exe)?$/i}, field=TargetProcessId_decimal, include=[FileName, CommandLine]) | table([@timestamp, ComputerName, UserName, TargetFileName, FileName, CommandLine]) | sort(@timestamp, order=desc, limit=500)
CrowdStrike Custom IOA Recommendations
| Candidate | Disposition | Reason | Promotion path |
|---|---|---|---|
| Q2 hidden-window IEX(IRM) | IOA candidate | High confidence, low FP — the most precise ClickFix fingerprint across sources | Run 14-day baseline as scheduled search; promote to Custom IOA if FP rate stays near zero |
| Q4 rundll32 UNC ordinal export | IOA candidate | High confidence, low FP, narrow legitimate-use footprint | Promote to Custom IOA after confirming no internal UNC-based deployment tooling matches |
| Q5 known stager/C2 domains | IOA candidate (block, not just detect) | High confidence, zero expected FP — but perishable, requires an update cadence | Feed into Custom IOC/domain-block list with a refresh job; do not hardcode into a static IOA pattern |
| Q1 ClickFix broad paste pattern | Investigate only | Medium FP — legitimate help-desk/RMM tooling overlaps | Baseline 14 days, tune approved parent-process signers, then consider scheduled-search promotion |
| Q3, Q6, Q7, Q8 | Investigate only | Medium FP or narrower telemetry requirement; useful for triage and pivoting, not yet precise enough for prevention | Re-evaluate after 30 days of tuning against your environment's baseline |
Alert package — Q2 & Q4 (promotable pair)
Scheduled Search name: DETECT — ClickFix Hidden-Window PowerShell / rundll32 UNC LOLBin (EtherHiding Delivery Chain)
Description: Fires when a host executes the hidden-window iex(irm) PowerShell fingerprint or a UNC-path rundll32 ordinal-export call — the two highest-fidelity signatures for the ClickFix paste-and-run stage documented across the EtherHiding-ClickFix vendor reporting.
Alert email subject: [HIGH] Detection: EtherHiding ClickFix — hidden-window stager execution on <ComputerName>
Alert email body: A host matched the ClickFix/EtherHiding stager-execution fingerprint (hidden-window PowerShell IEX/IRM, or a UNC-path rundll32 ordinal call). This pattern is associated with a blockchain-hidden C2 delivery chain that has recently distributed infostealers, loaders, and RATs. Treat the endpoint as potentially compromised until triaged — the user executing this command most likely pasted it from a fake CAPTCHA/verification prompt. Immediate actions: network-contain the host, capture the full CommandLine and any child-process tree, and identify the site/prompt the user interacted with just prior to execution.
Triage checklist:
- Pull the full
ProcessRollup2record and confirm the parent is explorer.exe (Windows Run dialog) or Terminal (macOS) - Interview the user: what page/prompt told them to press Win+R or open Terminal and paste?
- Check
NetworkConnectIP4/DnsRequestfor the affected host in the surrounding 5 minutes for RPC-endpoint or known stager-domain traffic (pivot: Q3, Q5) - Check for a resulting
NewExecutableWrittenevent (secondary payload drop) on the same host (pivot: Q8) - Check for a resulting scheduled task or startup persistence artifact (pivot: Q6)
- If browser credentials or a cryptocurrency wallet are present on the host, treat them as compromised — begin rotation immediately
- Network-contain the host if not already isolated; preserve the process/network evidence before remediation
- Escalate to IR if any child process wrote an executable, established outbound C2, or created persistence
Pivot queries: host-scoped — re-run Q3/Q5/Q6/Q8 with aid = <affected_aid>; environment-wide — re-run Q1–Q8 across the fleet for the same 7-day window to scope additional victims.
Lighter package — Q1, Q3, Q6, Q7, Q8 (investigate-only)
No alert email; run as scheduled hunts. Pivot queries: for any hit, join back to Q5 (known domains) and Q3 (RPC calls) on the same host/time window to confirm the full chain before escalating.
Machine-Readable IOC Appendix
type,value,action,severity,expiration,description,tags domain,real-tumble.pro,detect,high,2027-02-16,EtherHiding ClickFix stage-0 delivery domain,campaign:EtherHidingClickFix domain,rg-telemetry.sbs,detect,high,2027-02-16,EtherHiding ClickFix backdoor C2,campaign:EtherHidingClickFix domain,th-updates.sbs,detect,high,2027-02-16,EtherHiding ClickFix extension C2,campaign:EtherHidingClickFix domain,autum-path.vo8xalon.in.net,detect,high,2027-02-16,GULoader C2 (EtherHiding/BSC variant),campaign:EtherHidingClickFix domain,wpteamcdn.beer,detect,high,2027-02-16,ClickFix lure/injection domain (FileScan.io),campaign:EtherHidingClickFix sha256,172a25a9ed8b798d8baeec29424b46627b5b39723b37c787f928d3700509001e,detect,high,2027-02-16,Malicious web content sample (GULoader/EtherHiding variant),campaign:EtherHidingClickFix
CONTRACT_BACKDOOR=0x2acA749b59529f5CBCd6fbd34B35b1A546713dF6 CONTRACT_EXTENSION=0x85a6d913aaC80286f01Fa082ef0B96C188673043 GETTER_SELECTOR=0x3bc5de30 XOR_KEY_BACKDOOR=9f10d0899beff7952f586a49305f8b14 XOR_KEY_EXTENSION=2752df77aeb348657f5fb59a22d65f4a RELATED_CONTRACT_CRIBL=0x0C7Cb01C83203aC0a50Abc3a9AFF3c9Ca727eF55 RELATED_CONTRACT_FILESCAN=0xB6bC9e1D0b2fB96Ab7C47E04Cb0BE477410bC1f2 RELATED_CONTRACT_ERRTRAFFIC_V3=0x08207B087F61d7e95E441E15fd6d40BEfd6eD308 RELATED_CONTRACT_STARLAND_RAT=0x308e9ecc849533a042f13fD77E5C82eC3c62e9f2 NOTE=Contracts are durable pivots; resolved domains rotate every 2-7 days per FileScan.io
PATTERN_CLICKFIX_PASTE=explorer.exe|Terminal -> powershell|cmd|mshta|rundll32 with iex(irm ...) or -enc PATTERN_HIDDEN_WINDOW=powershell.exe -w h|-windowstyle hidden + iex( + irm|Invoke-RestMethod PATTERN_RUNDLL32_UNC=rundll32.exe \\\\host\\share\\...,#ordinal PATTERN_SCHTASK_PERMIN=schtasks /create ... /sc minute /mo 1 (spawned from powershell/cmd with iex() PATTERN_HTTP_COOKIE=Set-Cookie: errtraffic_session= BLOCKCHAIN_RPC_DOMAINS=polygon-rpc.com,publicnode.com,drpc.org,bnbchain.org,alchemyapi.io,infura.io,ankr.com,quiknode.pro
CHECK_1=Diff robots.txt against last known-good version
CHECK_2=Scan mu-plugins/ for unfamiliar files (watch for session-manager.php)
CHECK_3=Grep theme header.php/footer.php/functions.php for fromCharCode|atob(|createElement("script")
CHECK_4=Review WP admin account list for unrecognized/recently-created accounts
CHECK_5=Check WAF/access logs for Set-Cookie: errtraffic_session=
TOOLING=Wordfence, Sucuri, Imunify360, or an equivalent WordPress-aware FIM/WAF product
Detection Validation Gates
| Gate | Pass criteria | Safe validation |
|---|---|---|
| Telemetry ready | ProcessRollup2, DnsRequest, NetworkConnectIP4, NewExecutableWritten searchable for the target host population (Windows + macOS) | Confirm a known-benign PowerShell/Node.js execution appears in Falcon within the expected lookback window |
| Benign baseline | Approved RMM/help-desk tooling, dev/Web3 team subnets, and internal script-share paths documented before tuning Q1/Q3 | Run a 14-day baseline; classify every recurring hit before promoting any query |
| Positive test | Q1/Q2 return a sanctioned test execution (e.g., a benign iex(irm ...) one-liner run from a canary host's Run dialog) | Use an isolated lab host and a harmless test URL; never test against the actual reported stager domains |
| IOC freshness | Q5 domain list re-synced against §4 before each hunt cycle | Track the "Expiry" column in §4; re-pull vendor reporting if a domain has rotated |
| Promotion | Measured FP rate and analyst runbook approved for Q2/Q4/Q5 before Custom IOA/block promotion | Scheduled search first; promote to Custom IOA only after the 14-day baseline shows near-zero FP |
Never validate by visiting an actual reported ClickFix lure page or pasting a captured attacker command, even in a lab — several variants fetch a live second-stage payload from rotating infrastructure that cannot be fully controlled by the analyst.
Hardening — Tiered & Deployable
- Enable PowerShell Script Block Logging (Event ID 4104) fleet-wide. Low-risk, no user-visible change, and it captures the deobfuscated script text behind the Q2 fingerprint even when CommandLine truncates. Framework: MITRE M1040 (Behavior Prevention on Endpoint). Verify:
Get-WinEvent -LogName "Microsoft-Windows-PowerShell/Operational" | Where-Object Id -eq 4104 | Select-Object -First 1 - Block outbound resolution of public blockchain RPC domains (
polygon-rpc.com,publicnode.com,drpc.org,bnbchain.org,alchemyapi.io,infura.io,ankr.com,quiknode.pro) at the perimeter proxy/firewall for every subnet except an explicit dev/Web3 allowlist. Framework: MITRE M1031 (Network Intrusion Prevention). Verify: attempt DNS resolution from a non-allowlisted test host and confirm the block. - Publish a ClickFix-specific user-awareness advisory naming the exact sequence: no legitimate site ever asks a user to press Win+R (or open Terminal) and paste a command to "verify you are human" or "fix an error." Framework: MITRE M1017 (User Training). Verify: track advisory acknowledgment/click-through rate.
- Pilot Microsoft Defender ASR rule "Block execution of potentially obfuscated scripts" (GUID
5beb7efe-fd9a-4556-801d-275e5ffc04cc) in Audit mode on a ring, then move to Block. Framework: MITRE M1038 (Execution Prevention); Microsoft Defender ASR reference rule. Verify:Get-MpPreference | Select-Object AttackSurfaceReductionRules_Ids,AttackSurfaceReductionRules_Actions - Disable the WebClient (WebDAV Redirector) service on workstations without a documented WebDAV business need — closes the UNC-path LOLBin loading vector GULoader used via rundll32 in the reported chain. Framework: MITRE M1042 (Disable or Remove Feature or Program). Verify:
Get-Service WebClientshows Disabled/Stopped on a sample host. - Restrict the Run command (Win+R) via GPO for high-risk populations (shared kiosks, call-center seats) where business need allows it, paired with PowerShell Constrained Language Mode. Framework: MITRE M1038. Verify:
gpresult /rshows the policy applied on a test OU.
- Deploy WordPress-aware file-integrity monitoring / WAF (Wordfence, Sucuri, Imunify360, or equivalent) on any organization-owned WordPress properties, with mandatory scanning of
mu-plugins, theme footer/header/functions files, androbots.txt. Enforce admin MFA and least-privilege plugin accounts. ⚠ No formal CIS Benchmark exists for WordPress specifically — cite OWASP WordPress Security Guidance as the best-practice authority. Verify: scheduled FIM diff report shows zero unexplained changes torobots.txt/mu-pluginsover a rolling 30-day window. - Roll out managed browser-extension allowlisting (Chrome/Edge
ExtensionInstallAllowlistpolicy) via MDM so unauthorized extensions cannot silently persist post-compromise. Framework: MITRE M1038. Verify:reg query HKLM\SOFTWARE\Policies\Google\Chrome\ExtensionInstallAllowlistshows the managed policy present.
Deployable Playbooks
Playbook 1 — Enable PowerShell Script Block Logging (GPO)
Step 1: Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell > "Turn on PowerShell Script Block Logging" = Enabled; link the GPO to the target OU.
Set-GPRegistryValue -Name "EtherHiding-ClickFix-ScriptBlockLogging" ` -Key "HKLM\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" ` -ValueName "EnableScriptBlockLogging" -Type DWord -Value 1
Prerequisites: Domain Admin rights, GPMC access, target OU identified.
Reboot required: No — run gpupdate /force and open a new PowerShell session.
Rollback: Set the policy back to Not Configured/Disabled and run gpupdate /force; purely a logging toggle, no data loss.
Playbook 2 — ASR rule: block execution of potentially obfuscated scripts
# Pilot (Audit) first Set-MpPreference -AttackSurfaceReductionRules_Ids 5beb7efe-fd9a-4556-801d-275e5ffc04cc ` -AttackSurfaceReductionRules_Actions AuditMode # After pilot review, move to enforcement Set-MpPreference -AttackSurfaceReductionRules_Ids 5beb7efe-fd9a-4556-801d-275e5ffc04cc ` -AttackSurfaceReductionRules_Actions Enabled
Prerequisites: Microsoft Defender Antivirus active as (or alongside) the primary AV, Windows 10 1709+/Server 2019+, pilot ring identified.
Reboot required: No.
Rollback: Set-MpPreference -AttackSurfaceReductionRules_Ids 5beb7efe-fd9a-4556-801d-275e5ffc04cc -AttackSurfaceReductionRules_Actions Disabled
Playbook 3 — Disable the WebClient (WebDAV) service
\# Survey for dependency first, then: Set-Service -Name WebClient -StartupType Disabled Stop-Service -Name WebClient -Force
Prerequisites: Confirm no business-critical WebDAV-mapped drives depend on the service (survey the target population first).
Reboot required: No, though users with open WebDAV handles should close them first to avoid an in-flight-transfer interruption.
Rollback: Set-Service -Name WebClient -StartupType Manual; Start-Service -Name WebClient
Playbook 4 — Perimeter block for public blockchain RPC domains
# Example generic proxy/firewall ACL syntax -- adapt to your platform deny dst-domain-category "blockchain-rpc" src-group "all" exclude-group "web3-dev-team" deny dst-domain "polygon-rpc.com,publicnode.com,drpc.org,bnbchain.org,alchemyapi.io,infura.io,ankr.com,quiknode.pro" src-group "all" exclude-group "web3-dev-team"
Prerequisites: Identify and document the dev/Web3 allowlist group before deployment — this is the single biggest source of legitimate breakage.
Reboot required: No.
Rollback: Remove the deny rule / re-enable resolution for the affected domain category.
Containment Runbook
| Phase | Actions | Owner | Evidence to preserve |
|---|---|---|---|
| Isolate | Network-contain the endpoint that executed the Run-dialog/Terminal paste command (Falcon RTR network containment or equivalent). Block confirmed atomic domains (§4) at DNS/proxy/firewall immediately. Suspend/rotate credentials for any account whose session touched the endpoint after the execution timestamp. | IR / SOC on-call | Full ProcessRollup2 chain, network-containment timestamp, list of blocked domains |
| Eradicate | Identify and pull (via RTR) the dropped RAT/backdoor binary, GULoader-staged DLL, or malicious Node.js payload before deletion. Remove any unauthorized browser extension and reset Secure Preferences/extension policy state. Remove persistence (scheduled task, startup LNK, malicious mu-plugin file on an org-owned WordPress asset). Rotate all credentials and cryptocurrency wallet keys reachable from the endpoint. | IR / Endpoint engineering | Preserved sample (hash + binary), persistence-artifact listing, credential-rotation ticket references |
| Recover | Rebuild/reimage the endpoint from a known-good image if backdoor/RAT execution is confirmed — do not trust in-place cleanup for an eval()-capable RAT. Restore the WordPress site from a clean backup if organization-owned; patch core/theme/plugins; force-reset all admin credentials. Re-enable network access only after 72 hours with no further Q3/Q5 beacon traffic from the host. | Endpoint engineering / Web team | Reimage confirmation, WordPress restore log, 72-hour clean-beacon confirmation |
Detection Coverage Map
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1204.004 | ClickFix paste-and-run | Q1, Q2 | Q2 candidate | Good |
| T1059.001 | Hidden-window PowerShell IEX(IRM) | Q2 | Candidate | Good |
| T1218.011 | rundll32 UNC ordinal-export LOLBin | Q4 | Candidate | Good |
| T1071.001 / T1583.001 | Known stager/C2 domain contact | Q5 | Candidate (block) | Good — but perishable, needs refresh cadence |
| T1102 | EtherHiding blockchain RPC resolution | Q3 | Investigate only | Partial — only visible when the browser sits on a Falcon-monitored endpoint; FP tuning required |
| T1053.005 | Per-minute scheduled-task persistence | Q6 | Investigate only | Partial |
| T1574.002 | MSI → signed binary → sideloaded DLL | Q8 | Investigate only | Partial |
| T1204.004 (macOS) | Terminal → Node.js RAT loader | Q7 | Investigate only | Partial — macOS sensor only |
| T1176 / T1555.003 | Malicious browser extension persistence & credential theft | None | n/a | GAP — Falcon endpoint events don't fingerprint extension-manifest/Secure-Preferences content; rely on MDM allowlisting (§7, §12) |
| T1189 | WordPress robots.txt / mu-plugin injection (initial access) | None | n/a | GAP — no Falcon endpoint telemetry assumed on the web server; native audit-log hunt required (§7) |
| T1027 / T1140 | Client-side XOR/Base64 obfuscation of the loader JS | None directly | n/a | Partial — occurs inside the browser JS engine, outside Falcon process telemetry; only the resulting spawned process (Q1/Q2) is visible |
Before promoting any query past investigate-only, confirm the Detection Validation Gates in §11 (telemetry readiness, benign baseline, positive test, IOC freshness) have all passed for your tenant.
Hunt Summary Ticket
TITLE: EtherHiding ClickFix -- Blockchain-Hidden C2 Delivery Chain SEVERITY: High / active, multi-vendor-corroborated campaign family DATE: 2026-08-16 VERSION: v0.1 SCOPE: Windows and macOS endpoints; organization-owned WordPress infrastructure HYPOTHESIS: A user paste-and-run action (ClickFix) triggers a hidden-window PowerShell/rundll32/Terminal execution chain whose C2 configuration is resolved from a public Polygon or BNB Smart Chain smart contract (EtherHiding), making domain/IP blocking alone insufficient. QUERIES: Q1 ClickFix paste pattern; Q2 hidden-window IEX(IRM); Q3 blockchain RPC calls; Q4 rundll32 UNC LOLBin; Q5 known stager/C2 domains; Q6 per-minute schtasks persistence; Q7 macOS Node.js RAT loader; Q8 MSI/DLL sideload DO FIRST: Run Q2, Q4, Q5 as the highest-confidence triage; correlate any hit against Q3 (blockchain RPC) to confirm the EtherHiding stage; treat any positive host as compromised pending investigation. EXPECTED FINDINGS: hidden-window PowerShell/rundll32 execution off explorer.exe/Terminal, DNS hits to public RPC gateways or the atomic domains in section 4, or a per-minute scheduled task spawned from PowerShell. GAPS: No Falcon endpoint visibility on the WordPress compromise stage or browser-extension tampering; client-side blockchain-read and XOR decode happen entirely inside the browser JS engine. ACTIONS: Enable PowerShell Script Block Logging; block outbound blockchain-RPC domains for non-dev subnets; publish the ClickFix user-awareness advisory; pilot the obfuscated-script ASR rule; disable WebClient where unused. OWNER: Detection Engineering / Incident Response FOLLOW-UP: Re-hunt weekly against a refreshed IOC set -- this family's domains rotate every 2-7 days.
Changelog
References
Tradecraft in the flagship instance is reported to align with DPRK cluster UNC5342 / Contagious Interview per AllSecure's analysis. This is a distinct delivery/C2 mechanism (ClickFix + blockchain-hosted EtherHiding C2) from the already-published Contagious Interview / BeaverTail HuntPack, which covers fake job-interview coding-challenge delivery via npm/PyPI — the two packs should be run together for full UNC5342-linked coverage but do not overlap in detection content.