ClickFix Cache Smuggling (Firefox Cache Size-Match)
Executive Summary
Attacker objective: steal browser and device credentials from Windows users who can be talked into pasting a command into the Run dialog. The distinctive part of this campaign is how the payload arrives. Compromised websites pre-fetch a script into the visitor's browser cache, disguised as a PNG image. When the victim later follows a fake Cloudflare human-verification prompt and pastes the supplied command into Run, that command does not download anything. It only has to locate a payload that is already on disk.
That design defeats two defensive assumptions at once. First, the Run dialog truncates input at roughly 260 characters, which normally limits how much logic a ClickFix command can carry. A locate-and-launch command is short enough to fit. Second, the payload never traverses the network at execution time, so download-based detections, proxy logs and DNS telemetry for the first stage see nothing.
Per the reporting on Microsoft Threat Intelligence's findings, the command enumerates files whose names begin with f_ under the Firefox profile folders, compares each file's byte length to an expected value (earlier cache-smuggling variants searched for a content marker instead), copies the match to %LOCALAPPDATA%\Temp\t.vbs and runs it with wscript.exe. Follow-on stages are PowerShell, .NET code compiled on the victim host and injected into the legitimate timeout.exe, and a scheduled task that launches a Python payload. Three C2 domains were published.
Attribution: Microsoft did not attribute this campaign to a named actor, and this pack does not either. The press coverage also states that Microsoft did not say which credential stealer sits at the end of the chain. One secondary article connects ClickFix fake-CAPTCHA pages to Vidar Stealer in general (a separate CTM360 statistic), but no cited source ties Vidar to this chain, so this pack does not claim it.
Highest-value defensive angle: hunt the endpoint artifacts, not the download. The Run dialog records every pasted command in the RunMRU registry key, which is a near-zero-false-positive signal for any ClickFix variant. After that, the process tree is unusually clean to describe: explorer.exe to cmd.exe (cache enumeration) to wscript.exe running t.vbs from Temp, then PowerShell under wscript.exe, and a timeout.exe that resolves DNS names (it never legitimately does).
Defender priority: treat any host with a Run-dialog command that touches Firefox\Profiles as a credential-theft incident, not a malware cleanup. Stolen browser credentials and session material outlive the endpoint. Revoke sessions and rotate credentials for the user before closing the host ticket. Note that the staging step targets Firefox cache paths in the reported variant, but the lure can be shown on any browser, so users on other browsers are not exempt from the credential-theft stages.
Source Review & Web Hunter Notes
| Tier | Source | Key Finding | Carry Forward |
|---|---|---|---|
| 2 | The Hacker News, "ClickFix smuggles payloads through the browser cache" (2026-10) | Most complete technical write-up retrieved: f_ prefix enumeration, byte-length match, copy to %LOCALAPPDATA%\Temp\t.vbs, wscript.exe, v.ps1 from the first C2 domain, cab.dat, injection into timeout.exe, all three C2 domains, Microsoft's hunting advice. | Yes. Source of the IOC table. Its attribution section (Stardust Chollima, Sandworm) concerns other ClickFix clusters and is NOT used. |
| 2 | iTnews, "Microsoft spots new twist on ClickFix cache smuggling" (2026-10-06) | Corroborates the chain and all three C2 domains. Adds: lure posed as a Cloudflare human-verification check, expected size varied between variants, .NET code compiled on the victim, scheduled task launching a Python payload, and explicitly that Microsoft named no actor and no final stealer. | Yes. Second source for the three domains. Basis for the "no attribution" statement. |
| 3 | GBHackers, "Microsoft warns ClickFix attacks use fake CAPTCHA" | Thin corroboration: cache pre-staging disguised as PNG, Firefox profile search, VBScript conversion, PowerShell policy change, Python component, scheduled task. No indicators. | Partial. Behavior corroboration only. |
| 3 | Crimson7, "Browser cache smuggling and ClickFix" | Describes a different cache-smuggling variant (image/jpeg content type, random hex cache filename, .cmd copy). Useful for explaining the general technique and why no download event occurs. | Background only. No indicators taken from it. |
| 2 | CyberSecurityNews, "ClickFix fake CAPTCHA attack executes malware hidden inside browser cache" (2026-10-05) | Fourth outlet, corroborates all three C2 domains, the f_ prefix, the Firefox profile path, t.vbs, v.ps1 and cab.dat. Adds four executables the other sources omit: csc.exe, cvtres.exe, tar.exe and pythonw.exe. Pins Microsoft's disclosure to a 2026-10-03 @MsftSecIntel thread. States its indicators are deliberately defanged. | Yes. Upgraded Q7 from inference to sourced, and named pythonw.exe in Q8. |
| 1 | Microsoft Threat Intelligence primary post / @MsftSecIntel thread | Searched but not retrieved. Microsoft published this through an @MsftSecIntel thread on 2026-10-03 rather than a security-blog post, which is why no blog URL exists to cite. Every source below is an outlet relaying that thread. | No. Everything here is second-hand until the thread itself is read. |
Hunter notes & deliberate omissions
- The primary Microsoft post was not reachable, and the Expel write-up of the original cache-smuggling technique returned only truncated content. Microsoft disclosed this through an
@MsftSecIntelthread on 2026-10-03, not a security-blog post, so there is no first-party article to cite. This pack is therefore built on press coverage and says so in the Confidence field. Re-grade it if Microsoft publishes a full write-up. - The three domains are single-lineage. Four outlets now list them, but all four relay the same Microsoft thread, so outlet count is not independent confirmation of the indicators themselves. All three ship as detect, never prevent, and this is the reason.
- Not the published DOUBLECUP pack. DOUBLECUP, already covered by
DOUBLECUP-ClickFix-LaaS-Hunt.html, is a separate ClickFix-as-a-service cluster reported by SOCRadar on 2026-08-03 that also hides payloads in cached PNGs. It differs on mechanism and infrastructure: it extracts withfindstrorcertutil, impersonates SaaS login pages (NetSuite, Odoo, HubSpot, Salesforce), and runs on its own panel infrastructure, which is listed in that pack rather than repeated here. It does not enumeratef_-prefixed Firefox profile files and shares no infrastructure with this campaign. Cache smuggling is now a technique used by more than one unrelated actor, so treat the two packs as complementary rather than overlapping. - No file hashes and no expected-size values are published. The expected byte length varies per variant, so the pack hunts the size-comparison behavior and does not assert a size. The IOC CSV carries explicit
REPLACE_WITH_SHA256placeholders rather than invented values. - The Run-dialog command string is intentionally not reproduced. Its structure is described (recursive enumeration of
f_files in the Firefox profile folder, byte-length comparison, copy to a.vbsin Temp,wscript.exelaunch) and its artifacts are hunted. - Out of scope by design: GeniexLoader, GeniexRAT and the actor Stardust Chollima / BlueNoroff belong to separate CrowdStrike reporting about a different ClickFix cluster that the Hacker News article lists alongside this campaign. They are not part of this Microsoft campaign and no indicator from them is shipped here.
- .NET compile-on-host: the sources say .NET code is compiled on the victim. They do not name the compiler. Q7 hunts the generic mechanisms (
csc.exe/vbc.exeunder a script host) and is labelled an inference.
Hunt Brief & Attack Chain
Hypotheses (ordered by fidelity)
| ID | Hypothesis | MITRE | Falcon events | Confidence |
|---|---|---|---|---|
| H1 | A user pasted a command into the Run dialog that references the Firefox profile folder and copies or launches a script. RunMRU holds the evidence. | T1204.004 | RegGenericValueUpdate | HIGH |
| H2 | cmd.exe launched from explorer.exe is enumerating the Firefox profile folder and copying a result to a script file. | T1059.003, T1083 | ProcessRollup2 | HIGH |
| H3 | wscript.exe is executing t.vbs from the user's Temp folder. | T1059.005 | ProcessRollup2 | HIGH |
| H4 | A script host is spawning PowerShell (the v.ps1 stage), possibly with an execution-policy change. | T1059.001 | ProcessRollup2 | MEDIUM |
| H5 | timeout.exe is resolving DNS names, which it never does legitimately, indicating injected code. | T1055 | DnsRequest | HIGH |
| H6 | timeout.exe is running under a script-host or Python parent instead of a batch file or console. | T1055, T1036 | ProcessRollup2 | MEDIUM |
| H7 | A compiler is invoked by a script host to build .NET code on the victim. | T1027.004 | ProcessRollup2 | MEDIUM |
| H8 | A scheduled task is registered that launches a Python interpreter from a user-writable path. | T1053.005, T1059.006 | ScheduledTaskRegistered, ProcessRollup2 | MEDIUM |
| H9 | An endpoint resolved one of the three published C2 domains. | T1071.001 | DnsRequest | HIGH |
Attack chain
| Step | Behavior | Telemetry | Hunt angle |
|---|---|---|---|
| 1 | Visitor lands on a compromised site; script payload is pre-fetched into the browser cache disguised as a PNG | Browser, proxy (subresource load, no download prompt) | No reliable endpoint signal. Accepted gap. |
| 2 | Fake Cloudflare verification instructs the user to open Run, paste and press Enter | Registry (RunMRU) | Q1, Q10 |
| 3 | cmd.exe recursively enumerates f_* files under the Firefox Profiles folder and compares byte length to an expected value | Process creation (command line) | Q2 |
| 4 | The size-matching cache entry is copied to %LOCALAPPDATA%\Temp\t.vbs | Process command line (file-write event not relied upon) | Q2, Q3 |
| 5 | wscript.exe runs the VBScript, which harvests host information via WMI | Process creation | Q3 |
| 6 | PowerShell stage (v.ps1) retrieved from the first C2 domain; further payload (cab.dat) fetched | Process creation, DNS | Q4, Q9 |
| 7 | .NET code compiled on the host and injected into timeout.exe; browser and device credentials targeted | Process creation, DNS | Q5, Q6, Q7 |
| 8 | Second-stage retrieval and connections to the remaining C2 domains | DNS | Q9 |
| 9 | Persistence via a scheduled task launching a Python payload | Scheduled task, process creation | Q8 |
Consolidated IOC Table
Specificity warning: t.vbs, v.ps1 and cab.dat are generic filenames. Hunting the bare name will produce false positives and miss renamed variants. They are listed as low-specificity context and are hunted in this pack only in combination with parent process, path and behavior.
| Type | Value | Confidence | Action | Context | Expiry |
|---|---|---|---|---|---|
| domain | cocojambo[.]us[.]com | medium | detect | Hosts the PowerShell stage (v.ps1) at path /alfa. Two press sources, both relaying Microsoft. | 2027-04-06 |
| domain | capsysnet[.]vg | medium | detect | Second in-memory stage retrieval. Two press sources, both relaying Microsoft. | 2027-04-06 |
| domain | ciliabula[.]cc | medium | detect | Connections established by the injected stage. Two press sources, both relaying Microsoft. | 2027-04-06 |
| url path | /alfa on cocojambo[.]us[.]com | low | enrich | Path only; not distinctive without the host. | 2026-11-06 |
| file path | %LOCALAPPDATA%\Temp\t.vbs | low | hunt | Low-specificity. Hunt only with parent cmd.exe/explorer.exe and wscript.exe execution (Q3). | 2027-01-06 |
| filename | v.ps1 | low | enrich | Low-specificity. PowerShell stage name; hunt via script-host parentage (Q4). | 2026-11-06 |
| filename | cab.dat | low | enrich | Low-specificity. Next-stage payload name; no standalone hunt. | 2026-11-06 |
| process | timeout.exe | low | hunt | Legitimate Windows binary used as an injection target. Never block. Hunt DNS activity and unusual parents (Q5, Q6). | 2027-01-06 |
| registry | ...\Explorer\RunMRU | high | hunt | Records the pasted Run-dialog command. Primary forensic artifact for every ClickFix variant (Q1, Q10). | 2027-01-06 |
| path pattern | %LOCALAPPDATA%\Mozilla\Firefox\Profiles\ files named f_* | medium | hunt | Cache folder the command enumerates. Legitimate browser data; the signal is a command line that enumerates it (Q1, Q2). | 2027-01-06 |
| sha256 | REPLACE_WITH_SHA256 | n/a | hunt | No hash or expected cache-file size published. Populate from your own confirmed samples. | n/a |
Affected Surface & Telemetry Matrix
| Surface | Telemetry | Priority | Gap risk |
|---|---|---|---|
| Run dialog history | Falcon RegGenericValueUpdate on RunMRU | HIGH | Medium. Confirm registry telemetry for the RunMRU key reaches your tenant (gate G1). |
| Process execution | Falcon ProcessRollup2 / SyntheticProcessRollup2 | HIGH | Low. Carries the whole execution chain. |
| DNS resolution | Falcon DnsRequest | HIGH | Low, unless encrypted DNS blinds the sensor. |
| Scheduled tasks | Falcon ScheduledTaskRegistered; Windows Event 4698 | MEDIUM | Medium. Field population varies by sensor version. |
| PowerShell | Script block logging (4104), module logging (4103) | MEDIUM | High. Often not enabled; Microsoft names it explicitly as a hunt source. |
| Browser cache staging | none practical | MEDIUM | Accepted gap. The cache write is a normal subresource load with no download event. |
| In-process injection into timeout.exe | Indirect only (DNS from timeout.exe, odd parentage) | MEDIUM | High. Detect around the injection, not the injection. |
ATT&CK Mapping
| Tactic | Technique | Observed behavior | Query / control |
|---|---|---|---|
| Initial Access | T1189 Drive-by Compromise | Compromised websites serve the lure and pre-fetch the cached payload | Hardening N1; no endpoint query |
| Execution | T1204.004 Malicious Copy and Paste | User pastes the command into Run | Q1, Q10, I2 |
| Defense Evasion | T1036.008 Masquerade File Type | Script payload cached as a PNG | Accepted gap |
| Discovery | T1083 File and Directory Discovery | Recursive enumeration of f_* files in Firefox profile folders by size | Q1, Q2 |
| Execution | T1059.003 Windows Command Shell | cmd.exe performs enumeration and copy | Q2 |
| Execution | T1059.005 Visual Basic | wscript.exe runs t.vbs | Q3, I3 |
| Execution | T1059.001 PowerShell | v.ps1 and later stages | Q4, I4 |
| Defense Evasion | T1027.004 Compile After Delivery | .NET code compiled on the victim host | Q7 |
| Defense Evasion | T1055 Process Injection | Injection into legitimate timeout.exe | Q5, Q6 |
| Credential Access | T1555.003 Credentials from Web Browsers | Browser and device credential targeting | Containment C3; no direct query |
| Command and Control | T1071.001 Web Protocols | Stage retrieval and C2 over three domains | Q9 |
| Persistence | T1053.005 Scheduled Task; T1059.006 Python | Scheduled task launching a Python payload | Q8 |
Native Audit-Log Hunts (non-CQL)
- N1 · RunMRU on a suspect host. In the user's registry hive, review
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU. Any entry containingFirefoxandProfiles, or a script host and a Temp path, is a confirmed lure execution. This is the artifact Microsoft names for every ClickFix variant. - N2 · Temp folder and cache triage. On a suspect host list
$env:LOCALAPPDATA\Temp\*.vbsand compare against the Firefox cache2 entries that begin withf_under$env:LOCALAPPDATA\Mozilla\Firefox\Profiles(match by length). Preserve before deleting. - N3 · PowerShell logs. Search Event 4104 for script blocks whose parent was
wscript.exe, and for execution-policy changes shortly after at.vbsrun. Requires script block logging. - N4 · Scheduled tasks.
Get-ScheduledTask | Where-Object { $_.Actions.Execute -match 'python' }and review each task's action path and author. Event 4698 gives the registration time. - N5 · Proxy and DNS logs. Sweep for the three domains (section 10). Remember the first stage produces no network event, so proxy logs only show the follow-on stages.
- N6 · Identity plane. For any confirmed host, review sign-ins for the user across SaaS for new locations or token replay after the execution time.
CrowdStrike LogScale CQL Hunt Queries
All ten queries describe behavior reported for this campaign and are written against the Falcon data model. The first stage produces no network event, so none of these depend on a download. Every filename match uses the FileName basename field and directories are matched with a separator-free pattern such as Firefox.{1,2}Profiles, so no path slash is needed inside a regex. Run Q1 first: it fires upstream of execution.
Looks for: the lure itself. Windows records every Run-dialog entry in RunMRU, so a pasted cache-smuggling command that names the Firefox Profiles folder alongside a script or copy action is logged even if the later stages fail. Fires upstream of execution and works whatever the expected cache-file size is.
// HUNT: Run-dialog paste referencing Firefox Profiles with script or copy action (ClickFix cache smuggling) // MITRE: T1204.004, T1083 // CONF: high | FP: low | COST: low | REQUIRES: registry telemetry (RunMRU writes) // FALSE POSITIVES: an administrator typing a legitimate profile-cleanup command into Run // TUNING: exclude your IT admin asset group if it types such commands into Run #event_simpleName=/^(RegGenericValueUpdate|AsepValueUpdate|RegSystemConfigValueUpdate)$/ | RegObjectName=/RunMRU/i | RegStringValue=/Firefox.{1,2}Profiles/i | RegStringValue=/(\.vbs|wscript|cmd|copy|for\s)/i | table([@timestamp, ComputerName, UserName, RegObjectName, RegValueName, RegStringValue, aid], limit=200)
Looks for: the size-match locate step. A command shell started by the Run dialog (parent explorer.exe) whose command line names the Firefox Profiles folder together with a script extension, wscript or a copy. No legitimate workflow pairs these.
// HUNT: cmd.exe from explorer enumerating Firefox Profiles and staging a script (cache smuggling locate step) // MITRE: T1059.003, T1083, T1204.004 // CONF: high | FP: low | COST: low | REQUIRES: ProcessRollup2 // FALSE POSITIVES: rare; a user script that backs up Firefox profile data by hand // TUNING: none expected; review any hit manually #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/ | FileName=/^cmd\.exe$/i | ParentBaseFileName=/^explorer\.exe$/i | CommandLine=/Firefox.{1,2}Profiles/i | CommandLine=/(\.vbs|wscript|copy)/i | table([@timestamp, ComputerName, UserName, GrandparentBaseFileName, ParentBaseFileName, FileName, CommandLine, aid], limit=200)
Looks for: the staged cache entry being run as VBScript. t.vbs alone is a weak indicator, so the match requires the Windows Script Host binary, a Temp directory in the command line and a command shell or Explorer parent. Renamed variants will evade the filename; the parentage and path are the durable part, so see the commented widening option.
// HUNT: wscript.exe executing a one-letter t.vbs from Temp (cache smuggling staged script) // MITRE: T1059.005, T1204.004 // CONF: high | FP: low | COST: low | REQUIRES: ProcessRollup2 // FALSE POSITIVES: very rare; a user script that happens to be named t.vbs in Temp // TUNING: to hunt renamed variants, replace the t.vbs filter with any .vbs under Temp and add exclusions for your login scripts #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/ | FileName=/^wscript\.exe$/i | CommandLine=/Temp.{1,2}t\.vbs/i | ParentBaseFileName=/^(cmd|explorer|conhost)\.exe$/i | table([@timestamp, ComputerName, UserName, GrandparentBaseFileName, ParentBaseFileName, FileName, CommandLine, aid], limit=200)
Looks for: the hand-off from the VBScript to PowerShell. The reported chain fetches the PowerShell stage and adjusts the PowerShell execution policy. FP: medium. Some legacy login and inventory scripts launch PowerShell from VBScript; baseline them and exclude by script path or account.
// HUNT: PowerShell launched by wscript or cscript (cache smuggling v.ps1 stage) // MITRE: T1059.001, T1059.005 // CONF: medium | FP: medium | COST: low | REQUIRES: ProcessRollup2 // FALSE POSITIVES: legacy VBScript login or inventory scripts that call PowerShell // TUNING: exclude known script paths or service accounts below; keep the Temp and ExecutionPolicy filters as the high-signal tier #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/ | FileName=/^(powershell|pwsh)\.exe$/i | ParentBaseFileName=/^(wscript|cscript)\.exe$/i // narrow to the high-signal tier by uncommenting: // | CommandLine=/(Temp|ExecutionPolicy|Bypass|Hidden)/i | table([@timestamp, ComputerName, UserName, GrandparentBaseFileName, ParentBaseFileName, FileName, CommandLine, aid], limit=200)
Looks for: the injection result. timeout.exe only waits; it has no reason to resolve a hostname. DNS activity attributed to it means foreign code is running inside it. timeout.exe is a legitimate Windows binary: use this to detect and investigate, never to block the binary.
⚠ Validate in tenant: process attribution on DnsRequest (ContextBaseFileName) depends on sensor version. If it is empty in your tenant, correlate on ContextProcessId against ProcessRollup2 instead.
// HUNT: timeout.exe resolving DNS names (injected process, cache smuggling credential-theft stage) // MITRE: T1055, T1071.001 // CONF: high | FP: low | COST: low | REQUIRES: DnsRequest with process context (validate in tenant) // FALSE POSITIVES: none expected; timeout.exe performs no network lookups // TUNING: none expected; treat every hit as an incident until proven otherwise #event_simpleName=DnsRequest | ContextBaseFileName=/^timeout\.exe$/i | table([@timestamp, ComputerName, UserName, ContextBaseFileName, DomainName, aid], limit=200)
Looks for: a sacrificial timeout.exe started by something other than a console or batch file, which is how an injection target is typically created. FP: medium. VBScript and Python automation sometimes shell out to timeout as a sleep. PowerShell is deliberately excluded because admin scripts call it constantly.
// HUNT: timeout.exe started by a script host, Python or proxy-execution binary (injection target creation) // MITRE: T1055, T1036 // CONF: medium | FP: medium | COST: low | REQUIRES: ProcessRollup2 // FALSE POSITIVES: VBScript or Python automation that uses timeout as a sleep // TUNING: exclude your known automation script paths in ParentCommandLine or the owning service account; pair any hit with Q5 and Q3 #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/ | FileName=/^timeout\.exe$/i | ParentBaseFileName=/^(wscript|cscript|mshta|python|pythonw|rundll32|regsvr32)\.exe$/i | table([@timestamp, ComputerName, UserName, GrandparentBaseFileName, ParentBaseFileName, FileName, CommandLine, aid], limit=200)
Looks for: on-host compilation. CyberSecurityNews names both csc.exe and cvtres.exe in this chain. cvtres.exe is the resource-file converter that the C# compiler itself invokes, so the pair together is direct evidence of csc.exe compilation rather than an inference, which is why this query is now sourced rather than inferred. vbc.exe is kept as a variant hedge. tar.exe is included because the same source names it, consistent with the cab.dat next stage being unpacked by the built-in bsdtar. FP: medium, since admin and some management scripts use Add-Type, and tar.exe has legitimate uses.
// HUNT: .NET compiler or archive tool launched by a script host (compile-on-victim stage) // MITRE: T1027.004, T1059.001, T1140 // CONF: high | FP: medium | COST: low | REQUIRES: ProcessRollup2 // SOURCE: csc.exe, cvtres.exe and tar.exe are named in the CyberSecurityNews indicator list // FALSE POSITIVES: administrative PowerShell using Add-Type; some software installers and management agents; legitimate tar.exe use // TUNING: exclude management-agent parents and your admin asset group; prioritise hits within an hour of a Q3 or Q4 hit on the same aid. Drop the tar branch first if it is noisy, it is the weakest of the three #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/ | FileName=/^(csc|vbc|cvtres|tar)\.exe$/i | GrandparentBaseFileName=/^(wscript|cscript|powershell|pwsh)\.exe$/i or ParentBaseFileName=/^(wscript|cscript|powershell|pwsh)\.exe$/i | table([@timestamp, ComputerName, UserName, GrandparentBaseFileName, ParentBaseFileName, FileName, CommandLine, aid], limit=200)
Looks for: the reported persistence: a scheduled task that launches a Python payload. CyberSecurityNews names pythonw.exe specifically, the windowless interpreter, which is the more suspicious of the two on a non-developer endpoint because it runs with no console. No task name or interpreter path is published, so this keys on the interpreter in the task action or on schtasks.exe with Python in its command line. FP: medium, since developer and data teams schedule Python legitimately.
⚠ Validate in tenant: ScheduledTaskRegistered and the TaskName / TaskExecutable fields are sensor-version dependent. The schtasks.exe branch works without them.
// HUNT: scheduled task whose action launches Python (cache smuggling persistence) // MITRE: T1053.005, T1059.006 // CONF: medium | FP: medium | COST: low | REQUIRES: ScheduledTaskRegistered (validate in tenant), ProcessRollup2 // SOURCE: pythonw.exe is named in the CyberSecurityNews indicator list // FALSE POSITIVES: developer, data and automation teams scheduling Python jobs // TUNING: restrict to endpoints without a Python developer baseline; focus on tasks whose executable sits in a user-writable path such as AppData or Temp. pythonw.exe on a non-developer host is the higher-fidelity half of this query #event_simpleName=/^(ScheduledTaskRegistered|ProcessRollup2|SyntheticProcessRollup2)$/ | TaskExecutable=/pythonw?(\.exe)?/i or FileName=/^pythonw\.exe$/i or (FileName=/^schtasks\.exe$/i and CommandLine=/pythonw?/i) | table([@timestamp, ComputerName, UserName, FileName, TaskName, TaskExecutable, TaskAuthor, CommandLine, aid], limit=200)
Looks for: retrospective exposure to the three reported C2 domains. Highly perishable and the first stage never touches the network, so a clean result proves nothing about the early stages. Rely on Q1 to Q8 for coverage.
// HUNT: DNS resolution of the three published campaign domains (atomic IOC sweep) // MITRE: T1071.001 // CONF: high | FP: low | COST: medium | REQUIRES: DnsRequest // SOURCE: The Hacker News and iTnews coverage of the Microsoft Threat Intelligence report, 2026-10-06 // FALSE POSITIVES: none expected; any hit warrants immediate host triage // NOTE: absence of hits is NOT evidence of absence #event_simpleName=/^(DnsRequest|SuspiciousDnsRequest)$/ | DomainName=/(^|\.)(cocojambo\.us\.com|capsysnet\.vg|ciliabula\.cc)$/i | table([@timestamp, ComputerName, UserName, ContextBaseFileName, DomainName, aid], limit=500)
Looks for: other ClickFix variants and later cache-smuggling variants that change the profile path, browser or marker. Any script interpreter or shell typed into Run together with a Temp or AppData reference, a script extension or a remote reference. FP: medium, because administrators legitimately use Run.
// HUNT: interpreter or shell typed into Run with Temp, script or remote reference (ClickFix variant net) // MITRE: T1204.004 // CONF: medium | FP: medium | COST: low | REQUIRES: registry telemetry (RunMRU writes) // FALSE POSITIVES: IT staff running legitimate admin one-liners from Run // TUNING: exclude your admin asset group and privileged accounts; tighten the second filter to \.vbs and Temp for a quieter list #event_simpleName=/^(RegGenericValueUpdate|AsepValueUpdate|RegSystemConfigValueUpdate)$/ | RegObjectName=/RunMRU/i | RegStringValue=/(wscript|cscript|powershell|cmd|mshta)/i | RegStringValue=/(\.vbs|Temp|AppData|http|-enc|Profiles)/i | table([@timestamp, ComputerName, UserName, RegObjectName, RegValueName, RegStringValue, aid], limit=200)
CrowdStrike Custom IOA Recommendations
Four queries are clean enough to promote from hunt to Custom IOA. None of them blocks a legitimate Windows binary: every rule is detect-only, and the pack recommends no prevention action at all, because the only actor-controlled indicators are three domains that rest on one lineage of reporting.
| IOA name | From | Rule group / type | Pattern | Exclusions | Action |
|---|---|---|---|---|---|
| CacheSmuggling, Run-Dialog Firefox Profiles Command | Q1 | Registry Operation (Windows) | RunMRU value containing Firefox and Profiles plus a script or copy keyword | IT admin asset group | Detect: High |
| CacheSmuggling, cmd Enumerating Firefox Profiles | Q2 | Process Creation (Windows) | Image cmd.exe; parent explorer.exe; command line names Firefox Profiles plus .vbs / wscript / copy | None known | Detect: High |
| CacheSmuggling, wscript Running Temp t.vbs | Q3 | Process Creation (Windows) | Image wscript.exe; command line matches Temp path plus t.vbs; shell parent | None known | Detect: High |
| CacheSmuggling, timeout.exe Network Activity | Q5 | Network Connection / DNS (Windows) | Image timeout.exe performing any outbound connection or DNS lookup | None | Detect: High (never Block: stock binary) |
Deployment path
- Endpoint security → Configuration → Custom IOA rule groups. Create a group named for this campaign and attach it to a pilot prevention policy.
- Create each rule in Monitor (detect-only) severity and leave it for one business week.
- Do not raise any rule to Block.
cmd.exe,wscript.exe,timeout.exeand the Firefox binaries are legitimate and a block rule will eventually disrupt benign activity. - The three domains belong in IOC Management as detect entries; import the CSV from section 10.
Investigate-only queries
- Q4, Q6, Q7, Q8, Q10: run as scheduled searches to a hunt queue. Their FP profile needs a local baseline before alerting.
- Correlation is where fidelity lives. Any host hitting two or more of Q1 to Q8 within 24 hours should escalate regardless of the individual ratings.
Machine-Readable IOC Appendix
Read before importing: all three domains import as detect, not prevent. Both articles that list them relay the same Microsoft findings, so they are one lineage of evidence, and the primary post was not retrieved. The SHA256 row is a REPLACE_WITH_SHA256 placeholder because no hash has been published. Generic filenames are deliberately not in the CSV.
type,value,action,severity,expiration,description,tags domain,cocojambo.us.com,detect,high,2027-04-06,ClickFix cache smuggling PowerShell stage host (path /alfa),campaign:ClickFixCacheSmuggling domain,capsysnet.vg,detect,high,2027-04-06,ClickFix cache smuggling second-stage host,campaign:ClickFixCacheSmuggling domain,ciliabula.cc,detect,high,2027-04-06,ClickFix cache smuggling C2 domain,campaign:ClickFixCacheSmuggling sha256,REPLACE_WITH_SHA256,detect,high,2027-04-06,Staged t.vbs payload - NO HASH PUBLISHED,campaign:ClickFixCacheSmuggling
ClickFix cache smuggling - behavioral signatures B1 RunMRU value naming the Firefox Profiles folder plus a script or copy action B2 cmd.exe, parent explorer.exe, command line enumerating Firefox Profiles B3 wscript.exe running a one-letter .vbs from a Temp folder (parent cmd / explorer) B4 powershell.exe parented by wscript.exe or cscript.exe B5 timeout.exe performing DNS lookups or network connections B6 timeout.exe parented by a script host, Python or a proxy-execution binary B7 csc.exe / cvtres.exe / tar.exe parented by a script host or PowerShell (compile-on-victim, unpack) B8 pythonw.exe launched from a scheduled task on a host with no Python baseline B8 scheduled task whose action launches a Python interpreter LOW-SPECIFICITY NAMES (never hunt alone): t.vbs, v.ps1, cab.dat KEY INSIGHT: the cached file is found by SIZE not content, and the first stage has no network event.
Folder enumerated : %LOCALAPPDATA%\Mozilla\Firefox\Profiles\ (files named f_*) Staged script : %LOCALAPPDATA%\Temp\t.vbs Launcher : wscript.exe Stage names : v.ps1 (PowerShell), cab.dat (next stage) Injection target : timeout.exe (legitimate Windows binary, never block) Forensic artifact : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU Attribution : none (Microsoft did not name an actor)
# Run dialog removed for the user? Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer' -Name NoRun -ErrorAction SilentlyContinue # Windows Script Host disabled for the user? Get-ItemProperty 'HKCU:\Software\Microsoft\Windows Script Host\Settings' -Name Enabled -ErrorAction SilentlyContinue # Script block logging on? Get-ItemProperty 'HKLM:\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging' -Name EnableScriptBlockLogging -ErrorAction SilentlyContinue
Detection Validation Gates
Work these in order. A query that has not cleared gate 2 has no business being an alert.
| Gate | What to prove | How | Pass criteria |
|---|---|---|---|
| G1 · Telemetry ready | The events each query depends on arrive in your tenant | Run each #event_simpleName filter alone over 24h with count(). Pay particular attention to RunMRU registry writes (Q1, Q10), DnsRequest process attribution (Q5) and ScheduledTaskRegistered (Q8). | Non-zero counts, and the named fields populated. |
| G2 · Benign baseline | You know what normal looks like | Run Q1 to Q10 across 30 days of history and classify every hit. | Every recurring hit is explained and excluded, or escalated. |
| G3 · Positive test | The query fires on the behavior it claims to detect | On an isolated test host in a change window: type a harmless marker command that includes the words Firefox and Profiles into Run (Q1); run a benign wscript.exe against a throwaway t.vbs in Temp from cmd.exe (Q3). Do not use real malware. | The matching query fires. |
| G4 · Negative test | Your exclusions did not blind the query | Re-run G3 with tuning exclusions applied. | Test events still fire. |
| G5 · Promotion | Safe to alert | Custom IOA in Monitor mode for one business week on a pilot policy. | Zero unexplained detections. |
| G6 · Response readiness | The team can act on a hit | Tabletop the section 14 runbook. | Analyst can state the credential and session reset step without prompting. |
Hardening: Tiered
Controls are ordered by leverage against this chain. The campaign needs three things from the endpoint: a Run dialog to paste into, Windows Script Host to run the staged .vbs, and no logging on PowerShell. Remove or watch each one.
I1 · Remove the Run dialog for standard users
ClickFix needs the user to paste into Run. Without it the lure has no landing surface, and a locate-and-launch command has nowhere to run.
Authority: MITRE M1038 (Execution Prevention), M1042 (Disable or Remove Feature or Program). GPO: User Configuration → Administrative Templates → Start Menu and Taskbar → Remove Run menu from Start Menu. Verify: NoRun = 1 under the Explorer policy key. Risk: medium, exempt IT and power users. Win+R is also removed.
I2 · Disable Windows Script Host where it is not needed
The staged cache entry only becomes dangerous when wscript.exe runs it as VBScript. Disabling WSH breaks the chain at that step.
Authority: MITRE M1042. No formal CIS control for this exact setting: best-practice, no formal benchmark. Verify: Enabled = 0 under the Windows Script Host Settings key. Risk: medium, legacy VBScript login and inventory scripts stop working. Pilot first.
I3 · Turn on PowerShell script block and module logging
Microsoft lists PowerShell script-block logging as a defensive recommendation for this campaign. The v.ps1 stage and later PowerShell are otherwise invisible.
Authority: MITRE M1047 (Audit); CIS Microsoft Windows benchmark guidance on PowerShell logging. Verify: Event 4104 appears after a test command. Risk: low, plan for log volume.
I4 · ASR rules for script abuse (audit first)
d3e037e1-3eb8-44c8-a917-57927947596d: block JavaScript or VBScript from launching downloaded executable content. 5beb7efe-fd9a-4556-801d-275e5ffc04cc: block execution of potentially obfuscated scripts. Confirm both GUIDs against Microsoft Learn's ASR reference before deployment.
Authority: MITRE M1040 (Behavior Prevention on Endpoint). audit first Review audit events for a week before moving to block.
N1 · Cloud-delivered protection and network protection
Microsoft recommends cloud-delivered, web and network protection for this campaign. Enable them in the Defender policy and confirm tamper protection. Authority: MITRE M1021 (Restrict Web-Based Content), M1040. Verify: Get-MpPreference | Select MAPSReporting, EnableNetworkProtection.
N2 · Application control for script hosts
Use WDAC or AppLocker script rules so wscript.exe and cscript.exe cannot run scripts from user-writable paths such as Temp. Application control is on Microsoft's recommendation list. Authority: MITRE M1038. Deploy in audit mode first.
N3 · Load the three domains into web and DNS filtering
Add cocojambo.us.com, capsysnet.vg and ciliabula.cc to your DNS filter and Defender custom indicators in alert mode. Block only after confirming against the primary Microsoft post. Authority: MITRE M1031 (Network Intrusion Prevention).
N4 · User awareness aimed at this exact lure
Microsoft's user guidance is that no legitimate CAPTCHA, verification service or IT process asks users to paste commands into Run, Terminal or PowerShell. Put that sentence in the next awareness cycle. Authority: MITRE M1017 (User Training).
S1 · PowerShell Constrained Language Mode with application control
Limits what injected and compile-on-host PowerShell can do. Requires WDAC enforcement to be meaningful. Authority: MITRE M1038, M1045 (Code Signing).
S2 · Move saved credentials out of the browser
The goal of the chain is browser and device credential theft. Enforce a managed password manager and phishing-resistant MFA so a stolen browser store is worth less. Authority: MITRE M1017, M1032 (Multi-factor Authentication); best-practice, no formal benchmark for the browser-store aspect.
S3 · Reduce unmanaged web exposure
Compromised sites are the delivery path. Browser isolation or managed-browser policy for high-risk user groups reduces drive-by exposure. best-practice, no formal benchmark
Deployable Playbooks
Test every playbook on a pilot ring before fleet deployment. P1 and P2 change visible user behavior. Each playbook lists its prerequisites, reboot requirement and rollback.
P1 · Remove the Run dialog (per-user policy)
# Prerequisites: run as the target user, or push through GPO / user logon script. Pilot ring first.
# Reboot required: no (sign out and back in, or restart Explorer, for the change to apply)
# Rollback: Remove-ItemProperty -Path $k -Name NoRun then sign out and back in
$k = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer'
if (-not (Test-Path $k)) { New-Item -Path $k -Force | Out-Null }
New-ItemProperty -Path $k -Name NoRun -PropertyType DWord -Value 1 -Force | Out-Null
# Verify
Get-ItemProperty -Path $k -Name NoRun
P2 · Disable Windows Script Host
# Prerequisites: local administrator. Inventory VBScript / JScript login scripts first.
# Reboot required: no
# Rollback: Remove-ItemProperty -Path $k -Name Enabled (WSH is on by default when the value is absent)
$k = 'HKLM:\SOFTWARE\Microsoft\Windows Script Host\Settings'
if (-not (Test-Path $k)) { New-Item -Path $k -Force | Out-Null }
New-ItemProperty -Path $k -Name Enabled -PropertyType DWord -Value 0 -Force | Out-Null
# Verify (a .vbs double-click should now report that Windows Script Host access is disabled)
Get-ItemProperty -Path $k -Name Enabled
P3 · PowerShell script block and module logging
# Prerequisites: local administrator; size the PowerShell Operational log (for example 512 MB) first.
# Reboot required: no
# Rollback: set both values back to 0 (or delete the two policy keys)
$sb = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging'
$ml = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging'
foreach ($p in $sb, $ml) { if (-not (Test-Path $p)) { New-Item -Path $p -Force | Out-Null } }
New-ItemProperty -Path $sb -Name EnableScriptBlockLogging -PropertyType DWord -Value 1 -Force | Out-Null
New-ItemProperty -Path $ml -Name EnableModuleLogging -PropertyType DWord -Value 1 -Force | Out-Null
# Verify: run any command, then look for Event 4104
Get-WinEvent -LogName 'Microsoft-Windows-PowerShell/Operational' -MaxEvents 3 | Select-Object TimeCreated, Id
P4 · ASR script rules in Audit mode
# Prerequisites: Microsoft Defender Antivirus active; confirm both GUIDs against Microsoft Learn first. # Reboot required: no # Rollback: Remove-MpPreference -AttackSurfaceReductionRules_Ids $ids (or set the action to Disabled) $ids = 'd3e037e1-3eb8-44c8-a917-57927947596d', '5beb7efe-fd9a-4556-801d-275e5ffc04cc' Add-MpPreference -AttackSurfaceReductionRules_Ids $ids -AttackSurfaceReductionRules_Actions AuditMode, AuditMode # Verify (Get-MpPreference).AttackSurfaceReductionRules_Ids
P5 · Read-only triage on a suspect host
# Prerequisites: run as the affected user on an isolated host; do not delete anything yet.
# Reboot required: no
# Rollback: none required, this script only reads and lists
# 1. Pasted Run-dialog history
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU' | Format-List
# 2. Staged scripts in Temp, with hashes
Get-ChildItem $env:LOCALAPPDATA\Temp -Filter *.vbs -ErrorAction SilentlyContinue |
Get-FileHash -Algorithm SHA256 | Format-Table Hash, Path -AutoSize
# 3. Firefox cache entries named f_*, with byte length (match is by size, so record it)
Get-ChildItem "$env:LOCALAPPDATA\Mozilla\Firefox\Profiles" -Recurse -Filter 'f_*' -ErrorAction SilentlyContinue |
Sort-Object Length | Select-Object Length, FullName -First 50
# 4. Scheduled tasks that launch Python
Get-ScheduledTask | Where-Object { $_.Actions.Execute -match 'python' } | Select-Object TaskName, TaskPath
Containment Runbook
Sequencing rule: the credential-theft stage means the loss happens after the endpoint event. Isolate the host, but do not let endpoint work delay credential and session resets for the user.
| Phase | Actions | Owner | Evidence to capture |
|---|---|---|---|
| C0 · Triage 0 to 15 min |
Confirm which query fired (Q1 to Q10). Identify the user, host and time of the Run-dialog paste. Check whether Q3, Q4, Q5 also fired on the same aid. |
SOC L1 | Falcon process tree; triggering query output; aid and ComputerName |
| C1 · Isolate 15 to 30 min |
Network-contain the host in Falcon. Do not power off: injected code in timeout.exe lives in memory. Preserve RunMRU, t.vbs and the matching f_ cache file before cleanup (P5). |
SOC L2 | Containment timestamp; RunMRU export; t.vbs hash; cache file length |
| C2 · Scope | Run Q1, Q2, Q3 and Q9 across 30 days for other hosts. Pivot on the three domains in DNS and proxy logs. Remember the first stage has no network event. | Threat hunter | List of affected hosts and users |
| C3 · Credentials parallel with C1 |
Treat all browser-stored credentials and device credentials on the host as exposed. Reset passwords, revoke active sessions and refresh tokens, and re-enroll MFA where applicable. Clear saved logins from browsers after reset. | IAM / SOC L2 | Reset timestamps; sign-in review for new locations after the execution time |
| C4 · Eradicate | Remove the scheduled task that launches Python and the Python payload it points to. Delete t.vbs and any staged .ps1 / .dat files. Reimage if injection into timeout.exe is confirmed or you cannot verify the host. |
Endpoint team | Task XML before removal; list of removed files |
| C5 · Recover and harden | Return the host after credentials are reset. Roll out section 12 Immediate controls. Block the three domains once confirmed against the primary source. | Endpoint / Security engineering | Change tickets; post-incident Q1 to Q10 clean run |
Detection Coverage Map
| Technique | Behavior | CQL | IOA | Hardening | Coverage |
|---|---|---|---|---|---|
| T1204.004 | Run-dialog paste (ClickFix) | Q1, Q10 | Yes (Q1) | I1, N4 | GOOD |
| T1083 / T1059.003 | cmd enumeration of Firefox Profiles by size | Q1, Q2 | Yes (Q2) | I1 | GOOD |
| T1059.005 | wscript running staged t.vbs | Q3 | Yes | I2, I4, N2 | GOOD |
| T1059.001 | PowerShell stage under a script host | Q4 | No | I3, I4, S1 | PARTIAL (depends on logging; FP needs tuning) |
| T1055 | Injection into timeout.exe | Q5, Q6 | Yes (Q5) | N2, S1 | PARTIAL (detects consequences, not the injection) |
| T1027.004 | Compile after delivery | Q7 | No | N2, S1 | GOOD (csc.exe and cvtres.exe are named in the reporting) |
| T1053.005 / T1059.006 | Scheduled task launching Python | Q8 | No | N2 | PARTIAL (noisy where Python is common) |
| T1071.001 | C2 domains | Q9 | IOC Mgmt | N1, N3 | GOOD (perishable) |
| T1036.008 / T1189 | PNG-disguised payload cached by a compromised site | None | No | N1, S3 | GAP (no practical endpoint signal; ordinary subresource load) |
| T1555.003 | Browser and device credential theft | None | No | S2 | GAP (no generic file-read event; handle in identity plane per C3) |
| T1082 / T1047 | WMI host information harvest by the VBScript | None | No | N2 | GAP (WMI telemetry not covered in this pack) |
Gap summary
- The cache staging itself is invisible by design. The first stage needs no download and writes no unusual file. Coverage starts at the Run-dialog paste (Q1) and the locate step (Q2).
- Size is not hunted. The expected byte length varies per variant and was not published, so no query asserts one.
- Credential theft is covered by response, not detection. Treat any confirmed hit as a credential exposure (C3).
Validation: gates G1 to G6 in section 11 govern promotion. No query proceeds to alert before clearing G2, and none is recommended for Block.
Hunt Summary Ticket
TITLE: ClickFix cache smuggling - Firefox cache size-match, t.vbs staging, timeout.exe injection
SEVERITY: High - Microsoft Threat Intelligence reporting 2026-10-06; no named actor
SCOPE: All Windows endpoints with interactive users. Priority: users who browse with Firefox
and users who store credentials in their browser.
HYPOTHESIS: A user visited a compromised site that pre-fetched a script into the browser cache as
a PNG, then followed a fake Cloudflare verification prompt and pasted a short command
into Run. The command located the cache file by byte length, copied it to Temp as a
.vbs, and ran it with wscript.exe. Follow-on: PowerShell, .NET compiled on host,
injection into timeout.exe, credential theft, scheduled task launching Python.
QUERIES: Q1 Run-dialog Firefox Profiles command (RunMRU) CONF high | FP low | COST low
Q2 cmd from explorer enumerating Profiles CONF high | FP low | COST low
Q3 wscript running t.vbs from Temp CONF high | FP low | COST low
Q4 PowerShell under wscript/cscript CONF med | FP med | COST low
Q5 timeout.exe resolving DNS CONF high | FP low | COST low
Q6 timeout.exe odd parent CONF med | FP med | COST low
Q7 csc/cvtres/tar under script host CONF high | FP med | COST low
Q8 scheduled task launching pythonw CONF med | FP med | COST low
Q9 three C2 domains CONF high | FP low | COST med
Q10 generic RunMRU interpreter paste CONF med | FP med | COST low
DO FIRST: 1. Q1 and Q10 across 30 days (upstream of execution)
2. Q2 + Q3 across 30 days (locate and stage)
3. Q5 (injected timeout.exe, near-zero FP)
4. Q9 retrospective sweep (perishable)
5. Native hunt N1 on any hit host
FINDINGS: [ ] Q1 hits: ______ [ ] Q2 hits: ______ [ ] Q3 hits: ______
[ ] Q5 hits: ______ [ ] Q9 hits: ______
[ ] Hosts with 2+ query hits in 24h (auto-escalate): ______
[ ] Users requiring credential and session reset: ______
GAPS: - Cache staging by the compromised site has no endpoint signal
- Expected cache-file size not published; no query asserts one
- Credential theft covered by response (reset), not detection
- Primary Microsoft post not retrieved; IOCs are single-lineage so ship detect only
- No file hashes published; IOC CSV ships a placeholder
ACTIONS: [ ] Promote Q1, Q2, Q3, Q5 to Custom IOA (Monitor mode, pilot policy, 1 week)
[ ] Import the section 10 domain CSV into Falcon IOC Management (detect)
[ ] Deploy Immediate hardening: I1 Run dialog, I2 WSH, I3 PS logging, I4 ASR (audit)
[ ] Confirm RunMRU registry telemetry and DnsRequest process attribution (gate G1)
[ ] Re-run this pack when the primary Microsoft post is available
OWNER: ______________________
VERSION: v0.1 - 2026-10-06
Changelog
References
| Tier | Source | Used for | Accessed |
|---|---|---|---|
| 2 | The Hacker News: ClickFix smuggles payloads through the browser cache | Chain detail, C2 domains, Microsoft hunting advice | 2026-10-06 |
| 2 | iTnews: Microsoft spots new twist on ClickFix cache smuggling | Corroboration, lure, no-attribution statement | 2026-10-06 |
| 3 | GBHackers: Microsoft warns ClickFix attacks use fake CAPTCHA | Behavior corroboration, persistence | 2026-10-06 |
| 2 | CyberSecurityNews: ClickFix fake CAPTCHA attack executes malware hidden inside browser cache | Fourth-outlet corroboration of the three C2 domains; names csc.exe, cvtres.exe, tar.exe and pythonw.exe; pins Microsoft's disclosure to a 2026-10-03 @MsftSecIntel thread | 2026-10-06 |
| 3 | Crimson7: Browser cache smuggling and ClickFix | Technique background only (different variant, no indicators) | 2026-10-06 |
| 3 | BleepingComputer: new DOUBLECUP ClickFix service hides malware in browser cache images | Used only to confirm DOUBLECUP (SOCRadar, 2026-08-03) is a separate cluster from this campaign. No indicator taken from it | 2026-10-06 |
| ref | MITRE ATT&CK | Technique IDs in section 6 and mitigation M-numbers in section 12 | 2026-10-06 |
| ref | Microsoft Learn: Attack surface reduction rules reference | Confirm ASR rule GUIDs before deployment | 2026-10-06 |
Provenance statement. The three C2 domains are reproduced from the two press articles above. File names and paths come from the same articles. No hash, cache-file size or scheduled-task name was published, so the pack ships a placeholder and behavioral hunts instead of invented values. Indicators from other ClickFix clusters mentioned in the sources are deliberately excluded.