CleanUpLoader / Oyster Backdoor

Poisoned administrative-tool installers · rundll32 persistence · discovery and historical C2 hunts
Threat
CleanUpLoader / Oyster Backdoor
Type
Malvertising-delivered Windows backdoor
Severity
High
Version
v0.3 Draft · 2026-09-04
Author
cybersecurity analyst
Confidence
High delivery/persistence evidence; historical infrastructure
STATIC REVIEW PASSED
01

Executive Summary

What happened: Red Canary elevated CleanUpLoader—also tracked as Oyster, Broomstick, OysterLoader, and related names—in its 2026 Threat Detection Report after observing poisoned-search and malvertising delivery through fake PuTTY and other administrative-tool pages. Rapid7 independently analyzed a fake Microsoft Teams installer chain in 2024, Microsoft published OysterLoader behavior and indicators, and Sekoia documented a 2026 multi-stage evasion variant. These sources corroborate the family while showing that filenames, task names, packaging, and protocol details vary by campaign.

How it works: a user searching for PuTTY, WinSCP, Teams, or another utility reaches a lookalike landing page or advertisement and runs a trojanized installer from a user-writable path. Observed chains write DLL payloads such as twain_96.dll or CleanUp30.dll and create recurring tasks—WindowsCodecs, BluetoothDesktopHandlers, Security Updater, or ClearMngs—that invoke rundll32 with DLLRegisterServer against an AppData or temporary DLL. Follow-on execution can launch net, nltest, systeminfo, ipconfig, or whoami for discovery. Reported Oyster traffic uses generic api/connect or api/session-style HTTP paths and encoded content, but endpoint DNS events cannot prove that application-layer protocol.

Why detection belongs on behavior: search advertisements, landing domains, filenames, and C2 names rotate, while signed or plausible installers can still be hostile. The stronger defensive sequence combines administrative-tool installers launched from Downloads/AppData/Temp, schtasks creating a rundll32 DLLRegisterServer action, source-named scheduled tasks, and discovery children from the suspicious lineage. Five CQL queries expose those process, task, and historical DNS pivots. HTTP URI/content, signer certificate identity, DLL export semantics, IPv6, and wrapper ancestry remain tenant-specific gaps.

Operational consequence: Oyster establishes recurring execution and a remote tasking foothold that can outlive removal of the original installer. Preserve task XML, DLLs and hashes, process trees, browser/download provenance, DNS/proxy records, and user context before disabling persistence. Historical domains should be hunted and time-bounded rather than presented as permanent blocks. Prevention should center on managed software distribution and audit-mode application control, with narrow rollback paths for legitimate legacy installers.

Defender priority: Review scheduled rundll32 persistence and user-path installers, then move administrative software acquisition to managed sources.
PriorityWhy nowCoverage deliveredKey limitation
Review scheduled rundll32 persistence and user-path installers, then move administrative software acquisition to managed sources.Current annual-report prominence plus independent technical corroboration5 CQL queries, 11 source-bound indicators, 3 explicit telemetry gapsPublished infrastructure is historical; HTTP paths, certificate identity, and IPv6 need tenant-specific telemetry.
02

Source and Claim Review

Only sanitized plain-text evidence from the current run is retained. Source pages were treated as untrusted data; no embedded instructions, commands, scripts, credentials, or active content were used.

IDPublisherTierIndependence groupAccessedStatus
S01Red CanaryT1red-canary2026-09-04T11:35:00Zsanitized plain-text extraction
S02Rapid7T1rapid72026-09-04T11:35:00Zsanitized plain-text extraction
S03Microsoft Security IntelligenceT1microsoft2026-09-04T11:35:00Zsanitized plain-text extraction
S04Sekoia.ioT1sekoia2026-09-04T11:35:00Zsanitized plain-text extraction
S05Microsoft LearnAUTHmicrosoft-docs2026-09-04T11:35:00Zsanitized plain-text extraction

Claim ledger

ClaimStatementSourcesBasisConfidenceCaveat
C01CleanUpLoader is a signed backdoor and loader also known as Oyster and BroomstickS01directhighnone
C02Recent campaigns use SEO poisoning and malvertising to impersonate PuTTY, WinSCP, and Microsoft Teams downloadsS01directhighdelivery brands rotate
C03The loader drops a DLL into a random AppData Roaming directory and persists with a scheduled task invoking rundll32 and DLLRegisterServerS01directhightask names and intervals vary
C04Operators use built-in commands including net, nltest, systeminfo, and ipconfig for discoveryS01directhighcommands are shared by many threats
C05Red Canary links signing-certificate activity to campaigns that later delivered Rhysida ransomwareS01directmediumassociation does not prove every infection leads to ransomware
C06Rapid7 independently observed Oyster delivered by a fake Microsoft Teams installerS02directhigh2024 campaign
C07Rapid7 describes Oyster Main as a host-enumerating backdoor with remote-command capabilityS02directhighnone
C08The Rapid7 sample used MSTeamsSetup_c_l_.exe and CleanUp30.dllS02directhighhistorical artifacts
C09Microsoft independently documents a ClearMngs scheduled task, mutex, and three hard-coded C2 domainsS03directhighhistorical variant
C10Microsoft observed HTTP POST traffic to api/connect and api/session after host enumerationS03directhighapplication paths require proxy telemetry
C11Sekoia documents continued OysterLoader evolution into 2026 with signed MSI delivery and multi-stage evasionS04directhighversion-specific internals vary
C12Sekoia recommends behavior-centered detection because encoding and artifacts evolveS04directmediumanalyst guidance
C13Microsoft application control supports staged audit and enforcement policies based on signer, publisher, path, and hashS05directhighhardening authority only
Contradictions and limits: No tenant execution evidence exists. Historical network indicators may be stale. Source reporting does not prove a single operator or universal downstream objective.
03

Hunt Brief and Attack Chain

The chain is evidence-led: product or lure execution, placement and persistence, command behavior, and remote communications are kept separate so an analyst can stop at the strongest corroborated step.

StepClaimsBehaviorPlatformDetection goal
1C02, C06a user reaches a poisoned software-download page and launches a signed fake installerwindowsidentify delivery and masquerade context
2C03, C08the installer drops an Oyster DLL beneath AppData Roamingwindowsidentify payload placement
3C03, C09a scheduled task invokes rundll32 with DLLRegisterServer against the AppData DLLwindowsidentify durable high-signal persistence
4C04, C07the backdoor performs host and domain discovery and accepts remote commandswindowscorrelate discovery with the suspicious parent
5C09, C10the backdoor beacons to historical C2 and HTTP API pathsnetworkuse source-bound indicators and preserve proxy visibility gap

Hypotheses

IDBehaviorEvents / repositoryUseLookbackValidation
H01a PuTTY, WinSCP, or Teams-named installer from a user download path writes or launches an unexpected AppData DLLProcessRollup2, PeFileWrittenhunt30d — campaign delivery is intermittentRun a benign signed installer in a lab that writes a test DLL to AppData, then baseline approved PuTTY/WinSCP/Teams installation paths.
H02schtasks creates a recurring task whose action uses rundll32 and DLLRegisterServer on a user-profile DLLProcessRollup2alert-candidate30d — recurring task is durableCreate a harmless lab task that calls a signed test DLL export from a disposable user path, verify telemetry, then baseline authorized task creators.
H03a ScheduledTaskRegistered event names a source-published Oyster task or points to rundll32 with a user-profile DLLScheduledTaskRegisteredhunt90d — historical persistence sweepRegister a benign task in a lab and verify actual populated task fields before relying on name or executable logic.
H04rundll32 or the suspicious task lineage spawns a burst of net, nltest, systeminfo, ipconfig, or whoami commandsProcessRollup2hunt14d — recent discovery with manageable analyst reviewInvoke benign discovery tools from a lab harness and confirm parent/host fields; baseline approved management tooling.
H05an endpoint resolves a source-published Oyster C2 domain with suspicious process contextDnsRequesthunt90d — IOC sweep onlyIssue a controlled lookup for a documentation domain to validate DNS context fields; never contact the malicious domains.
H06Oyster sends encoded HTTP requests to api/connect or api/session and receives tasking#repo=base_sensorgap30d — application-layer reviewMap proxy/TLS fields and safe recorded traffic in the target environment; endpoint telemetry alone must not claim HTTP path visibility.

Affected surface and telemetry

Coverage assumes managed Windows endpoints with ProcessRollup2, ScheduledTaskRegistered, and DnsRequest where populated, plus native task, browser, DNS, proxy, and application-control records. Direct-parent depth, non-PE file writes, signer certificate identity, HTTP content, IPv6, and tenant field population require environment-specific confirmation.

04

Consolidated IOC Table

Indicators below are source-bound historical hunt pivots, not proof of compromise or timeless block entries. Require behavior, host, user, process, and timing context; assign review/expiry dates to infrastructure.

IDTypeValueSourcesContextConfidenceVolatilityAction
I01taskWindowsCodecsS01observed persistence taskhighmediumhunt
I02taskBluetoothDesktopHandlersS01observed persistence taskhighmediumhunt
I03taskSecurity UpdaterS01observed persistence taskhighmediumhunt
I05domainputty-ssh.comS01historical fake PuTTY landing domainhighhighhunt
I06domainputty.runS01historical fake PuTTY landing domainhighhighhunt
I07pathMSTeamsSetup_c_l_.exeS02, S03historical fake Teams installerhighmediumhunt
I08pathCleanUp30.dllS02, S03historical Oyster DLLhighmediumhunt
I09taskClearMngsS03historical persistence taskhighmediumhunt
I10mutexITrkfSaV-4c7KwdfnC-Ds165XU4C-lH6R9pk1S03historical mutexhighmediumhunt
I11domainsupfoundrysettlers.usS03historical C2 domainhighhighhunt
I12domainwhereverhomebe.comS03historical C2 domainhighhighhunt
Why atomics age out: filenames, task names, certificates, advertising domains, and C2 infrastructure can be rotated or reassigned. Retain provenance and first/last-seen context; use the behavioral chain for durable coverage.
05

ATT&CK Mapping

ATT&CK rows describe attacker behavior supported by named claims. Every mapping is explicitly an analyst inference; neither product inventory nor hardening is mislabeled as adversary behavior.

TacticTechniqueNameBehaviorBasisSourcesClaims
Initial AccessT1189Drive-by Compromisemalvertising and poisoned search results lead to trojanized software downloadsanalyst_inferenceS01C02
ExecutionT1218.011Rundll32rundll32 executes the backdoor through DLLRegisterServeranalyst_inferenceS01C03
PersistenceT1053.005Scheduled Task/Job: Scheduled Taska recurring task launches the malicious DLLanalyst_inferenceS01C03
DiscoveryT1016System Network Configuration Discoveryoperators invoke ipconfig and related commandsanalyst_inferenceS01C04
Command and ControlT1071.001Web Protocolsthe backdoor communicates with web C2 and receives commandsanalyst_inferenceS02C07
06

Native / Non-CQL Hunts

These native pivots supply evidence that portable endpoint CQL cannot safely invent. Complete them alongside the query set and preserve original records before remediation.

HuntLog sourceLogicResponse
Scheduled-task evidenceWindows Task Scheduler Operational log; Event IDs 106, 140, 141 and Security 4698 where enabledFind WindowsCodecs, BluetoothDesktopHandlers, Security Updater, ClearMngs, or tasks invoking rundll32 against user-profile DLLs; preserve the XML and creator.Disable only confirmed malicious tasks after evidence capture; re-hunt the DLL and parent installer.
Download provenanceBrowser/download logs, secure web gateway, SmartScreen, and software inventoryTrace PuTTY, WinSCP, or Teams installers launched from Downloads, AppData, or Temp to referrer, landing domain, signer, digest, prevalence, and approved-package catalog.Block confirmed poisoned sources with expiry; replace software from an owner-approved repository.
Proxy application-layer reviewProxy or TLS inspection telemetrySearch for api/connect and api/session paths only when process/host context supports Oyster; distinguish generic application traffic with destination and lineage.Preserve full request metadata; do not alert on generic URI strings alone.
07

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Query strategy: process, task-registration, discovery-lineage, and historical DNS hunts are intentionally separated. Alert-candidate labels describe potential fidelity, not readiness; every query remains design-only and analyst-led.

All queries are static-only. Start with a one-hour manual window, confirm the repository, fields, and row semantics, then expand to the documented lookback.

Q01 · User-path administrative-tool installers
CONF mediumFP mediumCOST low

Looks for: PuTTY, WinSCP, or Teams-themed executables launched from Downloads, AppData, or Temp. Accomplishes: surfaces the masqueraded delivery layer for validation against approved software sources and signer evidence.

Trace: H01 · A01

// HUNT: User-path administrative-tool installers
// HYPOTHESIS: H01
// USE: hunt
// MITRE: T1036
// CONF: medium
// FP: medium
// COST: low
// TIMEFRAME: 30d — review intermittent fake-installer delivery
// REQUIRES: #event_simpleName=ProcessRollup2; ImageFileName, CommandLine, ParentBaseFileName
// FALSE POSITIVES: legitimate PuTTY, WinSCP, Teams, and deployment installers
// TUNING: exclude approved vendor paths and software-distribution parents
// VALIDATION: STATIC-ONLY
#event_simpleName = ProcessRollup2
| test(@timestamp >= now() - 2592000000)
| ImageFileName = /\\(putty|winscp|msteam(?:s|ssetup)[^\\]*)\.exe$/i
| ImageFileName = /\\users\\[^\\]+\\(?:downloads|appdata|temp)\\/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, SHA256HashData, aid])
| sort(@timestamp, order=desc, limit=1000)
Q02 · Scheduled rundll32 AppData DLL persistence
CONF highFP mediumCOST low

Looks for: schtasks creating a task that executes an AppData Roaming DLL through rundll32 and DLLRegisterServer. Accomplishes: catches the durable Oyster persistence invariant with enough context for a high-priority analyst review.

Trace: H02 · A02

// HUNT: Scheduled rundll32 AppData DLL persistence
// HYPOTHESIS: H02
// USE: alert-candidate
// MITRE: T1053.005, T1218.011
// CONF: high
// FP: medium
// COST: low
// TIMEFRAME: 30d — recurring persistence remains durable
// REQUIRES: #event_simpleName=ProcessRollup2; ImageFileName, CommandLine, ParentBaseFileName
// FALSE POSITIVES: legacy installers that create rundll32 tasks
// TUNING: exclude approved task creators and signed DLLs in managed paths
// VALIDATION: STATIC-ONLY
#event_simpleName = ProcessRollup2
| test(@timestamp >= now() - 2592000000)
| ImageFileName = /\\schtasks\.exe$/i
| CommandLine = /\/create/i
| CommandLine = /rundll32(?:\.exe)?/i
| CommandLine = /\\users\\[^\\]+\\appdata\\roaming\\/i
| CommandLine = /\.dll\s+dllregisterserver/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, CommandLine, SHA256HashData, aid])
| sort(@timestamp, order=desc, limit=1000)
Q03 · Source-named Oyster scheduled tasks
CONF mediumFP mediumCOST low

Looks for: registration of six scheduled-task names reported across Oyster variants. Accomplishes: supplies a fast historical persistence sweep while requiring executable-path review because generic task names can collide.

Trace: H03 · A03

// HUNT: Source-named Oyster scheduled tasks
// HYPOTHESIS: H03
// USE: hunt
// MITRE: T1053.005
// CONF: medium
// FP: medium
// COST: low
// TIMEFRAME: 90d — source-name persistence sweep
// REQUIRES: #event_simpleName=ScheduledTaskRegistered; ScheduledTaskName, TaskName, TaskExecutable
// FALSE POSITIVES: legitimate tasks using generic update or codec names
// TUNING: exclude owner-approved tasks only after verifying executable and path
// VALIDATION: STATIC-ONLY
#event_simpleName = ScheduledTaskRegistered
| test(@timestamp >= now() - 7776000000)
| ScheduledTaskName = /^(WindowsCodecs|BluetoothDesktopHandlers|Security Updater|WMSysPr9|FireFox Agent INC|ClearMngs)$/i
| table([@timestamp, ComputerName, UserName, ScheduledTaskName, TaskName, TaskExecutable, aid])
| sort(@timestamp, order=desc, limit=1000)
Q04 · Oyster-lineage discovery children
CONF mediumFP mediumCOST low

Looks for: rundll32 or lure-installer parents spawning common discovery commands. Accomplishes: adds suspicious lineage to otherwise generic reconnaissance, supporting host scoping after a task or installer lead.

Trace: H04 · A04

// HUNT: Oyster-lineage discovery children
// HYPOTHESIS: H04
// USE: hunt
// MITRE: T1082, T1016
// CONF: medium
// FP: medium
// COST: low
// TIMEFRAME: 14d — recent discovery correlation
// REQUIRES: #event_simpleName=ProcessRollup2; ParentBaseFileName, ImageFileName, CommandLine
// FALSE POSITIVES: administrator troubleshooting and inventory agents
// TUNING: exclude approved management tooling and documented scripts
// VALIDATION: STATIC-ONLY
#event_simpleName = ProcessRollup2
| test(@timestamp >= now() - 1209600000)
| ParentBaseFileName = /^(rundll32|msteamss?setup_c_l_|putty|winscp)\.exe$/i
| ImageFileName = /\\(net|nltest|systeminfo|ipconfig|whoami)\.exe$/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, aid])
| sort(@timestamp, order=desc, limit=1000)
Q05 · Historical Oyster C2 DNS hits
CONF highFP lowCOST low

Looks for: DNS requests to three Microsoft-documented Oyster C2 domains. Accomplishes: provides a high-confidence retrospective pivot with process context while acknowledging that current variants may rotate infrastructure.

Trace: H05 · A05

// HUNT: Historical Oyster C2 DNS hits
// HYPOTHESIS: H05
// USE: hunt
// MITRE: T1071.001
// CONF: high
// FP: low
// COST: low
// TIMEFRAME: 90d — historical C2 indicator sweep
// REQUIRES: #event_simpleName=DnsRequest; DomainName, ContextBaseFileName, ContextProcessId_decimal
// FALSE POSITIVES: research and sinkhole lookups
// VALIDATION: STATIC-ONLY
#event_simpleName = DnsRequest
| test(@timestamp >= now() - 7776000000)
| in(DomainName, values=["supfoundrysettlers.us","whereverhomebe.com","retdirectyourman.eu"])
| table([@timestamp, ComputerName, DomainName, ContextBaseFileName, ContextProcessId_decimal, aid])
| sort(@timestamp, order=desc, limit=1000)
08

Operationalization and IOA Candidates

Stage 4 is deliberately degraded: every candidate remains hunt-only and design-only because no tenant parse, positive test, benign baseline, suppression, volume, routing, owner, or SLA evidence exists. No Custom IOA or scheduled alert is shipped.

AlertQueryDesign useDecisionReadinessRationale
A01Q01hunthunt-onlydesign-onlyTenant parsing, positive testing, benign baseline, result-volume, scheduling, suppression, routing, ownership, SLA, and failure-monitoring evidence are absent.
A02Q02alert-candidatehunt-onlydesign-onlyTenant parsing, positive testing, benign baseline, result-volume, scheduling, suppression, routing, ownership, SLA, and failure-monitoring evidence are absent.
A03Q03hunthunt-onlydesign-onlyTenant parsing, positive testing, benign baseline, result-volume, scheduling, suppression, routing, ownership, SLA, and failure-monitoring evidence are absent.
A04Q04hunthunt-onlydesign-onlyTenant parsing, positive testing, benign baseline, result-volume, scheduling, suppression, routing, ownership, SLA, and failure-monitoring evidence are absent.
A05Q05hunthunt-onlydesign-onlyTenant parsing, positive testing, benign baseline, result-volume, scheduling, suppression, routing, ownership, SLA, and failure-monitoring evidence are absent.

Promotion gate

Confirm tenant parsing and populated fields; run safe positive and representative benign tests; measure prevalence and cost; define grouping, deduplication, suppressions, routing, owner, SLA, and rollback; then re-review independently.

09

Machine-Readable IOC Appendix

CSV-style copy blocks retain source IDs and context. Historical infrastructure is supplied for retrospective hunting only; validate ownership and expiry before any prevention action.

Source-tagged CSV11 values
type,value,action,severity,expiration,description,tags
task,WindowsCodecs,detect,medium,2027-09-04,observed persistence task,source:S01
task,BluetoothDesktopHandlers,detect,medium,2027-09-04,observed persistence task,source:S01
task,Security Updater,detect,medium,2027-09-04,observed persistence task,source:S01
domain,putty-ssh.com,detect,medium,2026-12-04,historical fake PuTTY landing domain,source:S01
domain,putty.run,detect,medium,2026-12-04,historical fake PuTTY landing domain,source:S01
path,MSTeamsSetup_c_l_.exe,detect,medium,2027-09-04,historical fake Teams installer,source:S02 source:S03
path,CleanUp30.dll,detect,medium,2027-09-04,historical Oyster DLL,source:S02 source:S03
task,ClearMngs,detect,medium,2027-09-04,historical persistence task,source:S03
mutex,ITrkfSaV-4c7KwdfnC-Ds165XU4C-lH6R9pk1,detect,medium,2027-09-04,historical mutex,source:S03
domain,supfoundrysettlers.us,detect,medium,2026-12-04,historical C2 domain,source:S03
domain,whereverhomebe.com,detect,medium,2026-12-04,historical C2 domain,source:S03
Task4 values
WindowsCodecs,sources=S01,context=observed persistence task,volatility=medium
BluetoothDesktopHandlers,sources=S01,context=observed persistence task,volatility=medium
Security Updater,sources=S01,context=observed persistence task,volatility=medium
ClearMngs,sources=S03,context=historical persistence task,volatility=medium
Domain4 values
putty-ssh.com,sources=S01,context=historical fake PuTTY landing domain,volatility=high
putty.run,sources=S01,context=historical fake PuTTY landing domain,volatility=high
supfoundrysettlers.us,sources=S03,context=historical C2 domain,volatility=high
whereverhomebe.com,sources=S03,context=historical C2 domain,volatility=high
Path2 values
MSTeamsSetup_c_l_.exe,sources=S02+S03,context=historical fake Teams installer,volatility=medium
CleanUp30.dll,sources=S02+S03,context=historical Oyster DLL,volatility=medium
Mutex1 values
ITrkfSaV-4c7KwdfnC-Ds165XU4C-lH6R9pk1,sources=S03,context=historical mutex,volatility=medium
10

Hardening — Tiered and Deployable

Immediate — remove confirmed Oyster persistence and poisoned access
  • Disable confirmed Oyster persistence after exporting evidence (CTRL01) — Export the scheduled-task XML, command, creator, timestamps, and referenced DLL; hash the DLL; then disable only the confirmed malicious task under incident authority. deployable-design Verify: Verify the task is disabled, rundll32 no longer launches the DLL, and owner-approved tasks remain healthy. Expected: Confirmed persistence stops without collateral task failures and evidence remains retained. Rollback: Re-enable only if ownership proves the task legitimate; otherwise restore affected business software from a trusted package. Authority: S01 · Red Canary 2026 Threat Detection Report; accessed 2026-09-04.
  • Remove poisoned-download exposure from managed browsing paths (CTRL02) — Block source-bound malicious landing domains with expiry and review controls, suppress search advertisements where policy permits, and direct PuTTY, WinSCP, and Teams installation to managed packages. deployable-design Verify: Confirm historical malicious domains are denied, official vendor sources work, and block events are logged. Expected: Users can reach approved sources but historical poisoned destinations are denied and attributable. Rollback: Remove an erroneous domain entry through change control and retain the event for rule correction. Authority: S01 · Red Canary 2026 Threat Detection Report; accessed 2026-09-04.
Near-term — expose user-path DLL registration and discovery
  • Pilot application control against user-path DLL registration (CTRL03) — Deploy an audit-mode App Control policy covering rundll32 execution of DLLs from user-writable paths and unapproved signed installers, then promote only reviewed rules after benign testing. deployable-design Verify: Exercise approved installers and a harmless lab DLL-registration test; compare audit results with software inventory. Expected: Approved installers work and the risky user-path DLL pattern is visible before enforcement. Rollback: Remove or revert the pilot policy through the documented management channel and restore the prior signed policy. Authority: S05 · Microsoft App Control for Business; accessed 2026-09-04.
  • Alert on discovery bursts from installer or rundll32 lineage (CTRL04) — After tenant parsing and baseline validation, review same-host sequences where a lure installer or rundll32 parent launches multiple discovery utilities within a short window; keep it analyst-led until measured. deployable-design Verify: Replay benign discovery commands from a lab harness and compare with 30 days of approved administrative activity. Expected: The lab sequence is visible and exclusions name only verified management tooling. Rollback: Disable the saved search or revert exclusions; no prevention action is attached. Authority: S01 · Red Canary 2026 Threat Detection Report; accessed 2026-09-04.
Strategic — govern software acquisition and retain linked evidence
  • Require managed software acquisition for administrative utilities (CTRL05) — Distribute PuTTY, WinSCP, Teams, and similar tools from verified managed repositories; record publisher and digest; restrict unmanaged installers from search-result downloads where compatible. deployable-design Verify: Install each approved package in a pilot and verify publisher, digest, update, launch, and rollback behavior. Expected: Managed packages function and unapproved lookalikes require review. Rollback: Restore a time-bounded named package exception under approval and correct the repository package. Authority: S05 · Microsoft App Control for Business; accessed 2026-09-04.
  • Centralize scheduled-task, process, DNS, and proxy evidence (CTRL06) — Forward protected copies of task registration, process command line, DNS, application-control, and proxy request records with source-health monitoring and at least 90-day retention. deployable-design Verify: Create an owner-approved benign task and web request, verify linked fields and timestamps, then test source-health alerting. Expected: The full chain is attributable across host and network logs and a collection interruption is detected. Rollback: Restore the previous forwarding and retention configuration while preserving collected records and documenting the gap. Authority: S03 · Microsoft Security Intelligence; accessed 2026-09-04.

Deployable playbook · CTRL01 + CTRL02

  1. Confirm incident authority, owner, business dependencies, evidence storage, and recovery path.
  2. Capture task definitions, process trees, files and hashes, DNS/network records, user/session state, and current policy before change.
  3. Pilot the containment or domain/task change on one confirmed endpoint or small cohort.
  4. Verify the expected malicious behavior stops and evidence remains accessible.
  5. Run application, authentication, network, and user workflow health checks.
  6. Expand only to confirmed matching systems after the pilot remains healthy.
  7. If a stop condition occurs, apply the documented narrow rollback and verify restored service without reintroducing suspect artifacts.
  8. Retain before/after exports, approvals, test evidence, and owner sign-off.

Deployable playbook · CTRL03 + CTRL05

  1. Inventory approved applications, publishers, install paths, owners, and exception requirements.
  2. Export current application-control policy and confirm a tested rollback channel.
  3. Deploy the new policy to an isolated audit-only pilot.
  4. Exercise approved applications and harmless representative tests; review every unexpected audit event.
  5. Verify business workflows, software updates, and developer exceptions.
  6. Promote narrowly only when audit data and owners support each allow/deny decision.
  7. Rollback to the previous signed policy if a critical application fails and verify endpoint health.
  8. Retain policy hashes, audit samples, approvals, exceptions, and review dates.
Design state: controls are deployable designs, not tested or deployed facts. Complete the named pilot, compatibility, authority, stop-condition, verification, and rollback checks first.
11

Containment Runbook

PhaseTriggerAuthorityOwnerEvidenceRecovery
1 · ValidateCorroborated process, task, file, or C2 evidenceSOC leadSOCquery row, raw event, process tree, task XML, file/hash, DNS and user contextNo disruptive action; close as benign only with documented owner evidence.
2 · PreserveProbable compromise after triageIncident commanderIncident Responsevolatile context, files, hashes, task/config exports, network/DNS, identity/session statePreservation is additive; verify evidence hashes and custody before changes.
3 · ContainConfirmed persistence, remote tasking, or follow-on payloadIncident commander plus system ownerIR / Network Securitycontainment approval, endpoint/network controls, timestamps, exceptionsMaintain response access and business continuity; release only after eradication gates.
4 · Eradicate and recoverEvidence secured and clean rebuild/reinstall path approvedChange authorityEndpoint Engineeringtrusted package/image digest, removed persistence, credential review, health testsRestore from known-good media/packages; never restore the suspect task or DLL.
5 · Close and re-huntRecovery checks passIncident commander and ownerSOC / Endpoint Engineeringclean 24h and 7d re-hunts, source health, owner sign-off, lessons learnedRecontain and reopen if persistence, C2, or unexplained process activity returns.

Continuity rule: preserve evidence first. Do not isolate critical systems, remove tasks/files, revoke credentials, or impose application-control enforcement without incident authority, the service owner, known dependencies, and a tested recovery path.

12

Detection Coverage and Validation Evidence

Validation state: STATIC REVIEW PASSED after local structure/safety, field/event, CQL syntax, and source-snapshot provenance gates. The offline dry run records extraction and profile readiness only; it does not contact Falcon or prove parsing, detection, canary success, or deployment.

TechniqueCoverageQueries / handoffEvidenceLimitation
T1189GapNative handoffEvidence-backed design gapPublished infrastructure is historical; HTTP paths, certificate identity, and IPv6 need tenant-specific telemetry.
T1218.011GapNative handoffEvidence-backed design gapPublished infrastructure is historical; HTTP paths, certificate identity, and IPv6 need tenant-specific telemetry.
T1053.005StaticQ02, Q03Local structure/field/syntax/provenance reviewPublished infrastructure is historical; HTTP paths, certificate identity, and IPv6 need tenant-specific telemetry.
T1016GapNative handoffEvidence-backed design gapPublished infrastructure is historical; HTTP paths, certificate identity, and IPv6 need tenant-specific telemetry.
T1071.001StaticQ05Local structure/field/syntax/provenance reviewPublished infrastructure is historical; HTTP paths, certificate identity, and IPv6 need tenant-specific telemetry.

Recorded gaps and next evidence

  • Every query remains tenant-unverified and design-only.
  • Direct-parent lineage, field population, IPv6, proxy content, and environment-specific exclusions require tenant review.
  • Historical atomics require context and expiry; no query result was generated by this build.
  • Next step: run the named DO FIRST query manually for one hour, confirm fields and semantics, then record positive and benign tests before promotion.
13

Hunt Summary Ticket

TITLE:        CleanUpLoader / Oyster Backdoor hunt — v0.3 Draft
SEVERITY:     high — source-corroborated remote execution or persistence behavior warrants prioritized review
SCOPE:        managed Windows endpoints; Falcon process/task/DNS telemetry; native task, proxy, browser, and application-control evidence
HYPOTHESIS:   H01 a PuTTY, WinSCP, or Teams-named installer from a user download path writes or launches an unexpected AppData DLL; H02 schtasks creates a recurring task whose action uses rundll32 and DLLRegisterServer on a user-profile DLL; H03 a ScheduledTaskRegistered event names a source-published Oyster task or points to rundll32 with a user-profile DLL; H04 rundll32 or the suspicious task lineage spawns a burst of net, nltest, systeminfo, ipconfig, or whoami commands; H05 an endpoint resolves a source-published Oyster C2 domain with suspicious process context; H06 Oyster sends encoded HTTP requests to api/connect or api/session and receives tasking
QUERIES RUN:  Q01 hunt; Q02 alert-candidate; Q03 hunt; Q04 hunt; Q05 hunt
DO FIRST:     Q02 over 30 days, then Q03 and Q04 on matching hosts; do not contact historical malicious domains.
FINDINGS:
GAPS:         Published infrastructure is historical; HTTP paths, certificate identity, and IPv6 need tenant-specific telemetry. No tenant execution evidence exists.
ACTIONS:      SOC preserves and hunts evidence; IR contains corroborated infections; Endpoint and Network owners pilot controls with rollback
OWNER:        SOC / Incident Response / Endpoint Security / Network Security
VERSION:      v0.3 Draft · 2026-09-04 · STATIC REVIEW PASSED
14

Changelog

v0.3 Rich visual emphasis2026-09-04Added coordinated semantic color to Executive Summary lead-ins, threat metadata, Severity, and IOC counts. Detection logic, evidence, indicators, hardening, and validation claims are unchanged.
v0.2 Theme refresh2026-09-04Applied the deterministic threat-aware HuntPack palette. Detection logic, evidence, indicators, hardening, and validation claims are unchanged.
v0.1 Draft2026-09-04Initial pack with 5 conservative CQL queries, 11 source-bound indicators, 6 reversible controls, 2 playbooks, a five-phase containment workflow, explicit gaps, and no tenant execution claims.
15

References

IDPublisherEdition / dateAccessedUseURL
S01Red CanaryCurrent cited edition2026-09-04T11:35:00ZC01, C02, C03, C04, C05, I01, I02, I03, I05, I06https://redcanary.com/threat-detection-report/threats/cleanuploader/
S02Rapid7Current cited edition2026-09-04T11:35:00ZC06, C07, C08, I07, I08https://www.rapid7.com/blog/post/2024/06/17/malvertising-campaign-leads-to-execution-of-oyster-backdoor/
S03Microsoft Security IntelligenceCurrent cited edition2026-09-04T11:35:00ZC09, C10, I07, I08, I09, I10, I11, I12https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Trojan%3AWin64%2FOysterLoader%21MTB&ThreatID=2147947243
S04Sekoia.ioCurrent cited edition2026-09-04T11:35:00ZC11, C12https://www.sekoia.com/blog/oysterloader-unmasked-the-multi-stage-evasion-loader
S05Microsoft LearnCurrent cited edition2026-09-04T11:35:00ZC13https://learn.microsoft.com/en-us/windows/security/application-security/application-control/app-control-for-business/appcontrol