MintsLoader Multi-Stage Loader
Executive Summary
What happened: Red Canary ranked MintsLoader ninth in its 2026 Threat Detection Report, based on activity affecting about two percent of its customers during 2025, and described continued use across KongTuke paste-and-run lures, SocGholish fake updates, and invoice-themed JavaScript delivery. Recorded Future independently documented the same loader family across multiple traffic-distribution and phishing paths, while Blackpoint Cyber reported a 2026 variant that changed its PowerShell obfuscation but retained core retrieval behavior. The family is a loader, not a single intrusion actor: a detection does not by itself attribute KongTuke, SocGholish, TAG-124, or any downstream payload.
How the loader works: the user launches JavaScript or pastes a command, Windows Script Host or an interactive shell starts hidden PowerShell, and the stage retrieves content from a request shaped as /1.php?s= before immediately executing it. Later PowerShell is encoded or compressed, attempts AMSI impairment, and checks video-controller, cache-memory, computer-system, and virtualization characteristics. The environment result and host identity help a server choose between a payload and a decoy. Documented variants use generated .top infrastructure, dynamically assembled destination values, and temporary .ps1 staging under Public Documents or AppData. Downstream payloads have included stealers and remote-access malware, but the payload mix changes by delivery cluster.
Why detection belongs in process lineage: Q01 combines hidden PowerShell, remote retrieval, immediate execution, and the durable request shape, making it more resilient than a hostname, hash, or filename. Q02 follows JavaScript-to-PowerShell lineage; Q03 exposes encoded or compressed PowerShell with AMSI-related tokens; Q04 tracks environment checks; Q05 hunts process-associated generated-domain lookups; and Q06 looks for user-writable script staging. Literal infrastructure rotates, script strings change between builds, and the current sources did not support a fresh, independently corroborated atomic IOC set. DNS context can also be broken by resolver, proxy, IPv6, or field-mapping differences.
Operational consequence: this pack is strongest as a behavior-led endpoint hunt paired with PowerShell Operational logs and approved proxy or web telemetry. Process command lines cannot prove the complete HTTP path, portable Falcon deletion semantics are not assumed, and script-block content exists only where Windows logging is enabled and securely collected. Q01 has a complete design-only alert package, but no query was parsed in a Falcon tenant, no benign baseline or positive fixture was run, no schedule was created, and no prevention control was enabled.
| Priority | Why now | Coverage delivered | Key limitation |
|---|---|---|---|
| Find durable loader behavior before the payload changes | Current 2026 technical reporting corroborates the evolving loader family | 6 CQL designs: 1 alert candidate and 5 hunts | Static review only; HTTP path, script-block, deletion, and DNS attribution need tenant evidence |
Source and Claim Review
Seven current-run snapshots retain sanitized plain-text evidence only. All webpage text and indicator strings were treated as untrusted data; no source-supplied command, code, payload, destination, or instruction was executed.
| ID | Publisher | Tier | Independence group | Accessed | Status |
|---|---|---|---|---|---|
| S01 | Red Canary | T1 | red-canary | 2026-09-05T11:03:29Z | successful sanitized HTML extraction |
| S02 | Recorded Future Insikt Group | T1 | recorded-future | 2026-09-05T11:03:29Z | successful sanitized HTML extraction |
| S03 | Blackpoint Cyber | T1 | blackpoint-cyber | 2026-09-05T11:03:29Z | successful sanitized technical summary |
| S04 | Microsoft Learn | T1 | microsoft | 2026-09-05T11:03:29Z | successful authoritative control summary |
| S05 | Microsoft Learn | T1 | microsoft | 2026-09-05T11:42:00Z | successful authoritative control summary |
| S06 | Microsoft Learn | T1 | microsoft | 2026-09-05T11:42:00Z | successful authoritative control summary |
| S07 | Microsoft Learn | T1 | microsoft | 2026-09-05T11:42:00Z | successful authoritative control summary |
Claim ledger
| Claim | Statement | Sources | Confidence | Caveat |
|---|---|---|---|---|
| C01 | Red Canary ranked MintsLoader ninth in its 2026 Threat Detection Report and observed it at about two percent of customers in the 2025 dataset. | S01 | high | none |
| C02 | MintsLoader uses JavaScript and PowerShell in a multi-stage loader chain that can deliver credential stealers and remote-access payloads. | S01, S02 | high | none |
| C03 | Observed initial access includes paste-and-run lures, fake browser updates, and invoice-themed JavaScript files. | S01, S02, S03 | high | none |
| C04 | A durable retrieval pattern combines hidden PowerShell, remote content retrieval, immediate execution, and an HTTP path shaped as /1.php?s=<campaign>. | S01, S02, S03 | high | none |
| C05 | Later PowerShell stages use encoding or obfuscation and attempt to bypass AMSI before executing additional logic. | S01, S02 | high | none |
| C06 | The loader checks virtual-machine and system characteristics and passes host and environment values to command infrastructure. | S01, S02 | high | none |
| C07 | MintsLoader infrastructure uses generated .top domains, so literal domain indicators are volatile. | S01 | medium | none |
| C08 | One documented variant staged a PowerShell file in a public documents directory and removed staged scripts after use. | S02 | medium | variant-specific |
| C09 | A 2026 variant changed PowerShell obfuscation while preserving the /1.php retrieval family pattern. | S03 | medium | single incident dataset |
| C10 | Microsoft recommends application-control deployment through inventory, audit, tested pilots, and prepared recovery rather than immediate broad enforcement. | S04 | high | none |
| C11 | Microsoft publishes ASR rules for potentially obfuscated scripts and for JavaScript or VBScript launching downloaded executable content, with stated Defender and AMSI prerequisites. | S05 | high | none |
| C12 | Microsoft documents PowerShell script-block, module, and transcription logging and warns that captured content can contain sensitive data. | S06 | high | none |
| C13 | Microsoft Defender Network Protection supports audit and enforcement modes for web-reputation-based controls but does not guarantee classification of every malicious destination. | S07 | high | none |
Hunt Brief and Attack Chain
The chain follows initial user execution into staged PowerShell, defense evasion, environment checks, rotating infrastructure, and temporary script staging. Each hypothesis remains traceable to claims and a validation plan.
| Step | Claims | Behavior | Platform | Detection goal |
|---|---|---|---|---|
| 1 | C03 | user launches a JavaScript lure or pastes a command | windows | find script-host or interactive-shell entry |
| 2 | C04 | hidden PowerShell retrieves and immediately executes a remote stage | windows | identify the durable loader command shape |
| 3 | C05 | encoded PowerShell attempts AMSI impairment | windows | find defense-evasion staging |
| 4 | C06 | loader performs virtual-machine and system discovery | windows | correlate environment checks on the same host |
| 5 | C07 | PowerShell resolves rotating .top infrastructure | windows | find process-scoped generated-domain access |
| 6 | C08 | temporary PowerShell staging is placed in a public user-writable path | windows | find variant-specific staging artifacts |
Hypotheses
| ID | Behavior | Telemetry | Use | Lookback | Validation |
|---|---|---|---|---|---|
| H01 | hidden PowerShell remote retrieval and immediate execution | ProcessRollup2, SyntheticProcessRollup2 | alert-candidate | 30d because loader executions may be single-shot | run an inert local command fixture that uses documentation-only URLs, then baseline approved PowerShell download-and-execute activity |
| H02 | Windows Script Host launching PowerShell retrieval | ProcessRollup2, SyntheticProcessRollup2 | hunt | 30d to capture intermittent lure execution | execute an inert signed test JavaScript that launches PowerShell to print a marker; baseline approved script-host lineages |
| H03 | obfuscated PowerShell with AMSI impairment indicators | ProcessRollup2, SyntheticProcessRollup2 | hunt | 14d to limit broad obfuscation volume | use a harmless encoded marker without AMSI modification; separately baseline legitimate encoded PowerShell |
| H04 | environment and virtualization discovery | ProcessRollup2, SyntheticProcessRollup2 | hunt | 14d for same-host correlation with loader queries | run read-only WMI inventory commands on an isolated test host and baseline management tooling |
| H05 | PowerShell-associated generated .top domain lookup | DnsRequest | hunt | 7d because DNS volume and infrastructure volatility are high | perform a DNS-only lookup to an analyst-controlled documentation domain and verify process attribution; baseline .top activity |
| H06 | user-writable PowerShell staging and cleanup | ProcessRollup2, SyntheticProcessRollup2 | hunt | 30d for low-frequency staging | execute a benign marker script from an isolated test directory and baseline approved user-writable scripts |
Affected surface and telemetry
Relevant surfaces are Windows endpoints where users can launch JavaScript, PowerShell, or pasted commands and where outbound web access is available. Portable coverage assumes Falcon process and DNS events with the named fields. Full URL paths need proxy or EDR web telemetry; deobfuscated script content needs protected PowerShell logging; file cleanup needs tenant-specific event semantics; DNS process attribution needs local verification.
Coverage boundaries
- HTTP request-path matching for /1.php?s= requires proxy, web, or EDR URL telemetry with known fields; process command lines are only a partial view.
- PowerShell script-block and deobfuscated-content fields are not assumed without tenant-specific ingestion.
- Portable Falcon deletion-event semantics are not documented for this build, so rapid cleanup remains a forensic correlation step.
- IPv6, proxy, and DNS resolver indirection can break endpoint-to-domain attribution.
- Loader detection does not attribute activity to KongTuke, SocGholish, TAG-124, or any payload family.
Consolidated IOC Table
No atomic IP addresses, domains, URLs, or hashes were published by the accessible current sources with sufficient freshness and independent corroboration for inclusion as of 2026-09-05. Historical infrastructure was deliberately excluded.
ATT&CK Mapping
Every ATT&CK row is an analyst inference from source-backed behavior; it is not a vendor attribution statement.
| Tactic | Technique | Name | Behavior | Basis | Sources | Claims |
|---|---|---|---|---|---|---|
| Execution | T1059.001 | PowerShell | hidden PowerShell retrieves and executes staged content | analyst inference | S01, S02, S03 | C02, C04 |
| Execution | T1059.007 | JavaScript/JScript | JavaScript lure or stage launches PowerShell | analyst inference | S01, S02 | C03 |
| Defense Evasion | T1027 | Obfuscated Files or Information | encoded and dynamically assembled PowerShell stages | analyst inference | S01, S02, S03 | C05, C09 |
| Defense Evasion | T1562.001 | Impair Defenses | PowerShell attempts to set AMSI initialization failure | analyst inference | S01, S02 | C05 |
| Discovery | T1497.001 | System Checks | video, cache, and virtualization properties are checked before payload delivery | analyst inference | S01, S02 | C06 |
| Command and Control | T1105 | Ingress Tool Transfer | PowerShell retrieves additional stages from rotating web infrastructure | analyst inference | S01, S02, S03 | C04, C07 |
Native / Non-CQL Hunts
| Hunt | Log source | Logic | Response |
|---|---|---|---|
| PowerShell content review | Microsoft-Windows-PowerShell/Operational Event ID 4104 | Search protected script-block logs for the same time, host, and user as Q01 or Q03; review decoded content, AMSI-related logic, destination construction, and child execution. | Preserve the original event and access trail; correlate with process and proxy evidence before containment. |
| Web request reconstruction | Approved proxy, secure web gateway, or endpoint web telemetry | Find PowerShell or script-host requests around a Q01 timestamp and inspect the full URI for the documented request shape, redirects, response size, and downloaded content. | Preserve raw request/response metadata and block only independently confirmed malicious destinations under change control. |
| Script staging review | Windows Security Event ID 4688, PowerShell 4104, and approved file-integrity or EDR file telemetry | Review Public Documents and AppData for transient PowerShell scripts near Q06; bind file hashes and deletion evidence to the process tree. | Acquire the script safely, preserve timestamps and hash, and isolate only after malicious execution is corroborated. |
CrowdStrike LogScale CQL Hunt Queries
All six queries are STATIC-ONLY. Confirm repository, event population, fields, semantics, and result volume in a safe manual window before operational use.
Looks for: hidden PowerShell that retrieves remote content, immediately executes it, and retains the documented /1.php?s= request shape in the command line. Accomplishes: combines four loader invariants into the pack's highest-fidelity process hunt without relying on rotating infrastructure.
// HUNT: Hidden PowerShell staged retrieval and execution // HYPOTHESIS: H01 // USE: alert-candidate // MITRE: T1059.001, T1105 // CONF: high // FP: medium // COST: low // TIMEFRAME: 30d — capture low-frequency loader execution // REQUIRES: #event_simpleName=ProcessRollup2 or SyntheticProcessRollup2; ImageFileName, CommandLine, ParentBaseFileName // FALSE POSITIVES: software bootstrap scripts, configuration management, and developer tooling // TUNING: exclude approved management parents only after confirming signer, path, and owner // VALIDATION: STATIC-ONLY #event_simpleName = /^(ProcessRollup2|SyntheticProcessRollup2)$/ | test(@timestamp >= now() - 2592000000) | ImageFileName = /(?:powershell|pwsh)\.exe$/i | CommandLine = /(?:-w(?:indowstyle)?\s+h(?:idden)?|windowstyle\s+hidden)/i | CommandLine = /(?:curl|invoke-webrequest|iwr|invoke-restmethod|irm)/i | CommandLine = /(?:\|\s*(?:iex|invoke-expression)|;\s*(?:iex|invoke-expression)|\.(?:content|exportedcommands))/i | CommandLine = /\/1\.php\?s=/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, TargetProcessId, aid]) | sort(@timestamp, order=desc, limit=1000)
Looks for: wscript.exe or cscript.exe launching PowerShell with download or immediate-execution semantics. Accomplishes: surfaces a common JavaScript-lure handoff while preserving enough lineage and command context to distinguish approved automation.
Trace: H02 · Decision Q02
// HUNT: Windows Script Host spawning PowerShell retrieval // HYPOTHESIS: H02 // USE: hunt // MITRE: T1059.007, T1059.001 // CONF: medium // FP: medium // COST: low // TIMEFRAME: 30d — catch intermittent lure execution // REQUIRES: #event_simpleName=ProcessRollup2 or SyntheticProcessRollup2; ParentBaseFileName, ImageFileName, CommandLine // FALSE POSITIVES: legacy login scripts and enterprise software deployment // TUNING: exclude signed, owner-approved script packages and known deployment parents // VALIDATION: STATIC-ONLY #event_simpleName = /^(ProcessRollup2|SyntheticProcessRollup2)$/ | test(@timestamp >= now() - 2592000000) | ParentBaseFileName = /^(wscript|cscript)\.exe$/i | ImageFileName = /(?:powershell|pwsh)\.exe$/i | CommandLine = /(?:curl|invoke-webrequest|iwr|invoke-restmethod|irm|downloadstring|downloadfile|iex|invoke-expression)/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, TargetProcessId, aid]) | sort(@timestamp, order=desc, limit=1000)
Looks for: encoded or compressed PowerShell combined with AMSI-related or immediate-execution tokens. Accomplishes: narrows generic encoded-command volume toward the defense-evasion behavior documented across MintsLoader analyses.
Trace: H03 · Decision Q03
// HUNT: Obfuscated PowerShell with AMSI-related tokens // HYPOTHESIS: H03 // USE: hunt // MITRE: T1027, T1562.001 // CONF: medium // FP: medium // COST: low // TIMEFRAME: 14d — bound a broad obfuscation search // REQUIRES: #event_simpleName=ProcessRollup2 or SyntheticProcessRollup2; ImageFileName, CommandLine, ParentBaseFileName // FALSE POSITIVES: security testing and administrative packaging scripts // TUNING: exclude approved red-team windows and signed packaging workflows after review // VALIDATION: STATIC-ONLY #event_simpleName = /^(ProcessRollup2|SyntheticProcessRollup2)$/ | test(@timestamp >= now() - 1209600000) | ImageFileName = /(?:powershell|pwsh)\.exe$/i | CommandLine = /(?:-e(?:nc|ncodedcommand)?\s+|frombase64string|gzipstream|deflatestream)/i | CommandLine = /(?:amsi|amsiutils|amsiinitfailed|invoke-expression|\biex\b)/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, TargetProcessId, aid]) | sort(@timestamp, order=desc, limit=1000)
Looks for: PowerShell or WMIC querying video-controller, cache-memory, computer-system, or common hypervisor attributes. Accomplishes: exposes the environment-check behavior that MintsLoader uses before advancing while acknowledging inventory-tool overlap.
Trace: H04 · Decision Q04
// HUNT: PowerShell and WMI virtualization discovery // HYPOTHESIS: H04 // USE: hunt // MITRE: T1497.001 // CONF: medium // FP: medium // COST: low // TIMEFRAME: 14d — correlate recent system checks with loader signals // REQUIRES: #event_simpleName=ProcessRollup2 or SyntheticProcessRollup2; ImageFileName, CommandLine, ParentBaseFileName // FALSE POSITIVES: asset inventory, support diagnostics, and virtualization management // TUNING: exclude known management agents and documented inventory scripts // VALIDATION: STATIC-ONLY #event_simpleName = /^(ProcessRollup2|SyntheticProcessRollup2)$/ | test(@timestamp >= now() - 1209600000) | ImageFileName = /(?:powershell|pwsh|wmic)\.exe$/i | CommandLine = /(?:Win32_VideoController|Win32_CacheMemory|Win32_ComputerSystem|hypervisor|virtualbox|vmware)/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, TargetProcessId, aid]) | sort(@timestamp, order=desc, limit=1000)
Looks for: PowerShell-attributed DNS requests to long alphanumeric .top domains. Accomplishes: replaces brittle historical hostnames with a documented infrastructure shape, but requires tenant confirmation of DNS process attribution.
Trace: H05 · Decision Q05
// HUNT: PowerShell-associated generated .top lookups // HYPOTHESIS: H05 // USE: hunt // MITRE: T1105 // CONF: medium // FP: medium // COST: low // TIMEFRAME: 7d — bound high-volume DNS and volatile infrastructure // REQUIRES: #event_simpleName=DnsRequest; DomainName, ContextBaseFileName, ContextProcessId_decimal // FALSE POSITIVES: security research, advertising redirects, and software update services // TUNING: baseline .top domains and verify process attribution before excluding any resolver path // VALIDATION: STATIC-ONLY #event_simpleName = DnsRequest | test(@timestamp >= now() - 604800000) | ContextBaseFileName = /^(powershell|pwsh)\.exe$/i | DomainName = /^[a-z0-9]{12,24}\.top$/i | table([@timestamp, ComputerName, UserName, ContextBaseFileName, ContextProcessId_decimal, DomainName, aid]) | sort(@timestamp, order=desc, limit=1000)
Looks for: PowerShell launching .ps1 content from Public Documents or AppData with hidden, bypass, or no-profile arguments. Accomplishes: captures the documented temporary staging pattern without pretending portable deletion telemetry is available.
Trace: H06 · Decision Q06
// HUNT: User-writable PowerShell script staging // HYPOTHESIS: H06 // USE: hunt // MITRE: T1105 // CONF: medium // FP: medium // COST: low // TIMEFRAME: 30d — retain low-frequency user-path staging // REQUIRES: #event_simpleName=ProcessRollup2 or SyntheticProcessRollup2; ImageFileName, CommandLine, ParentBaseFileName // FALSE POSITIVES: user automation, software installers, and IT support scripts // TUNING: exclude owner-approved scripts by full path and signer only after review // VALIDATION: STATIC-ONLY #event_simpleName = /^(ProcessRollup2|SyntheticProcessRollup2)$/ | test(@timestamp >= now() - 2592000000) | ImageFileName = /(?:powershell|pwsh)\.exe$/i | CommandLine = /(?:\\Users\\Public\\Documents|\\Users\\[^\\]+\\AppData\\)[^"']*\.ps1/i | CommandLine = /(?:-w(?:indowstyle)?\s+h(?:idden)?|-executionpolicy\s+bypass|-noprofile)/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, TargetProcessId, aid]) | sort(@timestamp, order=desc, limit=1000)
Operationalization and IOA Candidates
Q01 has a complete design-only scheduled-search package. Q02–Q06 remain hunt-only. No Falcon schedule, notification route, IOA, prevention policy, or deployment was created.
| Query | Use | Decision | Alert | Readiness | Rationale |
|---|---|---|---|---|---|
| Q01 | alert-candidate | alert-package | A01 | design-only | The combined loader shape is specific enough to design an alert, but tenant parsing, a benign baseline, and an inert positive test remain mandatory before scheduling. |
| Q02 | hunt | hunt-only | — | design-only | Script-host lineage is useful but can overlap with approved enterprise automation; baseline and ownership data are absent. |
| Q03 | hunt | hunt-only | — | design-only | Encoded and AMSI-related tokens are analytically valuable but too broad for alerting without tenant prevalence and red-team exclusions. |
| Q04 | hunt | hunt-only | — | design-only | Virtualization and inventory commands have common administrative uses and require same-host correlation. |
| Q05 | hunt | hunt-only | — | design-only | DNS process attribution and .top prevalence must be confirmed in the target tenant before operational use. |
| Q06 | hunt | hunt-only | — | design-only | User-writable PowerShell scripts overlap with support and installer workflows and portable deletion evidence is unavailable. |
Design-only scheduled search
| ID | Query | Name | Window / cadence | Threshold | Suppression | Owner / SLA |
|---|---|---|---|---|---|---|
| A01 | Q01 | Hidden PowerShell staged retrieval and execution | 30m / 15m | at least one matching process event | 60m for an identical aid, TargetProcessId, and CommandLine; never suppress a new host or command line | endpoint detection engineering / 15 minutes for initial process-tree and user-context review |
Machine-Readable IOC Appendix
No atomic IP addresses, domains, URLs, or hashes were published by the accessible current sources with sufficient freshness and independent corroboration for inclusion as of 2026-09-05. Historical infrastructure was deliberately excluded.
type,value,source,action # No eligible atomic IOCs as of 2026-09-05
hidden PowerShell + remote retrieval + immediate execution Windows Script Host → PowerShell lineage encoded/compressed PowerShell + AMSI-related tokens PowerShell-associated generated .top lookup user-writable .ps1 staging
Historical domains and addresses were excluded because infrastructure rotates and current independent corroboration was absent. Do not manufacture, contact, or block values from stale reporting.
Hardening — Tiered and Deployable
- Audit potentially obfuscated scripts (M1040; CTRL01) — Set ASR rule 5BEB7EFE-FD9A-4556-801D-275E5FFC04CC to Audit mode for the pilot; move to Block only after reviewed evidence meets expansion criteria. deployable-design Verify: Read Get-MpPreference AttackSurfaceReductionRules_Ids and Actions; retain matching ASR audit events. Expected: the GUID is present with AuditMode on every pilot endpoint and events reach the review workflow Rollback: Return the rule to Disabled for the pilot through the same policy channel and verify the GUID/action state. Authority: S05 · Microsoft Learn accessed 2026-09-05.
- Audit script-launched downloaded content (M1038; CTRL02) — Set ASR rule D3E037E1-3EB8-44C8-A917-57927947596D to Audit mode; promote to Block for tested user cohorts when no critical workflow remains unresolved. deployable-design Verify: Read the configured rule action and review AsrScriptExecutableDownloadAudited or blocked evidence. Expected: the rule is in Audit mode across the pilot and each exception has an owner and full-path justification Rollback: Restore the prior action through the management policy and verify endpoint convergence. Authority: S05 · Microsoft Learn accessed 2026-09-05.
- Enable protected PowerShell script-block logging (M1047; CTRL03) — Enable the Turn on PowerShell Script Block Logging policy for a pilot and forward Microsoft-Windows-PowerShell/Operational Event ID 4104 to restricted storage. deployable-design Verify: Run an inert marker script on a pilot endpoint and confirm a 4104 event and protected forwarding path. Expected: the marker is captured once with correct host and user context and only authorized roles can read it Rollback: Disable the pilot policy, stop forwarding from the pilot, and verify that no new 4104 marker is collected while preserving prior evidence per policy. Authority: S06 · PowerShell 7.6 documentation accessed 2026-09-05.
- Pilot Network Protection for script-host egress (M1021; CTRL04) — Enable Network Protection in Audit mode for the pilot, review application impact, then use Block mode only for cohorts meeting the documented acceptance criteria. deployable-design Verify: Read the managed Network Protection state and perform an organization-approved benign test against a documented test URL. Expected: the pilot reports the expected audit action without breaking business applications Rollback: Return the pilot to Audit or Disabled through the same channel and verify restored application connectivity. Authority: S07 · Microsoft Learn accessed 2026-09-05.
- Constrain unapproved script hosts with App Control (M1038; CTRL05) — Create an App Control policy that audits unapproved wscript.exe, cscript.exe, and PowerShell script use outside approved signer and managed paths; enforce only after audit and pilot review. deployable-design Verify: Export the effective App Control policy and confirm audit events for an inert unsigned test script while approved signed scripts continue. Expected: unapproved test execution is audited or blocked according to mode and approved workflows remain functional Rollback: Deploy the prepared signed rollback policy, verify effective-policy removal or audit mode, and rerun approved application health checks. Authority: S04 · Microsoft Learn accessed 2026-09-05.
- Maintain an owned script and exception lifecycle (M1033; CTRL06) — Require signed or centrally managed production scripts, quarterly owner recertification, expiration dates for every exception, and removal of unowned allow entries. deployable-design Verify: Sample ten active exceptions and verify signer or managed path, owner, business purpose, approval, and expiration. Expected: every sampled exception has complete evidence and no expired unowned entry remains active Rollback: Extend a specific exception through emergency change control while ownership and replacement are resolved; do not restore unbounded exceptions. Authority: S04 · Microsoft Learn accessed 2026-09-05.
Deployable playbook · PB01 · Pilot MintsLoader-focused ASR rules
- Confirm Defender, AMSI, and cloud-protection prerequisites; export the current policy and endpoint membership.
- Capture pre-change Get-MpPreference rule IDs/actions and the last 14 days of relevant ASR events.
- Apply both rule GUIDs in Audit mode to the limited pilot through the approved management channel.
- Verify policy convergence and collect audit evidence from an inert approved script fixture.
- Run application-owner and help-desk health checks for installers, packaging, and signed business scripts.
- Expand only when every event family is owned, critical workflows pass, and exclusions are narrow and approved.
- If a stop condition fires, restore the exported policy or set the affected rule Disabled; verify convergence and application recovery.
- Retain policy exports, event samples, exception decisions, owner approvals, and the rollback result under endpoint security ownership.
Deployable playbook · PB02 · Deploy protected PowerShell script-block logging
- Approve sensitive-data handling, restricted reader roles, retention, and storage capacity.
- Export the current PowerShell logging GPO or MDM state and forwarding configuration.
- Enable Script Block Logging for the pilot and route Event ID 4104 to restricted storage.
- Execute an inert local marker and verify one complete 4104 record with host and user context.
- Review endpoint performance, ingestion volume, secret exposure risk, and analyst access.
- Expand only when volume and access controls meet the approved thresholds.
- Rollback by disabling the pilot policy and forwarding rule; verify no new marker collection while preserving prior evidence.
- Retain configuration exports, marker event, access review, storage metrics, and rollback evidence under Windows platform ownership.
Containment Runbook
| Phase | Trigger | Authority | Owner | Evidence | Recovery |
|---|---|---|---|---|---|
| 1. Validate and preserve | Q01 result or corroborated MintsLoader-style process lineage | incident commander or on-call SOC lead | SOC analyst | raw query rows, event semantics, process tree, command line, user and host context | none; preservation is read-only |
| 2. Scope execution | unapproved retrieval/execution or related H02-H06 evidence | incident commander | endpoint incident responder | PowerShell and script-host timeline, files and hashes, DNS/proxy rows, script-block logs when available | record approved administrative explanation or advance to isolation |
| 3. Isolate affected endpoints | remote execution corroborated, payload evidence, or ongoing beaconing | incident commander with business service owner for critical endpoints | endpoint operations | isolation timestamp, network exceptions, business impact, preserved volatile data | restore connectivity only after eradication and closure gates pass |
| 4. Contain access and destinations | credential theft payload, suspicious session, or active malicious destination confirmed | incident commander plus identity/network owners | identity and network security | session and token actions, account audit, destination blocks, proxy/DNS records | restore access through approved reset and business-continuity checks; remove temporary blocks after re-hunt |
| 5. Eradicate, recover, and re-hunt | scope stabilized and evidence preserved | incident commander and system owner | endpoint engineering | reimage or cleanup record, configuration verification, fresh Q01-Q06 results, owner sign-off | return to service after no new hits for the approved re-hunt window and all security controls are healthy |
Preservation order: raw query and alert rows; process tree and command lines; PowerShell logs; files and hashes; proxy, DNS, and network records; user and session state; relevant policy configurations; analyst notes and tool logs.
Closure gates: malicious scripts and payloads removed or endpoint rebuilt; credentials or sessions addressed when exposure is evidenced; temporary containment changes reviewed; Q01-Q06 re-run after recovery with no unexplained hits; business owner and incident commander approve closure. Re-hunt: Run Q01-Q06 immediately after recovery, again after 24 hours, and at seven days; retain raw results and explain every hit.
Detection Coverage and Validation Evidence
Validation state: STATIC REVIEW PASSED after local structural/safety, maintained-field, CQL heuristic, provenance, and duplicate gates. Provenance is N/A because the report deliberately ships no atomic IOCs. This is not Falcon parsing, canary success, schedule creation, or deployment evidence.
| Technique | Coverage | Query / handoff | Evidence | Limitation |
|---|---|---|---|---|
| T1059.001 | Static | Q01, Q02 | Local structure, field, syntax, and safety review | Tenant parsing, result semantics, positive tests, and benign baseline absent |
| T1059.007 | Static | Q02 | Local structure, field, syntax, and safety review | Tenant parsing, result semantics, positive tests, and benign baseline absent |
| T1027 | Static | Q03 | Local structure, field, syntax, and safety review | Tenant parsing, result semantics, positive tests, and benign baseline absent |
| T1562.001 | Static | Q03 | Local structure, field, syntax, and safety review | Tenant parsing, result semantics, positive tests, and benign baseline absent |
| T1497.001 | Static | Q04 | Local structure, field, syntax, and safety review | Tenant parsing, result semantics, positive tests, and benign baseline absent |
| T1105 | Static | Q01, Q05, Q06 | Local structure, field, syntax, and safety review | Tenant parsing, result semantics, positive tests, and benign baseline absent |
Recorded evidence and next tests
- All six CQL cards retain
VALIDATION: STATIC-ONLY; no Falcon tenant was contacted. - The offline tenant-validation dry run checks extraction and profile readiness only.
- Q05 depends on tenant-confirmed DNS process attribution; URL-path and deletion evidence require separate repositories.
- A01 remains design-only with unknown baseline and planned-not-run positive and benign tests.
- Next step: manually parse Q01 in the intended repository over one hour, confirm every returned field, then run the approved inert fixture and 30-day benign baseline before scheduling.
Hunt Summary Ticket
TITLE: MintsLoader hunt — v0.1 Draft SEVERITY: high — staged loader execution can precede credential theft or remote access SCOPE: Windows Falcon process and DNS telemetry; PowerShell and approved web-log pivots HYPOTHESIS: H01 alert-candidate — hidden PowerShell remote retrieval and immediate execution; H02 hunt — Windows Script Host launching PowerShell retrieval; H03 hunt — obfuscated PowerShell with AMSI impairment indicators; H04 hunt — environment and virtualization discovery; H05 hunt — PowerShell-associated generated .top domain lookup; H06 hunt — user-writable PowerShell staging and cleanup QUERIES RUN: inventory: none; hunt: Q02/Q03/Q04/Q05/Q06; alert-candidate: Q01 DO FIRST: Q01 over 30 days; verify parent lineage, user intent, and web evidence FINDINGS: GAPS: HTTP path, script-block, deletion, IPv6/proxy/DNS attribution, and tenant parsing ACTIONS: SOC validates Q01; endpoint engineering baselines benign activity; Windows owners pilot logging and ASR OWNER: Security Operations / Endpoint Detection Engineering / Windows Platform VERSION: v0.1 Draft · 2026-09-05 · STATIC REVIEW PASSED
Changelog
References
| ID | Publisher | Version / status | Accessed | Use | URL |
|---|---|---|---|---|---|
| S01 | Red Canary | successful sanitized HTML extraction | 2026-09-05T11:03:29Z | 2026 prevalence, delivery paths, durable behaviors, and defensive guidance | https://redcanary.com/threat-detection-report/threats/mintsloader/ |
| S02 | Recorded Future Insikt Group | successful sanitized HTML extraction | 2026-09-05T11:03:29Z | Independent multi-stage technical analysis and variant behavior | https://www.recordedfuture.com/research/uncovering-mintsloader-with-recorded-future-malware-intelligence-hunting |
| S03 | Blackpoint Cyber | successful sanitized technical summary | 2026-09-05T11:03:29Z | 2026 variant corroboration and obfuscation/infrastructure volatility | https://blackpointcyber.com/blog/mintsloader-finger-protocol-hashtable-obfuscation/ |
| S04 | Microsoft Learn | successful authoritative control summary | 2026-09-05T11:03:29Z | App Control audit, pilot, enforcement, and recovery authority | https://learn.microsoft.com/windows/security/application-security/application-control/windows-defender-application-control/wdac |
| S05 | Microsoft Learn | successful authoritative control summary | 2026-09-05T11:42:00Z | ASR rule IDs, prerequisites, audit evidence, and enforcement design | https://learn.microsoft.com/en-us/defender-endpoint/attack-surface-reduction-rules-reference |
| S06 | Microsoft Learn | successful authoritative control summary | 2026-09-05T11:42:00Z | PowerShell logging behavior, Event ID 4104, and sensitive-data caveat | https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_logging_windows |
| S07 | Microsoft Learn | successful authoritative control summary | 2026-09-05T11:42:00Z | Network Protection audit/enforcement modes and limitation | https://learn.microsoft.com/en-us/defender-endpoint/network-protection |