CLOSEDQUORUM — Autonomous AI-Orchestrated C2 Implant

Behavioral-correlation hunt pack for a Go-based Windows implant that delegates post-compromise decisions to a panel of four commercial LLM providers — Cisco Talos, 2026-09-22
Threat
CLOSEDQUORUM
Severity
MEDIUM — NOT CONFIRMED ITW
Type
Credential Theft / Autonomous AI C2
Access
Unknown — delivery vector not reported by any source
Version
v0.1 (Draft) · 2026-09-24
Author
HuntPack
Confidence
Single primary source (Cisco Talos), corroborated by 3 independent-outlet summaries of the same analysis
01

Executive Summary

CLOSEDQUORUM is a 16.4MB, 64-bit Windows implant written in Go (CGO-enabled) that Cisco Talos disclosed on 2026-09-22 through its new CAIRN research toolkit. Its distinguishing feature is architectural, not technical: instead of phoning home to attacker-run C2 infrastructure, it queries up to four commercial LLM providers (DeepSeek, Qwen via OpenRouter, Mistral, and Google Gemini) with structured host-context prompts, tallies their independent votes by plurality, and autonomously executes whichever of four actions wins — steal (LSASS dump + browser credential theft + crypto wallet extraction, all three simultaneously), inject (Early Bird APC injection by default, process hollowing if the model selects it), persist (Registry Run key + scheduled task + WMI event subscription, all three), or move (defined in the decision schema but not implemented in the distribution build). Ties are broken in a fixed order: DeepSeek, then Qwen, then Mistral, then Gemini. The attacker never issues commands once the implant is running — the LLM panel does.

Read this before anything else in this pack. Cisco Talos explicitly states it has not confirmed in-the-wild deployment. The publicly analyzed distribution binary ships with placeholder API keys (dummy_api_key) and a non-functional Discord webhook (dummy_webhook_url) — it cannot reach any LLM provider or exfiltrate anything as distributed. Talos observed the full architecture only through static analysis of development builds; it did not observe a complete end-to-end live execution. The six SHA256 hashes in this pack are development build hashes from the malware's own build chain, not samples recovered from a victim environment. Everything in this pack should be treated as hunting for a credible, technically-confirmed but not-yet-observed-active threat model — not as an active campaign. The one piece of real-world attribution Talos offers is that artifacts in the binary tie the developer to carding-forum posts dating back to 2025, consistent with an operator-configured credentials-as-a-service offering rather than a deployed campaign.

The attacker's objective, per Talos, is straightforward credential and cryptocurrency theft — there is nothing novel about what CLOSEDQUORUM steals. What is novel is effort displacement: an entire post-compromise decision phase (which action to take next, against which process, with which technique) is delegated from a human operator to a model panel that keeps running whether or not the attacker is at a keyboard. Traditional C2 requires attacker-run infrastructure — a domain, an IP, a listener — that defenders can track, block, and see rotate. CLOSEDQUORUM instead rides four commercial API endpoints that thousands of legitimate applications call every day, plus a Discord webhook, which is exactly why Talos and every outlet that covered this story land on the same recommendation: this is a behavioral-correlation hunt, not a domain-blocking exercise. DeepSeek, OpenRouter, Mistral, and Gemini API traffic is not inherently suspicious and must never be treated as a block candidate on this intelligence alone.

Highest-value defensive angle: no single indicator in this threat model is reliable in isolation. The combination is what's distinct — one non-browser process reaching two or more LLM provider APIs, correlated on the same host or same process with LSASS access, suspended-process injection precursors, a "WindowsUpdate" Run-key write, scheduled-task creation, the C:\Windows\Temp\wmi.ps1 forensic artifact, or Discord webhook egress. Section 8, Q7 builds that correlation directly; every other query in this pack is a component signal meant to feed it.

02

Source Review & Web Hunter Notes

Four sources were fetched and saved verbatim to this pack's source-snapshot directory (CLOSEDQUORUM-AI-C2-Implant-Hunt-sources/) before any indicator or technical claim in this pack was written. No fetched content contained instructions directed at an AI agent, requests to change output behavior, or any other prompt-injection attempt — all four sources are plain threat-intelligence reporting.

TierSourceKey FindingCarry Forward
PRIMARYCisco Talos – "The Closed Quorum" (2026-09-22)Full technical disclosure: architecture, decision schema, ATT&CK mapping, YARA rule, 6 dev-build SHA256 hashes, explicit no-ITW-confirmation and placeholder-credentials statements.yes
CORROBORATIONThe Hacker News (2026-09-23)Independent summary confirming architecture, action set, tie-break order, and the Snort rule (1:66984) Talos published alongside the YARA rule.yes
CORROBORATIONBleepingComputer (2026-09-22)Confirms decision-module behavior (steal/inject/persist/move) and the placeholder-credential / dev-build distinction.yes
CORROBORATIONSecurity Affairs (2026-09-24)Confirms the correlated-behaviors defensive framing verbatim from Talos and the credentials-as-a-service operating-model assessment.yes

Decisions: All four sources trace back to the same underlying Talos technical analysis — they are corroborating summaries of one primary disclosure, not independent confirmations from separate research. This pack treats the intelligence as single-primary-source accordingly: no indicator in this pack is recommended for action=prevent/blocking on that basis (see Section 10). No delivery vector was reported by any source — Talos found CLOSEDQUORUM through static/behavioral analysis via CAIRN, not through incident response, so how it would reach a victim endpoint is unknown and out of scope for this pack.

03

Hunt Brief & Attack Chain

Hunt hypotheses

#HypothesisMITREFalcon telemetryConfidence
H1A non-browser process on an endpoint resolves 2+ distinct commercial LLM provider domains in a short window — the ModelOrchestrator's four-provider query loop.TA0011, T1102DnsRequest, ProcessRollup2High
H2A process writes a value named exactly "WindowsUpdate" to the current user's Run key.T1547.001AsepValueUpdateHigh
H3schtasks.exe creates a task shortly after an otherwise-unexplained process launch.T1053.005ProcessRollup2Medium
H4powershell.exe executes a script at a path consistent with C:\Windows\Temp\wmi.ps1, the WMI subscription's forensic artifact.T1546.003, T1059.001ProcessRollup2High
H5A non-Discord-client process communicates with discord.com / discordapp.com / cdn.discordapp.com — the reporting and exfil channel.T1567.004DnsRequest, ProcessRollup2High
H6A common injection target (svchost.exe, RuntimeBroker.exe, notepad.exe, dllhost.exe) is spawned with no command line by a non-standard parent — an Early Bird APC / hollowing precursor.T1055.004, T1055.012ProcessRollup2Low (proxy only — see Coverage Map)
H7The same host shows both an LLM-provider DNS resolution and a WindowsUpdate Run-key write within the same window — the composite correlation Talos frames as the durable signal.TA0011, T1547.001DnsRequest, AsepValueUpdateHigh
H8A non-browser process opens a Chrome/Edge "Login Data" file, Firefox "logins.json", or a MetaMask/Exodus/Ethereum wallet path.T1555.003, T1005, T1552.001FileOpenInfo ⚠ validate in tenantMedium

Attack chain

StepTalos-described behaviorTelemetryHunt angle
1. InitializegatherSystemInfo() captures hostname, OS/arch, CPU count, Windows version, admin status — folded into every LLM prompt as TARGET:%s.ProcessRollup2 (process start)Not independently observable; context only.
2. Delay/evade5-minute initial delay, then randomized 5–15 minute polling; ETW suppressed by overwriting EtwEventWrite with a single RET instruction.None directly — self-blinding techniqueHonest gap; see Coverage Map and Section 7.
3. Query the quorumModelOrchestrator queries up to 4 LLM provider APIs in sequence; responses aggregated by plurality vote on the Decision field.DnsRequest, NetworkConnectIP4Q1, Q7, Q8
4. Report the decisionWinning decision + reasoning + parameters posted to the operator's Discord webhook before capability execution.DnsRequest, NetworkConnectIP4Q5
5a. steallsassDump() (SeDebugPrivilege + MiniDumpWriteDump), dumpBrowserCredentials(), extractCryptoWallets() — all three run together.No dedicated Falcon CQL field for LSASS handle access in the referenced data modelQ9, Q10 (proxy); Section 7 (RTR-based); Coverage Map gap
5b. injectgenerateShellcode() then Early Bird APC (default) or process hollowing if selected.No direct NtQueueApcThread/WriteProcessMemory fieldQ6 (proxy); Coverage Map gap
5c. persistestablishPersistence(): Run key "WindowsUpdate", schtasks.exe task, WMI permanent event subscription (60s trigger) writing/executing C:\Windows\Temp\wmi.ps1.AsepValueUpdate, ProcessRollup2Q2, Q3, Q4
5d. moveDefined in the decision schema; no handler in the distribution build — selecting it does nothing.N/ANot applicable to the analyzed build.
6. ExfiltrateStolen material AES-256-GCM encrypted, Base64-encoded, segmented into 1,900-byte chunks, posted to Discord at 1-second intervals.DnsRequest, NetworkConnectIP4Q5
04

Consolidated IOC Table

TypeValueConfidenceActionContextExpiry
sha256250d4fa37488af9b025333fa17705573d721467b203765bc360890b4f5a90cd7mediumhuntCLOSEDQUORUM development-build hash, developer build chain over 7 days (Talos static analysis, dated 2026-06-17). Not a confirmed victim-environment sample.2026-12-24
sha256c4dc171f2513fcaf9d5ecc815a94aee4063b213ab380f80bd3ac422dee5205a7mediumhuntCLOSEDQUORUM development-build hash, developer build chain over 7 days (Talos static analysis, dated 2026-06-17). Not a confirmed victim-environment sample.2026-12-24
sha256c13cea04f598e2b0c248d603a6e31bd13aabb64d8149c1b6a77b64e0b983a86fmediumhuntCLOSEDQUORUM development-build hash, developer build chain over 7 days (Talos static analysis, dated 2026-06-17). Not a confirmed victim-environment sample.2026-12-24
sha256f5f1f8c3e7b883793800ab6ccf21b3e60bd0730f300b4595fe74a33adc17a63cmediumhuntCLOSEDQUORUM development-build hash, developer build chain over 7 days (Talos static analysis, dated 2026-06-17). Not a confirmed victim-environment sample.2026-12-24
sha2565191cf625dfc209a347f137b50aea199e82040fd5ee9086fb3e2de73c133f3cbmediumhuntCLOSEDQUORUM development-build hash, developer build chain over 7 days (Talos static analysis, dated 2026-06-17). Not a confirmed victim-environment sample.2026-12-24
sha256eddbd0ecf7195d38fefae5b9d393abfa79e6f3f94bde19308ecef130a05a42e5mediumhuntCLOSEDQUORUM development-build hash, developer build chain over 7 days (Talos static analysis, dated 2026-06-17). Not a confirmed victim-environment sample.2026-12-24
registry valueHKCU\Software\Microsoft\Windows\CurrentVersion\Run\WindowsUpdatemediumhuntBehavioral signature, not an atomic indicator — the value name alone is generic enough that a hit needs corroboration (see Q2, Q7).2026-12-24
filename / pathC:\Windows\Temp\wmi.ps1highhuntDistinctive forensic artifact of the WMI persistence mechanism; low FP if seen (see Q4).2026-12-24
domain (correlation only)api.deepseek.com, openrouter.ai, api.mistral.ai, Google Gemini APIn/a — legitimate infrastructureenrichThese are real, widely-used commercial API endpoints. Never block or treat as a standalone indicator — correlation signal only, per Section 10.n/a
domain (correlation only)discord.com, discordapp.com, cdn.discordapp.comn/a — legitimate infrastructureenrichLegitimate chat/CDN platform used as C2-reporting and exfil channel. Do not block wholesale — pair with process context (see Q5).n/a
YARA ruleCLOSEDQUORUM_LLM_Autonomous_Implant (Talos/CAIRN, confidence: high, tier T3)highpivotPublished by Talos; matches VT metadata anchors and binary-level strings (system prompt, DWARF function names). Deploy via your VT/CAIRN integration, not via CQL.2027-03-24
Snort rule1:66984 (Talos)mediumpivotMatches the implant's prompts to the AI services; requires TLS inspection to see the plaintext prompt content, per Talos and The Hacker News.2027-03-24

All six SHA256 hashes are development-build hashes from the malware's own build chain, published by Talos as static-analysis artifacts — not samples recovered from a compromised environment. They are shipped here at action=hunt (search and manually evaluate), never action=prevent/detect-block, because this pack has one primary technical source and single-sourced indicators do not ship as blocking recommendations in this library.

05

Affected Surface & Telemetry Matrix

SurfaceRequired telemetryPriorityGap risk
Windows endpoint – process/networkProcessRollup2, DnsRequest, NetworkConnectIP4CriticalLow — standard Falcon sensor telemetry, present in every deployment.
Windows endpoint – registry (ASEP)AsepValueUpdateCriticalLow.
Windows endpoint – file access (credential/wallet stores)FileOpenInfoHighMedium — coverage/retention varies by Falcon module and sensor policy; validate in tenant.
Windows endpoint – credential memory access (LSASS)No dedicated CQL-queryable field for process-handle/MiniDumpWriteDump access in the referenced Falcon data modelCriticalHigh — real gap. Covered by Falcon's sensor-side ML/IOA credential-theft detections, not by hand-written CQL. See Coverage Map.
Windows endpoint – process injection (APC/hollowing)No direct NtQueueApcThread / WriteProcessMemory / thread-context fieldCriticalHigh — real gap. Q6 is a coarse behavioral proxy only. See Coverage Map.
Windows endpoint – ETW tamperSelf-blinding technique — the sensor's own telemetry pipeline is the thing being tampered withHighHigh — real gap. No query-based detection is reliable for the moment of tampering itself. See Coverage Map / Section 7.
Network egress (TLS-inspected)Proxy/TLS-inspection logs (out of Falcon CQL scope)MediumMedium — only relevant if your environment performs TLS inspection; Talos and The Hacker News both note the prompt content and Snort rule 1:66984 require it.
06

ATT&CK Mapping

TacticTechniqueObserved behavior (per Talos)Query / control
Command and Control (TA0011)T1102 - Web ServiceModelOrchestrator queries up to 4 commercial LLM provider APIs; plurality-vote decision loop.Q1, Q7, Q8
Command and Control (TA0011) / Exfiltration (TA0010)T1567.004 - Exfiltration Over Web Service: Exfiltration Over WebhookDecisions and stolen data posted to an operator-controlled Discord webhook.Q5
Exfiltration (TA0010)T1102 - Web Service (secondary)Discord also serves as the real-time reporting channel for the LLM panel's decisions.Q5
Persistence (TA0003)T1547.001 - Boot or Logon Autostart Execution: Registry Run KeysSets a "WindowsUpdate" value under the current user's Run key.Q2, Q7
Persistence (TA0003)T1053.005 - Scheduled Task/Job: Scheduled TaskCreates a scheduled task via schtasks.exe.Q3
Persistence (TA0003)T1546.003 - Event Triggered Execution: WMI Event SubscriptionPermanent WMI event subscription triggers execution every 60 seconds.Q4
Execution (TA0002)T1059.001 - Command and Scripting Interpreter: PowerShellWMI mechanism writes and executes C:\Windows\Temp\wmi.ps1 via powershell.exe.Q4
Credential Access (TA0006) / Collection (TA0009)T1003.001 - OS Credential Dumping: LSASS MemorySeDebugPrivilege + MiniDumpWriteDump captures full LSASS memory.Section 7 (native/RTR) — Coverage Map gap
Credential Access (TA0006)T1555.003 - Credentials from Password Stores: Credentials from Web BrowsersCollects Chrome/Edge Login Data and Firefox logins.json.Q9
Credential Access (TA0006)T1552.001 - Unsecured Credentials: Credentials in FilesCollects wallet files that may contain authentication/recovery material.Q10
Collection (TA0009)T1005 - Data from Local SystemCollects MetaMask, Exodus, and Ethereum wallet data from local storage.Q10
Collection (TA0009)T1074.001 - Data Staged: Local Data StagingLSASS dumps, browser DBs, and wallet files staged under C:\Windows\Temp\ before transmission.Section 7 (native/RTR)
Privilege Escalation (TA0004) / Defense Evasion (TA0005)T1055.004 - Process Injection: Asynchronous Procedure CallDefault Early Bird APC: suspended process, shellcode write, NtQueueApcThread, resume.Q6 (proxy) — Coverage Map gap
Privilege Escalation (TA0004) / Defense Evasion (TA0005)T1055.012 - Process Injection: Process HollowingWhen the LLM selects process_hollow: image-base overwrite + resume.Q6 (proxy) — Coverage Map gap
Defense Evasion (TA0005)T1685 - Disable or Modify ToolsSuppresses ETW telemetry by overwriting EtwEventWrite with a single RET instruction.Section 7 (native) — Coverage Map gap
Defense Evasion (TA0005)T1027 - Obfuscated Files or InformationSecondary payload stored encrypted to impede static recovery.Not independently queryable
Defense Evasion (TA0005)T1480.001 - Execution Guardrails: Environmental KeyingSecondary-payload decryption key derived from current system time.Not independently queryable
Defense Evasion (TA0005)T1497.003 - Virtualization/Sandbox Evasion: Time Based Checks5-minute initial delay, randomized 5–15 minute polling.Timing pattern only; not a standalone query
Defense Evasion (TA0005)T1036.005 - Masquerading: Match Legitimate Resource Name or LocationWindows-Update-themed Registry, WMI filter, and consumer names.Q2, Q4
Exfiltration (TA0010)T1573.001 - Encrypted Channel: Symmetric CryptographyStolen data AES-256-GCM encrypted with a daily-rotating, date-derived key.Not independently queryable
Exfiltration (TA0010)T1132.001 - Data Encoding: Standard EncodingEncrypted data Base64-encoded before transmission.Not independently queryable
Exfiltration (TA0010)T1030 - Data Transfer Size LimitsCiphertext divided into 1,900-byte segments, posted at 1-second intervals.Volumetric pattern; pair with Q5
07

Native Audit-Log Hunts

These checks cover ground the CQL queries in Section 8 cannot reach with the Falcon data model referenced by this pack — either because the telemetry isn't exposed as a queryable field, or because the technique targets the telemetry pipeline itself. Run them as Falcon Real Time Response (RTR) scripts, scheduled PowerShell via GPO/RMM, or native Windows tooling, not as CQL.

1. On-disk LSASS dump / staging artifact sweep (RTR)

CLOSEDQUORUM stages LSASS dumps, browser databases, and wallet files under C:\Windows\Temp\ before transmission. Falcon's referenced data model has no dedicated event for arbitrary non-PE file writes, so this is a point-in-time filesystem sweep rather than a continuous query:

Get-ChildItem -Path 'C:\Windows\Temp\' -File -ErrorAction SilentlyContinue |
  Where-Object { $_.Extension -in '.dmp','.tmp' -or $_.Name -match '^(lsass|wallet|login|creds?)' } |
  Select-Object FullName, Length, CreationTimeUtc, LastWriteTimeUtc

Caveat: a positive hit only means a suspicious file existed at scan time — the implant does not persist these files (they are staged for transmission, then presumably cleaned up), so absence of a hit on a scheduled sweep does not clear a host. Treat this as a secondary corroboration check, not a primary detection.

2. WMI permanent event subscription audit (RTR / scheduled PowerShell)

Falcon's referenced event model does not expose WMI __EventFilter / __EventConsumer / __FilterToConsumerBinding objects as first-class CQL fields, so the persistence mechanism itself (not just its wmi.ps1 side effect, covered by Q4) needs a native query:

Get-CimInstance -Namespace root\subscription -ClassName __EventFilter |
  Where-Object { $_.Name -match 'Windows ?Update' -or $_.Query -match 'Win32_PerfFormattedData' } |
  Select-Object Name, Query
Get-CimInstance -Namespace root\subscription -ClassName __EventConsumer |
  Where-Object { $_.Name -match 'Windows ?Update' } |
  Select-Object Name, CommandLineTemplate
Get-CimInstance -Namespace root\subscription -ClassName __FilterToConsumerBinding

Also enable and forward the Microsoft-Windows-WMI-Activity/Operational event log (disabled by default on many builds) — it is the durable, native audit trail for WMI subscription creation and is not dependent on the Falcon sensor's own event model.

3. ETW tamper detection (compensating control, not a query)

CLOSEDQUORUM suppresses ETW by overwriting EtwEventWrite in its own process's memory with a single RET instruction. This is a self-blinding technique: the telemetry pipeline used to observe the tampered process may itself go dark for that process at the moment of tampering. No CQL query against post-hoc log data can reliably catch the instant of patching. Compensating controls, not queries: (a) rely on your EDR vendor's kernel-mode sensor components and anti-tamper protections, which are not solely dependent on user-mode ETW providers — validate this claim with your specific vendor rather than assuming it; (b) enable Protected Process Light (PPL) / HVCI where your EDR supports registering as a protected process, which raises the bar for a user-mode implant to patch the sensor's own hooks; (c) treat any host where CLOSEDQUORUM's OTHER behavioral signals (Section 8) go silent mid-session, after having fired once, as higher priority for manual triage — a telemetry gap immediately following a partial hit is itself a signal.

4. TLS-inspected proxy log review for LLM-prompt content and Discord webhook payloads

Both Talos and The Hacker News note that the structured prompts (host context, offensive capability language) and the Discord webhook payload content are visible only through TLS inspection or provider-side telemetry, not through Falcon network metadata alone. Talos's Snort rule 1:66984 matches on the implant's prompts to the AI services and requires TLS inspection to fire. If your environment performs TLS interception, review proxy logs for: (a) POST bodies to the four LLM provider API endpoints containing structured JSON with fields resembling target_process, exploit_type, evasion_method, or payload_config; (b) POST bodies to discord.com/api/webhooks/... containing Base64 code blocks in ~1,900-byte segments at roughly 1-second intervals.

08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · Single Non-Browser Process Contacting Multiple Commercial LLM Provider APIs
CONF HIGHFP MEDIUMCOST MEDIUM IOA CANDIDATE

Looks for: A single non-browser process resolving two or more of the four commercial LLM provider domains CLOSEDQUORUM's ModelOrchestrator queries in sequence (DeepSeek, OpenRouter/Qwen, Mistral, Google Gemini) within the lookback window. This is the headline behavioral correlation Talos frames as the strongest available signal: no single provider domain is suspicious on its own, but the fan-out pattern from one unexpected process is rare.

FP: AI-enabled IDEs, LLM gateway/proxy software, and browser extensions that intentionally call more than one provider.

// HUNT: Single Non-Browser Process Contacting Multiple Commercial LLM Provider APIs
// MITRE: TA0011 Command and Control / T1102 - Web Service
// CONF: high  FP: medium  COST: medium | REQUIRES: DnsRequest, ProcessRollup2
// FALSE POSITIVES: AI-enabled IDEs, LLM gateway/proxy software, and browser extensions that intentionally call more than one provider.
// TUNING: see the FP note above -- scope exclusions to your environment's approved tooling before promoting to an alert
// LOOKBACK: 24h (set in the Falcon time picker -- no in-query time filter)
#event_simpleName=DnsRequest
| DomainName=/^(api\.deepseek\.com|openrouter\.ai|api\.mistral\.ai|generativelanguage\.googleapis\.com)$/i
| rename(field=ContextProcessId_decimal, as=TargetProcessId_decimal)
| join(query={#event_simpleName=ProcessRollup2}, field=TargetProcessId_decimal, include=[ImageFileName, FileName, CommandLine, ComputerName, UserName])
| !in(FileName, values=["chrome.exe","msedge.exe","firefox.exe","brave.exe","opera.exe","Code.exe","Cursor.exe","iexplore.exe"])
| groupBy([aid, ComputerName, TargetProcessId_decimal, ImageFileName], function=[collect(DomainName, limit=10), count(DomainName, distinct=true, as=DistinctProviders)], limit=20000)
| DistinctProviders >= 2
| table([ComputerName, ImageFileName, TargetProcessId_decimal, DistinctProviders, DomainName])
Q2 · Non-Standard Process Writing a "WindowsUpdate" Value to the User Run Key
CONF HIGHFP LOWCOST LOW IOA CANDIDATE

Looks for: CLOSEDQUORUM's establishPersistence() writes a value literally named "WindowsUpdate" under the current user's Run key to blend with legitimate system activity. A generically-named Run value is common; this exact value name in this exact key is a distinctive artifact both Talos and independent corroboration call out by name.

FP: legitimate OEM or third-party update agents that happen to use an identically-named Run value (uncommon, but confirm against your fleet's known-good baseline before treating a hit as conclusive).

// HUNT: Non-Standard Process Writing a "WindowsUpdate" Value to the User Run Key
// MITRE: T1547.001 - Boot or Logon Autostart Execution: Registry Run Keys
// CONF: high  FP: low  COST: low | REQUIRES: AsepValueUpdate
// FALSE POSITIVES: legitimate OEM or third-party update agents that happen to use an identically-named Run value (uncommon, but confirm against your fleet's known-good baseline before treating a hit as conclusive).
// LOOKBACK: 24h (set in the Falcon time picker -- no in-query time filter)
#event_simpleName=AsepValueUpdate
| RegObjectName=/\\Software\\Microsoft\\Windows\\CurrentVersion\\Run$/i
| RegValueName=/^WindowsUpdate$/i
| table([ComputerName, UserName, RegObjectName, RegValueName, RegStringValue, aid])
Q3 · schtasks.exe Task Creation (Persistence Precursor)
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: CLOSEDQUORUM's persist decision creates a scheduled task via schtasks.exe as one of three parallel persistence mechanisms. This query surfaces all task-creation activity for triage; pair it with Q1/Q2/Q7 to raise confidence before escalating a single hit.

FP: legitimate software installers, IT/RMM tooling, and scripted deployment pipelines that create scheduled tasks routinely.

// HUNT: schtasks.exe Task Creation (Persistence Precursor)
// MITRE: T1053.005 - Scheduled Task/Job: Scheduled Task
// CONF: medium  FP: medium  COST: low | REQUIRES: ProcessRollup2
// FALSE POSITIVES: legitimate software installers, IT/RMM tooling, and scripted deployment pipelines that create scheduled tasks routinely.
// TUNING: see the FP note above -- scope exclusions to your environment's approved tooling before promoting to an alert
// LOOKBACK: 24h (set in the Falcon time picker -- no in-query time filter)
#event_simpleName=ProcessRollup2
| FileName=/^schtasks(\.exe)?$/i
| CommandLine=/create/i
| table([ComputerName, UserName, ParentBaseFileName, CommandLine, aid])
Q4 · PowerShell Execution of a Windows-Update-Themed WMI Persistence Script (wmi.ps1)
CONF HIGHFP LOWCOST LOW IOA CANDIDATE

Looks for: The WMI persistence mechanism writes its payload script to a path consistent with C:\\Windows\\Temp\\wmi.ps1 and executes it with powershell.exe every time the permanent WMI event subscription's 60-second timer fires. Both Talos and independent corroboration single this out as a distinctive on-disk forensic artifact left specifically because the WMI mechanism itself doesn't clean up after itself.

FP: none expected — this exact filename in this exact path is not a standard Windows or common third-party artifact; validate any hit before automated response.

// HUNT: PowerShell Execution of a Windows-Update-Themed WMI Persistence Script (wmi.ps1)
// MITRE: T1546.003 - Event Triggered Execution: WMI Event Subscription / T1059.001 - PowerShell
// CONF: high  FP: low  COST: low | REQUIRES: ProcessRollup2
// FALSE POSITIVES: none expected — this exact filename in this exact path is not a standard Windows or common third-party artifact; validate any hit before automated response.
// LOOKBACK: 24h (set in the Falcon time picker -- no in-query time filter)
#event_simpleName=ProcessRollup2
| FileName=/^powershell(\.exe)?$/i
| CommandLine=/wmi\.ps1/i
| table([ComputerName, UserName, ParentBaseFileName, CommandLine, aid])
Q5 · Discord Webhook / CDN Egress From a Process That Is Not a Known Discord Client
CONF HIGHFP MEDIUMCOST MEDIUM IOA CANDIDATE

Looks for: CLOSEDQUORUM reports the LLM panel's winning decision AND exfiltrates stolen credentials and wallet data to the operator through a Discord webhook — both control-channel and exfil-channel traffic ride the same benign-looking HTTPS destination. A non-Discord, non-browser process reaching discord.com / discordapp.com / cdn.discordapp.com is the tell.

FP: legitimate Discord desktop/web client traffic, and any internal bot or integration tooling that legitimately posts to Discord webhooks (CI/CD notifiers, community-management bots).

// HUNT: Discord Webhook / CDN Egress From a Process That Is Not a Known Discord Client
// MITRE: T1567.004 - Exfiltration Over Web Service: Exfiltration Over Webhook
// CONF: high  FP: medium  COST: medium | REQUIRES: DnsRequest, ProcessRollup2
// FALSE POSITIVES: legitimate Discord desktop/web client traffic, and any internal bot or integration tooling that legitimately posts to Discord webhooks (CI/CD notifiers, community-management bots).
// TUNING: see the FP note above -- scope exclusions to your environment's approved tooling before promoting to an alert
// LOOKBACK: 24h (set in the Falcon time picker -- no in-query time filter)
#event_simpleName=DnsRequest
| DomainName=/(discord\.com|discordapp\.com|cdn\.discordapp\.com)$/i
| rename(field=ContextProcessId_decimal, as=TargetProcessId_decimal)
| join(query={#event_simpleName=ProcessRollup2}, field=TargetProcessId_decimal, include=[ImageFileName, FileName, CommandLine, ComputerName, UserName])
| !in(FileName, values=["Discord.exe","DiscordPTB.exe","DiscordCanary.exe","Update.exe","chrome.exe","msedge.exe","firefox.exe","brave.exe","opera.exe"])
| table([ComputerName, FileName, ImageFileName, CommandLine, aid])
Q6 · Common Injection-Target Process Spawned Bare by a Non-Standard Parent (Early Bird APC / Hollowing Precursor)
CONF LOWFP HIGHCOST MEDIUM

Looks for: This is a coarse behavioral PROXY, not a direct injection signal — Falcon's documented CQL data model does not expose NtQueueApcThread, PEB/image-base, or thread-context fields, so there is no query that directly observes Early Bird APC injection or process hollowing. This hunt instead looks for the precursor shape: a common injection-target process launched with no command-line arguments by a parent outside the usual system launch paths, which is what a suspended-process-then-inject workflow tends to produce. Expect high noise; this is a pivot query, not a standalone detection. See the Coverage Map for the honest gap this query only partially closes.

FP: large volumes of unrelated legitimate software packaging, launcher, and update-agent behavior that also spawns child processes with no command line.

// HUNT: Common Injection-Target Process Spawned Bare by a Non-Standard Parent (Early Bird APC / Hollowing Precursor)
// MITRE: T1055.004 - Process Injection: Asynchronous Procedure Call / T1055.012 - Process Hollowing
// CONF: low  FP: high  COST: medium | REQUIRES: ProcessRollup2
// FALSE POSITIVES: large volumes of unrelated legitimate software packaging, launcher, and update-agent behavior that also spawns child processes with no command line.
// TUNING: see the FP note above -- scope exclusions to your environment's approved tooling before promoting to an alert
// LOOKBACK: 24h (set in the Falcon time picker -- no in-query time filter)
#event_simpleName=ProcessRollup2
| FileName=/^(svchost|RuntimeBroker|notepad|dllhost)(\.exe)?$/i
| CommandLine=""
| not ParentBaseFileName=/^(services|svchost|explorer|wininit|userinit|taskhostw|dllhost)(\.exe)?$/i
| table([ComputerName, FileName, ParentBaseFileName, CommandLine, aid])
Q7 · Composite Correlation — Multi-Provider LLM Contact Combined With WindowsUpdate Persistence on the Same Host
CONF HIGHFP LOWCOST HIGH IOA CANDIDATE

Looks for: This is the query built directly around Talos's own framing: "no single indicator fully identifies the architecture, but the combination is distinct." It correlates, on the SAME host within the same lookback window, (a) DNS resolution of a commercial LLM provider domain and (b) a WindowsUpdate-named Run-key write. Neither behavior alone is unusual; the pairing is not an expected pattern for any known legitimate software.

FP: very low in isolation — still confirm process lineage before response, since this is a same-host correlation, not a same-process one.

// HUNT: Composite Correlation — Multi-Provider LLM Contact Combined With WindowsUpdate Persistence on the Same Host
// MITRE: TA0011 Command and Control + T1547.001 (composite; see Q1/Q2 for per-technique detail)
// CONF: high  FP: low  COST: high | REQUIRES: DnsRequest, ProcessRollup2, AsepValueUpdate
// FALSE POSITIVES: very low in isolation — still confirm process lineage before response, since this is a same-host correlation, not a same-process one.
// TUNING: see the FP note above -- scope exclusions to your environment's approved tooling before promoting to an alert
// LOOKBACK: 24h (set in the Falcon time picker -- no in-query time filter)
#event_simpleName=/^(DnsRequest|AsepValueUpdate)$/
| case {
    #event_simpleName=DnsRequest and DomainName=/^(api\.deepseek\.com|openrouter\.ai|api\.mistral\.ai|generativelanguage\.googleapis\.com)$/i | category := "llm_provider";
    #event_simpleName=AsepValueUpdate and RegValueName=/^WindowsUpdate$/i | category := "asep_windowsupdate";
    * | category := "other";
}
| category != "other"
| selfJoinFilter(field=[aid], where=[
    {category="llm_provider"},
    {category="asep_windowsupdate"}
])
| table([aid, ComputerName, category, @timestamp])
Q8 · Environment-Wide Baseline — Hosts/Processes Resolving Commercial LLM Provider Domains
CONF MEDIUMFP HIGHCOST MEDIUM

Looks for: A deliberately broad baseline across the whole fleet: which processes talk to any of the four LLM provider domains at all, and how often. Use it to build a per-host-group allowlist of expected AI-tool processes, then feed that allowlist into Q1's exclusion list rather than alerting on this query directly.

FP: intentionally broad — expect legitimate AI-tooling, browser, and SaaS-integration hits.

// HUNT: Environment-Wide Baseline — Hosts/Processes Resolving Commercial LLM Provider Domains
// MITRE: TA0011 Command and Control (baseline/reconnaissance query, not a standalone detection)
// CONF: medium  FP: high  COST: medium | REQUIRES: DnsRequest, ProcessRollup2
// FALSE POSITIVES: intentionally broad — expect legitimate AI-tooling, browser, and SaaS-integration hits.
// TUNING: see the FP note above -- scope exclusions to your environment's approved tooling before promoting to an alert
// LOOKBACK: 7d (set in the Falcon time picker -- no in-query time filter)
#event_simpleName=DnsRequest
| DomainName=/^(api\.deepseek\.com|openrouter\.ai|api\.mistral\.ai|generativelanguage\.googleapis\.com)$/i
| rename(field=ContextProcessId_decimal, as=TargetProcessId_decimal)
| join(query={#event_simpleName=ProcessRollup2}, field=TargetProcessId_decimal, include=[FileName, ComputerName])
| groupBy([FileName, DomainName], function=count(), limit=20000)
| sort(_count, order=desc)
Q9 · Non-Browser Process Opening a Browser Credential Store File
CONF MEDIUMFP MEDIUMCOST MEDIUM

Looks for: CLOSEDQUORUM's steal decision runs dumpBrowserCredentials() targeting Chrome/Edge "Login Data" and Firefox "logins.json" alongside the LSASS dump and wallet extraction, all three simultaneously. This looks for a process other than the browser itself opening those specific credential-store filenames.

FP: backup/sync agents, DLP tooling, and browser-profile-migration utilities that legitimately open these files.

// HUNT: Non-Browser Process Opening a Browser Credential Store File
// MITRE: T1555.003 - Credentials from Password Stores: Credentials from Web Browsers
// CONF: medium  FP: medium  COST: medium | REQUIRES: FileOpenInfo ⚠ validate field availability/licensing tier in your tenant
// FALSE POSITIVES: backup/sync agents, DLP tooling, and browser-profile-migration utilities that legitimately open these files.
// TUNING: see the FP note above -- scope exclusions to your environment's approved tooling before promoting to an alert
// LOOKBACK: 24h (set in the Falcon time picker -- no in-query time filter)
// NOTE: FileOpenInfo coverage/retention varies by Falcon module and sensor policy -- ⚠ validate in tenant
#event_simpleName=FileOpenInfo
| TargetFileName=/\\(Login Data|logins\.json|Local State)$/i
| not ParentBaseFileName=/^(chrome|msedge|firefox|brave|opera)(\.exe)?$/i
| table([ComputerName, ImageFileName, TargetFileName, ParentBaseFileName, aid])
Q10 · Process Access to Known Cryptocurrency Wallet Storage Paths
CONF MEDIUMFP MEDIUMCOST MEDIUM

Looks for: The same steal decision runs extractCryptoWallets() against MetaMask (Chrome extension storage), Exodus (exodus.wallet), and Ethereum keystore data. This looks for a process other than the wallet application itself touching those paths.

FP: the wallet applications themselves (the MetaMask browser-extension host process, Exodus.exe) opening their own data — expected and should be excluded.

// HUNT: Process Access to Known Cryptocurrency Wallet Storage Paths
// MITRE: T1005 - Data from Local System / T1552.001 - Unsecured Credentials: Credentials in Files
// CONF: medium  FP: medium  COST: medium | REQUIRES: FileOpenInfo ⚠ validate field availability/licensing tier in your tenant
// FALSE POSITIVES: the wallet applications themselves (the MetaMask browser-extension host process, Exodus.exe) opening their own data — expected and should be excluded.
// TUNING: see the FP note above -- scope exclusions to your environment's approved tooling before promoting to an alert
// LOOKBACK: 24h (set in the Falcon time picker -- no in-query time filter)
// NOTE: FileOpenInfo coverage/retention varies by Falcon module and sensor policy -- ⚠ validate in tenant
#event_simpleName=FileOpenInfo
| TargetFileName=/\\(exodus\.wallet|keystore|nkbihfbeogaeaoehlefnkodbefgpgknn)\\/i
| not FileName=/^(Exodus|chrome|msedge|firefox|brave)(\.exe)?$/i
| table([ComputerName, ImageFileName, TargetFileName, FileName, aid])
09

CrowdStrike Custom IOA Recommendations

Four queries are strong Custom IOA candidates — high confidence, low-to-medium FP, and each is a distinctive behavioral pattern rather than a broad recon sweep. The rest remain investigate-only hunt queries (build baselines, corroborate hits, or accept a documented high-FP rate) until your environment's own FP data justifies promotion.

IOA candidates

QueryIOA namePatternExclusions needed before promotionDeployment path
Q1Multi-LLM-Provider Fan-Out From Non-Browser Process≥2 distinct LLM provider domains resolved by one process ID within the lookback windowApproved AI dev tools / IDE plugins / LLM gateway processes by FileNamePromote after a 2-week baseline run (Q8) to build the tenant-specific allowlist
Q2WindowsUpdate-Named Run Key PersistenceAsepValueUpdate on HKCU Run, RegValueName == WindowsUpdateNone identified in Talos's or corroborating reporting; monitor for false positives before hard-blocking on this alonePromote directly — low FP, distinctive value name
Q4wmi.ps1 PowerShell Execution From Windows\Temppowershell.exe CommandLine containing wmi.ps1None identifiedPromote directly — not a standard artifact
Q5Discord Webhook Egress From Non-Discord ProcessDNS/network to discord.com / discordapp.com / cdn.discordapp.com from a process outside the known Discord client setInternal bots/integrations that legitimately post to Discord webhooksPromote after excluding known internal Discord-integration hostnames/process names

Q7 (the composite correlation) is the highest-fidelity detection in this pack but is intentionally kept as a scheduled hunt query rather than a real-time IOA in this initial version: selfJoinFilter correlation queries carry meaningfully higher COST, and this pack has not yet been validated against a live tenant's query-cost budget for real-time execution. Re-evaluate for IOA promotion after the validation gates in Section 11 are cleared in your environment.

10

Machine-Readable IOC Appendix

Read before importing anything below. This pack has one primary technical source (Cisco Talos). Per this library's standing rule, no indicator sourced from a single report ships at action=prevent/block. The six hashes below are development-build artifacts, not victim-environment samples, and ship at action=hunt only. The commercial LLM provider API domains (DeepSeek, OpenRouter, Mistral, Gemini) are legitimate infrastructure used by thousands of applications and must never be imported as block candidates — they appear below only as correlation signals for the CQL queries in Section 8, clearly labeled as such.

Falcon IOC Management CSVhunt-only, bulk import
type,value,action,severity,expiration,description,tags
sha256,250d4fa37488af9b025333fa17705573d721467b203765bc360890b4f5a90cd7,hunt,medium,2026-12-24,CLOSEDQUORUM development-build hash (Talos CAIRN static analysis) -- NOT a confirmed victim-environment sample,campaign:CLOSEDQUORUM;status:dev-build;confidence:single-primary-source
sha256,c4dc171f2513fcaf9d5ecc815a94aee4063b213ab380f80bd3ac422dee5205a7,hunt,medium,2026-12-24,CLOSEDQUORUM development-build hash (Talos CAIRN static analysis) -- NOT a confirmed victim-environment sample,campaign:CLOSEDQUORUM;status:dev-build;confidence:single-primary-source
sha256,c13cea04f598e2b0c248d603a6e31bd13aabb64d8149c1b6a77b64e0b983a86f,hunt,medium,2026-12-24,CLOSEDQUORUM development-build hash (Talos CAIRN static analysis) -- NOT a confirmed victim-environment sample,campaign:CLOSEDQUORUM;status:dev-build;confidence:single-primary-source
sha256,f5f1f8c3e7b883793800ab6ccf21b3e60bd0730f300b4595fe74a33adc17a63c,hunt,medium,2026-12-24,CLOSEDQUORUM development-build hash (Talos CAIRN static analysis) -- NOT a confirmed victim-environment sample,campaign:CLOSEDQUORUM;status:dev-build;confidence:single-primary-source
sha256,5191cf625dfc209a347f137b50aea199e82040fd5ee9086fb3e2de73c133f3cb,hunt,medium,2026-12-24,CLOSEDQUORUM development-build hash (Talos CAIRN static analysis) -- NOT a confirmed victim-environment sample,campaign:CLOSEDQUORUM;status:dev-build;confidence:single-primary-source
sha256,eddbd0ecf7195d38fefae5b9d393abfa79e6f3f94bde19308ecef130a05a42e5,hunt,medium,2026-12-24,CLOSEDQUORUM development-build hash (Talos CAIRN static analysis) -- NOT a confirmed victim-environment sample,campaign:CLOSEDQUORUM;status:dev-build;confidence:single-primary-source
Behavioral Signaturesnot atomic — pair with process context
# Registry Run-key value (see Q2, Q7)
HKCU\Software\Microsoft\Windows\CurrentVersion\Run  ->  value name: WindowsUpdate

# WMI persistence forensic artifact (see Q4)
C:\Windows\Temp\wmi.ps1

# Process-tree pattern for WMI-triggered execution
wmiprvse.exe (or WMI event consumer)  ->  powershell.exe  ->  CommandLine contains "wmi.ps1"

# Non-browser process resolving 2+ of these in one session -- CORRELATION SIGNAL ONLY, DO NOT BLOCK (see Q1, Q7, Q8)
api.deepseek.com
openrouter.ai
api.mistral.ai
generativelanguage.googleapis.com (Google Gemini API)

# Reporting / exfil channel -- CORRELATION SIGNAL ONLY, DO NOT BLOCK WHOLESALE (see Q5)
discord.com
discordapp.com
cdn.discordapp.com
Named Malware / Toolingcontext for pivoting
Family: CLOSEDQUORUM
Prior internal name (per Talos): BALZAK (renamed 2026-07-03)
Discovery toolkit: CAIRN (Cisco Talos, open-source, released 2026-09-22)
YARA rule: CLOSEDQUORUM_LLM_Autonomous_Implant (author: CAIRN, tier: T3, confidence: high)
Snort rule: 1:66984 (requires TLS inspection to match implant prompts to LLM providers)
Related prior art (cited by Talos/press, NOT this campaign): LAMEHUG (CERT-UA, July 2025) -- asked an AI model
  to WRITE commands; CLOSEDQUORUM asks the model to CHOOSE the action. Different technique, do not conflate.
Hunting & Tenant Audit Checklistno CVE/patch applies to this threat
# This is a novel implant architecture, not a vulnerability -- there is no patch or ASR
# signature CVE to audit against. Use this checklist instead:
[ ] Confirm LSA Protection (RunAsPPL) is enabled fleet-wide (Section 12/13, Immediate)
[ ] Confirm ASR rule "Block credential stealing from lsass.exe" (GUID
    9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2) is deployed in Block mode, not Audit
[ ] Confirm AppLocker/WDAC blocks execution from %TEMP% and %APPDATA% for non-approved binaries
[ ] Confirm Microsoft-Windows-WMI-Activity/Operational and TaskScheduler/Operational logs are
    enabled and forwarded
[ ] Run Q8 (baseline) for 14 days before promoting Q1 to an alerting IOA
[ ] Confirm your EDR/proxy stack has NOT been configured to block api.deepseek.com / openrouter.ai /
    api.mistral.ai / the Gemini API outright -- these are correlation signals, not block targets
11

Detection Validation Gates

GateCheckPass criteria
1. Telemetry readyConfirm DnsRequest, ProcessRollup2, AsepValueUpdate are flowing for the target host group; confirm FileOpenInfo licensing/coverage for Q9/Q10.All required events present in a 24h test window on a representative host.
2. Benign baselineRun Q8 (environment-wide LLM-domain baseline) for 14 days across the fleet before promoting Q1.Documented allowlist of expected AI-tool FileNames per host group; false-positive rate quantified.
3. Positive testsFor Q2/Q4, manually write a test Run-key value or drop a benign wmi.ps1-named file in a lab VM and confirm the query fires.Each IOA-candidate query fires on its synthetic positive test within one polling cycle.
4. PromotionQ2, Q4 promote directly given low documented FP. Q1, Q5 promote only after Gate 2's allowlist is built. Q7 stays a scheduled hunt pending a tenant COST evaluation.Promotion decision documented per query with owner and date.

See Section 15 (Detection Coverage Map) for the honest gaps — LSASS access, process injection, and ETW tampering — that no amount of query tuning closes with the telemetry referenced in this pack.

12

Hardening — Tiered & Deployable

Platform scope

CLOSEDQUORUM is a Windows-only implant (64-bit Go/CGO executable targeting Win32 APIs). All hardening below is Windows/AD-focused; no Linux, macOS, cloud, or container surface is touched by this threat.

Immediate (this week — no compatibility risk, no user-visible change)
  • Enable LSA Protection (RunAsPPL) to block non-protected-process handles to lsass.exe, which directly stops MiniDumpWriteDump-based dumping. — M1043 (Credential Access Protection) / M1040 (Behavior Prevention on Endpoint). Authority: Microsoft Security Baseline & CIS Microsoft Windows 11 Benchmark, "Configure LSASS to run as a protected process." See Playbook 1.
  • Deploy the ASR rule "Block credential stealing from the Windows local security authority subsystem" (GUID 9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2) in Block mode. — M1040. Authority: Microsoft Defender Attack Surface Reduction rules reference. See Playbook 2.
  • Confirm/enable Microsoft-Windows-WMI-Activity/Operational and TaskScheduler/Operational event logs, forwarded to your SIEM. — M1047 (Audit). Authority: CIS Microsoft Windows Benchmark, audit-policy section.
Near term (1–4 weeks — pilot on a ring first)
  • AppLocker or WDAC policy blocking script/executable launch from %TEMP% and %APPDATA% for standard users — directly targets the implant's own execution path and the wmi.ps1 drop location. — M1038 (Execution Prevention). Authority: CIS Microsoft Windows Benchmark, "Ensure execution from user-writable directories is restricted"; Microsoft AppLocker design guide. See Playbook 3.
  • Disable browser saved-password storage via policy (Chrome/Edge PasswordManagerEnabled=false), pushing users to a dedicated password manager with hardware-backed encryption. — M1041 (Encrypt Sensitive Information) / M1017 (User Training). Authority: CIS Google Chrome Benchmark & CIS Microsoft Edge Benchmark, password-manager controls.
  • Restrict WMI namespace permissions on root\subscription to admins only on endpoints where standard users have no legitimate need to create permanent event subscriptions. — M1018 (User Account Management). Authority: Microsoft WMI security documentation.
Strategic (1–3 months — architectural change, vendor coordination, or budget)
  • Enable Credential Guard (Windows 11 Enterprise / Server 2019+) to isolate LSA secrets in a virtualization-based security container, independent of RunAsPPL. — M1043. Authority: Microsoft Credential Guard deployment guide; CIS Benchmark VBS/HVCI section. Requires hardware virtualization support and compatibility testing against any LSA-plugin-dependent legacy authentication software.
  • SaaS/AI-tool egress visibility program: deploy a forward proxy or CASB capable of identifying which processes talk to which SaaS/AI APIs (not blocking the APIs — visibility). This is what makes Q1/Q8's baseline sustainable at scale instead of a one-time exercise. — M1037 (Filter Network Traffic) / M1031 (Network Intrusion Prevention, for the TLS-inspection component Talos and The Hacker News both flag as necessary to see prompt content). Authority: NIST SP 800-41 (firewall/segmentation guidance); vendor SaaS-application-control documentation (e.g., CrowdStrike Falcon Firewall Management, or your existing SWG/CASB).
  • EDR/sensor tamper-resistance review against the EtwEventWrite-patching technique specifically — confirm with your EDR vendor (in writing) which of their detection components depend on user-mode ETW versus kernel-mode hooks, and whether PPL/anti-tamper protections cover the sensor process itself. — M1040. Authority: vendor-specific; no generic CIS/NIST control covers this, ⚠ best-practice, no formal benchmark — do not drop this control for lack of one.
13

Deployable Playbooks

Playbook 1 — Enable LSA Protection (RunAsPPL)

Blocks non-PPL processes (including an unsigned Go implant) from opening the handle to lsass.exe that MiniDumpWriteDump requires. Directly stops CLOSEDQUORUM's steal/lsassDump() capability.

Step 1 -- Set the registry value (deploy via GPO Preferences or your RMM, not manually per-host):
  reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL /t REG_DWORD /d 1 /f

Prerequisites: Windows 8.1/Server 2012 R2 or later. Inventory any third-party LSA plugins/credential
  providers (some smartcard middleware, legacy VPN clients, and older AV credential providers are NOT PPL-
  compatible and will fail to load) BEFORE fleet-wide rollout; pilot on a representative ring first.
Reboot required: YES -- LSASS re-reads this value only at boot.
Rollback: reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL /t REG_DWORD /d 0 /f
  then reboot. If a host becomes unbootable due to an incompatible LSA plugin, boot into Safe Mode or WinRE
  and delete/zero the RunAsPPL value via offline registry edit, then reboot normally.

Playbook 2 — Deploy the LSASS-credential-theft ASR rule

Microsoft Defender's Attack Surface Reduction rule for LSASS credential theft blocks common credential-dumping techniques (including MiniDumpWriteDump-style access from non-allow-listed processes) at the OS level, independent of RunAsPPL.

Step 1 -- Audit first (always -- ASR rules can break legitimate LSASS-adjacent tooling):
  Set-MpPreference -AttackSurfaceReductionRules_Ids 9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2 `
    -AttackSurfaceReductionRules_Actions AuditMode

Step 2 -- Review Defender ASR audit events (Event ID 1122, Microsoft-Windows-Windows Defender/Operational)
  for 1-2 weeks; identify and allow-list any legitimate tooling that triggers (some backup/EDR/diagnostic
  tools legitimately touch LSASS).

Step 3 -- Move to Block mode once the audit period is clean:
  Set-MpPreference -AttackSurfaceReductionRules_Ids 9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2 `
    -AttackSurfaceReductionRules_Actions Enabled

Prerequisites: Microsoft Defender Antivirus must be the active AV engine (ASR rules do not function in
  passive/EDR-only mode on some configurations -- verify with Get-MpComputerStatus). Requires E5/Defender for
  Endpoint Plan 1+ licensing for centralized reporting (the rule itself works without it).
Reboot required: NO.
Rollback: Set-MpPreference -AttackSurfaceReductionRules_Ids 9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2 `
  -AttackSurfaceReductionRules_Actions Disabled

Playbook 3 — AppLocker path rule blocking execution from %TEMP% / %APPDATA%

Targets the implant's own launch path and the wmi.ps1 drop location under C:\Windows\Temp\ specifically.

Step 1 -- Build and test in Audit mode first (New-AppLockerPolicy / Set-AppLockerPolicy):
  $rule = New-AppLockerPolicy -RuleType Path -User Everyone -RuleNamesToGenerate `
    -PathConditions "%OSDRIVE%\Users\*\AppData\Local\Temp\*","%OSDRIVE%\Windows\Temp\*" -Deny
  Set-AppLockerPolicy -PolicyObject $rule -Merge

Step 2 -- Deploy via GPO in Audit-only enforcement mode for 2-4 weeks; review
  Microsoft-Windows-AppLocker/EXE and DLL + Microsoft-Windows-AppLocker/MSI and Script logs for legitimate
  software that launches from Temp/AppData (many installers do -- expect a real allow-list burden here).

Step 3 -- Add allow-list exceptions for confirmed-legitimate installers/updaters, then switch enforcement
  from Audit to Enforce.

Prerequisites: Windows 10/11 Enterprise or Education edition (AppLocker enforcement requires these SKUs;
  Pro/Home cannot enforce, only audit via limited functionality). Application Identity service must be running.
  WDAC is the modern equivalent if you are not on Enterprise/Education licensing.
Reboot required: NO (policy applies at next Group Policy refresh / gpupdate /force).
Rollback: remove the GPO link, or set the rule collection back to "Not Configured" and run gpupdate /force.
  No reboot needed to roll back.

Playbook 4 — Disable browser saved-password storage (Chrome/Edge policy)

Step 1 -- GPO / registry (Chrome, via ADMX or direct registry under HKLM\SOFTWARE\Policies\Google\Chrome):
  reg add "HKLM\SOFTWARE\Policies\Google\Chrome" /v PasswordManagerEnabled /t REG_DWORD /d 0 /f

Step 2 -- Edge (HKLM\SOFTWARE\Policies\Microsoft\Edge):
  reg add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v PasswordManagerEnabled /t REG_DWORD /d 0 /f

Prerequisites: an approved enterprise password manager must already be deployed and communicated to users
  BEFORE this rolls out, or you will generate a support-ticket spike and users will route around the policy
  with personal browser profiles.
Reboot required: NO -- takes effect on next browser policy refresh / browser restart.
Rollback: set PasswordManagerEnabled back to 1 (or remove the registry value) and restart the browser.
14

Containment Runbook

PhaseActionsOwnerEvidence to preserve
1. IsolateNetwork-contain the host via Falcon (or equivalent) while preserving the running process for triage. Do NOT reboot or power off — volatile memory holds the LSASS-dump/decision context. Preserve DNS/network telemetry for the suspected process ID.IR / SOC on-callFalcon process timeline export, network-containment timestamp, aid/host ID.
2. TriageConfirm the correlation: does the flagged process show 2+ LLM-provider DNS hits (Q1), a WindowsUpdate Run-key write (Q2), schtasks/WMI persistence (Q3/Q4), and/or Discord egress (Q5)? Pull full process ancestry and command lines. If FileOpenInfo is available, check for Login Data / wallet-path access (Q9/Q10).IR / Threat HunterFull process tree, all correlated query hits with timestamps, RTR-collected file listing from C:\Windows\Temp\.
3. EradicateKill the implant process. Remove the WindowsUpdate Run-key value, delete the scheduled task, remove the WMI __EventFilter/__EventConsumer/__FilterToConsumerBinding objects (native hunt #2 in Section 7), delete C:\Windows\Temp\wmi.ps1 and any staged dump/credential files.IR / Endpoint EngineeringBefore/after registry and WMI-subscription export; hash of the binary before deletion (feed back into this pack's IOC table if new).
4. Credential resetRotate credentials for any account whose LSASS/browser/wallet material could have been staged before containment — treat the LSASS-dump capability as having succeeded unless memory forensics proves otherwise. Rotate crypto wallet keys if any wallet files were staged (assume compromised, not just accessed).IAM / Security EngineeringList of accounts/wallets rotated, timestamps, approving manager.
5. RecoverRe-image or restore from known-good backup if eradication cannot be fully verified (recommended default for a credential-theft implant with process-injection capability). Reapply Section 12/13 hardening BEFORE returning the host to the network.Endpoint EngineeringRe-image confirmation, hardening-playbook completion checklist.
6. Lessons learnedConfirm how the binary arrived (delivery vector is unknown per current public intel — this is your chance to close that gap for your own environment). Update Q1's exclusion allowlist and Q8's baseline with anything learned. File a changelog entry (Section 17) if any query or indicator in this pack needed correction.IR LeadRoot-cause writeup, updated pack changelog.
15

Detection Coverage Map

TechniqueBehaviorCQLIOACoverage
T1102 (multi-provider LLM C2)Process resolves 2+ LLM provider domainsQ1, Q7, Q8Q1 candidateGood
T1547.001 (Run key)WindowsUpdate value under HKCU RunQ2, Q7Q2 candidateGood
T1053.005 (scheduled task)schtasks.exe task creationQ3not promoted (FP medium)Partial — high legitimate base rate, needs org-specific tuning
T1546.003 (WMI event subscription)wmi.ps1 execution (side effect); the subscription objects themselvesQ4 (side effect only)Q4 candidatePartial — Q4 catches the script execution, not the WMI subscription object itself; use Section 7 native hunt #2 for the object-level check
T1003.001 (LSASS memory)SeDebugPrivilege + MiniDumpWriteDumpnone — no queryable field in the referenced Falcon data modelnoneGAP — covered only by Falcon's sensor-side ML/IOA credential-theft detection and Section 7 native RTR sweep, not by hand-written CQL
T1555.003 / T1552.001 / T1005 (browser + wallet theft)File access to Login Data / logins.json / wallet pathsQ9, Q10 (⚠ validate FileOpenInfo in tenant)not promotedPartial — depends on FileOpenInfo module coverage, which varies by Falcon licensing tier
T1055.004 / T1055.012 (APC injection / hollowing)Shellcode injection into a suspended processQ6 (coarse proxy only)noneGAP — no NtQueueApcThread / WriteProcessMemory / thread-context field in the referenced data model; Q6 catches only a noisy precursor shape
T1685 (ETW suppression)EtwEventWrite patched with a RET instructionnone — self-blinding techniquenoneGAP — see Section 7 for compensating controls; no log-based query reliably observes the moment of tampering
T1567.004 / T1102 (Discord exfil + reporting)Webhook traffic to Discord domainsQ5Q5 candidateGood
T1480.001 / T1497.003 (environmental keying / sandbox timing evasion)Time-derived decryption key; 5-min delay + randomized pollingnone directlynoneGAP — timing/crypto-internal behavior not independently observable via endpoint telemetry
T1036.005 (masquerading)Windows-Update-themed namingQ2, Q4 (via the specific names used)Q2, Q4 candidatesGood — for THESE specific names; a renamed variant would evade Q2/Q4 (see Coverage Map note below)

Honest summary: this pack has strong coverage of CLOSEDQUORUM's network-correlation and persistence behaviors (T1102, T1547.001, T1546.003's side effect, T1567.004) because those all produce telemetry Falcon's documented CQL data model exposes cleanly. It has real, acknowledged gaps on the credential-theft and injection techniques (T1003.001, T1055.004/.012) and on the evasion techniques (T1685, T1480.001/T1497.003) because those either aren't exposed as queryable fields in the referenced data model or are specifically designed to blind the telemetry pipeline that would observe them. Do not represent this pack as full-kill-chain coverage in any downstream reporting — it is strong on correlation and persistence, partial on credential theft, and gapped on injection and evasion. Section 7's native/RTR checks and Section 12/13's hardening controls (LSA Protection, the LSASS ASR rule) are the compensating controls for the gapped techniques, not a query.

16

Hunt Summary Ticket

TITLE: CLOSEDQUORUM -- Autonomous LLM-Orchestrated Windows Implant (Behavioral Correlation Hunt)
SEVERITY: MEDIUM -- novel technique, single primary source, NOT confirmed in-the-wild
SCOPE: Windows endpoints with Falcon sensor coverage; requires DnsRequest, ProcessRollup2, AsepValueUpdate
       (FileOpenInfo optional, validate licensing tier)
HYPOTHESIS: A non-browser process is contacting 2+ commercial LLM provider APIs (DeepSeek, OpenRouter/Qwen,
       Mistral, Gemini) and/or exhibiting the persistence triad (WindowsUpdate Run key + schtasks + WMI
       wmi.ps1) and/or reporting/exfiltrating via Discord webhook, consistent with Cisco Talos's 2026-09-22
       disclosure of CLOSEDQUORUM.
QUERIES: Q1-Q10 (Section 8); Q1/Q2/Q4/Q5 are IOA candidates (Section 9); Q7 is the composite correlation query
DO FIRST: Run Q8 (14-day baseline) before promoting Q1. Run Q2, Q4, Q5 immediately -- low FP, no baseline
       needed. Cross-reference any hit against Q7's composite correlation before escalating.
FINDINGS: [fill in per-run -- host(s), process(es), correlated query IDs, timestamps]
GAPS: No direct telemetry for LSASS memory access (T1003.001), process injection (T1055.004/.012), or ETW
       suppression (T1685) in the referenced Falcon data model -- see Coverage Map (Section 15) and native
       hunts (Section 7) for compensating controls.
ACTIONS: See Containment Runbook (Section 14) if any hit corroborates against 2+ independent queries.
OWNER: HuntPack
VERSION: v0.1 -- 2026-09-24
17

Changelog

v0.12026-09-24Initial release. Built from Cisco Talos's 2026-09-22 CAIRN/CLOSEDQUORUM disclosure plus three corroborating sources (BleepingComputer, The Hacker News, Security Affairs). 10 CQL hunt queries, 4 IOA candidates, tiered hardening with 4 deployable playbooks, phased containment runbook. All 6 published SHA256 hashes traced to the saved Talos source snapshot; shipped at action=hunt (development-build hashes, single primary source, no ITW confirmation). LLM-provider API domains and Discord infrastructure explicitly excluded from blocking recommendations.
18

References

TierSourceUsed forAccess date
PRIMARYCisco Talos – "The Closed Quorum: Inside the first reported autonomous AI C2 implant"Full technical basis for this pack: architecture, decision schema, ATT&CK mapping, YARA/Snort rules, 6 SHA256 hashes, no-ITW-confirmation statement.2026-09-24
CORROBORATIONThe Hacker News – "This Windows Malware is Built to Let Up to Four AI Models Vote on Its Next Move"Independent-outlet confirmation of architecture and technical details; Snort rule ID.2026-09-24
CORROBORATIONBleepingComputer – "New ClosedQuorum Windows malware uses AI for attack decisions"Confirmed decision-module behavior and placeholder-credential distinction.2026-09-24
CORROBORATIONSecurity Affairs – "CLOSEDQUORUM, the malware that asks four AI models what to do next"Confirmed correlated-behaviors defensive framing and credentials-as-a-service assessment.2026-09-24
FRAMEWORKMITRE ATT&CKTechnique IDs cited throughout Sections 3, 6, 12.2026-09-24
FRAMEWORKCIS Benchmarks (Microsoft Windows, Google Chrome, Microsoft Edge)Hardening authority citations in Section 12.2026-09-24
FRAMEWORKMicrosoft Defender Attack Surface Reduction rules referenceASR rule GUID and deployment guidance in Playbook 2.2026-09-24

Source text for all four cited news/research sources was fetched and saved verbatim to CLOSEDQUORUM-AI-C2-Implant-Hunt-sources/ before this pack was written, so every atomic indicator above traces to a specific saved snapshot rather than to memory or summary.