FakeAgent — Malicious Claude Artifact → SectopRAT — Hunt & Hardening Pack

Malvertising campaign documented by Huntress on 2026-07-22: a Bing sponsored ad for "Claude Desktop app" pointed at a malicious public Claude Artifact hosted on the legitimate claude.ai domain (7,100 views before Anthropic removed it) → redirect to a fake installer → ClaudeDesktop.exe, which is a renamed JetBrains jcef_helper.exe CEF host used purely as a DLL-sideloading vessel for a VMProtect-packed libcef.dll → second-stage IBM SPSS sslconf.exe + tempdir.dll staged in an EdgeUpdate\Install path with a GPU/DXGI anti-VM gate and a DirectX-shader AES-256-CTR decryptor → SectopRAT (ArechClient2) with EtherHiding C2 resolution off BNB Smart Chain. 29 organizations compromised 2026-07-21 to 2026-07-22. Defensive hunt & harden pack — no offensive code.
Threat
FakeAgent campaign · SectopRAT / ArechClient2
Severity
ACTIVE ITW · 29 ORGS
Type
Malvertising → loader → infostealer/RAT (HVNC)
Initial Access
Bing sponsored ad → malicious public Claude Artifact on claude.ai
Signature TTP
Renamed CEF host + libcef.dll sideload · EdgeUpdate\Install sslconf.exe · EtherHiding C2
Version
v0.3 · 2026-07-24
Author
HuntPack
Confidence
High (single Tier-1 vendor report, corroborated by two Tier-2 outlets)
01

Executive Summary

Huntress published (2026-07-22) an analysis of a malvertising campaign it named FakeAgent, in which at least 29 organizations were compromised over a two-day window (2026-07-21 to 2026-07-22). Victims performed an ordinary Bing search for "CLAUDE DESKTOP APP". Among the sponsored results was a link that pointed at the genuine claude.ai domain — but at an attacker-published public Claude Artifact, a user-generated page that Claude renders and hosts on its own domain. That artifact rendered a convincing fake Claude Desktop download page and its "Download" button redirected the visitor off-domain to a fake installer. The artifact was viewed 7,100 times before Anthropic removed it on report.

The attacker objective is credential and financial-data theft at scale. The delivered payload is SectopRAT (a.k.a. ArechClient2), a .NET remote access trojan with HVNC — its decompiled strings reference browser logins, cookies, autofill records, credit cards, Chromium key theft, FTP and messaging clients including Discord. HVNC means the operator gets a hidden interactive desktop on the victim host, so this is a hands-on-keyboard capability, not just a log-grabber.

The execution chain is built almost entirely out of legitimate signed binaries. ClaudeDesktop.exe is not a Claude binary at all: it is a renamed component of JetBrains' jcef_helper.exe, a Chromium Embedded Framework host, and it is byte-identical to the DockerDesktop.exe the same actor drops for scheduled-task reinfection. Its only job is to load a tampered libcef.dll sitting beside it (DLL side-loading, T1574.002). The second stage repeats the trick with a signed IBM SPSS sslconf.exe written to %APPDATA%\Roaming\Microsoft\EdgeUpdate\Install\sslconf.exe, paired with a malicious tempdir.dll. Anti-analysis is unusually heavy: VMProtect on the first-stage DLL, a GPU/DXGI anti-VM gate in the second (it checks adapter vendor IDs 0x1234 for QEMU and 0x15AD for VMware, bails when VRAM is under 1 GB, and runs a compute-shader timing check), and a payload (appcfg.dat) whose AES-256-CTR decryption runs as a compiled DirectX SM5 shader with a modified MixColumns step so that CPU-side crypto-API hooking sees nothing.

C2 is resolved via EtherHiding: the address is fetched from Ethereum smart contracts on BNB Smart Chain, which lets the operator rotate infrastructure with a single transaction and makes takedown ineffective. Huntress recovered the contract cryptomaterial and decrypted the full historical C2 list back to 2025-05-30 — 21 addresses, of which 2.24.131[.]246 is current as of 2026-06-12. The same registrant email indexes across 10 malicious domains since December 2025, one of which (polse[.]us) was seized by Microsoft during Operation Endgame, and the same operator ran an April 2026 fake Docker Desktop campaign distributed via Docker Hub with the identical libcef.dll chain.

Defender priority: the atomic indicators here are perishable by design — EtherHiding means the C2 rotates on demand, and the delivery domains are disposable. The durable, low-FP tells are Q2 (the benign JetBrains CEF-host hash executing under any filename other than jcef_helper.exe — this is the masquerade itself, and it survives every rename), Q4 (an IBM SPSS sslconf.exe living under ...\Roaming\Microsoft\EdgeUpdate\Install\, a combination that has no legitimate explanation), and Q5 (persistence pointing into that same staging directory). Run those three first. Then treat the "trusted brand as a leading DNS label" pattern in Q7 (claude.ai.download-app[.]us) as a standing control, not a one-off IOC — it is the reusable half of this campaign.
02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry
1 · Vendor researchHuntress — "Inside FakeAgent: How a Claude Desktop Malvertising Campaign Hit 29 Organizations with SectopRAT" (2026-07-22)PRIMARY. Full chain and the complete atomic IOC set: the public-artifact URL, the two redirect domains, five SHA-256 hashes (three malicious, two benign-but-abused), both BSC contract addresses, the current C2 and 20 historical C2 IPs decrypted from BSC transactions, the EdgeUpdate\Install\sslconf.exe path, the GPU/DXGI anti-VM detail, the SM5-shader AES-256-CTR decryptor, the SectopRAT attribution and the April 2026 Docker Hub precursoryes
2 · Vendor pressBleepingComputer — "Fake Claude app promoted by Bing ads pushes SectopRAT malware"Independent corroboration of the 29-org scope, the 2026-07-21/22 window, the 7,100 artifact views, the JetBrains CEF component + libcef.dll sideload, and EtherHiding over BNB Smart Chain. Adds SectopRAT/ArechClient2 lineage (active since 2019, HVNC) and notes recent SectopRAT delivery via CastleLoader and ClickFixyes
2 · Vendor pressHelp Net Security — "How attackers hosted a fake Claude download page on the claude.ai domain"Corroborates the artifact-abuse mechanic (public artifact links are viewable without a Claude account), both redirect hops, the bundle contents (renamed signed JetBrains binary + tampered libcef.dll + DockerDesktop.exe registered as a scheduled task for reinfection), and the April 2026 Docker Hub linkyes
3 · BackgroundMalpedia — win.sectop_rat family pageSectopRAT / ArechClient2 family lineage, aliases and prior public reporting. Used only for background framing, no atomic IOCs carriedpartial
3 · BackgroundAhnLab ASEC — SectopRAT (ArechClient2) distributed as a fake Notion installerPrior art on the same family being delivered through fake-installer lures; supports the "durable behaviour is the fake-installer masquerade, not the hash" framingpartial
IT Security Guru — FakeAgent campaign write-up (2026-07-23)Not carried. The site returned HTTP 403 to every fetch attempt, so no snapshot could be saved. Nothing from it is cited and no indicator in this pack depends on itno
Provenance note. Every atomic indicator shipped in §10 was traced back to the saved verbatim text of a fetched source in FakeAgent-ClaudeArtifact-SectopRAT-Hunt-sources/. Where this pack's brief differed from what the primary report actually says, the source wins: the backup SectopRAT domain is 5ca8758c-02d0-4a72-89c8-d468b66dda41[.]com as published by Huntress. Vendor-attributed but unpublished internals (the AES key material, the decrypted appcfg.dat) are deliberately absent — they are not defender-actionable and were never released.
03

Hunt Brief & Attack Chain

Attack chain

#StepTelemetryHunt angle
1User searches Bing for "CLAUDE DESKTOP APP"; clicks a sponsored result whose destination is on the genuine claude.ai domainProxy / secure web gateway logs; browser historyWeb-proxy hunt for requests to claude.ai/public/artifacts/… immediately followed by an off-domain download (§7)
2Malicious public Claude Artifact renders a fake Claude Desktop download page; "Download" redirects off-domainProxy logs; DNSDNS/proxy for the specific artifact path and the redirect hop; generic hunt for a trusted brand appearing as a leading label of an unrelated domain (Q7)
3Redirect claude.ai.download-app[.]usdownloading-api[.]it[.]com/html/claude/win serves the bundleDnsRequest, NetworkConnectIP4, proxyQ6 / Q7 — delivery-domain resolution from a browser process
4ClaudeDesktop.exe written to a browser-download path and executed by the userPeFileWritten, ProcessRollup2Q1 — masquerade filename executing from Downloads/Temp with a browser parent
5That EXE is a renamed JetBrains jcef_helper.exe CEF host, byte-identical to the dropped DockerDesktop.exeProcessRollup2 + SHA256HashDataQ2 — the benign CEF-host hash running under a name that is not jcef_helper.exe. Rename-proof
6Tampered libcef.dll (VMProtect-packed, references BSC contract 0xc1907d7be91f95903ad66d775c397302e7dd9228) side-loaded from the same directoryPeFileWritten, module load (ImageHash)Q3 — known-bad hash, or a libcef.dll in a user-writable path
7Stager pulls a payload referenced through the Ethereum contract (staged as cache.dat) and installs the second stageNetworkConnectIP4, PeFileWrittenEgress to BSC RPC endpoints from a non-browser process (§7 native hunt — partial coverage)
8Persistence stage: signed IBM SPSS sslconf.exe written to %APPDATA%\Roaming\Microsoft\EdgeUpdate\Install\ with malicious tempdir.dll beside itPeFileWritten, ProcessRollup2Q4 — highest-fidelity signal in the pack
9tempdir.dll runs a GPU/DXGI anti-VM gate (vendor IDs 0x1234 QEMU / 0x15AD VMware, VRAM under 1 GB, compute-shader timing) before proceedingGAP No endpoint telemetry exposes DXGI adapter enumeration. Detonate on bare metal, not in a VM
10appcfg.dat decrypted on the GPU via a compiled DirectX SM5 shader (AES-256-CTR with a modified MixColumns)PeFileWritten / file-write for appcfg.datQ4 — the appcfg.dat artifact next to the sideload host. The shader decryption itself is not observable
11Decrypted blob carves a PE plus a .NET assembly — SectopRAT — loaded in-processProcessRollup2 (host process), module loadQ9 — the masquerading host holding outbound connections; .NET reflective load itself is Partial
12Scheduled task re-runs DockerDesktop.exe to reinfect; Run-key / task persistence into the staging directoryAsepValueUpdate, ScheduledTaskRegistered, ProcessRollup2Q5
13SectopRAT resolves live C2 from BSC contracts (EtherHiding), beacons to 2.24.131[.]246, backup domain 5ca8758c-02d0-4a72-89c8-d468b66dda41[.]comNetworkConnectIP4, DnsRequestQ6 / Q7
14Collection: browser logins, cookies, autofill, credit cards, Chromium keys, FTP creds, Discord and messaging clients; HVNC hands-on sessionProcessRollup2, NetworkConnectIP4Q9 — Partial. Falcon does not emit a generic file-read event, so credential-store reads are inferred from the host process, not observed directly

Hunt hypotheses (ordered by fidelity)

#HypothesisMITREFalcon eventsExpected FP sourceConf
H1A binary whose SHA-256 is the known-benign JetBrains CEF host is running under a filename other than jcef_helper.exe — i.e. it has been renamed to masqueradeT1036.005, T1574.002ProcessRollup2Repackaged IDEs that legitimately rename the helper (rare); confirm the parenthigh
H2A signed IBM SPSS sslconf.exe is executing from, or was written into, an %APPDATA%\Roaming\Microsoft\EdgeUpdate\Install\ pathT1574.002, T1036.005, T1547ProcessRollup2, PeFileWrittenGenuine SPSS installs (which live under Program Files, never EdgeUpdate)high
H3ClaudeDesktop.exe or DockerDesktop.exe executed from a browser-download or temp pathT1204.002, T1036.005ProcessRollup2, PeFileWrittenA genuine Docker Desktop installer run from Downloads (Docker ships "Docker Desktop Installer.exe", not DockerDesktop.exe)high
H4A libcef.dll or tempdir.dll matching the published hashes, or sitting in a user-writable directory next to a renamed host, is loadedT1574.002PeFileWritten, ImageHashLegitimate Electron/CEF apps installed per-user under \AppData\Local\Programs\high
H5Run-key or scheduled-task persistence references the EdgeUpdate staging directory or one of the masquerade filenamesT1547.001, T1053.005AsepValueUpdate, ScheduledTaskRegistered, ProcessRollup2Genuine Microsoft Edge updater tasks (which live under Program Files (x86))high
H6A host connected to one of the 21 decrypted C2 addresses, or resolved a delivery/backup domainT1071.001, T1105NetworkConnectIP4, DnsRequestShared hosting reuse on the historical IPs (they span 2025-05 to 2026-06)high
H7A DNS name embeds a trusted software brand as its leading label on an unrelated registrable domain (claude.ai.<attacker>.tld)T1583.001, T1566.002DnsRequestLegitimate CDN and SaaS vanity chains that do exactly thismedium
H8A masquerading CEF/SPSS host process is itself holding outbound connections — the sideloaded RAT beaconing through its vesselT1071.001, T1055NetworkConnectIP4Genuine CEF/Electron apps talk to the internet constantlymedium
04

Consolidated IOC Table

TypeValueConfActionContextExpiry
URLclaude.ai/public/artifacts/ca456f1f-44c0-42af-b329-4f1c7534a877highhuntMalicious public Claude Artifact — the fake download page. Removed by Anthropic on report; 7,100 views. Do not block claude.ai itself — block/alert on the artifact path only2026-10-24
Domainclaude.ai.download-app[.]ushighdetectFirst redirect hop. Brand-as-leading-label lookalike; registrable domain is download-app[.]us (registered 2026-05-09)2027-01-24
Domaindownload-app[.]ushighdetectRegistrable parent of the redirect host; registrant email indexes across 10 malicious domains since 2025-122027-01-24
Domaindownloading-api[.]it[.]comhighdetectSecond hop, path /html/claude/win — serves ClaudeDesktop.exe2027-01-24
Domain5ca8758c-02d0-4a72-89c8-d468b66dda41[.]comhighdetectBackup SectopRAT C2 domain2027-01-24
IPv42.24.131[.]246highdetectCurrent SectopRAT C2, live since 2026-06-12 per the BSC contract transaction history2027-01-24
IPv4 (20)See §10 — historical C2 set (107.189.*, 45.59.*, 104.194.133[.]210, 195.110.58[.]222, 191.101.80[.]211)mediumhuntDecrypted from BSC contract transactions, 2025-05-30 through 2026-05-12. Likely attributable to other campaigns by the same operator; treat as hunt/enrich, not block — shared hosting reuse is likely over a 13-month span2026-10-24
SHA-25626bae4d7012bf59847ab4036a065419c3d4ca47e020479f55b3b2c6d0d21394ahighdetectMalicious libcef.dll — VMProtect-packed first-stage sideload payload2027-01-24
SHA-2561cd58cfba596da296ab1878d74023e00c399345a1b6c2a0e5446c53563f4e3bbhighdetectMalicious tempdir.dll — GPU/DXGI anti-VM gate + SM5-shader AES-256-CTR decryptor2027-01-24
SHA-2561fe3646d27d286db8123297e06ae7badf3e26f352a04f91b6d82c28869a91664highdetectEmbedded SectopRAT .NET payload carved from the decrypted appcfg.dat2027-01-24
SHA-256f8acb8f5cf88b77a4c27d7fd6856aa299bb178e85f9963c2fbd447d818da3ed0highhuntBENIGN component — the JetBrains jcef_helper.exe CEF host shipped as both ClaudeDesktop.exe and DockerDesktop.exe. Never block. Hunt on it running under a non-jcef_helper filename (Q2)2026-10-24
SHA-256fd826215add30c1319eefa291b6eaf8ddfa7720cfe816c49aef6fe8a88de7939highhuntBENIGN component — signed IBM SPSS sslconf.exe used as the second-stage sideload host. Never block. Hunt on its path (Q4)2026-10-24
BSC contract0xe012d0f34cde9b870e9d9ed566ea5f8fd9b92228highenrichSectopRAT EtherHiding contract on BNB Smart Chain — resolves the live C22026-08-24
BSC contract0xc1907d7be91f95903ad66d775c397302e7dd9228highenrichlibcef.dll stager EtherHiding contract, referenced directly in the DLL2026-08-24
FilenameClaudeDesktop.exe · DockerDesktop.exe · libcef.dll · tempdir.dll · sslconf.exe · appcfg.dat · cache.dathighhuntCampaign filename set. Only meaningful in combination with path — three of these are legitimate filenames in their proper directories2026-10-24
Path%APPDATA%\Roaming\Microsoft\EdgeUpdate\Install\highdetectSecond-stage staging directory. A per-user EdgeUpdate\Install path is the single strongest signal in this pack2027-01-24
Domainpolse[.]usmediumenrichHistorical domain sharing the actor's registrant email; seized by Microsoft during Operation Endgame for hosting StealC. Attribution context only — not part of this campaign's live chain2026-08-24
05

Affected Surface & Telemetry Matrix

SurfaceRequired telemetryPriorityGap risk
Windows workstations (user-writable execution)ProcessRollup2 / SyntheticProcessRollup2 with SHA256HashData populatedcriticalLow — standard Falcon sensor coverage
Executable/DLL writes to user pathsPeFileWritten, NewExecutableWrittencriticalLow
Module load (DLL side-loading)Module-load hash telemetry — delivered as ImageHash in most tenantshighMedium — module-load event naming and retention vary by tenant and sensor version. Q3/Q8/Q10 carry an in-query ⚠ validate in tenant note; Sysmon EventID 7 is the fallback (§7)
Persistence (ASEP + scheduled tasks)AsepValueUpdate, RegGenericValueUpdate, ScheduledTaskRegisteredcriticalLow—Medium. TaskName / TaskExecutable population varies; the schtasks command-line arm in Q5 is the belt-and-braces path
Egress (C2 + delivery)NetworkConnectIP4, DnsRequestcriticalLow. Note DNS-over-HTTPS in the browser can blind DnsRequest for the delivery hops — proxy logs (§7) cover that
Web gateway / proxyFull URL logging including claude.ai pathshighHigh — many estates log domain only, not path. Without path logging the artifact hop is invisible and step 1—2 of the chain is unhunted
GPU / DXGI adapter enumerationn/aGAP — no EDR telemetry exposes this. Consequence: the malware will not detonate in a standard VM sandbox, so lab validation must use bare metal or a GPU-passthrough host
Browser credential storeshighPartial — Falcon emits no generic file-read event, so credential-store access is inferred from the host process (Q9), not observed. Sysmon EventID 11/ file-audit ACLs on the Chromium profile dirs close this (§7)
06

ATT&CK Mapping

TacticTechniqueObserved behaviorQuery / control
Resource DevelopmentT1583.001 — Acquire Infrastructure: DomainsRedirect and C2 domains registered under one registrant email; 10 domains indexed since 2025-12Q7 · H-N3
Resource DevelopmentT1583.008 — MalvertisingBing sponsored ad for "Claude Desktop app"§7 proxy hunt · H-S2
Resource DevelopmentT1584.006 — Compromise Infrastructure: Web ServicesAbuse of the legitimate public Claude Artifact hosting feature to serve the lure page from a trusted domain§7 proxy hunt · H-S1
Initial AccessT1189 — Drive-by CompromiseSponsored search result → artifact page → redirect chain → downloadQ6, Q7
ExecutionT1204.002 — User Execution: Malicious FileUser runs ClaudeDesktop.exe from DownloadsQ1
Defense EvasionT1036.005 — Masquerading: Match Legitimate Name or LocationJetBrains jcef_helper.exe renamed to ClaudeDesktop.exe / DockerDesktop.exe; IBM SPSS sslconf.exe planted in an EdgeUpdate pathQ1, Q2, Q4
Persistence / Priv-Esc / Defense EvasionT1574.002 — Hijack Execution Flow: DLL Side-LoadingTampered libcef.dll loaded by the renamed CEF host; tempdir.dll loaded by sslconf.exeQ3, Q8, Q10
Defense EvasionT1027.002 — Obfuscated Files: Software Packinglibcef.dll packed with VMProtect; .NET payload heavily obfuscatedQ3, Q8 (hash) — behavior itself is GAP
Defense EvasionT1027.013 — Encrypted/Encoded Fileappcfg.dat AES-256-CTR encrypted, decrypted by a DirectX SM5 shader with a modified MixColumnsQ4 (the artifact on disk)
Defense EvasionT1497.001 — Virtualization/Sandbox Evasion: System ChecksDXGI adapter vendor-ID check (0x1234 QEMU, 0x15AD VMware), VRAM under 1 GB bail-out, compute-shader timing checkGAP — no telemetry. Detonate on bare metal
Defense EvasionT1562.001 — Impair Defenses: Disable or Modify ToolsDefender exclusions observed across the affected estates alongside the installs§7 H-W2 · hardening tier 1
PersistenceT1547.001 — Registry Run Keys / Startup FolderPersistence referencing the EdgeUpdate staging pathQ5
PersistenceT1053.005 — Scheduled TaskDockerDesktop.exe registered as a scheduled task to repeatedly reinfectQ5 · §7 H-W3
Command & ControlT1102 — Web Service (dead-drop resolver)EtherHiding — C2 address resolved from BNB Smart Chain smart contracts, rotatable by transaction§7 H-N4 · hardening tier 2 (egress)
Command & ControlT1071.001 — Application Layer Protocol: WebSectopRAT HTTP C2 to 2.24.131[.]246 / backup domainQ6, Q7, Q9
Command & ControlT1105 — Ingress Tool Transfercache.dat / appcfg.dat staged after the first-stage sideloadQ4
Credential AccessT1555.003 — Credentials from Web BrowsersBrowser logins, cookies, autofill, credit cards, Chromium key theftQ9 · §7 H-W4 (Partial)
CollectionT1185 — Browser Session Hijacking (HVNC)Hidden secondary desktop giving the operator live control of browser sessionsQ9 (Partial)
Collection / ExfiltrationT1005 / T1041 — Data from Local System, Exfil Over C2FTP credentials, Discord and messaging-client data exfiltrated over the C2 channelQ6, Q9
07

Native Audit-Log Hunts (non-CQL)

These cover the parts of the chain that endpoint EDR sees poorly or not at all. Run them alongside §8, not instead of it.

IDSourceHuntWhy it matters
H-S1Secure web gateway / proxy (full-URL logging)Requests to claude.ai with a URI path beginning /public/artifacts/, then correlate each such session against an executable download in the following 5 minutesThis is the only place the artifact hop is visible. Domain-only proxy logging makes the whole lure stage invisible — claude.ai looks entirely legitimate
H-S2Proxy / browser telemetryExecutable downloads (.exe, .msi, .zip) whose HTTP Referer chain includes a search engine and whose host was registered in the last 90 daysGeneric malvertising control. Catches the next campaign, not just this one
H-W1Windows Security 4688 / Sysmon EventID 1Process creation where the image is ClaudeDesktop.exe, DockerDesktop.exe or sslconf.exe and the parent is a browser or an archive toolFallback where Falcon coverage is thin or the host is unmanaged
H-W2Microsoft Defender operational log — EventID 5007Any change to exclusion paths/processes, especially additions covering %APPDATA%, Downloads or the EdgeUpdate treeHuntress observed Defender exclusions being added across the affected organizations. An exclusion for a user-writable path is a standalone incident
H-W3Windows Security 4698 / Task Scheduler operational logScheduled tasks whose action path resolves under %APPDATA%, %LOCALAPPDATA% or any EdgeUpdate\Install directoryThe reinfection mechanism. Genuine Edge update tasks point at Program Files (x86)
H-W4Sysmon EventID 11 (FileCreate) + file-system audit ACLsNon-browser processes touching %LOCALAPPDATA%\Google\Chrome\User Data\*\Login Data, Cookies, Web Data, Local State, and the Edge/Firefox equivalentsCloses the credential-access gap that Falcon's event model leaves open
H-W5Sysmon EventID 7 (ImageLoad)libcef.dll, tempdir.dll or chrome_elf.dll loaded from a path outside the loading process's own install directory; flag unsigned or unverified signaturesFallback for tenants whose Falcon module-load telemetry is absent or short-retention
H-N3DNS resolver / Protective DNS logsResolutions where a well-known software brand appears as the leading label of a domain the organization does not own (claude.ai.*, anthropic.com.*, docker.com.*)The reusable half of this campaign. Cheap to run continuously
H-N4Firewall / proxy egressNon-browser, non-developer workstation processes connecting to public BNB Smart Chain / Ethereum JSON-RPC endpointsEtherHiding resolution traffic. Expect legitimate hits only from developer machines — baseline, then alert on the rest
H-N5Netflow / firewallRetrospective sweep for the 21 decrypted C2 addresses across the full retention window (they date to 2025-05-30)The operator has been active for over a year; a hit on a historical address is still a lead worth chasing
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · Fake installer (ClaudeDesktop.exe / DockerDesktop.exe) written or run from a download path
CONF HIGHFP LOWCOST LOW

Looks for: the two campaign masquerade filenames being written to disk or executed. Accomplishes: catches the user-execution stage at the moment the victim runs the fake installer, with the browser parent still visible. FP: low — Docker ships its installer as "Docker Desktop Installer.exe" and its runtime as Docker Desktop.exe (with a space) under Program Files, so a bare DockerDesktop.exe in a user path is anomalous on both counts.

// HUNT: FakeAgent fake-installer masquerade filenames (T1204.002 / T1036.005)
// MITRE: T1204.002, T1036.005
// CONF: high  FP: low  COST: low | REQUIRES: ProcessRollup2, PeFileWritten
// FALSE POSITIVES: a repackaged internal deployment of Docker Desktop that renames the binary
// LOOKBACK: 14d. Set the search window in Falcon; no in-query time filter (an expression on the right of a comparison is not valid in CQL filter context).
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2|PeFileWritten|NewExecutableWritten/
| (FileName=/^(ClaudeDesktop|DockerDesktop)\.exe$/i
   or TargetFileName=/\\(ClaudeDesktop|DockerDesktop)\.exe$/i)
| table([@timestamp, aid, ComputerName, UserName, FileName, ImageFileName, TargetFileName, ParentBaseFileName, SHA256HashData, CommandLine], limit=200)
| sort(@timestamp, order=desc)
Q2 · Renamed JetBrains CEF host — benign hash running under a non-jcef_helper name
CONF HIGHFP LOWCOST LOW

Looks for: the known-benign JetBrains jcef_helper.exe component executing under any filename except its own. Accomplishes: this is the masquerade itself, expressed as a rule rather than an IOC — it fires no matter what the attacker renames the vessel to next, which is why it is the highest-value query in the pack. FP: low. Never add this hash to a block list — it is a legitimate signed component; the signal is the name mismatch, not the file.

// HUNT: benign CEF host binary executing under a masquerade filename (T1036.005 / T1574.002)
// MITRE: T1036.005, T1574.002
// CONF: high  FP: low  COST: low | REQUIRES: ProcessRollup2 with SHA256HashData populated
// NOTE: f8acb8f5... is the BENIGN JetBrains jcef_helper.exe component. Do NOT block it.
// FALSE POSITIVES: an internally repackaged JetBrains IDE that renames the CEF helper
// LOOKBACK: 30d. Set the search window in Falcon; no in-query time filter (an expression on the right of a comparison is not valid in CQL filter context).
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| SHA256HashData="f8acb8f5cf88b77a4c27d7fd6856aa299bb178e85f9963c2fbd447d818da3ed0"
| FileName!=/^jcef_helper\.exe$/i
| table([@timestamp, aid, ComputerName, UserName, FileName, ImageFileName, ParentBaseFileName, GrandparentBaseFileName, CommandLine], limit=200)
| sort(@timestamp, order=desc)
Q3 · Tampered libcef.dll — known hash, or a libcef.dll landing in a user-writable path
CONF HIGHFP MEDCOST LOW

Looks for: the VMProtect-packed libcef.dll by hash, or any libcef.dll written into or loaded from a Downloads / Temp / AppData path. Accomplishes: catches the first-stage side-load payload. FP: medium — per-user Electron and CEF applications legitimately install under \AppData\Local\Programs\, so the path arm needs one baselining pass before it is alertable; the hash arm is clean immediately.

// HUNT: FakeAgent first-stage libcef.dll side-load payload (T1574.002 / T1027.002)
// MITRE: T1574.002, T1027.002
// CONF: high  FP: medium  COST: low | REQUIRES: PeFileWritten, module-load hash telemetry
// TUNING: baseline then exclude your approved per-user CEF/Electron installs by directory
//         (e.g. \AppData\Local\Programs\<approved-vendor>\); the hash arm needs no tuning.
// ⚠ validate in tenant: module-load coverage ships as ImageHash in most tenants —
//   confirm your repo emits it, else fall back to Sysmon EventID 7 (see native hunts).
// LOOKBACK: 30d. Set the search window in Falcon; no in-query time filter (an expression on the right of a comparison is not valid in CQL filter context).
#event_simpleName=/PeFileWritten|NewExecutableWritten|ImageHash/
| (SHA256HashData="26bae4d7012bf59847ab4036a065419c3d4ca47e020479f55b3b2c6d0d21394a"
   or ((TargetFileName=/\\libcef\.dll$/i or ImageFileName=/\\libcef\.dll$/i)
       and (TargetFileName=/\\Users\\[^\\]+\\(Downloads|AppData)\\/i
            or ImageFileName=/\\Users\\[^\\]+\\(Downloads|AppData)\\/i
            or TargetFileName=/\\Windows\\Temp\\/i
            or ImageFileName=/\\Windows\\Temp\\/i)))
| table([@timestamp, aid, ComputerName, UserName, TargetFileName, ImageFileName, SHA256HashData, ContextBaseFileName], limit=200)
| sort(@timestamp, order=desc)
Q4 · Second stage — sslconf.exe / tempdir.dll / appcfg.dat under an EdgeUpdate\Install path
CONF HIGHFP MEDCOST LOW

Looks for: the persistence stage — a signed IBM SPSS sslconf.exe, its paired tempdir.dll, or the encrypted appcfg.dat payload, anywhere under a per-user Microsoft\EdgeUpdate\Install\ directory. Accomplishes: the strongest single signal in the pack — a statistics-package binary inside an Edge-updater directory has no benign explanation. FP: medium, driven entirely by the bare sslconf filename arm firing on genuine IBM SPSS estates; the path arm on its own is effectively FP-free.

// HUNT: FakeAgent second-stage staging dir + sideload pair (T1574.002 / T1036.005 / T1547)
// MITRE: T1574.002, T1036.005, T1547, T1027.013
// CONF: high  FP: medium  COST: low | REQUIRES: ProcessRollup2, PeFileWritten
// TUNING: if your estate genuinely deploys IBM SPSS, exclude the vendor install root
//         (\Program Files\IBM\SPSS\) and keep only the EdgeUpdate\Install path arm.
//         Genuine Edge updater content lives under \Program Files (x86)\Microsoft\EdgeUpdate\.
// LOOKBACK: 30d. Set the search window in Falcon; no in-query time filter (an expression on the right of a comparison is not valid in CQL filter context).
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2|PeFileWritten|NewExecutableWritten/
| (ImageFileName=/\\Microsoft\\EdgeUpdate\\Install\\/i
   or TargetFileName=/\\Microsoft\\EdgeUpdate\\Install\\/i
   or FileName=/^sslconf(\.exe)?$/i
   or TargetFileName=/\\(tempdir\.dll|appcfg\.dat|cache\.dat)$/i)
| table([@timestamp, aid, ComputerName, UserName, FileName, ImageFileName, TargetFileName, SHA256HashData, ParentBaseFileName, CommandLine], limit=200)
| sort(@timestamp, order=desc)
Q5 · Persistence pointing into the EdgeUpdate\Install staging directory
CONF HIGHFP MEDCOST LOW

Looks for: Run-key values, scheduled-task actions, or schtasks command lines that reference the staging directory or any of the campaign's masquerade binaries. Accomplishes: catches the reinfection loop that made this campaign persistent across 29 estates. FP: medium — genuine Microsoft Edge updater persistence also contains the string "EdgeUpdate", so the Install subdirectory and the per-user location are what separate malicious from benign.

// HUNT: FakeAgent persistence into the per-user EdgeUpdate staging dir (T1547.001 / T1053.005)
// MITRE: T1547.001, T1053.005
// CONF: high  FP: medium  COST: low | REQUIRES: AsepValueUpdate, ScheduledTaskRegistered, ProcessRollup2
// TUNING: exclude genuine Edge updater persistence under \Program Files (x86)\Microsoft\EdgeUpdate\;
//         only a per-user \AppData\Roaming\Microsoft\EdgeUpdate\Install\ target is anomalous.
// LOOKBACK: 30d. Set the search window in Falcon; no in-query time filter (an expression on the right of a comparison is not valid in CQL filter context).
#event_simpleName=/AsepValueUpdate|RegGenericValueUpdate|ScheduledTaskRegistered|ProcessRollup2|SyntheticProcessRollup2/
| (RegStringValue=/EdgeUpdate\\Install|ClaudeDesktop\.exe|DockerDesktop\.exe|sslconf\.exe/i
   or TaskExecutable=/EdgeUpdate\\Install|ClaudeDesktop\.exe|DockerDesktop\.exe|sslconf\.exe/i
   or CommandLine=/schtasks.{0,80}(EdgeUpdate\\Install|ClaudeDesktop|DockerDesktop|sslconf)/i)
| table([@timestamp, aid, ComputerName, UserName, RegObjectName, RegValueName, RegStringValue, TaskName, TaskExecutable, CommandLine], limit=200)
| sort(@timestamp, order=desc)
Q6 · Egress to the decrypted SectopRAT C2 address set (current + historical)
CONF HIGHFP LOWCOST MED

Looks for: any outbound connection to the 21 C2 addresses Huntress decrypted from the BNB Smart Chain contract transaction history (2025-05-30 through 2026-06-12). Accomplishes: a retrospective sweep that reaches well beyond this campaign — a hit on a 2025 address still indicates the same operator touched the host. FP: low, but note the historical addresses are over a year old and shared hosting reuse is plausible, so treat a hit on anything other than 2.24.131[.]246 as a lead to confirm rather than a confirmed compromise.

// HUNT: FakeAgent / SectopRAT C2 egress, full decrypted address set (T1071.001)
// MITRE: T1071.001, T1102
// CONF: high  FP: low  COST: medium | REQUIRES: NetworkConnectIP4
// 2.24.131.246 is the CURRENT C2 (since 2026-06-12); the rest are historical (2025-05-30 onward).
// LOOKBACK: 90d. Set the search window in Falcon; no in-query time filter (an expression on the right of a comparison is not valid in CQL filter context).
#event_simpleName=/NetworkConnectIP4/
| in(RemoteAddressIP4, values=["2.24.131.246", "107.189.24.67", "104.194.133.210", "107.189.26.86", "107.189.21.86", "45.59.124.17", "45.59.125.228", "45.59.122.82", "107.189.17.143", "45.59.122.134", "45.59.122.235", "107.189.22.118", "107.189.20.32", "107.189.20.95", "107.189.24.255", "45.59.117.145", "45.59.114.190", "45.59.123.122", "45.59.117.67", "195.110.58.222", "191.101.80.211"])
| table([@timestamp, aid, ComputerName, UserName, ContextBaseFileName, LocalAddressIP4, RemoteAddressIP4, RemotePort], limit=max)
| sort(@timestamp, order=desc)
Q7 · DNS — delivery/backup domains, plus generic brand-as-leading-label lookalikes
CONF MEDFP HIGHCOST MED

Looks for: two things at once — the campaign's known delivery and backup domains (high confidence), and the reusable pattern behind claude.ai.download-app[.]us: a trusted software brand planted as the leading label of a registrable domain the brand does not own. Accomplishes: turns a one-off IOC into a standing control that catches the next campaign. FP: high on the generic arm — legitimate CDN and SaaS vanity chains do exactly this, so allowlist first and split the arms into two saved searches if you intend to alert.

// HUNT: FakeAgent delivery/backup domains + brand-as-leading-label lookalikes (T1583.001 / T1566.002)
// MITRE: T1583.001, T1566.002, T1071.001
// CONF: medium  FP: high  COST: medium | REQUIRES: DnsRequest
// TUNING: the second arm fires on legitimate CDN/vanity chains that embed a brand label.
//         Allowlist your own CDN and SaaS vanity domains, then keep only unknown registrables.
//         Split the two arms into separate saved searches before promoting either to alerting.
// LOOKBACK: 30d. Set the search window in Falcon; no in-query time filter (an expression on the right of a comparison is not valid in CQL filter context).
#event_simpleName=/DnsRequest|SuspiciousDnsRequest/
| DomainName=/^((.*\.)?(download-app\.us|downloading-api\.it\.com|5ca8758c-02d0-4a72-89c8-d468b66dda41\.com)|(claude\.ai|anthropic\.com|docker\.com|slack\.com|zoom\.us)\.[a-z0-9-]{2,40}\.[a-z]{2,12})$/i
| table([@timestamp, aid, ComputerName, UserName, ContextBaseFileName, DomainName], limit=200)
| sort(@timestamp, order=desc)
Q8 · Known-bad SHA-256 sweep across execution, module-load and file-write telemetry
CONF HIGHFP LOWCOST MED

Looks for: the three malicious hashes anywhere they can surface — as a running process, as a loaded module, or as a written file. Accomplishes: the fastest confirm/deny for "were we hit". FP: low (exact-hash matching). Deliberately excludes the two benign-but-abused component hashes, which belong in Q2 and Q4 as hunts, never as detections.

// HUNT: FakeAgent malicious hash sweep (T1204.002 / T1574.002)
// MITRE: T1204.002, T1574.002
// CONF: high  FP: low  COST: medium | REQUIRES: ProcessRollup2, PeFileWritten, module-load hashes
// ⚠ validate in tenant: the ImageHash arm depends on module-load telemetry being enabled.
// Malicious only: libcef.dll, tempdir.dll, embedded SectopRAT .NET payload.
// LOOKBACK: 90d. Set the search window in Falcon; no in-query time filter (an expression on the right of a comparison is not valid in CQL filter context).
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2|PeFileWritten|NewExecutableWritten|ImageHash/
| in(SHA256HashData, values=["26bae4d7012bf59847ab4036a065419c3d4ca47e020479f55b3b2c6d0d21394a", "1cd58cfba596da296ab1878d74023e00c399345a1b6c2a0e5446c53563f4e3bb", "1fe3646d27d286db8123297e06ae7badf3e26f352a04f91b6d82c28869a91664"])
| table([@timestamp, aid, ComputerName, UserName, FileName, ImageFileName, TargetFileName, SHA256HashData, ParentBaseFileName], limit=200)
| sort(@timestamp, order=desc)
Q9 · Masquerading sideload vessel holding outbound connections (RAT beaconing through its host)
CONF MEDFP MEDCOST MED

Looks for: outbound connections whose initiating process is one of the campaign's masquerade vessels, grouped by destination so a beacon pattern stands out. Accomplishes: catches the SectopRAT stage even after the C2 has rotated via EtherHiding, because the vessel name is stable while the address is not. FP: medium — a genuine JetBrains CEF helper talks to the internet routinely, so jcef_helper.exe needs baselining; ClaudeDesktop.exe, DockerDesktop.exe and sslconf.exe making network connections are anomalous on their own.

// HUNT: sideload vessel beaconing — survives EtherHiding C2 rotation (T1071.001 / T1055)
// MITRE: T1071.001, T1102, T1555.003
// CONF: medium  FP: medium  COST: medium | REQUIRES: NetworkConnectIP4
// TUNING: exclude jcef_helper.exe destinations belonging to your approved JetBrains estate
//         (IDE telemetry/licensing endpoints); keep every ClaudeDesktop/DockerDesktop/sslconf row.
// LOOKBACK: 30d. Set the search window in Falcon; no in-query time filter (an expression on the right of a comparison is not valid in CQL filter context).
#event_simpleName=/NetworkConnectIP4/
| ContextBaseFileName=/^(ClaudeDesktop|DockerDesktop|sslconf|jcef_helper)\.exe$/i
| groupBy([aid, ComputerName, ContextBaseFileName, RemoteAddressIP4, RemotePort], function=count(as=Hits), limit=2000)
| sort(Hits, order=desc, limit=200)
Q10 · Technique-level breadth — CEF sideload payload DLLs landing in user-writable directories
CONF MEDFP HIGHCOST MED

Looks for: the generic version of this actor's tradecraft — any of the classic CEF sideload payload DLLs appearing in a Downloads / AppData / Windows\Temp path. Accomplishes: covers the April 2026 fake Docker Desktop precursor and whatever the operator renames the vessel to next, since the payload DLL name is the one thing the CEF loader cannot change. FP: high — this is a baselining hunt, not a detection. Run it once, allowlist your approved per-user Electron/CEF apps, then re-run weekly for new publishers only.

// HUNT: broad — CEF/Chromium sideload payload DLLs in user-writable dirs (T1574.002)
// MITRE: T1574.002
// CONF: medium  FP: high  COST: medium | REQUIRES: PeFileWritten, module-load hash telemetry
// TUNING: baseline-first query. Allowlist the per-user Electron/CEF apps your estate ships
//         by directory, then alert only on directories seen for the first time.
// ⚠ validate in tenant: the ImageHash arm depends on module-load telemetry being enabled.
// LOOKBACK: 30d. Set the search window in Falcon; no in-query time filter (an expression on the right of a comparison is not valid in CQL filter context).
#event_simpleName=/PeFileWritten|NewExecutableWritten|ImageHash/
| (TargetFileName=/\\(libcef|tempdir|chrome_elf)\.dll$/i
   or ImageFileName=/\\(libcef|tempdir|chrome_elf)\.dll$/i)
| (TargetFileName=/\\Users\\[^\\]+\\(Downloads|AppData)\\/i
   or ImageFileName=/\\Users\\[^\\]+\\(Downloads|AppData)\\/i
   or TargetFileName=/\\Windows\\Temp\\/i
   or ImageFileName=/\\Windows\\Temp\\/i)
| groupBy([TargetDirectoryName, ContextBaseFileName, SHA256HashData], function=count(as=Hits), limit=2000)
| sort(Hits, order=desc, limit=300)
09

CrowdStrike Custom IOA Recommendations

Three queries in §8 are strong enough to promote to Custom IOAs. The rest stay Investigate-only hunts.

IOAFromRule typePatternExclusionsSeverity
DETECT — Masqueraded CEF host (FakeAgent)Q2Process CreationImage SHA-256 equals the benign JetBrains CEF helper while the image filename is not jcef_helper.exeApproved internally repackaged JetBrains IDE install roots, if any exist after baseliningCritical
DETECT — SPSS binary in EdgeUpdate staging pathQ4Process Creation + File CreationImage path regex \\Microsoft\\EdgeUpdate\\Install\\ under a per-user profile, any image name\Program Files (x86)\Microsoft\EdgeUpdate\ (genuine updater); \Program Files\IBM\SPSS\Critical
DETECT — Fake AI/dev-tool installer executionQ1Process CreationImage filename ClaudeDesktop.exe or DockerDesktop.exe with a grandparent/parent in the browser or archive-tool familyEnterprise software-deployment agents as parentHigh
Investigate-onlyQ3, Q5, Q6, Q7, Q8, Q9, Q10Scheduled SearchRun Q5/Q6/Q8 daily and Q3 weekly; Q7 and Q10 are baselining hunts that should stay out of the alert queue until their allowlists existMedium

Alert package — DETECT: Masqueraded CEF host (FakeAgent)

Subject: [CRITICAL] Detection: FakeAgent — signed CEF host running under a masquerade filename

Body: A binary whose SHA-256 matches the legitimate JetBrains jcef_helper.exe Chromium Embedded Framework component executed under a different filename on <host>. In the FakeAgent campaign this exact component was shipped as ClaudeDesktop.exe and DockerDesktop.exe and used purely as a vessel to side-load a malicious libcef.dll, ending in SectopRAT. The binary itself is benign and signed — the renaming is the attack. Treat as a live intrusion until the co-located DLL is proven clean.

L1 triage checklist

  1. Record the full image path and the parent/grandparent process. A browser or archive-tool parent means user-initiated download and execution.
  2. List every file in the same directory and hash the libcef.dll beside it. Compare against 26bae4d7… and against the vendor's published CEF hashes.
  3. Check for %APPDATA%\Roaming\Microsoft\EdgeUpdate\Install\ on the host — presence of sslconf.exe, tempdir.dll or appcfg.dat confirms the second stage landed (run Q4 host-scoped).
  4. Enumerate scheduled tasks and Run keys referencing that directory or the masquerade filenames (Q5 host-scoped).
  5. Pull the host's outbound connections for the surrounding 72 hours and check against the §10 address set (Q6 host-scoped).
  6. Check the Defender operational log for exclusion additions (native hunt H-W2) — exclusions were observed alongside these installs.
  7. If any of steps 2—6 confirm, network-contain the host and move to the §14 runbook. Assume every credential in every browser profile on that host is compromised.
  8. Preserve appcfg.dat and both DLLs before remediation — the payload is GPU-decrypted and cannot be recovered from memory after the fact.

Pivot queries

  • Host-scoped: add | aid = "REPLACE_WITH_AID" as the second line of Q4, Q5 and Q6.
  • Environment-wide: run Q8 across the full retention window to find other hosts that touched the same payloads.
  • Upstream: proxy hunt H-S1 for the artifact path, scoped to the victim's user, to confirm the delivery vector and identify anyone else who visited it.
10

Machine-Readable IOC Appendix

Falcon IOC Management CSVbulk import · malicious only
type,value,action,severity,expiration,description,tags
sha256,26bae4d7012bf59847ab4036a065419c3d4ca47e020479f55b3b2c6d0d21394a,prevent,critical,2027-01-24,FakeAgent malicious libcef.dll VMProtect sideload payload,campaign:FakeAgent
sha256,1cd58cfba596da296ab1878d74023e00c399345a1b6c2a0e5446c53563f4e3bb,prevent,critical,2027-01-24,FakeAgent malicious tempdir.dll GPU anti-VM loader,campaign:FakeAgent
sha256,1fe3646d27d286db8123297e06ae7badf3e26f352a04f91b6d82c28869a91664,prevent,critical,2027-01-24,SectopRAT embedded .NET payload,campaign:FakeAgent
ipv4,2.24.131.246,detect,critical,2027-01-24,SectopRAT C2 current since 2026-06-12,campaign:FakeAgent
domain,download-app.us,detect,high,2027-01-24,FakeAgent redirect domain registrable parent,campaign:FakeAgent
domain,claude.ai.download-app.us,detect,high,2027-01-24,FakeAgent first redirect hop brand-prefix lookalike,campaign:FakeAgent
domain,downloading-api.it.com,detect,high,2027-01-24,FakeAgent installer delivery host,campaign:FakeAgent
domain,5ca8758c-02d0-4a72-89c8-d468b66dda41.com,detect,high,2027-01-24,SectopRAT backup C2 domain,campaign:FakeAgent
ipv4,107.189.24.67,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,104.194.133.210,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,107.189.26.86,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,107.189.21.86,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,45.59.124.17,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,45.59.125.228,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,45.59.122.82,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,107.189.17.143,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,45.59.122.134,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,45.59.122.235,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,107.189.22.118,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,107.189.20.32,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,107.189.20.95,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,107.189.24.255,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,45.59.117.145,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,45.59.114.190,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,45.59.123.122,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,45.59.117.67,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,195.110.58.222,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
ipv4,191.101.80.211,detect,medium,2026-10-24,SectopRAT historical C2 from BSC contract,campaign:FakeAgent
# Malicious ClaudeDesktop.exe binary hash was not published as a distinct value:
# sha256,REPLACE_WITH_CLAUDEDESKTOP_SHA256,prevent,critical,2027-01-24,FakeAgent fake installer,campaign:FakeAgent
Benign-but-abused componentshunt only — NEVER block
# DO NOT add these to a prevent/block list. Both are legitimate, signed
# vendor components. In FakeAgent they were used as side-loading vessels.
# The correct control is a HUNT on name/path mismatch (see Q2 and Q4).

f8acb8f5cf88b77a4c27d7fd6856aa299bb178e85f9963c2fbd447d818da3ed0
  JetBrains jcef_helper.exe (Chromium Embedded Framework host)
  Shipped by the actor as ClaudeDesktop.exe AND DockerDesktop.exe (identical files)
  HUNT RULE: this hash executing under any filename other than jcef_helper.exe

fd826215add30c1319eefa291b6eaf8ddfa7720cfe816c49aef6fe8a88de7939
  IBM SPSS sslconf.exe (signed statistics-platform binary)
  Planted at %APPDATA%\Roaming\Microsoft\EdgeUpdate\Install\sslconf.exe
  HUNT RULE: this binary anywhere under a per-user EdgeUpdate\Install path
Behavioral signaturesdurable — survives IOC rotation
# FakeAgent — behavioral signatures (no atomic dependency)

B1  Signed JetBrains CEF helper component executing under a filename
    that is not jcef_helper.exe                          -> Q2   [strongest]
B2  Any binary executing from, or written into, a per-user
    ...\AppData\Roaming\Microsoft\EdgeUpdate\Install\ path -> Q4
B3  libcef.dll or tempdir.dll written into Downloads, AppData
    or Windows\Temp beside a non-CEF-named executable      -> Q3, Q10
B4  Run key or scheduled task whose target resolves under a
    per-user EdgeUpdate directory                          -> Q5
B5  DNS name where a trusted software brand is the LEADING label
    of a registrable domain the brand does not own         -> Q7
B6  ClaudeDesktop.exe / DockerDesktop.exe / sslconf.exe holding
    outbound network connections                           -> Q9
B7  appcfg.dat or cache.dat written next to a sideload host   -> Q4
B8  Defender exclusion added covering a user-writable path  -> native H-W2
B9  Workstation (non-developer) egress to a public BNB Smart
    Chain / Ethereum JSON-RPC endpoint                     -> native H-N4
B10 Executable download whose referer chain starts at a search
    engine and whose host is under 90 days old             -> native H-S2
Named tooling & infrastructurecontext / enrichment
# Campaign      FakeAgent (Huntress, 2026-07-22)
# Payload       SectopRAT, aka ArechClient2 (.NET, active since 2019, HVNC)
# Loader chain  renamed JetBrains jcef_helper CEF host -> libcef.dll (VMProtect)
#               -> IBM SPSS sslconf.exe -> tempdir.dll -> appcfg.dat -> .NET RAT
# Scope         29 organizations, 2026-07-21 to 2026-07-22
# Lure          Bing sponsored ad for "CLAUDE DESKTOP APP"
# Lure page     claude.ai/public/artifacts/ca456f1f-44c0-42af-b329-4f1c7534a877
#               (public Claude Artifact, 7,100 views, removed by Anthropic)
# EtherHiding contracts (BNB Smart Chain) - enrichment, not blockable:
#   0xe012d0f34cde9b870e9d9ed566ea5f8fd9b92228   SectopRAT C2 resolver
#   0xc1907d7be91f95903ad66d775c397302e7dd9228   libcef.dll stager resolver
# Actor overlap
#   polse.us            seized by Microsoft (Operation Endgame), hosted StealC
#   April 2026          fake Docker Desktop via Docker Hub, same libcef.dll chain
#   10 domains          share one registrant email, indexed since Dec 2025
# Anti-analysis  VMProtect; DXGI vendor-ID gate (0x1234 QEMU, 0x15AD VMware);
#                VRAM under 1GB bail-out; compute-shader timing check;
#                AES-256-CTR via DirectX SM5 shader with modified MixColumns
# LAB NOTE       will NOT detonate in a standard VM - use bare metal or GPU passthrough
Hardening / ASR audit checklistverify before you hunt again
# FakeAgent — control audit (tick each; see section 12 for the how)
[ ] ASR "Block executable files from running unless they meet a prevalence,
    age, or trusted list criterion" = Block   (01443614-cd74-433a-b99e-2ecdc07bfc25)
[ ] ASR "Block JavaScript or VBScript from launching downloaded executable
    content" = Block                          (d3e037e1-3eb8-44c8-a917-57927947596d)
[ ] Defender Tamper Protection = On, and exclusion changes are alerted on
[ ] SmartScreen for Edge = Enabled, PUA protection = Block
[ ] AppLocker/WDAC deny rule for %USERPROFILE%\Downloads and %APPDATA%
[ ] Browser password manager disabled by policy (all managed browsers)
[ ] Protective DNS: newly-registered-domain category blocked
[ ] Protective DNS: brand-as-leading-label rule deployed
[ ] Managed software portal published so users never search for installers
[ ] Falcon module-load telemetry confirmed present (or Sysmon 7 deployed)
[ ] Proxy full-URL (path) logging enabled for SaaS/AI domains
[ ] Phishing-resistant MFA enforced so stolen browser cookies are low-value
11

Detection Validation Gates

GateCheckPass criterion
1 · Telemetry readyConfirm each event type the pack relies on is present in your repo: ProcessRollup2, PeFileWritten, NewExecutableWritten, AsepValueUpdate, ScheduledTaskRegistered, NetworkConnectIP4, DnsRequest, and module-load hashes (ImageHash)Every event type returns rows over a 24-hour window. If module-load is absent, Q3/Q8/Q10 lose their DLL-load arm — deploy Sysmon EventID 7 (H-W5) before claiming coverage
2 · Field populationSHA256HashData is populated on ProcessRollup2; TaskExecutable / TaskName are populated on ScheduledTaskRegisteredQ2 is meaningless without process hashes. Q5 degrades to its schtasks command-line arm if task fields are empty — verify before trusting a null result
3 · Benign baselineRun Q3, Q7, Q9 and Q10 over 30 days with no exclusions and record what firesYou have a written allowlist of your per-user CEF/Electron install roots, your CDN/vanity DNS chains, and your JetBrains egress destinations. Until that list exists, none of these four should be alerting
4 · Positive testOn an isolated bare-metal test host, copy a legitimate signed CEF helper to a Downloads path under the name ClaudeDesktop.exe and run it; separately, place a benign signed binary under %APPDATA%\Roaming\Microsoft\EdgeUpdate\Install\ and run itQ1, Q2 and Q4 all fire within the expected latency. Do not attempt to detonate the real sample in a VM — the DXGI gate will suppress execution and you will get a false all-clear
5 · ProvenanceEvery atomic indicator in §10 traces to the saved source snapshotsAll 31 atomic indicators traced to FakeAgent-ClaudeArtifact-SectopRAT-Hunt-sources/ by check_ioc_provenance.py (exit 0, 2026-07-24). The malicious ClaudeDesktop.exe hash was never published and ships as a labelled REPLACE_WITH_ placeholder, not as an invented value
6 · PromotionPromote to alerting only after gates 1—4 passQ1, Q2, Q4 → Custom IOA. Q5, Q6, Q8 → daily scheduled search. Q3 → weekly. Q7, Q9, Q10 → stay Investigate-only until their allowlists exist
12

Hardening — Tiered

Immediate — deploy this week

1. Block the atomic infrastructure and quarantine the payload hashes

Import the §10 CSV into Falcon IOC Management; block the four domains at Protective DNS and the secure web gateway. Do not block claude.ai — block the artifact path if your gateway supports URL-path policy, otherwise rely on Q7 plus the H-S1 proxy hunt. MITRE M1031 (Network Intrusion Prevention), M1037 (Filter Network Traffic).

2. Turn on Defender Tamper Protection and alert on every exclusion change

Exclusions were observed being added across the affected estates. Tamper Protection blocks the common path; an alert on Defender EventID 5007 covers the rest. An exclusion covering %APPDATA%, Downloads or an EdgeUpdate directory should page someone. M1018 (User Account Management), M1054 (Software Configuration); Microsoft Security Baseline for Windows — Defender Antivirus.

3. Enable the two ASR rules that break this exact chain

01443614-cd74-433a-b99e-2ecdc07bfc25 (block executables that lack prevalence/age/trust) stops a freshly-compiled fake installer cold, and d3e037e1-3eb8-44c8-a917-57927947596d (block scripts from launching downloaded executable content) covers the scripted-redirect variant. Deploy in Audit for 72 hours, then Block. M1038 (Execution Prevention); CIS Microsoft Windows Benchmark — Attack Surface Reduction.

4. Enforce SmartScreen and PUA blocking in managed browsers

Edge SmartScreen with the bypass prompt disabled would have interrupted the download hop even though the referring page sat on a trusted domain. M1021 (Restrict Web-Based Content); Microsoft Edge Security Baseline.

Near term — 1 to 4 weeks, pilot on a ring first

5. Deny execution from user-writable directories (AppLocker or WDAC in audit → enforce)

Every stage of this chain runs from Downloads or %APPDATA%. A publisher-based allowlist with a deny rule over those paths removes the entire class, not just this campaign. Pilot on a single ring; expect to carve exceptions for legitimately per-user-installed apps (Teams, Slack, Zoom, several IDEs) — that exception list is the baseline Q3 and Q10 need anyway. M1038 (Execution Prevention); CIS Windows Benchmark, Microsoft WDAC guidance.

6. Protective DNS: block newly-registered domains and brand-prefix lookalikes

The redirect domain was registered 2026-05-09 and used in July. An NRD category block plus a rule for "trusted brand as leading label on a domain we do not own" (the Q7 pattern, pushed left to the resolver) closes the delivery hop without depending on any specific IOC. M1037 (Filter Network Traffic); NIST SP 800-81 / CISA Protective DNS guidance.

7. Publish a managed software portal and tell people to use it

This campaign works only because employees search the web for installers. An internal catalogue for AI and developer tooling — with the genuine Claude, Docker and IDE packages in it — removes the reason to search at all. Pair it with a short awareness note naming this specific lure. M1017 (User Training), M1051 (Update Software); best-practice, no formal benchmark.

8. Disable browser password managers by policy; restrict workstation egress to blockchain RPC

SectopRAT's payday is the browser credential store — emptying it removes the payload's value. Separately, block public BNB Smart Chain / Ethereum JSON-RPC endpoints from non-developer workstations at the proxy; EtherHiding cannot resolve a C2 the host cannot reach. M1027 (Password Policies), M1037 (Filter Network Traffic); CIS Benchmarks for Google Chrome and Microsoft Edge.

Strategic — 1 to 3 months

9. Signed WDAC policy in enforcement across the managed fleet

The end state for tier 5. A signed policy that only permits binaries from approved publishers ends DLL side-loading as a delivery technique, because the vessel and the payload both have to be signed by someone you trust. M1038 (Execution Prevention); Microsoft WDAC design guide, DISA Windows STIG.

10. Phishing-resistant MFA plus short session lifetimes everywhere

HVNC and cookie theft both target the session, not the password. FIDO2/WebAuthn with conditional-access session controls means a stolen cookie jar buys the operator very little. M1032 (Multi-factor Authentication); CISA phishing-resistant MFA guidance, NIST SP 800-63B.

11. Guarantee module-load telemetry and full-URL proxy logging as standing requirements

Two of this pack's gaps are telemetry gaps, not detection gaps. Make module-load events and path-level proxy logging non-negotiable line items in the logging standard, with retention long enough to answer "when did that DLL first load here". M1047 (Audit); best-practice, no formal benchmark.

13

Deployable Playbooks

P1 — Sweep a host for the FakeAgent second stage (read-only)

# Run as the signed-in user or as SYSTEM. Read-only: reports, changes nothing.
$stage = Join-Path $env:APPDATA 'Microsoft\EdgeUpdate\Install'
if (Test-Path $stage) {
    Write-Warning "FakeAgent staging directory present: $stage"
    Get-ChildItem -Path $stage -Recurse -Force -ErrorAction SilentlyContinue |
        ForEach-Object {
            [pscustomobject]@{
                Path      = $_.FullName
                Bytes     = $_.Length
                LastWrite = $_.LastWriteTimeUtc
                SHA256    = (Get-FileHash -Algorithm SHA256 -Path $_.FullName -ErrorAction SilentlyContinue).Hash
            }
        } | Format-Table -AutoSize
} else {
    Write-Host "No per-user EdgeUpdate\Install directory found."
}

# Campaign filenames anywhere under the user profile
$names = 'ClaudeDesktop.exe','DockerDesktop.exe','sslconf.exe','tempdir.dll','appcfg.dat','cache.dat'
Get-ChildItem -Path $env:USERPROFILE -Recurse -Force -Include $names -ErrorAction SilentlyContinue |
    Select-Object FullName, Length, LastWriteTimeUtc

ⓘ Run this from a management tool that captures structured output (NinjaOne, Intune script, Falcon RTR) rather than reading it off a console — you want the hashes back as data so they can be checked against §10 in bulk.

P2 — Audit persistence pointing at the staging directory (read-only)

# Scheduled tasks whose action resolves into a per-user EdgeUpdate path
Get-ScheduledTask | ForEach-Object {
    $t = $_
    $t.Actions | Where-Object { $_.Execute -match 'EdgeUpdate.Install|ClaudeDesktop|DockerDesktop|sslconf' } |
        ForEach-Object {
            [pscustomobject]@{
                TaskPath = $t.TaskPath; TaskName = $t.TaskName
                Execute  = $_.Execute;  Arguments = $_.Arguments
            }
        }
} | Format-List

# Run keys, both hives
$keys = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run',
        'HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce',
        'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run',
        'HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce'
foreach ($k in $keys) {
    if (Test-Path $k) {
        (Get-ItemProperty -Path $k).PSObject.Properties |
            Where-Object { $_.Value -match 'EdgeUpdate.Install|ClaudeDesktop|DockerDesktop|sslconf' } |
            Select-Object @{n='Key';e={$k}}, Name, Value
    }
}

P3 — Enable the two ASR rules (Audit first, then Block)

# Step 1 — Audit for 72 hours and review Defender EventID 1121/1122 before enforcing.
$rules = @(
  '01443614-cd74-433a-b99e-2ecdc07bfc25',  # Block low-prevalence / untrusted executables
  'd3e037e1-3eb8-44c8-a917-57927947596d'   # Block JS/VBS launching downloaded executables
)
Add-MpPreference -AttackSurfaceReductionRules_Ids $rules -AttackSurfaceReductionRules_Actions AuditMode

# Step 2 — after review, switch to Block
# Add-MpPreference -AttackSurfaceReductionRules_Ids $rules -AttackSurfaceReductionRules_Actions Enabled

# Verify what is actually applied
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Actions

P4 — Tamper Protection and exclusion audit

# Report current exclusions — anything covering a user-writable path is suspect
$p = Get-MpPreference
[pscustomobject]@{
    TamperProtection = (Get-MpComputerStatus).IsTamperProtected
    ExclusionPath    = ($p.ExclusionPath    -join '; ')
    ExclusionProcess = ($p.ExclusionProcess -join '; ')
    ExclusionExtension = ($p.ExclusionExtension -join '; ')
} | Format-List

# Tamper Protection is set via Intune / Defender portal policy, not locally.
# Alert on Defender operational log EventID 5007 (settings change) centrally:
#   Log: Microsoft-Windows-Windows Defender/Operational   EventID: 5007

P5 — AppLocker deny rule for user-writable execution (audit mode)

<!-- Deploy via GPO: Computer Config / Windows Settings / Security Settings /
     Application Control Policies / AppLocker. Start in Audit, review, then Enforce. -->
<RuleCollection Type="Exe" EnforcementMode="AuditOnly">
  <FilePathRule Id="a1b2c3d4-0001-4000-8000-fakeagent0001"
                Name="DENY exe from user Downloads"
                Description="FakeAgent: fake installers execute from the browser download path"
                UserOrGroupSid="S-1-1-0" Action="Deny">
    <Conditions><FilePathCondition Path="%OSDRIVE%\Users\*\Downloads\*"/></Conditions>
  </FilePathRule>
  <FilePathRule Id="a1b2c3d4-0002-4000-8000-fakeagent0002"
                Name="DENY exe from per-user EdgeUpdate staging"
                Description="FakeAgent: sslconf.exe staged in AppData EdgeUpdate\Install"
                UserOrGroupSid="S-1-1-0" Action="Deny">
    <Conditions><FilePathCondition Path="%OSDRIVE%\Users\*\AppData\Roaming\Microsoft\EdgeUpdate\*"/></Conditions>
  </FilePathRule>
</RuleCollection>

<!-- DLL rules matter here too: the payload is a DLL, not an EXE.
     Enable the AppLocker DLL rule collection in Audit before enforcing. -->

P6 — Disable the browser password manager by policy

# Removes the payload's primary target. Apply via GPO/Intune, not per-machine.
# Microsoft Edge
reg add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v PasswordManagerEnabled /t REG_DWORD /d 0 /f
# Google Chrome
reg add "HKLM\SOFTWARE\Policies\Google\Chrome" /v PasswordManagerEnabled /t REG_DWORD /d 0 /f
# SmartScreen, with the user bypass removed
reg add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v SmartScreenEnabled /t REG_DWORD /d 1 /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v PreventSmartScreenPromptOverride /t REG_DWORD /d 1 /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v SmartScreenPuaEnabled /t REG_DWORD /d 1 /f
14

Containment Runbook

PhaseActionsOwnerEvidence to capture
0 · ConfirmRun Q2, Q4 and Q5 host-scoped. Hash the DLLs beside the suspect executable. A hit on the benign-CEF-hash-under-another-name rule plus anything under EdgeUpdate\Install is a confirmed intrusion, not a maybeSOC L2Full process tree, directory listing with hashes, Falcon detection IDs
1 · IsolateNetwork-contain the host in Falcon. Do not power it off — the .NET payload lives in the host process and memory is worth more than a clean shutdownSOC L2Containment timestamp; memory image if your process supports it
2 · PreserveCollect appcfg.dat, cache.dat, both DLLs and the sideload hosts before touching anything. The payload is GPU-decrypted at runtime and cannot be reconstructed after remediationDFIRHashed evidence bundle with chain of custody
3 · ScopeRun Q1, Q4, Q6 and Q8 fleet-wide over full retention. Run the H-S1 proxy hunt to find every user who reached the artifact page — visitors who downloaded but did not execute still need checkingThreat huntAffected-host list; proxy sessions touching the artifact path
4 · EradicateDelete the staging directory and every campaign artifact; remove the scheduled task and Run-key entries; remove any Defender exclusion the actor added; confirm no second persistence path remains (re-run Q5 and P2)Endpoint opsBefore/after persistence inventory
5 · Credential responseTreat every credential in every browser profile on the host as compromised. Force password resets, revoke all active sessions and refresh tokens (cookie theft and HVNC both defeat a password reset alone), rotate any FTP and messaging-client credentials, and check for mail rules or OAuth grants added during the windowIAM + SOCReset and revocation log; token-revocation timestamps
6 · RecoverReimage. A host that ran an HVNC-capable RAT with hands-on-keyboard access does not get cleaned in place. Restore user data from a copy predating first executionEndpoint opsReimage record; restore point justification
7 · Harden & closeApply §12 tiers 1—4 fleet-wide if not already done. Add the artifact URL and delivery domains to the gateway blocklist. Brief the affected user population on the specific lure — a sponsored ad on the real vendor domain defeats the usual "check the URL" advice, and people need to hear whySecurity eng + CommsControl-change tickets; awareness comms record
15

Detection Coverage Map

TechniqueBehaviorCQLIOACoverage
T1583.008 / T1584.006Malvertising via a sponsored ad to a malicious artifact on a trusted domainGAP — endpoint-blind. Covered only by proxy hunt H-S1/H-S2, and only if full-URL logging is on
T1189Redirect chain to the fake installerQ6, Q7Good
T1204.002User executes the fake installerQ1YesGood
T1036.005Signed CEF host renamed; SPSS binary planted in an EdgeUpdate pathQ1, Q2, Q4YesGood — Q2 is rename-proof
T1574.002DLL side-loading (libcef.dll, tempdir.dll)Q3, Q8, Q10Partial — file-write arm is solid; the module-load arm depends on tenant ImageHash coverage
T1027.002VMProtect packingQ3, Q8 (by hash)Partial — packing itself is not observable; only the specific packed file is
T1027.013Encrypted appcfg.dat payloadQ4Good — the artifact on disk is visible even though the decryption is not
T1497.001DXGI adapter / VRAM / shader-timing anti-VM gateGAP — no EDR surface exposes DXGI enumeration. Mitigation is procedural: detonate on bare metal
T1562.001Defender exclusions addedPartial — native hunt H-W2 (Defender EventID 5007) carries this; no CQL equivalent in this pack
T1547.001 / T1053.005Run key and scheduled-task persistence into the staging directoryQ5Good
T1102EtherHiding — C2 resolved from BNB Smart Chain contractsPartial — native hunt H-N4 (workstation egress to blockchain RPC) plus the tier-2 egress control. The contract read itself is indistinguishable from any HTTPS request
T1071.001 / T1105SectopRAT C2 and payload stagingQ6, Q7, Q9Good — Q9 survives C2 rotation because it keys on the vessel, not the address
T1555.003 / T1185Browser credential theft and HVNCQ9Partial — Falcon emits no generic file-read event. Sysmon EventID 11 + audit ACLs (H-W4) close it

Validation gates: the six gates in §11 must pass before any of these queries alert. In short: confirm module-load telemetry exists (or deploy Sysmon 7), confirm SHA256HashData is populated on process events, run a 30-day benign baseline for Q3/Q7/Q9/Q10 and write the allowlist down, positive-test Q1/Q2/Q4 on bare-metal hardware, and only then promote Q1/Q2/Q4 to Custom IOAs. Two gaps are structural rather than fixable by better queries: the malvertising and DXGI anti-VM stages have no endpoint telemetry at all, so they are answered by proxy logging and by lab procedure respectively.

16

Hunt Summary Ticket

TITLE:      FakeAgent — malicious Claude Artifact malvertising delivering SectopRAT via CEF DLL side-loading
SEVERITY:   Critical — active in the wild, 29 organizations compromised 2026-07-21 to 2026-07-22
SCOPE:      All Windows endpoints with internet access. Highest risk: users who install their own
            AI/developer tooling. Lookback 90 days (C2 set reaches back to 2025-05-30).

HYPOTHESIS: A user searched for the Claude desktop app, clicked a Bing sponsored ad pointing at a
            malicious public artifact on the genuine claude.ai domain, and ran ClaudeDesktop.exe —
            a renamed JetBrains jcef_helper CEF host that side-loads a tampered libcef.dll, stages
            IBM SPSS sslconf.exe plus tempdir.dll under %APPDATA%\Roaming\Microsoft\EdgeUpdate\Install\,
            GPU-decrypts appcfg.dat and runs SectopRAT with HVNC and browser credential theft.

QUERIES:    Q1  fake installer filenames in a download path          CONF high / FP low
            Q2  benign CEF host hash under a non-jcef_helper name    CONF high / FP low   [START HERE]
            Q3  tampered libcef.dll by hash or user-writable path    CONF high / FP med
            Q4  sslconf.exe / tempdir.dll / appcfg.dat in EdgeUpdate CONF high / FP med   [START HERE]
            Q5  persistence into the staging directory               CONF high / FP med
            Q6  egress to the 21 decrypted C2 addresses              CONF high / FP low
            Q7  delivery domains + brand-as-leading-label DNS        CONF med  / FP high
            Q8  malicious SHA-256 sweep                              CONF high / FP low
            Q9  sideload vessel beaconing (survives C2 rotation)     CONF med  / FP med
            Q10 CEF payload DLLs in user-writable dirs (baseline)    CONF med  / FP high

DO FIRST:   1. Run Q2 and Q4 fleet-wide. Either firing is a confirmed intrusion — go to section 14.
            2. Run Q8 and Q6 across full retention for retrospective scope.
            3. Check Defender exclusion changes (native hunt H-W2) on any host that fires.
            4. Proxy hunt H-S1 for claude.ai/public/artifacts/ to find everyone who saw the lure.

FINDINGS:   [ ] Q2 hits: ____   [ ] Q4 hits: ____   [ ] Q6/Q8 hits: ____   [ ] proxy hits: ____

GAPS:       - Malvertising / artifact-hosting stage has NO endpoint telemetry (proxy full-URL only)
            - DXGI anti-VM gate is unobservable; sample will not detonate in a standard VM
            - Module-load (ImageHash) coverage is tenant-dependent — verify before trusting Q3/Q8/Q10
            - Browser credential-store reads are inferred, not observed (no Falcon file-read event)
            - Malicious ClaudeDesktop.exe hash was never published — shipped as a REPLACE_WITH_ placeholder

ACTIONS:    - Import section 10 CSV to Falcon IOC Management; block the 4 domains at DNS and proxy
            - Do NOT block claude.ai; do NOT block the two benign component hashes
            - Promote Q1/Q2/Q4 to Custom IOAs after validation gates 1-4 pass
            - Deploy hardening tier 1 (ASR pair, Tamper Protection, SmartScreen) this week
            - Publish a managed software portal so users stop searching the web for installers

OWNER:      HuntPack
VERSION:    v0.3 (2026-07-24)
17

Changelog

v0.32026-07-24CQL correctness pass. All table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.
v0.22026-07-24CQL fix. Removed the in-query @timestamp >= (now() - N) timeframe line from every query: an expression on the right of a comparison is not valid in CQL filter context, so Falcon rejected the query at line 1 and no hunt would run. The lookback is now a // LOOKBACK comment; set the window with Falcon's time picker, which is what the rest of the library does. No detection logic, fields, or IOCs changed.
v0.12026-07-24Initial pack — 10 CQL queries, 10 native audit-log hunts, 3 Custom IOA candidates, tiered hardening + playbooks, coverage map. Built from the Huntress FakeAgent report (2026-07-22), corroborated by BleepingComputer and Help Net Security, with Malpedia and AhnLab ASEC for SectopRAT/ArechClient2 family background. 36 atomic indicators traced to saved source snapshots; the malicious ClaudeDesktop.exe hash was never published and ships as a labelled REPLACE_WITH_ placeholder rather than an invented value. IT Security Guru returned HTTP 403 to every fetch attempt and is therefore not cited.
18

References

TierSourceUsed ForAccess date
1Huntress — Inside FakeAgent: How a Claude Desktop Malvertising Campaign Hit 29 Organizations with SectopRAT (2026-07-22)PRIMARY — full attack chain, all atomic IOCs (hashes, domains, current + 20 historical C2 addresses, BSC contracts, staging path), anti-analysis internals, SectopRAT attribution, actor-overlap and April 2026 Docker Hub precursor2026-07-24
2BleepingComputer — Fake Claude app promoted by Bing ads pushes SectopRAT malwareIndependent corroboration of scope, timeline, artifact view count, the JetBrains CEF component and EtherHiding; SectopRAT/ArechClient2 lineage and HVNC capability2026-07-24
2Help Net Security — How attackers hosted a fake Claude download page on the claude.ai domainClaude Artifacts mechanics (public links viewable without an account), both redirect hops, bundle contents and scheduled-task reinfection, April 2026 Docker Hub link2026-07-24
3Malpedia — win.sectop_ratSectopRAT / ArechClient2 family lineage and prior reporting (background only)2026-07-24
3AhnLab ASEC — Distribution of SectopRAT (ArechClient2) Disguised as Notion InstallerPrior fake-installer delivery of the same family; supports the behavioral-over-atomic framing2026-07-24
4MITRE ATT&CK T1574.002 — DLL Side-Loading · T1036.005 · T1497.001 · T1102Technique definitions and mitigation M-numbers used in §6 and §122026-07-24

HuntPack v0.3 · FakeAgent — Malicious Claude Artifact → SectopRAT · Generated 2026-07-24 · Defensive use only — no offensive code. This campaign's atomic indicators are unusually perishable: EtherHiding lets the operator rotate C2 with a single blockchain transaction, and the delivery domains are disposable. The durable signal is behavioral — a signed CEF host running under a name that is not its own (Q2), a statistics-package binary inside a per-user EdgeUpdate directory (Q4), and persistence pointing at that directory (Q5). Validate field names, confirm module-load telemetry, run the 30-day baseline for Q3/Q7/Q9/Q10, and positive-test on bare-metal hardware — the sample's DXGI gate will suppress execution in a VM and hand you a false all-clear.