TLP:CLEAR — unlimited disclosure · may be redistributed without restriction

Public Advisory · SL-ADV-2026-V13

A loader that is never the same file twice

A ClickFix social-engineering campaign staged from AS202412 delivers a multi-stage .NET loader that is recompiled both on the operator's server and again on the victim's own machine. Every infection produces new file hashes. Hash-based detection does not work against it, and this advisory explains what does.

Advisory
SL-ADV-2026-V13
Published
2026-07-23
Severity
HIGH
Status
Active
Attribution
AS202412
Version
1.0 (public)

What is happening

A social-engineering lure served from compromised third-party websites.

Visitors to certain compromised legitimate websites are shown a counterfeit "verify you are human" challenge that imitates a well-known bot-protection service. The page silently places a command into the visitor's clipboard and instructs them to paste and run it. This technique is commonly called ClickFix.

The pasted command is wrapped in comment markers so that the portion visible in the Windows Run dialog resembles a harmless diagnostic reference number. A user who follows the instructions triggers a chain that retrieves and executes a multi-stage payload.

The lure includes instruction text localised into multiple languages, indicating a broad international campaign rather than targeting of any single country or sector.

The lure is convincing by design

The counterfeit challenge is a close visual copy of a legitimate one. The reliable distinction is behavioural: a genuine bot-protection challenge never asks the user to copy, paste, or run anything. Any "verification" page that instructs a visitor to open the Run dialog or a terminal is malicious, regardless of appearance.

Why file hashes will not help you

Two independent layers of per-infection uniqueness.

Most malware campaigns can be partially blocked by known-bad file hashes. This one defeats that approach twice over, through two separate mechanisms operating at different points in the chain.

Layer one — server-side rebuild

The loader served to each visitor carries a compilation timestamp that postdates the visitor's own session identifier, by roughly five minutes in observed cases and reproduced across separate sessions. The operator compiles the outer wrapper after the request for it arrives. The internal module name is also regenerated per build, following a consistent short pattern, while the functional core remains constant and is several days older.

Layer two — compilation on the victim's machine

After execution begins, the chain invokes the .NET compiler already present on Windows to build a small helper component on the victim host at runtime. This component is a minimal launcher: it allocates memory, starts a thread, and waits. It contains no payload of its own — the executable content is supplied in memory and is never written to disk. Its class and module names are randomised on every execution, so two runs minutes apart on the same machine produce two different files with the same behaviour.

Practical consequence

Any detection strategy resting primarily on file hashes will miss this campaign. Hashes of the stable inner components retain some value; hashes of the outer loader and the runtime-built launcher are effectively single-use and should not be deployed as primary signatures.

What to detect instead

Ranked by how well each survives the campaign's rebuild mechanisms.

Signature durability — highest to lowest
Strong
Anomalous runtime hosting in system processes

A Windows service host process loading the legacy .NET runtime (version 2.0.50727) is not normal behaviour. This is visible in ordinary .NET runtime binding logs and requires no memory forensics or specialist tooling. Notably, that runtime version predates in-runtime antimalware scanning of loaded assemblies, so its use also frustrates that protection.

Strong
Malformed executable header on the loader

The loader begins with a four-byte signature where a standard Windows executable header is expected, while remaining structurally valid further in. This is a byproduct of the packing tool and has stayed constant across many versions of this family. It survives both rebuild layers.

Strong
Network destinations

Domains and address ranges in section 04. Durable for as long as the operator retains the infrastructure, and independent of any file-level change.

Moderate
Clipboard write followed by an interpreter launch

A browser process writing to the clipboard, followed shortly by a scripting interpreter starting with a network-retrieval command pointed at a bare IP address. Strong behavioural signal, but requires endpoint telemetry to observe.

Moderate
Import pattern of the runtime-built launcher

The generated helper always imports the same small set of memory-allocation and thread-creation functions, in a very small file. The names change every run; the import set does not.

Weak
File hashes of the outer loader

Single-use by design. Useful only for retrospective correlation between samples, never as a blocking signature.

Indicators

Operator-controlled infrastructure only.

Domains and addresses

IndicatorResolves toRole
senterprise2026.com158.94.211.92Payload staging
dntds.shop178.16.53.137Command and control
158.94.211.92AS202412Payload staging (HTTP)
178.16.53.137AS202412Command and control (HTTPS)

Neither address was observed initiating inbound connections. They are outbound destinations only and will not appear in inbound-facing telemetry.

Announced ranges of the hosting network (AS202412)

130.12.180.0/24   146.19.125.0/24   158.94.208.0/24   158.94.209.0/24
158.94.210.0/24   158.94.211.0/24   178.16.52.0/24    178.16.53.0/24
178.16.54.0/24    178.16.55.0/24    193.30.241.0/24   45.132.180.0/24
45.74.7.0/24      91.92.240.0/24    91.92.241.0/24    91.92.242.0/24
91.92.243.0/24    94.154.35.0/24    94.154.46.0/24    94.26.38.0/24

Monitoring the full set is recommended. The operator has demonstrated a pattern of announcing ranges before putting them into service.

Retrieval path pattern

/std/?sid=<13-digit epoch milliseconds>-<8 alphanumeric characters>

File hashes (SHA-256)

ComponentSHA-256Signature value
Core payload assemblybd38547ca14e76996594f274ee19feaf20dafc4f27309ad4bbcf72ce3088f3bfStable — highest value
Injector component6270f38bdf27aebb108331a484220a8bc0b9a1e6a2c4bba6dad89a2f3665bca5Stable — usable
Outer loaderb3364defc07f3323fb3e9cda37cdf6c0fe60428512e78c22f7166703f8d17a21Single-use — correlation only

Do not block these

Two categories where over-blocking causes real harm.

1 · Public blockchain RPC providers

The campaign retrieves data from a public smart contract through a legitimate, widely used blockchain RPC service. That service is not malicious and must not be blocklisted. Doing so breaks unrelated legitimate applications for other users. The useful signal is the anomaly of a corporate endpoint contacting a blockchain RPC at all — not the provider's existence. Note also that this retrieval channel cannot be removed by registrar or hosting action, because the data resides on a public distributed ledger.

2 · Compromised websites hosting the lure

The lure is served from legitimate websites that have themselves been compromised. Their operators are victims, not participants. They should not be blocklisted, named in public threat feeds, or reported as malicious infrastructure. Several such sites provide public-interest information, and blocking them harms the people who rely on them while doing nothing to inconvenience the operator, who simply compromises another host.

The appropriate response on discovering such a site is private notification to its operator and to the relevant national or sectoral CERT, allowing a remediation window before any public reference.

Recommended actions

In order of effort against benefit.

What this advisory does not claim

Stated explicitly so the gaps are not filled in by inference.

The final objective of the campaign is unresolved. The payload delivered from the command-and-control server is loaded directly into managed memory and does not appear in conventional memory captures of suspicious regions. Its configuration is encrypted and has not been recovered. This advisory therefore makes no claim as to whether the final stage is a credential stealer, a remote access tool, or a loader for further payloads.

No claim is made regarding theft of any specific category of data. No claim is made that any named organisation was breached beyond the website compromise described in general terms. Where evidence was insufficient to support a conclusion, no conclusion is offered.

On revision

Findings here are drawn from static analysis of samples and observation of network behaviour. Assessments described as reproduced were confirmed across more than one independent execution. Anything not so described should be treated as a single-observation finding. This advisory will be revised if the final-stage objective is established, and corrections will be marked rather than silently applied.

Technique summary

Mapped to MITRE ATT&CK for coverage assessment.

IDTechniqueUse in this campaign
T1189Drive-by CompromiseLure served from compromised legitimate sites
T1204.004Malicious Copy and PasteClipboard-delivered command, user-executed
T1059.001PowerShellStaging and execution
T1027Obfuscated Files or InformationEncrypted configuration; per-request rebuild
T1027.004Compile After DeliveryRuntime compilation on the victim host
T1055Process InjectionInjection into standard system processes
T1620Reflective Code LoadingFinal stage loaded into managed memory
T1102.001Dead Drop ResolverData staged in a public smart contract
T1562.001Impair DefensesLegacy runtime avoids assembly scanning