ACR Stealer / Amatera — ClickFix Intrusion Chains

Infostealer-as-a-service delivered by ClickFix lures · WebDAV + rundll32 chain and MSHTA + steganography chain · Browser token and Microsoft 365 document theft
Threat
ACR Stealer (AcridRain · Amatera)
Severity
ACTIVE MaaS
Type
Infostealer / Loader
Initial Access
ClickFix (malvertising / SEO poisoning)
Version
v0.1 · 2026-07-18
Author
HuntPack
Confidence
HIGH (vendor-attributed)
01

Executive Summary

Attacker objective: harvest browser-stored credentials, session cookies and authentication tokens, plus sensitive enterprise documents (PDFs from Desktop and Downloads, Microsoft 365 files, OneDrive/SharePoint synced folders), then exfiltrate them for resale or follow-on account takeover. This is a credential- and token-theft operation, not a destructive one — the damage lands after the endpoint event, in your identity plane.

ACR Stealer is sold as malware-as-a-service and is the lineage behind the Amatera Stealer rebrand. Microsoft Defender Experts observed elevated activity across customer environments from late April 2026 through mid-June 2026, delivered by ClickFix lures — malvertising and SEO-poisoned search results that socially engineer the user into pasting an attacker-supplied command into the Windows Run dialog.

Microsoft documented two distinct intrusion chains:

  • Chain 1 — WebDAV + rundll32 + Python. rundll32.exe loads a DLL directly from an attacker WebDAV share over HTTPS (three command variants: direct, pushd-mounted, and a conhost.exe --headless obfuscated form using delayed variable expansion). A ZIP payload lands in %LocalAppData%\Temp and a bundled pythonw.exe runs a Python loader that executes shellcode in memory via VirtualAlloc and the Windows Fiber API. Persistence is a hidden scheduled task masquerading as a software update. A second Python loader uses EtherHiding — public blockchain RPC endpoints and Web3 node infrastructure as dead-drop resolvers for the next payload or C2 address.
  • Chain 2 — MSHTA + PowerShell + steganography. The ClickFix prompt runs MSHTA against a remote HTA; embedded VBScript uses COM objects to decode and run encoded PowerShell; that downloader (randomized variable names, arithmetic no-ops, dead loops, custom encryption) pulls a JPEG from an image-hosting service and extracts the payload from the image pixels, decrypting, decompressing and executing it entirely in memory with dynamically resolved APIs.

Highest-value defensive angle: both chains converge on the same two chokepoints. Upstream, every infection starts with a Run-dialog paste — which Windows records in RunMRU, giving you a near-zero-FP detection and a decisive hardening control (disable the Run dialog). Downstream, both chains reach for the same Chromium credential stores and DPAPI. Hunt the ends of the chain, not the middle; the middle is where the obfuscation lives.

Defender priority: Treat any confirmed ACR Stealer execution as a token compromise, not a malware cleanup. Reimaging the host does not invalidate stolen session cookies or refresh tokens. Revoke sessions and rotate credentials in the identity plane before you close the endpoint ticket.

02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry Forward
1Microsoft Security Blog — "ACR Stealer: Two observed intrusion chains amid increased threat activity" (2026-07-16)Authoritative. Full campaign-1 and campaign-2 domain IOC tables, both intrusion chains, LOLBin set, ATT&CK mapping, hunting queries (KQL), mitigations.Yes — primary basis for every IOC and TTP in this pack
1The Hacker News — "ACR Stealer Uses ClickFix Lures to Steal Browser Tokens and Microsoft 365 Files" (2026-07-17)Corroborates Microsoft. Adds the literal WebDAV command line including host sphere-api.dialectosphere.in[.]net and GUID path; relays a Red Canary (June 2025) fake-Claude-Code GitLab lure.Partial — WebDAV host carried; the GitLab lure carried at low confidence (2025, likely dead)
2Proofpoint — "Amatera Stealer: Rebranded ACR Stealer With Improved Evasion, Sophistication"Establishes the ACR → Amatera rebrand lineage and the MaaS distribution model. Background context; no IOCs pulled from it.Partial — lineage / naming only
1Microsoft Learn — ASR rules reference (retrieved 2026-07-18)Canonical ASR rule names and GUIDs used in the hardening section.Yes — GUIDs verified verbatim, not recalled

Hunter notes & deliberate omissions

  • No file hashes exist in the public reporting. Microsoft published domains only. This pack therefore ships no SHA256 IOCs. The IOC-management CSV uses explicit REPLACE_WITH_SHA256 placeholders rather than invented values.
  • No exact scheduled-task name is published. Microsoft describes the pattern only — a hidden task posing as a software update, matched in their own query by "Autoupdate" plus an 8-digit number. Q6 encodes that pattern; it does not assert a task name.
  • No registry keys are published beyond the ClickFix RunMRU vector that Microsoft's own detection query pivots on. Q9 is a translation of that pivot, not an inferred key.
  • The EtherHiding domain keywords in Q11 are a hunting heuristic, not sourced IOCs. Microsoft named the technique but not the specific RPC providers. Q11 is labelled accordingly and must be baselined before it is trusted.
  • Microsoft's published hunting queries are Defender KQL. Every query in section 8 is a hand-translation into Falcon CQL against the CrowdStrike data model — no Defender schema names (DeviceProcessEvents, ProcessCommandLine, DeviceRegistryEvents) survive into the CQL.
03

Hunt Brief & Attack Chain

Hunt hypotheses (ordered by fidelity)

#HypothesisATT&CKFalcon telemetryConf
H1A user pasted an attacker-supplied command into the Run dialog; the RunMRU value contains an interpreter plus a remote resource or encoded blob.T1204, T1189RegGenericValueUpdateHIGH
H2rundll32.exe is loading a DLL from a UNC/WebDAV path rather than a local file, under an interactive parent.T1218.011ProcessRollup2HIGH
H3conhost.exe --headless is being used to hide a pushd/rundll32 chain and the remote hostname behind delayed variable expansion.T1027, T1036ProcessRollup2HIGH
H4mshta.exe is fetching remote HTA content over HTTP(S), spawned from an interactive shell rather than an application.T1218.005ProcessRollup2HIGH
H5A scheduled task whose name matches the "Autoupdate" + 8-digit software-update masquerade pattern was registered or invoked.T1053.005, T1036ScheduledTaskRegistered, ProcessRollup2HIGH
H6cmd.exe mounted a remote share with pushd or net use to a non-corporate host immediately before execution.T1218.011, T1105ProcessRollup2MED
H7pythonw.exe is executing from a user Temp path — a bundled interpreter unpacked from the delivered ZIP, run windowless to suppress the console.T1059.006, T1036ProcessRollup2MED
H8PowerShell is downloading an image file and treating it as a payload carrier (steganographic loader).T1027.003, T1059.001ProcessRollup2MED
H9PowerShell command history is being cleared or suppressed to remove operator traces.T1070.003ProcessRollup2MED
H10A non-browser process is reading or copying Chromium Login Data / Web Data / Local State.T1555.003ProcessRollup2MED
H11A script interpreter is resolving blockchain-RPC / Web3 node infrastructure as a dead-drop C2 resolver (EtherHiding).T1102.001DnsRequestLOW
H12An endpoint resolved one of the published campaign-1 or campaign-2 domains.T1102DnsRequestHIGH

Attack chain — Chain 1 (WebDAV / Python)

StepBehaviorTelemetryHunt angle
1Malvertising / SEO-poisoned result renders a ClickFix prompt; user pastes the command into RunRegistry (RunMRU), ProcessQ9 — highest-fidelity upstream signal
2cmd.exe spawns; three observed variants — direct rundll32, pushd-mounted drive letter, or conhost --headless with delayed expansionProcessQ1, Q2, Q3
3rundll32.exe loads a DLL from a WebDAV share over HTTPS; GUID directory + disguised extension (e.g. .google)Process, NetworkQ1
4ZIP payload written to %LocalAppData%\Temp (observed folder name LogiOptionsPlus); bundled pythonw.exe launched to suppress the consoleProcess, FileQ5
5Python loader executes shellcode in memory via VirtualAlloc + Fiber API (ConvertThreadToFiber, CreateFiber, SwitchToFiber)— in-memory onlyGAP — no reliable Falcon surface; rely on stages 2–4 and 6–8
6Hidden scheduled task masquerading as a software update ("Autoupdate" + 8 digits) established for sign-in persistenceScheduled task, ProcessQ6
7Timestomping (timestamps copied from notepad.exe) and PowerShell history clearingProcessQ7 (history); timestomp is a GAP
8Second Python loader queries public blockchain RPC / Web3 nodes as a dead-drop resolver (EtherHiding)DNS, NetworkQ11 (heuristic)

Attack chain — Chain 2 (MSHTA / steganography)

StepBehaviorTelemetryHunt angle
1ClickFix prompt spawns a command running MSHTA against remote HTA content over HTTPS (Microsoft's query: 7-digit path segment, parent explorer.exe)ProcessQ4, Q9
2Embedded VBScript loader uses COM objects to decode and execute encoded PowerShellProcessQ4 child-process pivot
3PowerShell downloader — randomized variable names, arithmetic no-ops, dead loops, custom encryptionProcess, Script block logsQ10; native hunt N2
4Retrieves a JPEG from an image-hosting service; payload extracted from pixel data, decrypted, decompressedProcess, NetworkQ10
5Reflective shellcode execution via runtime-resolved LoadLibrary, GetProcAddress, VirtualAlloc, CreateThread, WaitForSingleObject— in-memory onlyGAP — AMSI / script block logging is the only practical surface

Convergent stage — both chains

StepBehaviorTelemetryHunt angle
C1Reads Chromium Login Data and Web Data; invokes DPAPI to decrypt stored passwords, cookies and auth tokensProcessQ8
C2Enumerates and stages PDFs from Desktop and Downloads, Microsoft 365 documents, OneDrive/SharePoint synced foldersFilePartial — see native hunt N4
C3Exfiltration to campaign C2 infrastructureDNS, NetworkQ12
04

Consolidated IOC Table

Provenance: every atomic indicator below is reproduced from a cited published source. Microsoft's report contains no file hashes, no registry keys and no exact scheduled-task names — none are invented here. Domain infrastructure of this type is highly perishable; treat absence of hits as inconclusive and lean on the behavioral queries.

TypeValueConfActionContextExpiry
domainlooksta[.]icuhighdetectChain 1 infrastructure — Microsoft IOC table2027-01-18
domaincontrite.quirksturdy[.]icuhighdetectChain 1 infrastructure — Microsoft IOC table2027-01-18
domainux.strainedeasily[.]icuhighdetectChain 1 infrastructure — Microsoft IOC table2027-01-18
domaincpppemwjewjoiwejow[.]salehighdetectChain 1 infrastructure — Microsoft IOC table2027-01-18
domainbreaksd.wifihot[.]icuhighdetectChain 1 infrastructure — Microsoft IOC table2027-01-18
domainwalter.filloco[.]icuhighdetectChain 1 infrastructure — Microsoft IOC table2027-01-18
domainfast.raidher[.]icuhighdetectChain 1 infrastructure — Microsoft IOC table2027-01-18
domainapigrokcloud[.]icuhighdetectChain 1 infrastructure — Microsoft IOC table2027-01-18
domainenhanceblabber[.]cchighdetectChain 2 payload host / C2 — Microsoft IOC table2027-01-18
domaindeep-harborio[.]comhighdetectChain 2 infrastructure — Microsoft IOC table2027-01-18
domainauramatrixa[.]comhighdetectChain 2 infrastructure — Microsoft IOC table2027-01-18
domainzealpraxis[.]comhighdetectChain 2 infrastructure — Microsoft IOC table2027-01-18
domainprism-vertex[.]comhighdetectChain 2 infrastructure — Microsoft IOC table2027-01-18
domainprism-matrixs[.]comhighdetectChain 2 infrastructure — Microsoft IOC table2027-01-18
domainproton-network[.]comhighdetectChain 2 infrastructure — Microsoft IOC table2027-01-18
domaincreativecommunityinfo[.]arthighdetectChain 2 payload host — Microsoft IOC table2027-01-18
hostnamesphere-api.dialectosphere.in[.]netmediumhuntWebDAV share host in the observed rundll32 command line — The Hacker News2026-10-18
hostnameclaude-desktop[.]gitlab[.]iolowhuntFake Claude Code ClickFix lure — Red Canary, June 2025, relayed by The Hacker News. Dated; likely dead. gitlab.io is shared hosting — match the full host only.2026-08-18
path fragment\05fe317c-0981-4de2-bc8a-930d369db441\mediumpivotGUID directory in the observed WebDAV path — The Hacker News2026-08-18
filenameck-3d80df5d12cdfe6450a782fc87bf66b444.googlemediumpivotDisguised DLL — non-PE extension chosen to blend with expected traffic — The Hacker News2026-08-18
folder name%LocalAppData%\Temp\LogiOptionsPlusmediumpivotObserved ZIP-unpack staging folder masquerading as vendor software — Microsoft2026-10-18
task patternAutoupdate + 8 digitshighhuntPersistence masquerade pattern (no exact name published) — Microsoft hunting query2027-01-18
registry...\Explorer\RunMRUhighhuntClickFix delivery vector — the key Microsoft's own detection query pivots on2027-01-18
sha256None published. Microsoft's report contains no file hashes. Do not deploy hash IOCs for this campaign from this pack.
05

Affected Surface & Telemetry Matrix

SurfaceRequired telemetryPriorityGap risk
Windows workstations (user-context, interactive)Falcon ProcessRollup2 / SyntheticProcessRollup2CRITICALLow — baseline sensor telemetry
Run dialog / shell registryFalcon RegGenericValueUpdate (RunMRU)CRITICALMedium — registry event volume is a sensor policy setting; confirm RunMRU writes are captured in your tenant before trusting Q9
Scheduled task subsystemFalcon ScheduledTaskRegistered / ScheduledTaskModified; Windows Event ID 4698HIGHMedium — availability varies by sensor version and policy; Q6 falls back to schtasks command lines
DNS resolutionFalcon DnsRequest / SuspiciousDnsRequestHIGHLow — but encrypted DNS on the endpoint will blind this; verify DoH is disabled or proxied
WebDAV / SMB egressProxy and firewall logs; Falcon NetworkConnectIP4HIGHHigh — WebDAV over 443 is indistinguishable from HTTPS without proxy inspection
PowerShellScript block logging (4104), module logging (4103), transcriptionHIGHHigh — commonly not enabled; this is the only surface for the Chain 2 in-memory stage
Chromium browser profilesProcess telemetry referencing credential DBs; DPAPI auditHIGHHigh — Falcon does not emit a generic file-read event; Q8 is command-line based and will miss purely in-process reads
Identity plane (Entra ID / M365)Entra sign-in logs, risky sign-ins, token issuance, OneDrive/SharePoint auditCRITICALLow — but frequently un-hunted; this is where the impact materialises
Python runtimeProcess telemetry for python.exe / pythonw.exeMEDIUMLow — but noisy in developer populations; scope Q5 by asset group
In-memory execution (Fiber API, reflective loading)— noneMEDIUMAccepted gap — no practical detection surface; compensate at the stages either side
06

ATT&CK Mapping

TacticTechniqueObserved behaviorQuery / Control
Initial AccessT1189 — Drive-by CompromiseMalvertising and SEO-poisoned search results serving the ClickFix pageQ9 · H-N2, H-N7
Initial Access / ExecutionT1204 — User ExecutionUser pastes the attacker command into the Run dialogQ9 · H-I1, H-S3
ExecutionT1059.003 — Windows Command Shellcmd.exe launches the chain; pushd mounts the WebDAV shareQ2, Q3
ExecutionT1059.001 — PowerShellObfuscated downloader in Chain 2Q10 · H-I4
ExecutionT1059.006 — PythonBundled pythonw.exe runs the loader scriptQ5 · H-N1
Execution / Defense EvasionT1218.011 — Rundll32DLL loaded directly from a WebDAV share over HTTPSQ1 · H-I1, H-N3
Execution / Defense EvasionT1218.005 — MshtaRemote HTA retrieved and executedQ4 · H-N1
PersistenceT1053.005 — Scheduled Task/JobHidden task disguised as a software update, running at sign-inQ6 · H-N1
Defense EvasionT1027 — Obfuscated Files or Informationconhost --headless + delayed variable expansion; randomized variables, dead loops, custom encryptionQ2, Q10 · H-I2
Defense EvasionT1027.003 — SteganographyPayload embedded in JPEG pixel data, extracted in memoryQ10 · H-I2
Defense EvasionT1036 — MasqueradingTask named as a software update; staging folder named after vendor software; DLL given a .google extensionQ1, Q5, Q6
Defense EvasionT1070.003 — Clear Command HistoryPowerShell history cleared post-executionQ7 · H-I4
Defense EvasionT1070.006 — TimestompTimestamps copied from notepad.exe onto deployed filesGAP — no Falcon surface; see coverage map
Defense Evasion / ExecutionT1620 — Reflective Code LoadingRuntime-resolved LoadLibrary / GetProcAddress / VirtualAlloc / CreateThreadPARTIAL — H-I4 script block logging only
Defense Evasion / ExecutionT1055 — Process InjectionFiber-API in-memory shellcode executionGAP — compensate with H-I5 EDR block mode
Credential AccessT1555.003 — Credentials from Web BrowsersChromium Login Data / Web Data read; DPAPI used to decrypt passwords, cookies, tokensQ8 · H-N4, H-S1
CollectionT1005 — Data from Local SystemPDFs from Desktop and Downloads; Microsoft 365 documentsN4 · H-S2
CollectionT1074 — Data StagedCollected files staged locally before exfiltrationN4
Command & ControlT1102 — Web ServiceImage-hosting service used as payload delivery; campaign domains used for C2Q10, Q12 · H-N2
Command & ControlT1102.001 — Dead Drop ResolverEtherHiding — blockchain RPC endpoints and Web3 nodes resolve the next payload or C2 addressQ11 (heuristic)
07

Native Audit-Log Hunts (non-CQL)

These run outside Falcon and cover the surfaces where EDR telemetry is thin — particularly the identity-plane impact, which is the part of this campaign that actually costs you something.

N1 · Windows Security / Task Scheduler — masqueraded persistence

  • Event ID 4698 (task created) and 4702 (task updated). Filter task names matching Autoupdate followed by 8 digits, and any task whose action points into %LocalAppData%\Temp.
  • Microsoft-Windows-TaskScheduler/Operational 106 / 200 for registration and action-start.
  • On-box triage: Get-ScheduledTask | Where-Object { $_.TaskName -match 'Autoupdate\d{8}' } — and separately enumerate hidden tasks, which the Task Scheduler UI will not show by default.

N2 · Web proxy / secure web gateway — ClickFix delivery and WebDAV egress

  • Hunt User-Agent strings containing Microsoft-WebDAV-MiniRedir — that is the Windows WebClient service reaching the internet, and it is almost never legitimate outbound.
  • Requests with HTTP methods PROPFIND, OPTIONS or LOCK to non-corporate hosts.
  • First-seen resolutions to the campaign TLDs heavily represented here: .icu, .sale, .art, .cc.
  • Referrer chains landing on a page from a search-engine result immediately before a Run-dialog paste on the same host.

N3 · PowerShell operational logs

  • 4104 script block logging — the single most valuable artifact for Chain 2. Search for image-file downloads, FromBase64String, and reflective-loading API names (GetProcAddress, VirtualAlloc, CreateThread).
  • 4103 module logging and transcription output for the same window.
  • Absence of expected 4104 events on a host that otherwise shows PowerShell execution is itself a finding — see T1070.003.

N4 · Microsoft 365 / Entra ID — the impact hunt

  • Unified audit log: FileDownloaded / FileSyncDownloadedFull spikes from an affected user in the 24h either side of the endpoint event.
  • Entra sign-in logs: the same session token or device ID appearing from a new ASN, country or user agent — the classic token-replay signature. Check both interactive and non-interactive sign-ins; token replay usually shows in the non-interactive log.
  • Risky sign-ins / risk detections: anomalous token, unfamiliar sign-in properties, impossible travel.
  • OAuth grants: any new consent granted by the affected user after the compromise window.
  • Enumerate which corporate SaaS the user had live browser sessions for — every one of those is potentially compromised, not just M365.

N5 · Endpoint local artifacts (for confirmed hosts)

  • HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU — the pasted command usually survives here and is your cleanest confirmation of the initial lure.
  • %LocalAppData%\Temp — look for vendor-named folders containing a bundled Python runtime.
  • %AppData%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt — present, truncated, or missing.
  • Files whose MFT $STANDARD_INFORMATION and $FILE_NAME timestamps disagree — the timestomping tell that endpoint telemetry cannot give you.
08

CrowdStrike LogScale CQL Hunt Queries

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

All twelve queries are hand-translated from behavior described by Microsoft into the Falcon data model. Microsoft published their hunting logic as Defender KQL; none of that schema survives here. Run the behavioral queries (Q1–Q11) first — the atomic domain sweep (Q12) is the least durable of the set.

Q1 · rundll32 Loading a DLL from a Remote WebDAV / UNC Share
CONF HIGHFP LOWCOST LOW

Looks for: the core Chain 1 execution primitive — rundll32.exe handed a UNC path instead of a local DLL, under an interactive parent. Covers the direct variant and, because the mounted share still appears in the command line, most pushd variants too. FP: low, but legacy line-of-business installers occasionally rundll32 a DLL off an internal file server; those resolve to a known internal hostname and are easy to allowlist once.

// HUNT: rundll32 loading a DLL from a remote WebDAV / UNC share (ACR Stealer Chain 1)
// MITRE: T1218.011, T1204, T1189
// CONF: high | FP: low | COST: low | REQUIRES: ProcessRollup2
// FALSE POSITIVES: legacy LOB installers invoking rundll32 against an internal file server
// TUNING: add your internal file-server hostnames to the exclusion filter at the end
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^rundll32(\.exe)?$/i
| CommandLine=/\\\\[A-Za-z0-9._\-]+\\/
| ParentBaseFileName=/^(cmd|conhost|explorer|powershell|wscript|mshta)\.exe$/i
// exclude known-good internal shares (replace the sample hostnames):
| CommandLine!=/\\\\(fileserver01|deploy-share)\./i
| table([@timestamp, ComputerName, UserName, GrandparentBaseFileName, ParentBaseFileName, FileName, CommandLine, SHA256HashData, aid], limit=200)
Q2 · conhost.exe --headless Obfuscated Launcher
CONF HIGHFP LOWCOST LOW

Looks for: the third observed Chain 1 variant — conhost.exe --headless used to hide a pushd/rundll32 chain and the remote hostname behind delayed variable expansion. --headless is an undocumented switch with essentially no legitimate interactive use, which makes this one of the cleanest signals in the pack. FP: very low. Some terminal-emulator and CI tooling shells out through conhost, but not with this argument set.

// HUNT: conhost.exe --headless used to obfuscate a WebDAV loader chain (ACR Stealer Chain 1)
// MITRE: T1027, T1036, T1059.003
// CONF: high | FP: low | COST: low | REQUIRES: ProcessRollup2
// FALSE POSITIVES: rare; some terminal / automation tooling invokes conhost programmatically
// TUNING: if your terminal stack is noisy here, pin ParentBaseFileName to explorer.exe only
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^conhost(\.exe)?$/i
| CommandLine=/--headless/i
| CommandLine=/(pushd|rundll32|cmd\.exe|\\\\|\^|!)/i
| table([@timestamp, ComputerName, UserName, GrandparentBaseFileName, ParentBaseFileName, FileName, CommandLine, aid], limit=200)
Q3 · pushd / net use Mounting a Remote Share Before Execution
CONF MEDFP MEDCOST LOW

Looks for: the drive-letter-mount variant — pushd against a WebDAV share to obtain a temporary drive letter before rundll32 runs, so the subsequent command line looks local. FP: medium — pushd and net use against internal shares are routine in login scripts and admin workflows. The value here is the external hostname, so exclude internal namespaces aggressively; what remains is small.

// HUNT: cmd.exe mounting a remote share via pushd / net use (ACR Stealer Chain 1 variant 2)
// MITRE: T1218.011, T1105, T1059.003
// CONF: medium | FP: medium | COST: low | REQUIRES: ProcessRollup2
// FALSE POSITIVES: login scripts, software deployment, and admin sessions mounting internal shares
// TUNING: exclude your internal DFS namespace and file-server hostnames below; the residue is the hunt
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^cmd(\.exe)?$/i
| CommandLine=/(pushd|net\s+use)\s+.{0,8}\\\\/i
// exclude internal namespaces (replace with your own):
| CommandLine!=/\\\\(corp|dfs|fileserver01|sysvol|netlogon)/i
| ParentBaseFileName=/^(explorer|conhost|mshta|rundll32|powershell)\.exe$/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, CommandLine, aid], limit=200)
Q4 · mshta.exe Retrieving Remote HTA Content over HTTP(S)
CONF HIGHFP LOWCOST LOW

Looks for: the Chain 2 entry point. mshta.exe pointed at a remote URL is close to indefensible as benign behavior in a modern estate. Microsoft's own query additionally pins parent explorer.exe and a 7-digit URL path segment — both are included below as commented refinements rather than hard filters, so you see the full picture first and narrow only if volume demands. FP: low; a handful of legacy intranet apps still ship HTAs, and those resolve to internal hosts.

// HUNT: mshta.exe fetching remote HTA content (ACR Stealer Chain 2 entry)
// MITRE: T1218.005, T1204, T1189
// CONF: high | FP: low | COST: low | REQUIRES: ProcessRollup2
// FALSE POSITIVES: legacy intranet HTA applications (internal hostnames only)
// TUNING: exclude internal intranet hosts; to match Microsoft's tighter variant, uncomment
//         the ParentBaseFileName and 7-digit path filters below
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^mshta(\.exe)?$/i
| CommandLine=/https?:\/\//i
// | ParentBaseFileName=/^explorer\.exe$/i          -- Microsoft's observed parent
// | CommandLine=/[0-9]{7}/                          -- Microsoft's 7-digit path segment
| table([@timestamp, ComputerName, UserName, GrandparentBaseFileName, ParentBaseFileName, CommandLine, aid], limit=200)
Q5 · pythonw.exe Executing from a User Temp Path
CONF MEDFP MEDCOST LOW

Looks for: the bundled interpreter stage — a Python runtime unpacked from the delivered ZIP into %LocalAppData%\Temp and run as pythonw.exe specifically to suppress the console window. The observed staging folder masqueraded as vendor software (LogiOptionsPlus). FP: medium — developer workstations and some installers legitimately run Python from Temp. Scope by asset group: on a non-developer population this is close to zero-noise, on an engineering fleet it needs the parent-process filter.

// HUNT: pythonw.exe running from a user Temp staging folder (ACR Stealer Chain 1 loader)
// MITRE: T1059.006, T1036, T1204
// CONF: medium | FP: medium | COST: low | REQUIRES: ProcessRollup2
// FALSE POSITIVES: developer tooling, pip/venv activity, and installers that bundle a Python runtime
// TUNING: exclude your engineering asset group, or uncomment the ParentBaseFileName filter to
//         keep only interpreters launched by the ClickFix LOLBin chain
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^pythonw(\.exe)?$/i
| ImageFileName=/\\AppData\\Local\\Temp\\/i
// | ParentBaseFileName=/^(cmd|conhost|rundll32|mshta|powershell)\.exe$/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, SHA256HashData, aid], limit=200)
Q6 · Scheduled Task Masquerading as "Autoupdate" + 8 Digits
CONF HIGHFP LOWCOST LOW

Looks for: the Chain 1 persistence masquerade. No exact task name was published — this encodes the naming pattern Microsoft's own hunting query matched (Autoupdate plus an 8-digit number, consistent with a date stamp). It covers both the scheduled-task events and the schtasks command line, so it still fires if task telemetry is not enabled in your policy. FP: low — the digit-suffix pattern is distinctive enough that genuine updater tasks rarely collide.

Validate in tenant: ScheduledTaskRegistered / ScheduledTaskModified and the TaskName / TaskExecutable fields are sensor-version and policy dependent. Confirm they are populated in your tenant; if not, the CommandLine half of this query still works standalone.

// HUNT: scheduled task masquerading as a software update, "Autoupdate" + 8 digits (ACR Stealer)
// MITRE: T1053.005, T1036
// CONF: high | FP: low | COST: low
// REQUIRES: ProcessRollup2; ScheduledTaskRegistered/Modified (validate in tenant)
// FALSE POSITIVES: rare; a genuine vendor updater using the same date-suffix convention
// TUNING: confirm any hit against the task's Author and Executable before escalating
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2|ScheduledTaskRegistered|ScheduledTaskModified)$/
| CommandLine=/Autoupdate\d{8}/i or TaskName=/Autoupdate\d{8}/i
| table([@timestamp, ComputerName, UserName, FileName, TaskName, TaskExecutable, TaskAuthor, CommandLine, aid], limit=200)
Q7 · PowerShell History Clearing / Suppression
CONF MEDFP MEDCOST LOW

Looks for: the indicator-removal step Microsoft observed — PowerShell command history cleared after execution. Also catches the quieter variant, setting HistorySaveStyle to SaveNothing so nothing is ever written. FP: medium — administrators and power users clear history for legitimate reasons, and some CI tooling suppresses it by design. Correlate against the same host and hour as any Q1–Q6 hit; standalone, this is context rather than a detection.

// HUNT: PowerShell command-history clearing or suppression (ACR Stealer defense evasion)
// MITRE: T1070.003
// CONF: medium | FP: medium | COST: low | REQUIRES: ProcessRollup2
// FALSE POSITIVES: admin hygiene, CI/CD runners, and profile scripts that suppress history
// TUNING: treat as a supporting signal -- alert only when the same aid also hits Q1-Q6 in a 24h window
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| CommandLine=/(Clear-History|ConsoleHost_history|HistorySaveStyle\s+SaveNothing)/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, aid], limit=200)
Q8 · Non-Browser Process Referencing Chromium Credential Stores
CONF MEDFP MEDCOST MED

Looks for: the convergent credential-access stage — a process other than a browser touching Login Data, Web Data or Local State under a browser profile path. FP: medium — backup agents, browser-migration utilities, DLP tooling and password-manager importers all legitimately touch these files; exclude them by FileName once identified.

Known blind spot: Falcon does not emit a generic file-read event, so this query is command-line based. ACR Stealer reads these databases in-process after reflective loading, which produces no command line at all — so a clean result here does not mean credentials are safe. Treat Q8 as a bonus catch, and let the identity-plane hunts in section 7 (N4) carry the real weight.

// HUNT: non-browser process referencing Chromium credential databases (ACR Stealer collection)
// MITRE: T1555.003
// CONF: medium | FP: medium | COST: medium | REQUIRES: ProcessRollup2
// FALSE POSITIVES: backup agents, profile-migration tools, DLP scanners, password-manager importers
// TUNING: add your backup / DLP / migration agents to the FileName exclusion list below
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| CommandLine=/(Login\s?Data|Web\s?Data|Local\s?State)/i
| CommandLine=/AppData\\(Local|Roaming)\\/i
| !in(FileName, values=["chrome.exe", "msedge.exe", "firefox.exe", "brave.exe", "opera.exe", "vivaldi.exe"], ignoreCase=true)
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, SHA256HashData, aid], limit=200)
Q9 · ClickFix Run-Dialog Paste (RunMRU) — Highest-Value Detection
CONF HIGHFP LOWCOST LOW

Looks for: the ClickFix delivery vector itself. Windows records every Run-dialog entry in RunMRU, so this fires upstream of execution — it catches the lure even when the payload fails, is blocked, or is a variant nobody has published yet. This is the Falcon translation of the exact pivot Microsoft's own detection query uses. The second filter is what keeps it clean: a user typing cmd is normal, a user pasting an interpreter plus a remote resource or encoded blob is not. FP: low as written; drop the second filter for a broader, noisier hunt.

// HUNT: ClickFix Run-dialog paste recorded in RunMRU (ACR Stealer initial access)
// MITRE: T1204, T1189, T1059.003
// CONF: high | FP: low | COST: low | REQUIRES: registry telemetry (RunMRU writes)
// FALSE POSITIVES: IT staff pasting legitimate remote-admin one-liners into Run
// TUNING: exclude your admin asset group / privileged accounts. Removing the second
//         RegStringValue filter widens this to every interpreter typed into Run (noisier hunt).
#event_simpleName=/^(RegGenericValueUpdate|AsepValueUpdate|RegSystemConfigValueUpdate)$/
| RegObjectName=/RunMRU/i
| RegStringValue=/(powershell|cmd|mshta|rundll32|conhost|curl|msiexec|certutil|bitsadmin|python)/i
| RegStringValue=/(http|\\\\|-enc|-e |hidden|iex|FromBase64|--headless)/i
| table([@timestamp, ComputerName, UserName, RegObjectName, RegValueName, RegStringValue, aid], limit=200)
Q10 · PowerShell Downloading an Image File (Steganographic Loader)
CONF MEDFP MEDCOST MED

Looks for: the Chain 2 payload-retrieval stage — PowerShell fetching a JPEG from an image-hosting service, from which the real payload is extracted out of the pixel data. PowerShell downloading an image is intrinsically odd: legitimate scripts fetch data, archives and installers, not photographs. FP: medium — some monitoring, reporting and wallpaper-management scripts do pull images. Baseline once and the residue is small.

// HUNT: PowerShell retrieving an image file as a payload carrier (ACR Stealer Chain 2 steganography)
// MITRE: T1027.003, T1059.001, T1102
// CONF: medium | FP: medium | COST: medium | REQUIRES: ProcessRollup2
// FALSE POSITIVES: wallpaper/branding deployment, reporting scripts that embed charts, monitoring agents
// TUNING: exclude your imaging/branding deployment scripts by ParentBaseFileName or CommandLine path
#event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName=/^powershell(\.exe)?$/i
| CommandLine=/(DownloadString|DownloadData|DownloadFile|Invoke-WebRequest|Invoke-RestMethod|Net\.WebClient|Start-BitsTransfer|curl|wget)/i
| CommandLine=/\.(jpg|jpeg|png|gif|bmp|webp|svg)/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, CommandLine, aid], limit=200)
Q11 · EtherHiding — Interpreter Resolving Blockchain RPC / Web3 Infrastructure
CONF LOWFP HIGHCOST MED

Looks for: the dead-drop resolver stage — a script interpreter (not a browser) resolving blockchain RPC or Web3 node infrastructure to retrieve a follow-up payload or C2 address. The process constraint is what carries this query: a browser hitting a Web3 endpoint is unremarkable, pythonw.exe doing it is not.

Heuristic, not an IOC: Microsoft named the EtherHiding technique but did not publish the RPC providers used. The keyword list below is an authored hunting heuristic, not sourced infrastructure — it will produce false positives on ordinary CDN, node and RPC hostnames. Baseline it before you trust it, and never promote it to an alert without tuning. Use it as a ranked review list, not a verdict.

// HUNT: script interpreter resolving blockchain RPC / Web3 node infrastructure (EtherHiding dead drop)
// MITRE: T1102.001, T1059.006
// CONF: low | FP: high | COST: medium | REQUIRES: DnsRequest with process context
// NOTE: the domain keyword list is an authored heuristic -- Microsoft published the technique,
//       not the providers. No indicator in this query is a sourced IOC.
// FALSE POSITIVES: high -- ordinary CDN / node / RPC hostnames match these keywords
// TUNING: baseline over 30 days, allowlist every recurring destination, then review only new ones
#event_simpleName=/^(DnsRequest|SuspiciousDnsRequest)$/
| ContextBaseFileName=/^(pythonw|python|powershell|rundll32|mshta|conhost|wscript|cscript)\.exe$/i
| DomainName=/(rpc|web3|infura|blockchain|binance|ethereum)/i
| groupBy([ComputerName, ContextBaseFileName, DomainName], function=count(as=Requests))
| sort(Requests, order=desc, limit=200)
Q12 · ACR Stealer Atomic Domain IOC Sweep
CONF HIGHFP LOWCOST MED

Looks for: resolution of any published campaign domain. Every value below is reproduced from the Microsoft IOC table, plus the two host indicators relayed by The Hacker News. Registrable domains are matched so subdomains are caught, and the pattern is end-anchored to avoid substring collisions. FP: very low — a hit is a hit.

Perishability: this is the least durable query in the pack. Stealer infrastructure rotates in days-to-weeks, and Microsoft's observation window closed in mid-June 2026. Run it for retrospective scope, not as your primary control — a clean result proves nothing. Queries Q1, Q2, Q4, Q6 and Q9 are what will still be firing next quarter.

// HUNT: ACR Stealer published campaign domains (atomic IOC sweep)
// MITRE: T1102, T1071.001
// CONF: high | FP: low | COST: medium | REQUIRES: DnsRequest
// SOURCE: Microsoft Security Blog 2026-07-16 IOC table; hosts 17-18 from The Hacker News 2026-07-17
// FALSE POSITIVES: none expected -- any hit warrants immediate host triage
// NOTE: highly perishable. Absence of hits is NOT evidence of absence -- rely on Q1-Q11.
#event_simpleName=/^(DnsRequest|SuspiciousDnsRequest)$/
| DomainName=/(looksta\.icu|quirksturdy\.icu|strainedeasily\.icu|cpppemwjewjoiwejow\.sale|wifihot\.icu|filloco\.icu|raidher\.icu|apigrokcloud\.icu|enhanceblabber\.cc|deep-harborio\.com|auramatrixa\.com|zealpraxis\.com|prism-vertex\.com|prism-matrixs\.com|proton-network\.com|creativecommunityinfo\.art|dialectosphere\.in\.net|claude-desktop\.gitlab\.io)$/i
| table([@timestamp, ComputerName, UserName, ContextBaseFileName, DomainName, aid], limit=500)
09

CrowdStrike Custom IOA Recommendations

Five queries are clean enough to promote from hunt to Custom IOA. The rest stay investigate-only — either because their FP profile needs environment tuning first (Q3, Q5, Q7, Q8, Q10), because they are an explicitly heuristic hunt (Q11), or because they belong in IOC Management rather than an IOA (Q12).

IOA nameFromRule group / typePatternExclusionsAction
ACR — rundll32 DLL Load from Remote UNC ShareQ1Process Creation (Windows)Image rundll32.exe; CommandLine matches a UNC prefix; parent is an interactive shellInternal file-server and DFS hostnamesDetect — Critical
ACR — conhost --headless Obfuscated LaunchQ2Process Creation (Windows)Image conhost.exe; CommandLine contains --headless plus a loader keyword or caret/bang expansionApproved terminal and automation toolingBlock — Critical
ACR — mshta.exe Remote HTA ExecutionQ4Process Creation (Windows)Image mshta.exe; CommandLine contains an http or https URLLegacy intranet HTA hosts (internal only)Block — Critical
ACR — Software-Update Task MasqueradeQ6Process Creation (Windows)schtasks.exe CommandLine matching Autoupdate + 8 digitsNone known — validate any hitDetect — High
ACR — ClickFix Run-Dialog Interpreter PasteQ9Registry Operation (Windows)RunMRU value containing an interpreter plus a remote resource or encoding markerPrivileged / IT admin asset groupDetect — High

Deployment path

  1. Endpoint security → Configuration → Custom IOA rule groups — create a group named for this campaign and assign it to a pilot prevention policy first.
  2. Add each rule above in Monitor (detect-only) severity to start. Let it run one full business week.
  3. Review every hit, add the exclusions the review produces, then raise the two Block-recommended rules to prevention. Do not skip the monitor week on Q2 and Q4 — they are clean in most estates but the exceptions are always local.
  4. Q12's domains belong in IOC Management, not an IOA — import the CSV from section 10.

Investigate-only queries — pivot guidance

  • Q3, Q5, Q7, Q8, Q10: run weekly as scheduled searches with results to a hunt queue, not an alert inbox. Promote individually once your environment's baseline is documented.
  • Q11: run monthly as a ranked review list. It is a research aid, not a detection.
  • Cross-query correlation is where the real fidelity lives. Any single host hitting two or more of Q1–Q10 within 24 hours should escalate immediately regardless of the individual FP ratings.
10

Machine-Readable IOC Appendix

Read before importing: the SHA256 rows below are REPLACE_WITH_SHA256 placeholders on purpose. No file hashes have been published for this campaign by any cited source. Delete those rows or populate them from your own confirmed samples — do not ship them as-is.

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
domain,looksta.icu,detect,high,2027-01-18,ACR Stealer chain-1 infrastructure,campaign:ACRStealer
domain,quirksturdy.icu,detect,high,2027-01-18,ACR Stealer chain-1 infrastructure,campaign:ACRStealer
domain,strainedeasily.icu,detect,high,2027-01-18,ACR Stealer chain-1 infrastructure,campaign:ACRStealer
domain,cpppemwjewjoiwejow.sale,detect,high,2027-01-18,ACR Stealer chain-1 infrastructure,campaign:ACRStealer
domain,wifihot.icu,detect,high,2027-01-18,ACR Stealer chain-1 infrastructure,campaign:ACRStealer
domain,filloco.icu,detect,high,2027-01-18,ACR Stealer chain-1 infrastructure,campaign:ACRStealer
domain,raidher.icu,detect,high,2027-01-18,ACR Stealer chain-1 infrastructure,campaign:ACRStealer
domain,apigrokcloud.icu,detect,high,2027-01-18,ACR Stealer chain-1 infrastructure,campaign:ACRStealer
domain,enhanceblabber.cc,detect,high,2027-01-18,ACR Stealer chain-2 payload host,campaign:ACRStealer
domain,deep-harborio.com,detect,high,2027-01-18,ACR Stealer chain-2 infrastructure,campaign:ACRStealer
domain,auramatrixa.com,detect,high,2027-01-18,ACR Stealer chain-2 infrastructure,campaign:ACRStealer
domain,zealpraxis.com,detect,high,2027-01-18,ACR Stealer chain-2 infrastructure,campaign:ACRStealer
domain,prism-vertex.com,detect,high,2027-01-18,ACR Stealer chain-2 infrastructure,campaign:ACRStealer
domain,prism-matrixs.com,detect,high,2027-01-18,ACR Stealer chain-2 infrastructure,campaign:ACRStealer
domain,proton-network.com,detect,high,2027-01-18,ACR Stealer chain-2 infrastructure,campaign:ACRStealer
domain,creativecommunityinfo.art,detect,high,2027-01-18,ACR Stealer chain-2 payload host,campaign:ACRStealer
domain,sphere-api.dialectosphere.in.net,detect,high,2026-10-18,ACR Stealer WebDAV share host,campaign:ACRStealer
domain,claude-desktop.gitlab.io,detect,medium,2026-08-18,Fake Claude Code ClickFix lure (2025 reporting),campaign:ACRStealer
sha256,REPLACE_WITH_SHA256,prevent,critical,2027-01-18,ACR Stealer payload - NO HASH PUBLISHED,campaign:ACRStealer
sha256,REPLACE_WITH_SHA256,prevent,critical,2027-01-18,ACR Stealer loader DLL - NO HASH PUBLISHED,campaign:ACRStealer
Behavioral Signaturesdurable — outlives the domains
ACR Stealer / Amatera - behavioral signatures (ClickFix chains)

CHAIN 1 - WebDAV + rundll32 + Python
  B1  rundll32.exe with a UNC path argument, parent = interactive shell
  B2  conhost.exe --headless wrapping pushd / rundll32 (delayed expansion, ^ and !)
  B3  pushd or net use mounting an EXTERNAL share, immediately followed by execution
  B4  pythonw.exe executing from %LocalAppData%\Temp (console suppressed)
  B5  Temp staging folder named after vendor software (observed: LogiOptionsPlus)
  B6  DLL delivered with a non-PE extension to blend in (observed: .google)
  B7  scheduled task named "Autoupdate" + 8 digits, hidden, trigger = user sign-in
  B8  file timestamps copied from notepad.exe (timestomp)
  B9  PowerShell history cleared or HistorySaveStyle set to SaveNothing
  B10 script interpreter resolving blockchain RPC / Web3 nodes (EtherHiding)

CHAIN 2 - MSHTA + PowerShell + steganography
  B11 mshta.exe fetching a remote HTA over HTTPS, parent = explorer.exe
  B12 URL path containing a 7-digit segment
  B13 VBScript using COM objects to decode and run encoded PowerShell
  B14 PowerShell with randomized variable names, arithmetic no-ops, dead loops
  B15 PowerShell downloading a JPEG from an image-hosting service
  B16 runtime API resolution: LoadLibrary, GetProcAddress, VirtualAlloc,
      CreateThread, WaitForSingleObject

CONVERGENT - both chains
  B17 non-browser process reading Chromium Login Data / Web Data / Local State
  B18 DPAPI decryption of browser-stored passwords, cookies, auth tokens
  B19 staging of PDFs from Desktop/Downloads, M365 docs, OneDrive-synced folders

CORRELATION RULE
  Any single aid matching 2+ behaviors above within 24h = escalate immediately,
  regardless of the individual FP rating of each contributing signal.
Named Malware & Toolingnaming / lineage
FAMILY NAMES / ALIASES
  ACR Stealer          primary name
  AcridRain            alias
  Amatera Stealer      rebrand lineage (Proofpoint)

DISTRIBUTION MODEL
  Malware-as-a-Service (MaaS)

DELIVERY
  ClickFix             fake verification / "fix it" prompt driving a Run-dialog paste
  Malvertising         paid placement serving the ClickFix page
  SEO poisoning        manipulated organic search results

TECHNIQUES BY NAME
  EtherHiding          public blockchain / Web3 nodes as a dead-drop resolver
  Fiber API execution  ConvertThreadToFiber / CreateFiber / SwitchToFiber
  Steganography        payload carried in JPEG pixel data
  Timestomping         timestamps sourced from notepad.exe

LOLBINS ABUSED
  cmd.exe  rundll32.exe  mshta.exe  powershell.exe  pythonw.exe  conhost.exe

OBSERVATION WINDOW
  late April 2026 - mid June 2026 (Microsoft Defender Experts)
ASR / Policy Audit Checklistverify before you hunt
# ACR Stealer / ClickFix - exposure audit (run per host or via RMM)

# 1. WebClient service - the WebDAV prerequisite for Chain 1
Get-Service WebClient | Select-Object Name, Status, StartType

# 2. Run dialog available? (RunMRU is the ClickFix vector)
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer' -Name NoRun -EA SilentlyContinue

# 3. What has already been pasted into Run on this host?
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU' -EA SilentlyContinue

# 4. ASR rules currently applied (GUIDs verified against Microsoft Learn 2026-07-18)
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Actions
#   5beb7efe-fd9a-4556-801d-275e5ffc04cc  Block execution of potentially obfuscated scripts
#   d3e037e1-3eb8-44c8-a917-57927947596d  Block JS/VBScript launching downloaded executable content
#   c0033c00-d16d-4114-a5a0-dc9b3a7d2ceb  Block use of copied or impersonated system tools
#   01443614-cd74-433a-b99e-2ecdc07bfc25  Block executables failing prevalence/age/trust criteria
#   9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2  Block credential stealing from LSASS

# 5. PowerShell logging posture
Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging' -EA SilentlyContinue
Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging'     -EA SilentlyContinue
Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription'     -EA SilentlyContinue

# 6. Browser password-manager policy (reduces what there is to steal)
Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Google\Chrome'    -Name PasswordManagerEnabled -EA SilentlyContinue
Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Edge'   -Name PasswordManagerEnabled -EA SilentlyContinue

# 7. Suspicious scheduled tasks matching the observed masquerade pattern
Get-ScheduledTask | Where-Object { $_.TaskName -match 'Autoupdate\d{8}' } |
  Select-Object TaskName, State, Author

# 8. Tamper protection + cloud-delivered protection
Get-MpComputerStatus | Select-Object IsTamperProtected, AMServiceEnabled, RealTimeProtectionEnabled
Get-MpPreference | Select-Object MAPSReporting, SubmitSamplesConsent, DisableScriptScanning
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 actually arrive in your tenantRun each #event_simpleName filter alone over 24h with a count(). Pay particular attention to RegGenericValueUpdate (Q9) and ScheduledTaskRegistered (Q6) — both are policy dependent.Non-zero counts for every event type used. Any zero means that query is blind, not clean.
G2 · Benign baselineYou know what normal looks like before you alert on abnormalRun Q1–Q11 across 30 days of historical data. Catalogue every hit and classify it.Every recurring hit is either explained and excluded, or escalated. No unexplained residue.
G3 · Positive testThe query fires on the behavior it claims to detectOn an isolated test host, in a change window: type a benign marker string into the Run dialog (Q9); run conhost.exe --headless cmd /c echo test (Q2); register a task named Autoupdate20260718 pointing at calc.exe (Q6); run rundll32.exe against a DLL on an internal test share (Q1). All benign, all safe, all reversible.Each query returns the test event within the expected telemetry latency.
G4 · Negative testYour exclusions did not blind the queryRe-run G3 with the tuning exclusions applied.Test events still fire. If an exclusion swallowed one, it was written too broadly.
G5 · PromotionThe rule is safe to alert or block onCustom IOA in Monitor mode for one full business week on a pilot policy.Zero unexplained detections. Only then raise Q2 and Q4 to Block.
G6 · Response readinessThe team can actually act on a hitTabletop the containment runbook in section 14 with the on-call analyst.Analyst can articulate the token-revocation step without prompting. This is the step teams skip and it is the one that matters.

Do not deploy Q11 as an alert under any circumstances. Its keyword list is an authored heuristic, not published infrastructure. It is a monthly review list and nothing more.

12

Hardening — Tiered

Controls are ordered by leverage against this threat, not by generic best practice. The first two immediate controls each break an entire intrusion chain outright.

Immediate — deploy this week

I1 · Disable the WebClient service (kills Chain 1 outright)

WebDAV over HTTPS is the delivery mechanism for the entire first chain. No WebClient service, no WebDAV mount, no rundll32 load from a remote share. This is the single highest-leverage control in the pack and the overwhelming majority of enterprises have no legitimate need for outbound WebDAV.
Authority: MITRE M1042 (Disable or Remove Feature or Program); Microsoft — "restrict execution from untrusted internet-delivered content". Verify: Get-Service WebClient reports Stopped / Disabled. Risk: low; check first for SharePoint "Open in Explorer" workflows, which depend on it.

I2 · Disable the Run dialog (kills the ClickFix vector)

ClickFix requires the user to paste into Run. Remove Run and the lure has no landing surface — for both chains simultaneously. RunMRU is precisely the key Microsoft's own detection pivots on, which tells you how central this vector is.
Authority: MITRE M1038 (Execution Prevention), M1042. 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 developer groups via a filtered GPO; pilot on a ring before fleet-wide rollout. pilot first

I3 · Enable the ASR rules that intersect these chains

GUIDs below were pulled from Microsoft Learn on 2026-07-18, not recalled from memory.
5beb7efe-fd9a-4556-801d-275e5ffc04cc — Block execution of potentially obfuscated scripts (Chain 2 PowerShell)
d3e037e1-3eb8-44c8-a917-57927947596d — Block JavaScript or VBScript from launching downloaded executable content (Chain 2 VBScript loader)
c0033c00-d16d-4114-a5a0-dc9b3a7d2ceb — Block use of copied or impersonated system tools (bundled pythonw.exe)
01443614-cd74-433a-b99e-2ecdc07bfc25 — Block executables failing prevalence, age or trust criteria
Authority: MITRE M1038, M1040 (Behavior Prevention on Endpoint); Microsoft Defender ASR reference. Deploy in Audit first — the obfuscated-scripts rule can catch legitimate minified or packed internal scripts. audit first

I4 · Enable PowerShell script block logging, module logging and transcription

Chain 2 executes entirely in memory. Script block logging is the only practical visibility you will get into it, and it is also how you detect history-clearing by its absence.
Authority: MITRE M1047 (Audit); CIS Microsoft Windows Benchmark — PowerShell logging section; Microsoft Security Baseline. Verify: Event ID 4104 present in Microsoft-Windows-PowerShell/Operational. Note: forward these centrally — local-only logs are the first thing an operator clears.

I5 · Tamper protection, cloud-delivered protection, EDR in block mode

Directly per Microsoft's guidance. Cloud-delivered protection is a hard dependency for two of the ASR rules in I3 — without it, those rules silently do nothing.
Authority: MITRE M1040; Microsoft recommended mitigations. Verify: Get-MpComputerStatus | Select IsTamperProtected.

Near term — 1 to 4 weeks, pilot first

N1 · WDAC / AppLocker — constrain the LOLBins these chains depend on

Block mshta.exe outright (it has essentially no modern legitimate use), and deny execution of pythonw.exe, python.exe and unsigned binaries from user-writable paths (%LocalAppData%\Temp, %AppData%). This removes Chain 2's entry point and Chain 1's loader stage in one policy.
Authority: MITRE M1038; Microsoft App Control for Business recommended block rules. Pilot carefully on engineering populations. pilot first

N2 · Web and DNS filtering aimed at the actual delivery path

Block newly-registered domains and low-reputation TLDs — this campaign leans heavily on .icu, .sale, .art and .cc. Enable Defender for Endpoint Network Protection. Critically: block outbound WebDAV at the proxy by denying PROPFIND/LOCK methods and the Microsoft-WebDAV-MiniRedir user agent — that catches Chain 1 even where I1 could not be applied. Also constrain malvertising at source with an ad-blocking policy; that is where the ClickFix pages are served from.
Authority: MITRE M1021 (Restrict Web-Based Content); Microsoft — "enforce web filtering, block low-reputation or newly observed domains".

N3 · Remove browser-stored credentials from the equation

Disable the browser password manager by policy (PasswordManagerEnabled = 0 for Chrome and Edge) and migrate users to an enterprise password manager. ACR Stealer's entire credential-access stage targets Chromium Login Data and Web Data — if nothing is stored there, that stage returns nothing.
Authority: MITRE M1027 (Password Policies), M1017 (User Training); Microsoft — "reduce browser-stored credential reliance". Sequence matters: deploy the enterprise password manager before disabling the browser one, or users will start writing passwords down. sequence dependency

N4 · Shorten the value of a stolen token

Enable Conditional Access sign-in frequency and Continuous Access Evaluation; require compliant or hybrid-joined devices for M365 access. Stolen cookies are the actual payload of this campaign — a token that dies quickly and is bound to a managed device is worth far less on resale.
Authority: MITRE M1032 (Multi-factor Authentication), M1018 (User Account Management); Microsoft Entra Conditional Access guidance.

N5 · Alert on masqueraded persistence centrally

Forward Event ID 4698/4702 and monitor for hidden tasks and tasks whose action targets a user Temp path. Pair with Q6.
Authority: MITRE M1047 (Audit).

Strategic — 1 to 3 months

S1 · Phishing-resistant, token-bound authentication

Roll out FIDO2 / passkeys with Entra token protection (token binding). This is the durable answer to the entire infostealer category: it makes an exfiltrated cookie useless off the originating device. Everything else on this page raises the attacker's cost; this one removes the prize.
Authority: MITRE M1032; NIST SP 800-63B AAL3; Microsoft phishing-resistant MFA guidance.

S2 · Data-centric controls on what the stealer actually collects

The collection stage targets PDFs on Desktop and in Downloads, M365 documents and OneDrive-synced folders. Apply sensitivity labelling with encryption so exfiltrated documents remain unreadable, and constrain what syncs locally in the first place. This is the only control here that limits impact rather than probability.
Authority: MITRE M1057 (Data Loss Prevention); Microsoft Purview Information Protection.

S3 · ClickFix-specific user education

Generic phishing training does not cover this. The lure is not an email — it is a search result or an ad, and the ask is not "click a link" but "paste this to verify you are human". Users need to recognise that specific interaction as always malicious. Run a simulation using a benign marker string and measure paste rate.
Authority: MITRE M1017 (User Training); Microsoft — "educate users to recognize ClickFix prompts invoking command interpreters as malicious".

S4 · Application control maturity

Move from LOLBin blocklisting (N1) toward a managed installer / allowlist model under App Control for Business. Blocklists lose ground with every new LOLBin discovered; allowlists do not.
Authority: MITRE M1038; CIS Controls v8 Control 2 (Inventory and Control of Software Assets).

13

Deployable Playbooks

Test every playbook on a pilot ring before fleet deployment. P2 in particular changes visible user-facing behavior.

P1 · Disable the WebClient service (WebDAV) — breaks Chain 1

#requires -RunAsAdministrator
# P1 - Disable WebDAV client. Highest-leverage single control against ACR Stealer Chain 1.
# CHECK FIRST: SharePoint "Open in Explorer" and some legacy DMS clients depend on WebClient.

# 1. Record current state so the change is reversible
$before = Get-Service -Name WebClient | Select-Object Name, Status, StartType
$before | Format-List

# 2. Stop and disable
Stop-Service  -Name WebClient -Force -ErrorAction SilentlyContinue
Set-Service   -Name WebClient -StartupType Disabled

# 3. Verify
Get-Service -Name WebClient | Select-Object Name, Status, StartType

# --- Fleet-wide via GPO ---
# Computer Configuration -> Policies -> Windows Settings -> Security Settings
#   -> System Services -> WebClient -> Define this policy -> Disabled
#
# --- Rollback ---
# Set-Service -Name WebClient -StartupType Manual; Start-Service -Name WebClient

P2 · Disable the Run dialog — removes the ClickFix landing surface

# P2 - Remove the Run dialog. RunMRU is the ClickFix delivery vector for BOTH chains.
# USER-VISIBLE CHANGE. Pilot on a ring. Exempt IT/developer groups by GPO security filtering.

# --- Preferred: GPO ---
# User Configuration -> Policies -> Administrative Templates -> Start Menu and Taskbar
#   -> "Remove Run menu from Start Menu"  ->  Enabled
# (also disables Win+R and the Run entry in the WinX menu)

# --- Equivalent registry value (per-user) ---
$key = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer'
if (-not (Test-Path $key)) { New-Item -Path $key -Force | Out-Null }
New-ItemProperty -Path $key -Name 'NoRun' -Value 1 -PropertyType DWord -Force | Out-Null

# Verify
Get-ItemProperty -Path $key -Name 'NoRun'

# --- Forensic value: capture what was already pasted into Run before you clear it ---
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU' -ErrorAction SilentlyContinue

# --- Rollback ---
# Remove-ItemProperty -Path $key -Name 'NoRun' -ErrorAction SilentlyContinue

P3 · Enable the intersecting ASR rules (audit mode first)

#requires -RunAsAdministrator
# P3 - ASR rules intersecting the ACR Stealer chains.
# GUIDs verified against Microsoft Learn ASR rules reference, retrieved 2026-07-18.
# Action codes: 0 = Disabled, 1 = Block, 2 = Audit, 6 = Warn

$rules = @(
  '5beb7efe-fd9a-4556-801d-275e5ffc04cc',  # Block execution of potentially obfuscated scripts
  'd3e037e1-3eb8-44c8-a917-57927947596d',  # Block JS/VBScript launching downloaded executable content
  'c0033c00-d16d-4114-a5a0-dc9b3a7d2ceb',  # Block use of copied or impersonated system tools
  '01443614-cd74-433a-b99e-2ecdc07bfc25'   # Block executables failing prevalence/age/trust criteria
)

# STEP 1 - deploy in AUDIT for one to two weeks and review the generated events
foreach ($r in $rules) {
  Add-MpPreference -AttackSurfaceReductionRules_Ids $r -AttackSurfaceReductionRules_Actions Audit
}

# STEP 2 - after review, switch to Block (re-run with Enabled instead of Audit)
# foreach ($r in $rules) {
#   Add-MpPreference -AttackSurfaceReductionRules_Ids $r -AttackSurfaceReductionRules_Actions Enabled
# }

# Cloud-delivered protection is a DEPENDENCY for two of these rules - without it they no-op
Set-MpPreference -MAPSReporting Advanced
Set-MpPreference -SubmitSamplesConsent SendSafeSamples

# Verify
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Actions

P4 · Enable PowerShell logging — the only surface for Chain 2

#requires -RunAsAdministrator
# P4 - Script block logging, module logging and transcription.
# Chain 2 runs entirely in memory; 4104 events are the only practical visibility.

$base = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell'

# Script block logging (Event ID 4104)
$sb = "$base\ScriptBlockLogging"
if (-not (Test-Path $sb)) { New-Item -Path $sb -Force | Out-Null }
New-ItemProperty -Path $sb -Name 'EnableScriptBlockLogging' -Value 1 -PropertyType DWord -Force | Out-Null

# Module logging (Event ID 4103)
$ml = "$base\ModuleLogging"
if (-not (Test-Path $ml)) { New-Item -Path $ml -Force | Out-Null }
New-ItemProperty -Path $ml -Name 'EnableModuleLogging' -Value 1 -PropertyType DWord -Force | Out-Null
$mn = "$ml\ModuleNames"
if (-not (Test-Path $mn)) { New-Item -Path $mn -Force | Out-Null }
New-ItemProperty -Path $mn -Name '*' -Value '*' -PropertyType String -Force | Out-Null

# Transcription - point OutputDirectory at a write-only central share
$tr = "$base\Transcription"
if (-not (Test-Path $tr)) { New-Item -Path $tr -Force | Out-Null }
New-ItemProperty -Path $tr -Name 'EnableTranscripting'    -Value 1 -PropertyType DWord  -Force | Out-Null
New-ItemProperty -Path $tr -Name 'EnableInvocationHeader' -Value 1 -PropertyType DWord  -Force | Out-Null
New-ItemProperty -Path $tr -Name 'OutputDirectory' -Value 'C:\ProgramData\PSTranscripts' -PropertyType String -Force | Out-Null

# Verify
Get-ItemProperty $sb, $ml, $tr | Format-List

# IMPORTANT: forward these logs centrally. Local-only logs are the first thing an operator clears.

P5 · Reduce what there is to steal — browser credential policy

#requires -RunAsAdministrator
# P5 - Disable browser password managers.
# ACR Stealer's credential stage targets Chromium Login Data / Web Data.
# SEQUENCE: deploy an enterprise password manager FIRST, or users will write passwords down.

# Chrome
$chrome = 'HKLM:\SOFTWARE\Policies\Google\Chrome'
if (-not (Test-Path $chrome)) { New-Item -Path $chrome -Force | Out-Null }
New-ItemProperty -Path $chrome -Name 'PasswordManagerEnabled' -Value 0 -PropertyType DWord -Force | Out-Null

# Edge
$edge = 'HKLM:\SOFTWARE\Policies\Microsoft\Edge'
if (-not (Test-Path $edge)) { New-Item -Path $edge -Force | Out-Null }
New-ItemProperty -Path $edge -Name 'PasswordManagerEnabled' -Value 0 -PropertyType DWord -Force | Out-Null

# Verify
Get-ItemProperty $chrome -Name PasswordManagerEnabled -ErrorAction SilentlyContinue
Get-ItemProperty $edge   -Name PasswordManagerEnabled -ErrorAction SilentlyContinue

# NOTE: this stops NEW credentials being saved. Already-stored credentials remain until
# cleared - instruct users to clear saved passwords after migrating to the enterprise vault.

P6 · Identity-plane response — the step teams forget

# P6 - Token and credential revocation for a confirmed ACR Stealer host.
# Reimaging the endpoint does NOT invalidate stolen session cookies or refresh tokens.
# Run this BEFORE closing the endpoint ticket.

# Requires: Microsoft.Graph PowerShell SDK
Connect-MgGraph -Scopes 'User.ReadWrite.All','Directory.AccessAsUser.All','AuditLog.Read.All'

$upn = 'AFFECTED_USER@example.com'   # replace
$user = Get-MgUser -UserId $upn

# 1. Revoke all refresh tokens and sign the user out everywhere
Revoke-MgUserSignInSession -UserId $user.Id

# 2. Force password change at next sign-in (do this AFTER the revoke)
#    Then reset the password out-of-band through your normal process.

# 3. Review sign-ins for token replay - a stolen cookie shows up in the
#    NON-interactive log, from a new ASN / country / user agent
Get-MgAuditLogSignIn -Filter "userPrincipalName eq '$upn'" -Top 200 |
  Select-Object createdDateTime, ipAddress, appDisplayName, clientAppUsed,
                isInteractive, @{n='Location';e={$_.location.countryOrRegion}} |
  Sort-Object createdDateTime -Descending | Format-Table -AutoSize

# 4. Review OAuth consents granted by this user during the compromise window
Get-MgUserOauth2PermissionGrant -UserId $user.Id | Format-Table

# 5. Enumerate every OTHER SaaS the user had a live browser session for.
#    M365 is not the only thing in the cookie jar - rotate those too.
14

Containment Runbook

Sequencing rule for this threat: the endpoint is the crime scene, the identity plane is the loss. Isolate the host early, but do not let the endpoint work delay token revocation — stolen cookies are being used while you image the disk.

PhaseActionsOwnerEvidence to capture
P0 · Triage
0–15 min
Confirm the detection against the Q1–Q12 context. Identify the user, the host, and the approximate time of the Run-dialog paste. Determine which chain (WebDAV/Python vs MSHTA/PowerShell) from the parent-process tree. SOC L1 Falcon process tree; triggering query and its output; aid and ComputerName
P1 · Isolate
15–30 min
Network-contain the host in Falcon. Do not power off — in-memory execution means shutdown destroys the best evidence. Notify the user by an out-of-band channel that their session may be compromised. SOC L2 Containment timestamp; memory image if your process supports it
P2 · Revoke
parallel with P1 — do not wait
Run playbook P6: revoke all refresh tokens, force password reset, review non-interactive sign-ins for replay from a new ASN or country. Enumerate every other SaaS the user held a live browser session for and rotate those too. IAM / SOC L2 Revocation confirmation; sign-in log export covering 7 days either side
P3 · Scope
30–90 min
Run Q12 fleet-wide for other hosts touching the same infrastructure. Run Q9 across the same time window — where one user hit a ClickFix page, others in the same role likely saw the same ad or search result. Check whether the lure arrived by malvertising or a specific search term and hunt that term's referrer chain in proxy logs. Threat Hunter Query results; list of additional affected aids; the delivery URL if recoverable
P4 · Eradicate
90 min – 4 h
Remove the scheduled task (match on the "Autoupdate" + 8-digit pattern and enumerate hidden tasks). Delete the Temp staging folder. Capture RunMRU before clearing it — it is your cleanest proof of the initial lure. Given in-memory execution and timestomping, reimage rather than clean; you cannot prove you found everything. Endpoint Ops Task export; staging folder listing and hashes; RunMRU contents; reimage record
P5 · Assess data exposure
4–24 h
Review M365 unified audit log for FileDownloaded / FileSyncDownloadedFull spikes in the compromise window. Determine what was in Desktop, Downloads and synced OneDrive/SharePoint folders on that host. Escalate to Legal/Privacy if regulated data was in scope. IR Lead / DPO Audit log export; inventory of exposed documents; notification decision record
P6 · Recover
24–72 h
Return the reimaged host with I1 (WebClient disabled) and I2 (Run dialog disabled) applied. Re-enrol MFA. Confirm no residual sessions via a fresh sign-in log review at 24h and 72h. Endpoint Ops / IAM Rebuild record; hardening verification output; clean sign-in review
P7 · Harden & close
1–2 weeks
Roll the section 12 Immediate tier fleet-wide. Add exclusions learned during this incident to the Custom IOAs. Run a ClickFix-specific awareness push to the affected user's business unit while the incident is still salient. Security Engineering Change records; updated IOA exclusion list; training completion
15

Detection Coverage Map

TechniqueBehaviorCQLIOAHardeningCoverage
T1189 / T1204ClickFix lure → Run-dialog pasteQ9YesI2, N2, S3GOOD
T1218.011rundll32 loading DLL from WebDAV/UNCQ1, Q3YesI1, N1, N2GOOD
T1027 / T1036conhost --headless + delayed expansionQ2YesI3, N1GOOD
T1218.005mshta fetching remote HTAQ4YesN1, N2GOOD
T1053.005Scheduled task masquerading as an updaterQ6YesN5GOOD
T1059.003cmd.exe / pushd share mountQ2, Q3PartialI1GOOD
T1059.006Python loader via bundled pythonw.exeQ5NoN1, I3PARTIAL — FP profile needs environment tuning before promotion
T1059.001Obfuscated PowerShell downloaderQ10NoI3, I4PARTIAL — depends on script block logging being enabled
T1027.003Steganographic payload in JPEGQ10NoI3PARTIAL — detects the retrieval, not the extraction
T1070.003PowerShell history clearingQ7NoI4PARTIAL — supporting signal only; correlate with Q1–Q6
T1555.003Chromium credential store access + DPAPIQ8NoN3, S1PARTIAL — command-line based; misses in-process reads entirely
T1102 / T1071.001Campaign C2 infrastructureQ12IOC MgmtN2GOOD — but highly perishable
T1102.001EtherHiding dead-drop resolverQ11NoN2GAP — heuristic only; no published provider infrastructure
T1070.006Timestomping from notepad.exeNoGAP — no Falcon telemetry; MFT timestamp comparison at forensic stage only (N5)
T1620 / T1055Fiber API + reflective in-memory executionNoI3, I5GAP — accepted; no practical detection surface. Compensated by detecting the stages either side and by EDR block mode
T1005 / T1074Document collection and stagingNoS2GAP — covered by native hunt N4 (M365 audit log), not by CQL

Gap summary

  • Four hard gaps. Two are structural and accepted (in-memory execution T1620/T1055; timestomping T1070.006) — no EDR gives you these, so the pack compensates by detecting the stages immediately before and after. One is an intel gap (EtherHiding T1102.001 — the technique is named, the infrastructure is not). One is a tooling boundary (collection T1005/T1074 lives in M365 audit, not endpoint telemetry).
  • The most consequential partial is Q8. Falcon has no generic file-read event, and ACR Stealer reads browser databases in-process after reflective loading. A clean Q8 result is not evidence that credentials are safe. Treat the identity-plane hunts (section 7, N4) as the real detection for the credential-access stage.
  • Compensating strength: both chains converge on Run-dialog delivery upstream and browser/token theft downstream. Q9 covers the upstream chokepoint at high fidelity for both chains simultaneously, which is why it is the highest-value query in the pack despite the flashier middle stages.

Validation: gates G1–G6 in section 11 govern promotion. No query proceeds to alert before clearing G2 (benign baseline) and no query proceeds to block before clearing G5 (one monitor week). Q11 is permanently barred from alerting — it is a heuristic review list, not a detection.

16

Hunt Summary Ticket

TITLE:      ACR Stealer / Amatera - ClickFix intrusion chains (WebDAV+Python, MSHTA+steganography)
SEVERITY:   High - active MaaS infostealer, vendor-confirmed activity Apr-Jun 2026
SCOPE:      All Windows endpoints with interactive users. Priority: hosts whose users hold
            M365 / SaaS sessions and store credentials in a Chromium browser.

HYPOTHESIS: A user was served a ClickFix lure via malvertising or a poisoned search result and
            pasted an attacker command into the Run dialog, executing one of two chains:
              Chain 1 - rundll32 loads a DLL from a WebDAV share; ZIP + bundled pythonw.exe
                        stage in %LocalAppData%\Temp; in-memory shellcode via the Fiber API;
                        persistence as a hidden "Autoupdate"+8-digit scheduled task;
                        EtherHiding blockchain RPC used as a dead-drop C2 resolver.
              Chain 2 - MSHTA fetches a remote HTA; VBScript decodes PowerShell; a JPEG from an
                        image host carries the payload in pixel data, executed reflectively.
            Both converge on Chromium credential/token theft and document collection.

QUERIES:    Q1  rundll32 DLL load from remote WebDAV/UNC      CONF high | FP low  | COST low
            Q2  conhost --headless obfuscated launcher        CONF high | FP low  | COST low
            Q3  pushd / net use remote share mount            CONF med  | FP med  | COST low
            Q4  mshta remote HTA over HTTP(S)                 CONF high | FP low  | COST low
            Q5  pythonw.exe from user Temp path               CONF med  | FP med  | COST low
            Q6  scheduled task "Autoupdate" + 8 digits        CONF high | FP low  | COST low
            Q7  PowerShell history clearing                   CONF med  | FP med  | COST low
            Q8  non-browser touching Chromium cred stores     CONF med  | FP med  | COST med
            Q9  ClickFix Run-dialog paste (RunMRU)            CONF high | FP low  | COST low
            Q10 PowerShell downloading an image file          CONF med  | FP med  | COST med
            Q11 EtherHiding blockchain RPC (HEURISTIC ONLY)   CONF low  | FP high | COST med
            Q12 published campaign domain sweep               CONF high | FP low  | COST med

DO FIRST:   1. Q9 across 30 days - the ClickFix vector, upstream of execution, covers both chains
            2. Q1 + Q2 + Q4 across 30 days - the three highest-fidelity execution primitives
            3. Q6 - persistence; anything here is almost certainly a true positive
            4. Q12 - retrospective infrastructure scope (perishable; a clean result proves nothing)
            5. Native hunt N4 - M365 / Entra identity-plane impact review

FINDINGS:   [ ] Q9  hits: ______    [ ] Q1 hits: ______    [ ] Q2 hits: ______
            [ ] Q4  hits: ______    [ ] Q6 hits: ______    [ ] Q12 hits: ______
            [ ] Hosts with 2+ query hits in 24h (auto-escalate): ______
            [ ] Affected identities requiring token revocation: ______

GAPS:       - In-memory execution (Fiber API, reflective loading) - no detection surface, accepted
            - Timestomping - no Falcon telemetry; MFT comparison at forensic stage only
            - EtherHiding - technique published, infrastructure not; Q11 is heuristic, never alert
            - Document collection/staging - lives in M365 audit log, not endpoint telemetry
            - Q8 misses in-process credential reads; do NOT read a clean Q8 as "creds safe"
            - No file hashes published by any source; IOC CSV ships placeholders by design

ACTIONS:    [ ] Promote Q1, Q2, Q4, Q6, Q9 to Custom IOA (Monitor mode, pilot policy, 1 week)
            [ ] Import the section 10 domain CSV into Falcon IOC Management
            [ ] Deploy hardening Immediate tier: I1 WebClient disable, I2 Run dialog,
                I3 ASR rules (audit first), I4 PowerShell logging, I5 tamper protection
            [ ] Confirm RunMRU registry telemetry is captured in tenant (gate G1 - Q9 depends on it)
            [ ] Confirm ScheduledTaskRegistered / TaskName populated in tenant (gate G1 - Q6)
            [ ] Schedule ClickFix-specific user awareness for affected business units

OWNER:      ______________________
VERSION:    v0.1 - 2026-07-18
17

Changelog

v0.1 2026-07-18 Initial draft. Built from the Microsoft Security Blog report of 2026-07-16 and corroborating Hacker News coverage of 2026-07-17, with Proofpoint for the Amatera rebrand lineage. Twelve CQL hunt queries covering both intrusion chains plus the convergent credential-access stage; five promoted as Custom IOA candidates. All 18 published domain and host indicators traced to a cited source — no hashes, task names or registry keys invented where none were published. ASR rule GUIDs pulled from Microsoft Learn on 2026-07-18 rather than recalled. Hardening tiered across Immediate / Near term / Strategic with six deployable playbooks. Four coverage gaps documented rather than papered over.
18

References

TierSourceUsed forAccessed
1Microsoft Security Blog — ACR Stealer: Two observed intrusion chains amid increased threat activity (2026-07-16)Primary. Both intrusion chains, all 16 campaign domain IOCs, LOLBin set, scheduled-task masquerade pattern, ATT&CK mapping, recommended mitigations, RunMRU detection pivot2026-07-18
1The Hacker News — ACR Stealer Uses ClickFix Lures to Steal Browser Tokens and Microsoft 365 Files (2026-07-17)Corroboration; the literal WebDAV rundll32 command line including host, GUID path and disguised .google extension; relayed Red Canary GitLab lure indicator2026-07-18
2Proofpoint — Amatera Stealer: Rebranded ACR Stealer With Improved Evasion, SophisticationACR → Amatera rebrand lineage and MaaS distribution model; naming context only, no IOCs sourced2026-07-18
1Microsoft Learn — Attack surface reduction rules referenceVerbatim ASR rule names and GUIDs used in hardening control I3 and playbook P32026-07-18
refMITRE ATT&CKTechnique IDs in section 6 and mitigation M-numbers throughout section 122026-07-18
refCIS Benchmarks — Microsoft WindowsPowerShell logging and application-control baseline citations (I4, S4)2026-07-18

Provenance statement. Every atomic indicator in this pack — all 16 campaign domains, both additional host indicators, the GUID path fragment, the disguised filename and the Temp staging folder name — is reproduced from one of the cited sources above. Where a source published nothing (file hashes, exact scheduled-task names, registry keys beyond RunMRU, EtherHiding RPC providers), this pack says so explicitly and ships a placeholder or a labelled heuristic rather than an invented value.