ClickFix Cache Smuggling (Firefox Cache Size-Match)

Compromised sites pre-fetch a script into the browser cache disguised as a PNG · Run-dialog command only has to locate the cached file by size · t.vbs staging, timeout.exe injection, credential theft
Threat
ClickFix campaign using cache smuggling (no named actor)
Severity
HIGH
Type
Social-engineering loader / credential theft
Initial Access
Compromised website, fake Cloudflare verification, Run-dialog paste
Version
v0.1 · 2026-10-06
Author
HuntPack
Confidence
MEDIUM (press coverage of the Microsoft report; primary post not retrieved)
01

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.

02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry Forward
2The 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.
2iTnews, "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.
3GBHackers, "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.
3Crimson7, "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.
2CyberSecurityNews, "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.
1Microsoft Threat Intelligence primary post / @MsftSecIntel threadSearched 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 @MsftSecIntel thread 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 with findstr or certutil, 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 enumerate f_-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_SHA256 placeholders 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 .vbs in Temp, wscript.exe launch) 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.exe under a script host) and is labelled an inference.
03

Hunt Brief & Attack Chain

Hypotheses (ordered by fidelity)

IDHypothesisMITREFalcon eventsConfidence
H1A 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.004RegGenericValueUpdateHIGH
H2cmd.exe launched from explorer.exe is enumerating the Firefox profile folder and copying a result to a script file.T1059.003, T1083ProcessRollup2HIGH
H3wscript.exe is executing t.vbs from the user's Temp folder.T1059.005ProcessRollup2HIGH
H4A script host is spawning PowerShell (the v.ps1 stage), possibly with an execution-policy change.T1059.001ProcessRollup2MEDIUM
H5timeout.exe is resolving DNS names, which it never does legitimately, indicating injected code.T1055DnsRequestHIGH
H6timeout.exe is running under a script-host or Python parent instead of a batch file or console.T1055, T1036ProcessRollup2MEDIUM
H7A compiler is invoked by a script host to build .NET code on the victim.T1027.004ProcessRollup2MEDIUM
H8A scheduled task is registered that launches a Python interpreter from a user-writable path.T1053.005, T1059.006ScheduledTaskRegistered, ProcessRollup2MEDIUM
H9An endpoint resolved one of the three published C2 domains.T1071.001DnsRequestHIGH

Attack chain

StepBehaviorTelemetryHunt angle
1Visitor lands on a compromised site; script payload is pre-fetched into the browser cache disguised as a PNGBrowser, proxy (subresource load, no download prompt)No reliable endpoint signal. Accepted gap.
2Fake Cloudflare verification instructs the user to open Run, paste and press EnterRegistry (RunMRU)Q1, Q10
3cmd.exe recursively enumerates f_* files under the Firefox Profiles folder and compares byte length to an expected valueProcess creation (command line)Q2
4The size-matching cache entry is copied to %LOCALAPPDATA%\Temp\t.vbsProcess command line (file-write event not relied upon)Q2, Q3
5wscript.exe runs the VBScript, which harvests host information via WMIProcess creationQ3
6PowerShell stage (v.ps1) retrieved from the first C2 domain; further payload (cab.dat) fetchedProcess creation, DNSQ4, Q9
7.NET code compiled on the host and injected into timeout.exe; browser and device credentials targetedProcess creation, DNSQ5, Q6, Q7
8Second-stage retrieval and connections to the remaining C2 domainsDNSQ9
9Persistence via a scheduled task launching a Python payloadScheduled task, process creationQ8
04

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.

TypeValueConfidenceActionContextExpiry
domaincocojambo[.]us[.]commediumdetectHosts the PowerShell stage (v.ps1) at path /alfa. Two press sources, both relaying Microsoft.2027-04-06
domaincapsysnet[.]vgmediumdetectSecond in-memory stage retrieval. Two press sources, both relaying Microsoft.2027-04-06
domainciliabula[.]ccmediumdetectConnections established by the injected stage. Two press sources, both relaying Microsoft.2027-04-06
url path/alfa on cocojambo[.]us[.]comlowenrichPath only; not distinctive without the host.2026-11-06
file path%LOCALAPPDATA%\Temp\t.vbslowhuntLow-specificity. Hunt only with parent cmd.exe/explorer.exe and wscript.exe execution (Q3).2027-01-06
filenamev.ps1lowenrichLow-specificity. PowerShell stage name; hunt via script-host parentage (Q4).2026-11-06
filenamecab.datlowenrichLow-specificity. Next-stage payload name; no standalone hunt.2026-11-06
processtimeout.exelowhuntLegitimate Windows binary used as an injection target. Never block. Hunt DNS activity and unusual parents (Q5, Q6).2027-01-06
registry...\Explorer\RunMRUhighhuntRecords 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_*mediumhuntCache folder the command enumerates. Legitimate browser data; the signal is a command line that enumerates it (Q1, Q2).2027-01-06
sha256REPLACE_WITH_SHA256n/ahuntNo hash or expected cache-file size published. Populate from your own confirmed samples.n/a
05

Affected Surface & Telemetry Matrix

SurfaceTelemetryPriorityGap risk
Run dialog historyFalcon RegGenericValueUpdate on RunMRUHIGHMedium. Confirm registry telemetry for the RunMRU key reaches your tenant (gate G1).
Process executionFalcon ProcessRollup2 / SyntheticProcessRollup2HIGHLow. Carries the whole execution chain.
DNS resolutionFalcon DnsRequestHIGHLow, unless encrypted DNS blinds the sensor.
Scheduled tasksFalcon ScheduledTaskRegistered; Windows Event 4698MEDIUMMedium. Field population varies by sensor version.
PowerShellScript block logging (4104), module logging (4103)MEDIUMHigh. Often not enabled; Microsoft names it explicitly as a hunt source.
Browser cache stagingnone practicalMEDIUMAccepted gap. The cache write is a normal subresource load with no download event.
In-process injection into timeout.exeIndirect only (DNS from timeout.exe, odd parentage)MEDIUMHigh. Detect around the injection, not the injection.
06

ATT&CK Mapping

TacticTechniqueObserved behaviorQuery / control
Initial AccessT1189 Drive-by CompromiseCompromised websites serve the lure and pre-fetch the cached payloadHardening N1; no endpoint query
ExecutionT1204.004 Malicious Copy and PasteUser pastes the command into RunQ1, Q10, I2
Defense EvasionT1036.008 Masquerade File TypeScript payload cached as a PNGAccepted gap
DiscoveryT1083 File and Directory DiscoveryRecursive enumeration of f_* files in Firefox profile folders by sizeQ1, Q2
ExecutionT1059.003 Windows Command Shellcmd.exe performs enumeration and copyQ2
ExecutionT1059.005 Visual Basicwscript.exe runs t.vbsQ3, I3
ExecutionT1059.001 PowerShellv.ps1 and later stagesQ4, I4
Defense EvasionT1027.004 Compile After Delivery.NET code compiled on the victim hostQ7
Defense EvasionT1055 Process InjectionInjection into legitimate timeout.exeQ5, Q6
Credential AccessT1555.003 Credentials from Web BrowsersBrowser and device credential targetingContainment C3; no direct query
Command and ControlT1071.001 Web ProtocolsStage retrieval and C2 over three domainsQ9
PersistenceT1053.005 Scheduled Task; T1059.006 PythonScheduled task launching a Python payloadQ8
07

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 containing Firefox and Profiles, 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\*.vbs and compare against the Firefox cache2 entries that begin with f_ 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 a t.vbs run. 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.
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.

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.

Q1 · Run-Dialog Command Referencing the Firefox Profiles Folder (RunMRU)
CONF HIGHFP LOWCOST LOW

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)
Q2 · cmd.exe from explorer.exe Enumerating Firefox Profiles and Staging a Script
CONF HIGHFP LOWCOST LOW

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)
Q3 · wscript.exe Running t.vbs from a Temp Folder
CONF HIGHFP LOWCOST LOW

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)
Q4 · PowerShell Spawned by a Windows Script Host (v.ps1 Stage)
CONF MEDFP MEDCOST LOW

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)
Q5 · timeout.exe Resolving DNS Names (Injected Process)
CONF HIGHFP LOWCOST LOW

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)
Q6 · timeout.exe Launched by a Script Host, Python or Proxy Binary
CONF MEDFP MEDCOST LOW

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)
Q7 · .NET Compiler Invoked by a Script Host (Compile-on-Victim)
CONF HIGHFP MEDCOST LOW

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)
Q8 · Scheduled Task Launching a Python Interpreter
CONF MEDFP MEDCOST LOW

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)
Q9 · Published Campaign C2 Domain Sweep
CONF HIGHFP LOWCOST MED

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)
Q10 · Generic ClickFix Run-Dialog Interpreter Paste (RunMRU Variant Net)
CONF MEDFP MEDCOST LOW

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)
09

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 nameFromRule group / typePatternExclusionsAction
CacheSmuggling, Run-Dialog Firefox Profiles CommandQ1Registry Operation (Windows)RunMRU value containing Firefox and Profiles plus a script or copy keywordIT admin asset groupDetect: High
CacheSmuggling, cmd Enumerating Firefox ProfilesQ2Process Creation (Windows)Image cmd.exe; parent explorer.exe; command line names Firefox Profiles plus .vbs / wscript / copyNone knownDetect: High
CacheSmuggling, wscript Running Temp t.vbsQ3Process Creation (Windows)Image wscript.exe; command line matches Temp path plus t.vbs; shell parentNone knownDetect: High
CacheSmuggling, timeout.exe Network ActivityQ5Network Connection / DNS (Windows)Image timeout.exe performing any outbound connection or DNS lookupNoneDetect: High (never Block: stock binary)

Deployment path

  1. Endpoint security → Configuration → Custom IOA rule groups. Create a group named for this campaign and attach it to a pilot prevention policy.
  2. Create each rule in Monitor (detect-only) severity and leave it for one business week.
  3. Do not raise any rule to Block. cmd.exe, wscript.exe, timeout.exe and the Firefox binaries are legitimate and a block rule will eventually disrupt benign activity.
  4. 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.
10

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.

Falcon IOC Management CSVbulk import
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
Behavioral Signaturesdurable, outlives the domains
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.
Named Artifactscontext for triage
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)
Control Auditverify hardening state
# 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
11

Detection Validation Gates

Work these in order. A query that has not cleared gate 2 has no business being an alert.

GateWhat to proveHowPass criteria
G1 · Telemetry readyThe events each query depends on arrive in your tenantRun 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 baselineYou know what normal looks likeRun Q1 to Q10 across 30 days of history and classify every hit.Every recurring hit is explained and excluded, or escalated.
G3 · Positive testThe query fires on the behavior it claims to detectOn 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 testYour exclusions did not blind the queryRe-run G3 with tuning exclusions applied.Test events still fire.
G5 · PromotionSafe to alertCustom IOA in Monitor mode for one business week on a pilot policy.Zero unexplained detections.
G6 · Response readinessThe team can act on a hitTabletop the section 14 runbook.Analyst can state the credential and session reset step without prompting.
12

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.

Immediate: deploy this week

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.

Near term: 1 to 4 weeks, pilot first

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).

Strategic: 1 to 3 months

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

13

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
14

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.

PhaseActionsOwnerEvidence 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
15

Detection Coverage Map

TechniqueBehaviorCQLIOAHardeningCoverage
T1204.004Run-dialog paste (ClickFix)Q1, Q10Yes (Q1)I1, N4GOOD
T1083 / T1059.003cmd enumeration of Firefox Profiles by sizeQ1, Q2Yes (Q2)I1GOOD
T1059.005wscript running staged t.vbsQ3YesI2, I4, N2GOOD
T1059.001PowerShell stage under a script hostQ4NoI3, I4, S1PARTIAL (depends on logging; FP needs tuning)
T1055Injection into timeout.exeQ5, Q6Yes (Q5)N2, S1PARTIAL (detects consequences, not the injection)
T1027.004Compile after deliveryQ7NoN2, S1GOOD (csc.exe and cvtres.exe are named in the reporting)
T1053.005 / T1059.006Scheduled task launching PythonQ8NoN2PARTIAL (noisy where Python is common)
T1071.001C2 domainsQ9IOC MgmtN1, N3GOOD (perishable)
T1036.008 / T1189PNG-disguised payload cached by a compromised siteNoneNoN1, S3GAP (no practical endpoint signal; ordinary subresource load)
T1555.003Browser and device credential theftNoneNoS2GAP (no generic file-read event; handle in identity plane per C3)
T1082 / T1047WMI host information harvest by the VBScriptNoneNoN2GAP (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.

16

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
17

Changelog

v0.1 2026-10-06 Initial draft. Built from The Hacker News, iTnews and CyberSecurityNews coverage of the Microsoft Threat Intelligence findings, with GBHackers and Crimson7 as behavior and technique background. Ten CQL hunt queries, three C2 domains as detect-only IOCs, no attribution. Microsoft published through an @MsftSecIntel thread on 2026-10-03 rather than a blog post, so no first-party article exists to cite. Pre-publish review added the CyberSecurityNews source, which upgraded Q7 from an inferred compiler to a sourced one (csc.exe and cvtres.exe, plus tar.exe) and named pythonw.exe in Q8, and confirmed that the published DOUBLECUP pack covers a separate cluster.
18

References

TierSourceUsed forAccessed
2The Hacker News: ClickFix smuggles payloads through the browser cacheChain detail, C2 domains, Microsoft hunting advice2026-10-06
2iTnews: Microsoft spots new twist on ClickFix cache smugglingCorroboration, lure, no-attribution statement2026-10-06
3GBHackers: Microsoft warns ClickFix attacks use fake CAPTCHABehavior corroboration, persistence2026-10-06
2CyberSecurityNews: ClickFix fake CAPTCHA attack executes malware hidden inside browser cacheFourth-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 thread2026-10-06
3Crimson7: Browser cache smuggling and ClickFixTechnique background only (different variant, no indicators)2026-10-06
3BleepingComputer: new DOUBLECUP ClickFix service hides malware in browser cache imagesUsed only to confirm DOUBLECUP (SOCRadar, 2026-08-03) is a separate cluster from this campaign. No indicator taken from it2026-10-06
refMITRE ATT&CKTechnique IDs in section 6 and mitigation M-numbers in section 122026-10-06
refMicrosoft Learn: Attack surface reduction rules referenceConfirm ASR rule GUIDs before deployment2026-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.