CastleRAT Multi-Stage Remote Access Trojan

ClickFix and CastleLoader delivery · Deno/Python runtime abuse · Pythonw dead-drop resolution
Threat
CastleRAT
Type
Python and native C remote access trojan
Severity
High
Version
v0.1 Draft · 2026-09-07
Author
cybersecurity analyst
Confidence
High core-behavior confidence; tenant unverified
STATIC REVIEW PASSED
01

Executive Summary

What current reporting adds: Red Canary's August 2026 Intelligence Insights placed CastleRAT in its threat rankings and described both compiled Python and native C builds, dead-drop resolution through Pythonw, and bring-your-own-runtime execution. Blackpoint independently reported more than 60 CastleLoader/CastleRAT-related incidents between May and early July, with finger.exe retrieval and caret-obfuscated commands recurring across the chain. Earlier ThreatDown, Splunk, and Recorded Future research supplies the technical depth needed to turn that prevalence signal into a defensible behavior-led hunt.

How the chain works: Observed delivery begins with compromised-site ClickFix prompts or CastleLoader. One chain executes an MSI, provisions the Deno JavaScript runtime, stages an obfuscated Python environment protected with PyArmor, and extracts content from an image before loading the RAT in memory. Other builds use Pythonw for dead-drop resolution against an actor-controlled destination or a public Steam Community page. CastleRAT exists as Python and C variants and supports system discovery, keylogging, screen capture, remote shell access, file operations, and command execution.

Why detection belongs in runtime and lineage evidence: Infrastructure rotates and public services can be abused by unrelated users, so the durable signals are the transition points: finger.exe retrieval with command obfuscation, an unexpected Deno runtime launched from a user-writable path, Python or Pythonw executing from a staged environment, and Pythonw-attributed DNS to Steam Community. Q01 and Q02 are the strongest keepers; Q03-Q05 need the same host, parent, path, and owner context before they mean CastleRAT.

Operational limit: Endpoint command lines cannot prove in-memory injection, RC4 protocol semantics, screen capture, keylogging, or a remote-shell command. Those require memory acquisition, packet or proxy content, and event-specific follow-up. No fresh atomic IOC set was independently corroborated across the accessible current sources, so this pack deliberately ships none. All CQL remains static-reviewed only: no Falcon tenant parse, benign baseline, positive fixture, scheduled search, IOA, prevention action, or deployment is claimed.

Defender priority: Run Q01 for finger.exe retrieval and Q02 for unexpected Deno execution over 30 days, then correlate Q03-Q05 on the same host before containment. Preserve the process tree, staged runtime, image, MSI, DNS, and memory evidence; do not contact suspected dead-drop or C2 destinations.
PriorityWhy nowCoverage deliveredKey limitation
Find durable behavior and preserve evidenceCurrent and independently corroborated 2026 reporting5 CQL designs plus native pivotsStatic-only; tenant, content, and native-log semantics remain unverified
02

Source and Claim Review

Current-run sanitized plain-text snapshots were hashed before assembly. Every source was treated as untrusted data; no embedded instruction, command, exploit code, payload, or destination was executed.

IDPublisherTierIndependenceAccessedStatus
S01Red CanaryT1red-canary2026-09-07T11:06:52Zsuccessful sanitized current detection-report extraction
S02Blackpoint CyberT1blackpoint2026-09-07T11:06:52Zsuccessful sanitized first-hand SOC extraction
S03ThreatDownT1threatdown2026-09-07T11:06:52Zsuccessful sanitized technical-research extraction
S04Splunk Threat Research TeamT1splunk2026-09-07T11:06:52Zsuccessful sanitized malware-analysis extraction
S05Recorded Future Insikt GroupT1recorded-future2026-09-07T11:06:52Zsuccessful sanitized annual-report extraction
S06Microsoft LearnT1microsoft2026-09-07T11:06:52Zsuccessful sanitized authoritative control extraction
ClaimStatementSourcesConfidence
C01Red Canary observed CastleRAT in 2026 as Python and C builds using dead-drop resolution and bring-your-own-runtime execution.S01high
C02Blackpoint linked more than 60 May-July incidents to a CastleLoader/CastleRAT ClickFix chain.S02high
C03Blackpoint repeatedly observed finger.exe retrieval and caret-obfuscated commands in the initial chain.S02high
C04ThreatDown documented a chain that used MSI delivery, Deno, PyArmor-protected Python, image-carried content, and in-memory CastleRAT loading.S03high
C05CastleRAT can use Pythonw for dead-drop resolution through actor infrastructure or Steam Community.S01high
C06Splunk analyzed Python and native C variants that collect host identity and communicate with RC4-protected C2.S04high
C07Reported capabilities include keylogging, screen capture, remote shell, file handling, and command execution.S01, S04high
C08Recorded Future clustered CastleRAT infrastructure by RC4 keys and linked it operationally with CastleLoader while avoiding overclaiming a single controller.S05high
C09Public-service dead drops and rotating infrastructure are insufficient alone for attribution or blocking.S01, S05high
C10The defensible portable hunt focuses on runtime acquisition, execution lineage, user-writable staging, and process-attributed DNS rather than content inspection.S01, S02, S03, S04high
Contradictions and gaps: infrastructure and public services are volatile; native log schemas and Falcon result semantics are tenant-specific; a hit does not prove every described capability or attribution.
03

Hunt Brief and Attack Chain

The scaffold separates queryable endpoint behaviors from application, content, memory, and forensics gaps. Each hypothesis retains evidence and a safe validation plan.

StepClaimsBehaviorPlatformGoal
1C02,C03a user follows a ClickFix lure and launches a retrieval commandWindowsFind finger.exe retrieval and command obfuscation
2C04an MSI or loader provisions a Deno runtimeWindowsFind Deno execution from user-writable staging
3C04a staged Python/PyArmor environment processes image-carried contentWindowsFind unusual Python lineage and image/script arguments
4C01,C05Pythonw resolves a dead drop or current C2 locationWindowsCorrelate process-attributed DNS with the staged host
5C06,C07CastleRAT collects host data and provides operator capabilitiesWindowsAcquire memory and reconstruct process/network behavior
6C08,C09infrastructure and payload variants rotateWindowsPrefer behavior, owner context, and same-host correlation
IDBehaviorTelemetryUseLookbackValidation
H01finger.exe performs retrieval from an obfuscated ClickFix commandProcessRollup2 / SyntheticProcessRollup2alert-candidate30dRun finger.exe only against an analyst-controlled inert lab service and baseline any legitimate legacy finger use.
H02Deno executes from a user-writable path after a shell, MSI, or script parentProcessRollup2 / SyntheticProcessRollup2alert-candidate30dUse a signed Deno fixture in a lab user path and baseline approved developer hosts and runtime managers.
H03Python or Pythonw executes from a staged user path with image, packed-script, or loader argumentsProcessRollup2 / SyntheticProcessRollup2hunt30dExercise an inert local script and image path; inventory PyArmor and packaged-Python owners before interpreting hits.
H04Pythonw-attributed DNS reaches Steam Community or a rare newly observed domainDnsRequest / SuspiciousDnsRequesthunt30dConfirm process attribution and compare against approved automation; never block Steam Community based on this signal alone.
H05Deno or Python runtime binaries are written into a user-writable staging pathNewExecutableWritten / PeFileWrittenhunt30dUse an approved harmless runtime copy on a test host and baseline developer tooling caches and software deployment.
H06CastleRAT keylogging, screen capture, RC4 C2, or remote-shell commands occurmemory, packet/proxy content, and host artifactsgap30dAcquire memory and approved network content from a corroborated host; portable Falcon fields cannot prove these content-level actions.

Affected surface and telemetry

Windows Falcon process, file, DNS, and IPv4 network telemetry plus browser/proxy and host-acquisition pivots. Proxy, IPv6, resolver attribution, wrapper depth, memory, packet content, and product-native schema remain repository- and tenant-dependent.

04

Consolidated IOC Table

No eligible atomic IOCs were independently corroborated across the accessible primary technical sources as of 2026-09-07. Public services, technique strings, product names, and MITRE identifiers are not atomic indicators and are not promoted into an IOC list.

05

ATT&CK Mapping

Every technique row is an analyst inference from source-backed behavior, not an unsupported actor attribution.

TacticTechniqueNameBehaviorBasisSources
ExecutionT1204.004Malicious Copy and PasteClickFix deliveryanalyst inferenceS02,S03
Command and ControlT1105Ingress Tool Transferfinger.exe and runtime acquisitionanalyst inferenceS02,S03
ExecutionT1059.007JavaScript/JScriptDeno JavaScript runtime stageanalyst inferenceS03
ExecutionT1059.006Pythonstaged Python/PyArmor executionanalyst inferenceS01,S03,S04
Command and ControlT1102.003One-Way Communicationpublic-service dead-drop resolutionanalyst inferenceS01
DiscoveryT1082System Information Discoveryhost identity collectionanalyst inferenceS04
CollectionT1056.001Keyloggingreported CastleRAT capabilityanalyst inferenceS01,S04
CollectionT1113Screen Capturereported CastleRAT capabilityanalyst inferenceS01,S04
06

Native / Non-CQL Hunts

HuntLog sourceLogicResponse
ClickFix browser and clipboard reconstructionbrowser history, proxy, clipboard policy, and user interviewReconstruct the compromised-site visit and pasted command without replaying it; preserve the original page evidence and timestamps.Scope the delivery window and train from the exact lure only after evidence capture.
Runtime and memory acquisitionEDR process tree plus approved memory capturePreserve Deno/Python/Pythonw binaries, MSI, image, scripts, hashes, parent lineage, loaded modules, and volatile memory before removal.Escalate when the runtime is unowned or memory confirms an injected payload.
RC4/C2 content reviewproxy, packet capture, DNS, and firewall logsOn a corroborated host, inspect repeated destination changes and application-layer behavior; do not contact or replay suspected C2.Block only reviewed dedicated infrastructure and keep public services in detect-only context.
07

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Query strategy: Q01 and Q02 are the strongest keepers. Broader process, file, DNS, and network searches require owner and same-host correlation. Every card remains STATIC-ONLY.
Q01 · finger.exe retrieval with ClickFix-style command obfuscation
CONF highFP mediumCOST low

Looks for: finger.exe invoked with retrieval-shaped arguments, especially from cmd.exe, PowerShell, or the Run-dialog lineage and with caret-heavy command text. Accomplishes: targets Blackpoint's repeated initial mechanism before CastleLoader or CastleRAT changes payloads.

Trace: H01 · A01

// HUNT: finger.exe retrieval with ClickFix-style command obfuscation
// HYPOTHESIS: H01
// USE: alert-candidate
// MITRE: T1204.004, T1105
// CONF: high
// FP: medium
// COST: low
// TIMEFRAME: 30d — bounded analyst review window
// REQUIRES: ProcessRollup2 or SyntheticProcessRollup2; FileName, CommandLine, ParentBaseFileName, aid
// FALSE POSITIVES: legacy finger diagnostics, network administrators, security labs, and compatibility tests
// TUNING: inventory legitimate finger owners and exclude by managed host plus approved parent/path, never by filename alone
// VALIDATION: STATIC-ONLY
#event_simpleName = /^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName = /^finger\.exe$/i
| CommandLine = /(?:@|\/user:|\^.{0,12}\^|\s-[a-z])/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, TargetProcessId, aid])
| sort(@timestamp, order=desc, limit=1000)
Q02 · Deno runtime execution from a user-writable staging path
CONF highFP mediumCOST low

Looks for: deno.exe running from Users, ProgramData, Temp, AppData, or Public and launched by a shell, MSI, or script host. Accomplishes: catches the bring-your-own-runtime transition used in the documented in-memory CastleRAT chain.

Trace: H02 · A02

// HUNT: Deno runtime execution from a user-writable staging path
// HYPOTHESIS: H02
// USE: alert-candidate
// MITRE: T1059.007
// CONF: high
// FP: medium
// COST: low
// TIMEFRAME: 30d — bounded analyst review window
// REQUIRES: ProcessRollup2 or SyntheticProcessRollup2; ImageFileName, CommandLine, ParentBaseFileName, aid
// FALSE POSITIVES: developers, CI workers, runtime managers, and approved Deno applications
// TUNING: exclude only approved signer/path/host combinations after owner review
// VALIDATION: STATIC-ONLY
#event_simpleName = /^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName = /^deno\.exe$/i
| ImageFileName = /\\(Users|ProgramData|Temp|AppData|Public)\\/i
| ParentBaseFileName = /^(cmd|powershell|pwsh|msiexec|wscript|cscript)\.exe$/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, SHA256HashData, TargetProcessId, aid])
| sort(@timestamp, order=desc, limit=1000)
Q03 · Staged Python or Pythonw execution with packed-script or image arguments
CONF mediumFP highCOST low

Looks for: Python or Pythonw running from a user-writable path with PyArmor, image, JavaScript, or loader-oriented arguments. Accomplishes: exposes the staged interpreter boundary while keeping packaged applications and research tooling as explicit lookalikes.

Trace: H03 · hunt-only

// HUNT: Staged Python or Pythonw execution with packed-script or image arguments
// HYPOTHESIS: H03
// USE: hunt
// MITRE: T1059.006
// CONF: medium
// FP: high
// COST: low
// TIMEFRAME: 30d — bounded analyst review window
// REQUIRES: ProcessRollup2 or SyntheticProcessRollup2; ImageFileName, CommandLine, ParentBaseFileName, aid
// FALSE POSITIVES: packaged Python applications, PyArmor users, data-science notebooks, and image-processing automation
// TUNING: scope to Q01/Q02 hosts or exclude owner-approved signed runtime paths and projects
// VALIDATION: STATIC-ONLY
#event_simpleName = /^(ProcessRollup2|SyntheticProcessRollup2)$/
| FileName = /^(python|pythonw)(\.exe)?$/i
| ImageFileName = /\\(Users|ProgramData|Temp|AppData|Public)\\/i
| CommandLine = /(?:pyarmor|\.jpe?g\b|\.png\b|\.js\b|loader|runtime)/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, SHA256HashData, TargetProcessId, aid])
| sort(@timestamp, order=desc, limit=1000)
Q04 · Pythonw-attributed dead-drop DNS to Steam Community
CONF mediumFP highCOST low

Looks for: DNS requests to Steam Community carrying Python or Pythonw process context. Accomplishes: creates a narrow public-service dead-drop pivot that is meaningful only with unowned runtime and same-host delivery evidence.

Trace: H04 · hunt-only

// HUNT: Pythonw-attributed dead-drop DNS to Steam Community
// HYPOTHESIS: H04
// USE: hunt
// MITRE: T1102.003
// CONF: medium
// FP: high
// COST: low
// TIMEFRAME: 30d — bounded analyst review window
// REQUIRES: DnsRequest or SuspiciousDnsRequest; DomainName, ContextBaseFileName, aid
// FALSE POSITIVES: game clients, automation, scraping, monitoring, and security research
// TUNING: never block the parent service; require Q01-Q03 or an unowned Pythonw path on the same host
// VALIDATION: STATIC-ONLY
#event_simpleName = /^(DnsRequest|SuspiciousDnsRequest)$/
| DomainName = /(^|\.)steamcommunity\.com$/i
| ContextBaseFileName = /^(python|pythonw)(\.exe)?$/i
| table([@timestamp, ComputerName, UserName, ContextBaseFileName, ContextProcessId_decimal, DomainName, aid])
| sort(@timestamp, order=desc, limit=1000)
Q05 · Deno or Python runtime written into a user-writable staging path
CONF mediumFP highCOST low

Looks for: executable writes named deno.exe, python.exe, or pythonw.exe beneath Users, ProgramData, Temp, AppData, or Public. Accomplishes: finds bring-your-own-runtime staging before execution while retaining writer and hash context for same-host correlation.

Trace: H05 · hunt-only

// HUNT: Deno or Python runtime written into a user-writable staging path
// HYPOTHESIS: H05
// USE: hunt
// MITRE: T1105
// CONF: medium
// FP: high
// COST: low
// TIMEFRAME: 30d — bounded analyst review window
// REQUIRES: NewExecutableWritten or PeFileWritten; TargetFileName, ContextBaseFileName, SHA256HashData, aid
// FALSE POSITIVES: developer runtime installers, package managers, application bundles, and software deployment
// TUNING: baseline approved runtime caches and prioritize Q01/Q02 lineage or unsigned one-off paths
// VALIDATION: STATIC-ONLY
#event_simpleName = /^(NewExecutableWritten|PeFileWritten)$/
| TargetFileName = /\\(Users|ProgramData|Temp|AppData|Public)\\[^\r\n]*(deno|pythonw?)\.exe$/i
| table([@timestamp, ComputerName, UserName, ContextBaseFileName, TargetFileName, SHA256HashData, aid])
| sort(@timestamp, order=desc, limit=1000)
08

Operationalization and IOA Candidates

Every query has an explicit operational decision. Alert-candidate rows have complete design-only packages; no schedule, notification, IOA, or prevention rule was created.

QueryUseDecisionReadinessRationale
Q01alert-candidatealert-packagedesign-onlyTenant parsing, positive testing, and benign baseline are not recorded.
Q02alert-candidatealert-packagedesign-onlyTenant parsing, positive testing, and benign baseline are not recorded.
Q03hunthunt-onlydesign-onlyTenant parsing, positive testing, and benign baseline are not recorded.
Q04hunthunt-onlydesign-onlyTenant parsing, positive testing, and benign baseline are not recorded.
Q05hunthunt-onlydesign-onlyTenant parsing, positive testing, and benign baseline are not recorded.
Readiness gate: every observed baseline is unknown and every positive/benign test is planned-not-run. No alert package is deployable.
09

Machine-Readable IOC Appendix

No eligible atomic IOCs were independently corroborated as of 2026-09-07. The pack therefore ships behavior-led queries and no hash, IP, domain, or URL import block. Public service names and runtime strings remain hunt context only.

Dated IOC statusno importable values
As of 2026-09-07, no eligible atomic IOCs were independently corroborated. This pack intentionally provides no hash, IP, domain, or URL import block.
10

Hardening — Tiered and Deployable

Immediate — expose and interrupt the active chain
  • Hunt finger.exe retrieval and unexpected staged runtimes (M1047; CTRL01) — run Q01-Q05 over 30 days and preserve every unowned runtime/process tree before changing the host deployable-design Verify: confirm each hit has an owner, signer/path, parent, destination, and approved purpose Rollback: the hunt is read-only; remove only temporary analyst collection artifacts Authority: Blackpoint and ThreatDown reporting accessed 2026-09-07.
  • Pilot malicious-copy-and-paste and script-child protections (M1040; CTRL02) — place applicable script/download protections in audit for a representative cohort before any block action deployable-design Verify: approved workflows complete and inert test behavior produces the expected audit event Rollback: restore the exported rule action through the same management channel Authority: Microsoft Defender ASR guidance and Red Canary detection guidance.
Near-term — constrain repeat execution and egress
  • Constrain Deno, Pythonw, and packaged runtimes outside approved paths (M1038; CTRL03) — inventory runtime owners, create audit policy for unapproved signer/path combinations, and pilot before enforcement deployable-design Verify: approved developer and automation workflows pass; an inert unapproved user-path runtime is audited Rollback: deploy the prepared rollback policy or return the cohort to audit Authority: Microsoft App Control for Business guidance accessed 2026-09-07.
  • Restrict public dead-drop access with owner-aware egress policy (M1037; CTRL04) — monitor Pythonw and staged runtimes reaching public content services; block only dedicated reviewed destinations, not parent services deployable-design Verify: a benign public-service test remains available while an unapproved dedicated fixture is denied or alerted Rollback: restore the previous scoped egress rule and retain detection Authority: Recorded Future and Red Canary reporting plus Microsoft network-control guidance.
Strategic — retire unowned trust paths
  • Remove legacy finger client where no business owner exists (M1042; CTRL05) — inventory finger.exe use, assign owners to exceptions, and remove or deny execution only where no supported dependency remains deployable-design Verify: approved support cases pass and an unowned invocation is prevented or alerted Rollback: reinstall or re-allow only the reviewed signed binary for a time-bounded exception Authority: Blackpoint first-hand incident reporting and Microsoft feature governance.
  • Centralize browser, endpoint, DNS, proxy, and software-control evidence (M1047; CTRL06) — retain process, file, DNS, proxy, browser, application-control, and user-report evidence in a separately administered repository deployable-design Verify: a tabletop reconstruction links lure, command, runtime, DNS, and host actions across one test case Rollback: restore prior forwarding only after equivalent independent evidence exists Authority: Microsoft security logging and application-control guidance.

Deployable playbook · PB01 · guarded pilot and rollback

  1. Export current application-control, ASR, egress, runtime inventory, and logging state
  2. inventory approved finger, Deno, Pythonw, PyArmor, browser-automation, and MSI workflows
  3. apply audit controls to a limited cohort
  4. run inert local fixtures without contacting source infrastructure
  5. verify expected telemetry and business health
  6. expand only when exceptions are owned
  7. rollback through exported policies if a stop condition fires
  8. retain configuration, events, decisions, and recovery evidence
Design state: no control was canary-tested or deployed. Complete platform, continuity, sensitive-data, and approval checks first.
11

Containment Runbook

PhaseTriggerAuthorityOwnerEvidenceRecovery
1. Validate and preserveQ01/Q02 or correlated Q03-Q05 hitSOC leadSOC analystraw events, process tree, MSI, runtime, image, scripts, hashes, DNS/networknone; preservation is read-only
2. Scope deliveryunapproved runtime chain corroboratedincident commanderendpoint and web/proxy respondersbrowser history, proxy, copied command, related hosts/usersdocument approved test or continue
3. Isolate affected endpointactive RAT or operator behavior confirmedincident commander plus business ownerendpoint operationsisolation time, exceptions, active sessions, business impacttemporary access only under continuity plan
4. Address accounts and destinationskeylogging/session theft or dedicated C2 evidenceincident commander plus identity/network ownersidentity and network operationsrevocations, blocks, destination evidence, owner approvalsrestore access through clean reauthentication and reviewed rules
5. Eradicate, recover, re-huntscope stable and volatile evidence preservedincident commander and system ownerendpoint engineering and SOCrebuild/cleanup record, known-good hashes, fresh Q01-Q05 resultsreturn after no unexplained hits and owner sign-off

Preservation order: raw results, application/proxy events, process tree, files and hashes, network/DNS, identity/session state, policy/configuration, analyst notes, and tool logs. Closure: known-good recovery, explained re-hunt results, and incident-commander plus system-owner approval.

12

Detection Coverage and Validation Evidence

Validation state: STATIC REVIEW PASSED only after the complete local gate suite succeeds. This is not Falcon parsing, canary success, schedule creation, or deployment evidence.

TechniqueCoverageQuery or handoffEvidenceLimitation
T1204.004Static or gapQ01local structure, field, syntax, provenance, and safety reviewtenant parser, positive test, and benign baseline absent
T1105Static or gapQ01, Q05local structure, field, syntax, provenance, and safety reviewtenant parser, positive test, and benign baseline absent
T1059.007Static or gapQ02local structure, field, syntax, provenance, and safety reviewtenant parser, positive test, and benign baseline absent
T1059.006Static or gapQ03local structure, field, syntax, provenance, and safety reviewtenant parser, positive test, and benign baseline absent
T1102.003Static or gapQ04local structure, field, syntax, provenance, and safety reviewtenant parser, positive test, and benign baseline absent
T1082Static or gapnative/memory handofflocal structure, field, syntax, provenance, and safety reviewtenant parser, positive test, and benign baseline absent
T1056.001Static or gapnative/memory handofflocal structure, field, syntax, provenance, and safety reviewtenant parser, positive test, and benign baseline absent
T1113Static or gapnative/memory handofflocal structure, field, syntax, provenance, and safety reviewtenant parser, positive test, and benign baseline absent

Recorded evidence and next tests

  • Every CQL card retains VALIDATION: STATIC-ONLY; no Falcon tenant was contacted.
  • The offline tenant dry run checks extraction and profile readiness only.
  • Content, memory, product-native, IPv6, proxy, and wrapper-depth gaps remain visible.
  • Next: parse Q01 and Q02 in the intended repository over one hour, verify fields, then run approved inert positive and 30-day benign tests.
13

Hunt Summary Ticket

TITLE:        CastleRAT hunt — v0.1 Draft
SEVERITY:     high — current evidence supports high-impact compromise and downstream control risk
SCOPE:        Windows Falcon process, file, DNS, and IPv4 network telemetry plus browser/proxy and host-acquisition pivots
HYPOTHESIS:   H01 alert-candidate — finger.exe performs retrieval from an obfuscated ClickFix command; H02 alert-candidate — Deno executes from a user-writable path after a shell, MSI, or script parent; H03 hunt — Python or Pythonw executes from a staged user path with image, packed-script, or loader arguments; H04 hunt — Pythonw-attributed DNS reaches Steam Community or a rare newly observed domain; H05 hunt — Deno or Python runtime binaries are written into a user-writable staging path; H06 gap — CastleRAT keylogging, screen capture, RC4 C2, or remote-shell commands occur
QUERIES RUN:  Q01 alert-candidate; Q02 alert-candidate; Q03 hunt; Q04 hunt; Q05 hunt
DO FIRST:     Q01 and Q02 over 30d
FINDINGS:
GAPS:         tenant parsing, native/content/memory evidence, positive and benign tests
ACTIONS:      SOC validates Q01/Q02; platform and endpoint owners preserve and scope evidence
OWNER:        Security Operations / Detection Engineering / Platform Owner
VERSION:      v0.1 Draft · 2026-09-07 · STATIC REVIEW PASSED
14

Changelog

v0.1 Draft2026-09-07Initial pack with 5 conservative CQL queries, 0 source-tagged atomic indicators, explicit gaps, design-only operationalization, reversible controls, and a five-phase containment runbook. Tenant execution is not claimed.
15

References

IDPublisherVersion/statusAccessedUseURL
S01Red Canarysuccessful sanitized current detection-report extraction2026-09-07T11:06:52ZC01, C05, C07, C09, C10https://redcanary.com/blog/threat-intelligence/intelligence-insights-august-2026/
S02Blackpoint Cybersuccessful sanitized first-hand SOC extraction2026-09-07T11:06:52ZC02, C03, C10https://blackpointcyber.com/blog/blackpoint-soc-threat-pulse-week-of-july-6-2026/
S03ThreatDownsuccessful sanitized technical-research extraction2026-09-07T11:06:52ZC04, C10https://www.threatdown.com/blog/castlerat-cyber-attack-is-the-first-to-abuse-deno-javascript-runtime-to-evade-enterprise-security/
S04Splunk Threat Research Teamsuccessful sanitized malware-analysis extraction2026-09-07T11:06:52ZC06, C07, C10https://www.splunk.com/en_us/blog/security/castlerat-malware-detection-splunk-mitre-attck.html
S05Recorded Future Insikt Groupsuccessful sanitized annual-report extraction2026-09-07T11:06:52ZC08, C09https://assets.recordedfuture.com/insikt-report-pdfs/2026/cta-2026-0319.pdf
S06Microsoft Learnsuccessful sanitized authoritative control extraction2026-09-07T11:06:52ZC10https://learn.microsoft.com/windows/security/application-security/application-control/windows-defender-application-control/wdac