LausivLoader — Multi-Stage JS / PowerShell / .NET Loader HuntPack

Env-variable inter-process handoff · Edge-Update-masquerading scheduled task persistence · PNG-steganography payload stage
Threat
LausivLoader
Severity
MEDIUM
Type
Multi-Stage Loader (JS → PowerShell → .NET)
Access
Spearphishing Attachment
Version
v0.1 (Draft) · 2026-09-23
Author
HuntPack
Confidence
Medium (single primary source, high technical fidelity)
01

Executive Summary

LausivLoader is a multi-stage Windows malware loader documented by the SANS Internet Storm Center (Jan Kopriva, diary 33348, published 2026-09-17, last updated 2026-09-22). It arrives as a purchase-quotation spearphishing lure carrying an obfuscated JavaScript file inside a .r01 archive. The attacker's objective is to establish durable logon persistence disguised as a Microsoft Edge Update task, then stage a four-layer loader chain — JavaScript → PowerShell → first .NET loader → second .NET downloader — that ultimately hides its final payload inside a PNG image's iTXt metadata chunk, decoding it into a .NET assembly or native EXE that is executed via reflection or process hollowing.

The single most distinctive TTP is how the JavaScript hands decode instructions to PowerShell: instead of hardcoding file paths on the command line, the JS stage sets variables in its own process environment, which the intermediate conhost.exe --headless process and the child powershell.exe process inherit. This defeats naive analysis that extracts only the decoded PowerShell command line, and it means the file paths and decode context never appear together in any single visible artifact.

Highest-value defensive angle: because the payload content and the env-var handoff itself are not independently visible in standard Falcon process telemetry, this pack leans on process lineage (script host → conhost.exe --headless → PowerShell) and the scheduled task masquerade (MicrosoftEdgeUpdateTaskCore) as the highest-fidelity, lowest-FP detection surface — both are structurally unusual regardless of how the payload content is obfuscated.

Defender priority: the env-var handoff, in-memory AMSI patch, RC4/AES/GZip/DEFLATE transforms, and the final reflective-load/process-hollowing step are not independently visible via standard Falcon process/file events — do not rely on payload-content inspection. Hunt the process-lineage and persistence signatures in §8 first; treat any hit as high-priority triage given how few legitimate reasons exist to produce this lineage.

02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry Forward
1 (Primary)SANS ISC diary 33348 — Jan KoprivaFull technical analysis: delivery, all four stages, persistence mechanism, all three sample hashes, C2 URL, and the handlers' own 18-item MITRE ATT&CK mappingYes
3 (Syndication)malware.news repostForum mirror linking back to the SANS diary; no independent technical contentNo (redundant, checked for divergence only)
3 (AI-summarized aggregator)OffSeq Threat RadarAutomated summary of the same diary; independently assigns Severity: mediumPartial (severity cue only)
1 (same organization)SANS Stormcast, 2026-09-18 — Johannes UllrichSame-organization audio corroboration of the diary's findings; no new IOCs, no retractionPartial (authenticity/no-retraction check)

All four sources trace back to the same author and organization (Jan Kopriva / SANS ISC) — no independent second research organization has corroborated this sample as of 2026-09-23. Per standing practice, prevent/critical-severity action requires two independent sources; because this intel is effectively single-sourced, every atomic IOC in this pack ships at detect/hunt tier only, never prevent, until a second source (a different vendor write-up, or your own telemetry) corroborates it.

Decisions made: the specific lure filename and .r01 archive extension were converted to behavioral patterns (double-dot-before-extension, multi-volume archive) rather than shipped as exact-match IOCs, since campaign-specific naming is expected to rotate on the next wave. All three published hashes and the yapw[.]life domain were kept as atomic IOCs (traced to source snapshot 01-sans-isc-diary.txt). No additional infrastructure, hashes, or actor attribution were invented beyond what the primary source published.

03

Hunt Brief & Attack Chain

Hunt hypotheses (ordered by fidelity)

#HypothesisMITREFalcon EventsFP SourcesConfidence
H1A script host (wscript.exe/cscript.exe) executes a .js file with a spoofed double extension delivered via an email/archive attachmentT1566.001, T1204.002, T1059.007ProcessRollup2Rare legitimate double-extension automation scriptsHigh
H2conhost.exe is spawned with an explicit --headless flag and a full path to powershell.exe embedded in its own command line, rather than acting as a normal console hostT1564.003, T1059.001ProcessRollup2Near zero — virtually no legitimate software invokes conhost.exe this wayHigh
H3Full lineage wscript.exe (grandparent) → conhost.exe --headless (parent) → powershell.exe -NoP -NonI -W Hidden -EncodedCommand (child) is the end-to-end fingerprint of this loader chainT1059.001, T1059.007, T1564.003ProcessRollup2Very lowHigh
H4A scheduled task named MicrosoftEdgeUpdateTaskCore (or a similarly masquerading name) whose action executes a script host outside the legitimate Edge Update install path is LausivLoader's persistenceT1053.005, T1036.004ScheduledTaskRegisteredLow — genuine Edge Update tasks use different names/paths/executablesHigh
H5Logon-triggered re-execution of wscript.exe against %LOCALAPPDATA%\Microsoft\PhotoEngine\PhotoStudio.js indicates the persisted copy firingT1053.005ProcessRollup2Low — non-standard path for that filenameMedium-High
H6DNS resolution or outbound connection to yapw[.]life or a PNG path resembling /phpt/stego_*.png indicates the stage-4 downloader reaching for the steganographic payloadT1105, T1027.003DnsRequest, NetworkConnectIP4Low, but this infrastructure is single-sourced and was already offline at publication — perishableMedium
H7A PowerShell process launched with the exact flag combination -NoP -NonI -W Hidden -EncodedCommand and no other suspicious content (because the decode context rides in inherited env vars) is a broader, noisier signal for encoded-command execution generallyT1059.001ProcessRollup2Medium — many legitimate RMM/admin tools use hidden encoded PowerShellMedium
H8AMSI-scan telemetry for -EncodedCommand PowerShell content immediately preceding the H1–H3 chain may catch the window before an AMSI-patch attempt succeedsT1140, T1685ScriptControlScanTelemetryHigh in isolation — only useful correlated with H2/H3Low-Medium

Attack chain

StepTelemetryHunt Angle
1. Spearphishing email with .r01 archive containing PO.4843293191 For Supply Chain - Imports HM..js; SPF/DMARC failMail gateway logsNative hunt (§7)
2. User/automatic extraction; wscript.exe/cscript.exe executes the .jsProcessRollup2Q1
3. JS builds a temp directory name from a random number + timestamp (base36) under %TEMP%, writes two encoded fragment files, sets environment variables (e.g. Kv7408/Kv562-style names) in its own processNot independently visible — see §5/§15 gapCoverage gap
4. JS launches conhost.exe --headless "<path>\powershell.exe" -NoP -NonI -W Hidden -EncodedCommand <b64>ProcessRollup2Q2
5. conhost.exe → powershell.exe inherits env vars, reads and deletes the two temp files, Base64-decodes, AES-128-CBC decrypts (embedded key/IV), GZip-decompresses → loads a 315,904-byte .NET assembly via Assembly.Load + entry-point invokeProcess lineage visible; in-memory decode is notQ3 (lineage); gap for decode itself
6. JS copies itself to %LOCALAPPDATA%\Microsoft\PhotoEngine\PhotoStudio.js and registers scheduled task \MicrosoftEdgeUpdateTaskCore via the Schedule.Service COM object (logon trigger; action = wscript.exe //B //Nologo <path>)ScheduledTaskRegisteredQ4
7. Logon-triggered re-execution of the persisted JSProcessRollup2Q5
8. First .NET loader (315,904 bytes) resolves Windows APIs dynamically, attempts to patch AmsiScanBuffer/AmsiScanString, retains every 5th byte of an embedded 299,520-byte array, RC4-decrypts it → second .NET executable (59,904 bytes)In-process patch + in-memory RC4; not independently visibleCoverage gap; Q8 partial pivot
9. Second .NET downloader fetches hxxps://yapw[.]life/phpt/stego_zrgaixkku8.png, parses the PNG iTXt chunk, finds marker FF 89 AD 4A, XOR-decrypts and DEFLATE-decompresses → a PE (MZ)DnsRequest, NetworkConnectIP4Q6 / Q7
10. Loader selects .NET reflection load (managed assembly) or process hollowing (native EXE) to run the final, unrecovered payloadNot independently visible — SANS never recovered the payloadCoverage gap
04

Consolidated IOC Table

TypeValueConfidenceActionContextExpiry
sha256408b2df6e81824fa5bdf4f0fbd185a7e6db06e2be98fbeebce416f66954b9fa9HighdetectInitial JS dropper, PO.4843293191 For Supply Chain - Imports HM..js2027-03-23
md57acd5c5f1689332615c03357e143f51eHighdetectSame JS dropper (MD5)2027-03-23
sha256e4130bf8769a50106a963b6a43dfd4fe5b56c70eae76a0de971d25993159acfeHighdetectFirst .NET loader / AMSI-patch stage, 315,904 bytes2027-03-23
md55d92d1fb5d5fbd79a588f22e994a4affHighdetectSame first .NET loader (MD5)2027-03-23
sha256be73e8b06c4356b5b4644d69b4f426bb3b32b4bf9f14cc5743f17532799f760bHighdetectSecond .NET downloader / PNG-stego stage, 59,904 bytes2027-03-23
md5f351968c76eefc80d4e292a3f179b7b9HighdetectSame second .NET downloader (MD5)2027-03-23
domainyapw[.]lifeMediumhuntStage-4 PNG-steganography payload host; offline at publication, single-sourced2026-12-23
urlhxxps://yapw[.]life/phpt/stego_zrgaixkku8.pngMediumhuntExact payload URL; likely rotated after publication2026-12-23
path (behavioral)%LOCALAPPDATA%\Microsoft\PhotoEngine\PhotoStudio.jsMediumhuntPersisted copy of the JS dropper2026-12-23
tasknameMicrosoftEdgeUpdateTaskCoreMediumhuntMasquerading scheduled task name; future campaigns will likely rename it2026-12-23
behavioralconhost.exe --headless launching powershell.exeHighhuntDistinctive JS-to-PowerShell handoff mechanism; durable TTP, not perishable infrastructure2027-03-23
05

Affected Surface & Telemetry Matrix

SurfaceTelemetry RequiredPriorityGap Risk
Windows endpoints (email-delivered scripts)Falcon ProcessRollup2 / SyntheticProcessRollup2 (process execution + parent/grandparent lineage)CriticalLow — well covered by Falcon
Windows Task SchedulerFalcon ScheduledTaskRegistered; native Task Scheduler Operational logHighLow
Email gatewayNative mail gateway logs (SPF/DMARC, attachment detonation) — outside Falcon entirelyHighHigh — Falcon has no native visibility; requires native audit hunt / email security tooling (§7)
In-memory .NET execution (reflective load, process hollowing, AMSI patch)Falcon IOA/ML behavioral prevention (not raw CQL-queryable)CriticalHigh — no raw event exposes the AMSI-patch bytes or the reflective Assembly.Load call itself
Process environment-variable inheritance (the handoff mechanism itself)None — Falcon does not log per-process environment-variable contentsMedium (analysis value, not detection)Full gap — explicitly flagged, not solvable with current telemetry
DNS / network egressFalcon DnsRequest / NetworkConnectIP4MediumLow visibility, low durability — single-sourced, perishable infrastructure
06

ATT&CK Mapping

The following 18 techniques are the SANS ISC handler's own published mapping for this sample, cross-checked against the saved diary snapshot.

TacticTechniqueBehaviorQuery / Control
Initial AccessT1566.001 Phishing: Spearphishing AttachmentPurchase-quotation lure with archived JSNative hunt §7
ExecutionT1204.002 User Execution: Malicious FileIntended recipient execution of the extracted scriptQ1
ExecutionT1059.007 Command and Scripting Interpreter: JavaScriptWSH executes the JSQ1
ExecutionT1059.001 Command and Scripting Interpreter: PowerShellJS constructs and executes a PowerShell commandQ2, Q3
PersistenceT1053.005 Scheduled Task/Job: Scheduled TaskLogon task MicrosoftEdgeUpdateTaskCoreQ4
Defense EvasionT1036.004 Masquerading: Masquerade Task or ServiceTask named like a legitimate Edge updaterQ4
Defense EvasionT1564.003 Hide Artifacts: Hidden WindowHidden WScript.Shell launch, hidden PowerShell window, conhost --headlessQ2, Q3
Defense EvasionT1027.009 Obfuscated Files: Embedded PayloadsEmbedded assembliesCoverage gap
Defense EvasionT1027.013 Obfuscated Files: Encrypted/Encoded FileBase64, AES-128-CBC, RC4Coverage gap
Defense EvasionT1027.015 Obfuscated Files: CompressionGZipStream, DEFLATECoverage gap
Defense EvasionT1027.016 Obfuscated Files: Junk Code Insertion450 nonfunctional comment linesNative hunt §7 (static AV/YARA)
Defense EvasionT1140 Deobfuscate/Decode Files or InformationRuntime decode/decrypt/decompress, interleaved-padding removalCoverage gap
Defense EvasionT1070.004 Indicator Removal: File DeletionDeletes the two temp fragment files after useCoverage gap
Defense EvasionT1620 Reflective Code LoadingAssembly.Load(byte[]) + entry-point invoke in-processCoverage gap (Falcon IOA/ML only)
Defense EvasionT1685 Disable or Modify ToolsAMSI patch / ETW-redirect attemptsQ8 (partial pivot)
Command and ControlT1105 Ingress Tool TransferPNG downloadQ6, Q7
Defense EvasionT1027.003 Obfuscated Files: SteganographyPayload hidden in the PNG iTXt chunkQ6, Q7 (network layer only)
Defense EvasionT1055.012 Process Injection: Process HollowingConditional native-EXE execution branchCoverage gap (Falcon IOA/Exploit Protection only)
07

Native Audit-Log Hunts

Non-CQL checks for organizations without full Falcon coverage on a given surface, or as corroborating pivots.

  1. Email gateway: search inbound mail for multi-volume archive attachments (.r00–.r99, .zip, .7z) containing script files, where SPF and/or DMARC evaluated to fail/none but the message was still delivered — that policy gap is exactly what let this sample through the sending gateway's own defenses. Cross-reference purchase-order / quotation lure language in the subject or body.
  2. Task Scheduler Operational log (Microsoft-Windows-TaskScheduler/Operational, Event ID 106 — task registered): filter for task names containing MicrosoftEdgeUpdateTaskCore, or for any task whose registering process is not taskeng.exe/svchost.exe (a task registered via COM from wscript.exe is anomalous). Note that genuine Edge Update tasks are named MicrosoftEdgeUpdateTaskMachineCore / MicrosoftEdgeUpdateTaskMachineUA — the missing "Machine" segment is itself a naming mismatch worth flagging.
  3. PowerShell Script Block Logging (Event ID 4104, Microsoft-Windows-PowerShell/Operational): hunt decoded script-block content for AES/GZipStream/Assembly.Load/entry-point patterns, and correlate 4104 events whose parent chain includes conhost.exe with a --headless flag.
  4. Sysmon Event ID 1 (Process Create) — the same lineage hunt as Q3 for non-Falcon estates: ParentImage=conhost.exe AND CommandLine contains --headless AND Image=powershell.exe.
  5. Windows Defender Operational log (Event ID 1116/1117): any detection naming this family, or generic loader/heuristic detections on files under %TEMP%\<random>\ or %LOCALAPPDATA%\Microsoft\PhotoEngine\.
  6. AMSI ETW telemetry (if instrumented): hunt for gaps in AMSI scan coverage for a PowerShell process immediately following the conhost.exe lineage — a missing AMSI scan record where one would normally be expected can indicate a successful patch of AmsiScanBuffer/AmsiScanString.
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · Script Host Executing a Double-Extension Script
CONF HIGHFP MEDIUMCOST LOW

Looks for: wscript.exe/cscript.exe executing a script whose name has a spoofed double extension immediately before .js/.vbs/.jse/.vbe — the LausivLoader lure pattern. FP: rare legitimate double-extension automation filenames.

// HUNT: Script Host Executing a Double-Extension Script
// MITRE: T1566.001, T1204.002, T1059.007
// CONF: high
// FP: medium
// COST: low
// REQUIRES: Falcon process telemetry (ProcessRollup2 / SyntheticProcessRollup2)
// FALSE POSITIVES: legitimate installers or IT scripts that name files with double extensions (rare); vendor update wrapper scripts
// TUNING: exclude known-good software-deployment paths (RMM script staging directories) and signed installer wrapper scripts once baselined
// LOOKBACK: 7d
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^(wscript|cscript)\.exe$/i
| CommandLine=/\.\.(js|jse|vbs|vbe)\b/i
| table([ComputerName, UserName, FileName, ParentBaseFileName, CommandLine, TargetProcessId, aid, @timestamp])
Q2 · conhost.exe Launching PowerShell with --headless
CONF HIGHFP LOWCOST LOW

Looks for: conhost.exe invoked directly with a --headless flag and a PowerShell target embedded in its own command line — the distinctive JS-to-PowerShell handoff mechanism. FP: essentially none observed; this is not how conhost.exe is normally invoked.

// HUNT: conhost.exe Launching PowerShell with --headless
// MITRE: T1564.003, T1059.001
// CONF: high
// FP: low
// COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: none commonly observed; conhost.exe is not normally invoked directly against a target executable with --headless by legitimate software
// TUNING: if a legitimate internal tool is found using this pattern, exclude it by SHA256HashData rather than by path (paths are trivially spoofable)
// LOOKBACK: 7d
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^conhost\.exe$/i
| CommandLine=/--headless/i
| CommandLine=/powershell\.exe/i
| table([ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, TargetProcessId, ParentProcessId_decimal, aid, @timestamp])
Q3 · Full Chain Correlation: Script Host → conhost --headless → Encoded PowerShell
CONF HIGHFP LOWCOST MEDIUM

Looks for: the complete three-generation process lineage (grandparent script host, parent conhost.exe --headless, child hidden/encoded PowerShell) in one query — the single highest-fidelity signature in this pack. FP: very low; requires all three unusual conditions to co-occur.

// HUNT: Full Chain Correlation - Script Host to conhost --headless to Encoded PowerShell
// MITRE: T1059.007, T1059.001, T1564.003
// CONF: high
// FP: low
// COST: medium
// REQUIRES: ProcessRollup2 with parent/grandparent lineage populated
// FALSE POSITIVES: rare; some legitimate hidden automation also uses -W Hidden -EncodedCommand, but the wscript-to-conhost---headless grandparent lineage is highly unusual outside this loader family
// TUNING: exclude known internal automation/RMM tooling that legitimately chains through conhost.exe in your environment, once confirmed benign ⚠ validate in tenant
// LOOKBACK: 7d
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^powershell\.exe$/i
| ParentBaseFileName=/^conhost\.exe$/i
| GrandparentBaseFileName=/^(wscript|cscript)\.exe$/i
| CommandLine=/-nop\b|-noprofile/i
| CommandLine=/-w\s+hidden|-windowstyle\s+hidden/i
| CommandLine=/-enc\b|-encodedcommand/i
| table([ComputerName, UserName, GrandparentBaseFileName, ParentBaseFileName, FileName, CommandLine, TargetProcessId, aid, @timestamp])
Q4 · Scheduled Task Persistence Masquerading as Edge Update
CONF HIGHFP LOWCOST LOW

Looks for: scheduled task registration matching the MicrosoftEdgeUpdateTaskCore masquerade name. FP: genuine Edge Update tasks are named MicrosoftEdgeUpdateTaskMachineCore/MicrosoftEdgeUpdateTaskMachineUA and run from Program Files, not a script host.

// HUNT: Scheduled Task Persistence Masquerading as Edge Update
// MITRE: T1053.005, T1036.004
// CONF: high
// FP: low
// COST: low
// REQUIRES: ScheduledTaskRegistered
// FALSE POSITIVES: legitimate Edge Update tasks use the "TaskMachineCore"/"TaskMachineUA" names and Program Files paths; a task named like this with a script-host action is not legitimate
// TUNING: if your fleet uses a custom deployment tool that names tasks similarly, add a !in(TaskExecutable, values=[...]) allowlist for your known-good updater binaries once baselined
// LOOKBACK: 7d
#event_simpleName=/ScheduledTaskRegistered/
| TaskName=/EdgeUpdateTaskCore/i
| table([ComputerName, UserName, TaskName, TaskExecutable, TaskAuthor, aid, @timestamp])
Q5 · wscript.exe Executing the Persisted Copy from PhotoEngine
CONF HIGHFP LOWCOST LOW

Looks for: logon-triggered re-execution of the persisted JS copy from its non-standard install path. FP: none expected — PhotoEngine\PhotoStudio.js is not a legitimate Microsoft or Adobe component path.

// HUNT: wscript.exe Executing the Persisted Copy from PhotoEngine
// MITRE: T1053.005, T1059.007
// CONF: high
// FP: low
// COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: none expected; PhotoEngine\PhotoStudio.js is not a legitimate Microsoft or Adobe component path
// TUNING: if your environment has a legitimate application that installs under a "PhotoEngine" folder (unlikely), scope an exclusion to its known publisher/hash rather than the path
// LOOKBACK: 7d
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^wscript\.exe$/i
| CommandLine=/PhotoEngine\\PhotoStudio\.js/i
| table([ComputerName, UserName, ParentBaseFileName, CommandLine, TargetProcessId, aid, @timestamp])
Q6 · DNS Resolution to the Stage-4 Payload Domain (yapw[.]life)
CONF MEDIUMFP LOWCOST LOW

Looks for: DNS resolution of the reported stage-4 payload host. FP: none expected for this exact domain; however this indicator is single-sourced and was already offline at analysis time — treat a hit as high-priority triage, not confirmed active infrastructure.

// HUNT: DNS Resolution to the Stage-4 Payload Domain (yapw.life)
// MITRE: T1105, T1027.003
// CONF: medium
// FP: low
// COST: low
// REQUIRES: DnsRequest
// FALSE POSITIVES: none expected for this specific domain; this indicator is perishable and single-sourced -- corroborate before treating a hit as confirmed compromise
// TUNING: retire or re-verify this query once the domain is confirmed dead beyond the pack's expiry window (see section 4 IOC table)
// LOOKBACK: 30d
#event_simpleName=/DnsRequest/
| DomainName=/^(.*\.)?yapw\.life$/i
| table([ComputerName, UserName, DomainName, ContextProcessId_decimal, aid, @timestamp])
Q7 · Rare Outbound HTTPS Destinations from a PowerShell Process (Stage-4 Egress Pivot)
CONF MEDIUMFP HIGHCOST MEDIUM

Looks for: rare/first-seen HTTPS destinations reached directly by powershell.exe, as a baseline-rarity pivot toward the stage-4 downloader's PNG fetch (Falcon's NetworkConnectIP4 carries no HTTP path, so exact filename matching on stego_*.png requires a proxy/URL-aware log source). FP: high in isolation — any legitimate PowerShell HTTPS call (Windows Update helper scripts, package managers, cloud PowerShell modules) trips this; use it as a pivot after a Q1–Q3 hit, not standalone.

// HUNT: Rare Outbound HTTPS Destinations from a PowerShell Process
// MITRE: T1105, T1027.003
// CONF: medium
// FP: high
// COST: medium
// REQUIRES: NetworkConnectIP4
// FALSE POSITIVES: very high standalone -- legitimate PowerShell HTTPS calls (Windows Update, PSGallery, cloud provider modules, package managers) are common; this query has no URL/path visibility, only destination rarity
// TUNING: do not alert on this standalone -- pivot from a Q6 hit, or once baselined exclude known-good SaaS/CDN ranges your PowerShell tooling normally reaches via !in()/!cidr()
// LOOKBACK: 7d
#event_simpleName=/NetworkConnectIP4/
| ContextBaseFileName=/^powershell\.exe$/i
| RemotePort=443
| groupBy([RemoteAddressIP4], function=[count(as=Hits), collect(ComputerName, limit=5)], limit=1000)
| sort(Hits, order=asc, limit=200)
Q8 · AMSI Script-Scan Telemetry Preceding a Hidden/Encoded PowerShell Launch
CONF LOW-MEDFP HIGHCOST MEDIUM

Looks for: AMSI script-scan events tied to PowerShell, as circumstantial context for stage 3's AMSI-patch attempt (this shows content submitted to AMSI before any patch takes effect, not the patch itself). FP: very high in isolation — nearly all legitimate PowerShell/VBA activity generates AMSI scan telemetry; only meaningful time-correlated with a Q2/Q3 hit on the same host.

// HUNT: AMSI Script-Scan Telemetry Preceding a Hidden/Encoded PowerShell Launch
// MITRE: T1140, T1685, T1059.001
// CONF: low-medium
// FP: high
// COST: medium
// REQUIRES: ScriptControlScanTelemetry
// FALSE POSITIVES: very high standalone -- almost all legitimate script execution generates AMSI scan telemetry; this only has value correlated to the process lineage in Q2/Q3 on the same aid within a short window
// TUNING: do not run standalone -- join or time-correlate against Q3 hits on the same aid/TargetProcessId, and exclude your RMM/patch-management PowerShell modules once baselined
// LOOKBACK: 7d
#event_simpleName=/ScriptControlScanTelemetry/
| ContextBaseFileName=/^powershell\.exe$/i
| table([ComputerName, UserName, ContextBaseFileName, aid, TargetProcessId, @timestamp])
09

CrowdStrike Custom IOA Recommendations

Q2, Q3, Q4, and Q5 have low enough false-positive profiles to promote to Custom IOAs. Q1, Q6, Q7, and Q8 stay as hunt/investigate-only queries (see §11 promotion criteria).

IOA NamePatternExclusionsDeployment Path
Headless conhost PowerShell LaunchAny parent, FileName is conhost.exe, AND CommandLine contains --headless AND CommandLine contains powershell.exeNone knownCustom IOA rule, start in Detect-only for 2 weeks before Block (source: Q2)
Script-Host-to-PowerShell via conhost ChainGrandparent wscript.exe/cscript.exe → parent conhost.exe --headless → child powershell.exe with hidden/encoded flagsAny confirmed internal automation using this exact chain (rare) — exclude by hash, not pathCustom IOA rule, Detect-only pilot first (source: Q3)
Edge-Update-Named Task Executing a Script HostTask name matches EdgeUpdate*TaskCore/*TaskUA pattern AND the task action executable is wscript.exe/cscript.exe/powershell.exe (none appear in genuine Edge Update tasks)Verify against your fleet's actual deployed Edge Update task hashes/paths once, before enabling BlockCustom IOA, can go to Block given near-zero legitimate overlap (source: Q4)
Persisted Script Execution from Non-Standard PhotoEngine Pathwscript.exe/cscript.exe executing any script under %LOCALAPPDATA%\Microsoft\PhotoEngine\Confirm no legitimate application installs there in your fleetBlock-capable after a 1-week Detect pilot (source: Q5)
10

Machine-Readable IOC Appendix

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
sha256,408b2df6e81824fa5bdf4f0fbd185a7e6db06e2be98fbeebce416f66954b9fa9,detect,high,2027-03-23,LausivLoader initial JS dropper,malware:LausivLoader
md5,7acd5c5f1689332615c03357e143f51e,detect,high,2027-03-23,LausivLoader initial JS dropper (MD5),malware:LausivLoader
sha256,e4130bf8769a50106a963b6a43dfd4fe5b56c70eae76a0de971d25993159acfe,detect,high,2027-03-23,LausivLoader first .NET loader / AMSI-patch stage,malware:LausivLoader
md5,5d92d1fb5d5fbd79a588f22e994a4aff,detect,high,2027-03-23,LausivLoader first .NET loader (MD5),malware:LausivLoader
sha256,be73e8b06c4356b5b4644d69b4f426bb3b32b4bf9f14cc5743f17532799f760b,detect,high,2027-03-23,LausivLoader second .NET downloader / PNG-stego stage,malware:LausivLoader
md5,f351968c76eefc80d4e292a3f179b7b9,detect,high,2027-03-23,LausivLoader second .NET downloader (MD5),malware:LausivLoader
domain,yapw.life,detect,medium,2026-12-23,LausivLoader stage-4 PNG-steganography payload host (offline at publication; single-sourced),malware:LausivLoader
Behavioral Signatureshunt on pattern, not value
# Behavioral indicators -- not literal atomic IOCs, hunt/detect on the pattern
conhost.exe launched with --headless AND a powershell.exe path/args in its own CommandLine
Process lineage: wscript.exe|cscript.exe -> conhost.exe (--headless) -> powershell.exe (-NoP -NonI -W Hidden -EncodedCommand)
Scheduled task action = wscript.exe //B //Nologo <path>, task name masquerading as MicrosoftEdgeUpdateTaskCore
wscript.exe executing a script under %LOCALAPPDATA%\Microsoft\PhotoEngine\
Script/archive filename containing a spoofed double extension immediately before .js/.vbs (e.g. "..js")
Named Malware / Toolingchain reference
Malware family: LausivLoader (multi-stage JS / PowerShell / .NET loader)
Stage 1: obfuscated JavaScript dropper (Windows Script Host)
Stage 2: PowerShell loader (AES-128-CBC + GZipStream, in-memory .NET assembly load)
Stage 3: .NET loader -- AMSI-patch attempt + RC4-decrypted embedded payload (315,904 bytes)
Stage 4: .NET downloader -- PNG steganography payload via iTXt chunk, marker FF 89 AD 4A, XOR + DEFLATE (59,904 bytes)
Persistence: scheduled task \MicrosoftEdgeUpdateTaskCore (Schedule.Service COM, logon trigger)
Persisted copy path: %LOCALAPPDATA%\Microsoft\PhotoEngine\PhotoStudio.js
Payload host (single-sourced, offline at publication): yapw.life/phpt/stego_zrgaixkku8.png
Patch / ASR / CA Auditpre-deployment verification
# Verify these controls are deployed BEFORE relying on detection alone
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids
# confirm D3E037E1-3EB8-44C8-A917-57927947596D and 5BEB7EFE-FD9A-4556-801D-275E5FFC04CC are present, Actions = 1 (Block)

Get-ScheduledTask | Where-Object {$_.TaskName -like "*EdgeUpdate*"} | Select-Object TaskName, TaskPath, Actions
# confirm no non-Microsoft actions on any Edge Update task

(Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging' -ErrorAction SilentlyContinue).EnableScriptBlockLogging
# expect 1

Get-Service CSFalconService | Select-Object Name, Status
# expect Running
11

Detection Validation Gates

Telemetry ready: ProcessRollup2/SyntheticProcessRollup2, ScheduledTaskRegistered, DnsRequest, and NetworkConnectIP4 are all standard Falcon sensor telemetry, ready by default on any modern sensor policy with process and network visibility enabled.

Benign baseline: run Q1, Q3, and Q7 read-only over a 30-day lookback before enabling any Custom IOA in Block mode; confirm zero hits, or that every hit is fully explained by known RMM/deployment tooling.

Positive tests: do not execute the live sample. Validate detection logic instead: (a) in an isolated lab VM, manually invoke conhost.exe --headless "%windir%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoP -NonI -W Hidden -Command "Write-Host test" and confirm Q2/Q3 fire; (b) register a benign test scheduled task named MicrosoftEdgeUpdateTaskCore with a wscript.exe action pointed at a harmless test script and confirm Q4 fires; (c) resolve a synthetic test domain in the same shape and confirm Q6's DnsRequest pattern match logic behaves as expected against your own test value.

Promotion criteria: Q2, Q3, Q4, Q5 → promote to Custom IOA in Detect mode after a clean 2-week benign baseline, then Block after a further clean 2-week pilot ring. Q1 and Q6 stay in Detect/hunt given their moderate-to-perishable FP profile. Q7 and Q8 remain investigate-only correlation pivots, never standalone alerts.

12

Hardening — Tiered

Immediate (this week)
  1. ASR rule — Block JavaScript/VBScript from launching downloaded executable content (D3E037E1-3EB8-44C8-A917-57927947596D) in Block mode. MITRE M1038. CIS Microsoft Windows Benchmark 18-9-47-5-1-6. Directly blocks the stage-1→stage-2 handoff pattern.
  2. ASR rule — Block execution of potentially obfuscated scripts (5BEB7EFE-FD9A-4556-801D-275E5FFC04CC) in Block mode. MITRE M1038, M1040. CIS 18-9-47-5-1-7. Targets the 450-junk-comment-line obfuscation technique directly. ⚠ Windows Defender AV must be active (or passive-mode alongside Falcon) for ASR to evaluate — confirm compatibility with your EDR vendor if Falcon is primary AV.
  3. Enable PowerShell ScriptBlock Logging and Module Logging (Event ID 4104). MITRE M1047. CIS 18-9-100-2/18-9-100-3. Restores visibility into the decoded -EncodedCommand content, even though the env-var payload paths themselves will not appear.
  4. Block executable/script content from the email gateway for archive attachments containing script files (.js/.vbs/.jse/.wsf) inside .zip/.r0x/.7z containers, and hard-fail delivery on SPF/DMARC failure. MITRE M1017, M1031, M1054. Client-side complement: ASR rule BE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550 (Block executable content from email client and webmail).
Near term (1–4 weeks)
  1. AppLocker/WDAC path rule blocking wscript.exe/cscript.exe execution from %TEMP%, %LOCALAPPDATA%, and archive-extraction staging paths for standard users; allow only signed/approved automation. MITRE M1038, M1033. ⚠ pilot ring first — some legitimate installers stage scripts in %TEMP%.
  2. Audit and lock down Task Scheduler task creation via COM (Schedule.Service) for non-admin users; review AD/GPO delegation on the \Microsoft\Windows\ scheduled-task folders. MITRE M1018, M1022, M1047.
  3. Restrict registry and Task Scheduler root write access; require elevation for new top-level task registration outside \Microsoft\Windows\... paths. MITRE M1024, M1022.
Strategic (1–3 months)
  1. PowerShell Constrained Language Mode / WDAC-enforced PowerShell policy fleet-wide, removing free-form -EncodedCommand from the standard user's effective capability set outside signed, allow-listed automation. MITRE M1042, M1038. ⚠ significant piloting required — breaks ad hoc admin scripting; needs a signed-script exception workflow.
  2. DNS-layer filtering (block newly-registered/uncategorized domains for standard endpoints) to catch stage-4 payload hosts like yapw[.]life before the fact, independent of any single atomic IOC's inevitable rotation. MITRE M1021, M1037. Vendor best-practice (Cisco Umbrella / Cloudflare Gateway category policy). ⚠ best-practice, no formal CIS benchmark entry for third-party DNS filtering products.
13

Deployable Playbooks

Playbook: LausivLoader Delivery & Execution-Chain Hardening (T1566.001, T1059.007, T1027)

MITRE: T1566.001, T1059.007, T1027 → M1038, M1040, M1047
Estimated deploy time: 2–3 hours (Immediate tier), plus a 1-week Audit-mode pilot for the ASR rules
Prerequisites: Windows 10 1809+ / Server 2019+, Microsoft Defender Antivirus present (active or passive alongside Falcon), local admin / GPO management rights
Reboot required: No for ASR rules and logging (take effect on next policy refresh / new process); Yes only if PowerShell v2 is also being removed in the same maintenance window

Step 1 — Enable ASR rule: Block JS/VBScript from launching downloaded executable content

What it does: Defender blocks JavaScript/VBScript from launching downloaded executable content.
Why it works: directly interrupts the stage-1-to-stage-2 handoff this loader depends on.

$asrRule = 'D3E037E1-3EB8-44C8-A917-57927947596D'
Set-MpPreference -AttackSurfaceReductionRules_Ids $asrRule -AttackSurfaceReductionRules_Actions AuditMode
Write-Output "ASR rule $asrRule set to Audit -- review Event ID 1122 for 1 week before Block"

GPO path: Computer Configuration > Administrative Templates > Windows Components > Microsoft Defender Antivirus > Microsoft Defender Exploit Guard > Attack Surface Reduction > Configure Attack Surface Reduction rules

Verify:

$ids = (Get-MpPreference).AttackSurfaceReductionRules_Ids
$actions = (Get-MpPreference).AttackSurfaceReductionRules_Actions
for ($i = 0; $i -lt $ids.Count; $i++) { if ($ids[$i] -eq 'D3E037E1-3EB8-44C8-A917-57927947596D') { "Action: $($actions[$i]) (1=Block, 2=Audit, 6=WarnUser)" } }

After a clean 1-week audit period, flip to Block:

Set-MpPreference -AttackSurfaceReductionRules_Ids 'D3E037E1-3EB8-44C8-A917-57927947596D' -AttackSurfaceReductionRules_Actions Enabled

Rollback:

Set-MpPreference -AttackSurfaceReductionRules_Ids 'D3E037E1-3EB8-44C8-A917-57927947596D' -AttackSurfaceReductionRules_Actions Disabled

Prerequisites: Defender AV present. Reboot required: No. Rollback: shown above — immediate, no reboot needed.

Step 2 — Enable ASR rule: Block execution of potentially obfuscated scripts

What it does: Defender blocks scripts that use heavy obfuscation (matches the 450-junk-comment-line technique).
Why it works: targets the obfuscation layer directly, independent of the specific lure filename.

$asrRule = '5BEB7EFE-FD9A-4556-801D-275E5FFC04CC'
Set-MpPreference -AttackSurfaceReductionRules_Ids $asrRule -AttackSurfaceReductionRules_Actions AuditMode
Write-Output "ASR rule $asrRule set to Audit -- review Event ID 1122 for 1 week before Block"

Verify: same pattern as Step 1, substituting the rule GUID.

Monitor for false positives: Event ID 1121 (Block) / 1122 (Audit) in Microsoft-Windows-Windows Defender/Operational. If a legitimate obfuscated script (rare) trips it, add a targeted exclusion:

Add-MpPreference -AttackSurfaceReductionOnlyExclusions 'C:\Program Files\YourTool\script.js'

Rollback:

Set-MpPreference -AttackSurfaceReductionRules_Ids '5BEB7EFE-FD9A-4556-801D-275E5FFC04CC' -AttackSurfaceReductionRules_Actions Disabled

Prerequisites: Defender AV present. Reboot required: No. Rollback: shown above.

Step 3 — Enable PowerShell ScriptBlock and Module Logging

What it does: logs decoded PowerShell script-block content to Event ID 4104.
Why it works: the env-var handoff hides file paths from the command line, but the decoded script block executed inside PowerShell still lands in this log once decrypted in memory.

$sbl = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging'
New-Item -Path $sbl -Force | Out-Null
New-ItemProperty -Path $sbl -Name 'EnableScriptBlockLogging' -Value 1 -PropertyType DWORD -Force | Out-Null

$ml = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging'
New-Item -Path $ml -Force | Out-Null
New-ItemProperty -Path $ml -Name 'EnableModuleLogging' -Value 1 -PropertyType DWORD -Force | Out-Null
Write-Output "ScriptBlock + Module logging enabled"

GPO path: Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell > Turn on PowerShell Script Block Logging → Enabled; and ... > Turn on Module Logging → Enabled, modules = *

Verify:

(Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging' -ErrorAction SilentlyContinue).EnableScriptBlockLogging
# expect 1
Get-WinEvent -LogName 'Microsoft-Windows-PowerShell/Operational' -MaxEvents 1 -ErrorAction SilentlyContinue

Rollback:

Remove-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging' -Name 'EnableScriptBlockLogging' -ErrorAction SilentlyContinue
Remove-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging' -Name 'EnableModuleLogging' -ErrorAction SilentlyContinue

Prerequisites: PowerShell 5.0+. Reboot required: No — applies to new PowerShell sessions immediately. Rollback: shown above, no reboot needed.

Step 4 — AppLocker path rule: block script hosts from staging/temp paths

What it does: denies wscript.exe/cscript.exe execution of scripts from %TEMP%, %LOCALAPPDATA%, and common archive-extraction staging directories for standard users.
Why it works: the delivery mechanism depends on the extracted JS running from exactly these paths; this closes the execution surface even if the ASR rules in Steps 1–2 are bypassed by a future variant.

# Run in an elevated PowerShell session; requires AppLocker policy already provisioned via GPO
$rule = New-AppLockerPolicy -RuleType Path -User Everyone -Action Deny `
  -PathCondition "%OSDRIVE%\Users\*\AppData\Local\Temp\*","%LOCALAPPDATA%\*" -Verbose
Write-Output "Review the generated rule, then merge into your AppLocker GPO in AUDIT mode first"

GPO path: Computer Configuration > Windows Settings > Security Settings > Application Control Policies > AppLocker > Script Rules — add a Deny path rule scoped to Everyone, then explicitly allow your known-good automation by publisher or hash.

Verify:

Get-AppLockerPolicy -Effective -Xml | Select-String "AppData\\Local\\Temp"

Rollback:

# Remove the specific Deny rule GUID from the AppLocker GPO and run:
gpupdate /force

Prerequisites: AppLocker policy infrastructure already provisioned (Application Identity service running); pilot ring with 2–4 weeks of Audit-mode logging before enforcing. Reboot required: No, but the Application Identity service must be running (a service restart, not a reboot). Rollback: shown above — remove the rule and force a GPO refresh; no reboot needed.

Deploying via your RMM

The scripts above are raw PowerShell. To wrap them for fleet deployment (admin check, error handling, custom-field writeback for compliance tracking, scheduled re-verification), hand them to your RMM deployment tooling and ask for a deployable package. Suggested custom-field schema: Hardening_LausivLoader_ASR_JSVBS, Hardening_LausivLoader_ASR_Obfuscated, Hardening_LausivLoader_PSLogging, Hardening_LausivLoader_AppLocker, Hardening_LausivLoader_LastChecked.

14

Containment Runbook

PhaseActionsOwnerEvidence
1. Isolate (0–1h)Network-contain the affected host in the Falcon console; disable (do not yet delete) the scheduled task \MicrosoftEdgeUpdateTaskCore via Falcon RTR or schtasks /Change /TN /DISABLE; suspend any compromised mailbox forwarding/inbox rules if this was the entry pointIR on-callFalcon RTR session log, task export, mailbox rule audit
2. Eradicate (1–4h)Kill any live wscript.exe/conhost.exe/powershell.exe process matching the chain; delete the persisted copy %LOCALAPPDATA%\Microsoft\PhotoEngine\PhotoStudio.js; delete the scheduled task; search-and-purge the original email/attachment fleet-wide via the mail gateway; sweep for the three published hashes fleet-wide (Q1–Q5 plus a direct Falcon IOC search)IR + endpoint engineeringRTR file/process listing, mail gateway purge report, fleet-wide hash-hit count
3. Recover (4–24h)Rotate credentials cached on the host if privilege-escalation or credential-theft indicators are found; re-enable network access only after a clean scan and a re-run of Q1–Q8 shows no further hits; restore from backup only if file/system integrity is in doubtEndpoint engineering + desktop supportPost-remediation scan report, 48h clean Falcon detection history
4. Lessons / Closeout (24–72h)Confirm the §12 hardening controls (ASR rules, ScriptBlock logging, mail gateway policy) are deployed fleet-wide, not just on the affected host; file a tracking item for the still-unidentified final payload (never recovered by SANS — the download URL was already offline); update this HuntPack's Changelog if new intel on the final payload or additional infrastructure surfacesDetection engineeringHardening deployment report, updated Changelog entry
15

Detection Coverage Map

TechniqueBehaviorCQLIOACoverage
T1566.001 Phishing AttachmentArchive + JS lure——PARTIAL native/email hunt only, no Falcon query
T1204.002 User ExecutionJS execution via WSHQ1—GOOD
T1059.007 JavaScript Executionwscript/cscript runs the JSQ1—GOOD
T1059.001 PowerShell ExecutionEncoded, hidden PowerShellQ2, Q3IOA1, IOA2GOOD
T1564.003 Hidden Windowconhost --headlessQ2, Q3IOA1, IOA2GOOD
T1053.005 Scheduled TaskMicrosoftEdgeUpdateTaskCoreQ4IOA3GOOD
T1036.004 MasqueradingEdge-Update-styled task nameQ4IOA3GOOD
T1053.005 (re-execution)Persisted JS fires at logonQ5IOA4GOOD
Env-var inter-process handoff (no sub-technique)Inherited process environment variables——GAP Falcon does not log per-process environment-variable contents; inferable only from surrounding lineage
T1027.009/.013/.015/.016 Obfuscation familyJunk comments, AES/RC4/GZip/DEFLATE——GAP in-memory transform, no raw event
T1140 Deobfuscate/DecodeRuntime decrypt/decompress——GAP
T1070.004 File DeletionDelete of 2 temp fragment files——GAP no confirmed generic file-delete event in the current Falcon reference set for this pack; native Sysmon Event ID 23 may help
T1620 Reflective Code LoadingAssembly.Load in-memory—Falcon IOA/ML onlyGAP
T1685 Disable or Modify ToolsAMSI patch attemptQ8 (pivot only)—PARTIAL
T1105 Ingress Tool TransferPNG downloadQ6, Q7—GOOD (perishable infrastructure)
T1027.003 SteganographyPayload hidden in PNG iTXtQ6, Q7 (network layer only)—PARTIAL we see the fetch, not the extraction
T1055.012 Process HollowingConditional native-EXE execution—Falcon IOA/Exploit Protection onlyGAP

See §11 for the full validation-gate procedure (telemetry readiness, benign baseline, safe positive testing, and promotion criteria) governing when Q2, Q3, Q4, and Q5 move from Detect to Block.

16

Hunt Summary Ticket

TITLE:      LausivLoader -- Multi-Stage JS/PowerShell/.NET Loader Hunt
SEVERITY:   Medium (single primary source; technically high-fidelity)
SCOPE:      Windows endpoints with email/script-host exposure; Falcon-monitored fleet
HYPOTHESIS: A script host (wscript.exe/cscript.exe) launches a JS lure that hands
            decode context to PowerShell via inherited environment variables through
            an intermediate conhost.exe --headless process, then persists via a
            scheduled task masquerading as Microsoft Edge Update, before staging a
            4-layer loader chain that fetches a steganographic PNG payload.
QUERIES:    Q1-Q8 (section 8); IOA1-IOA4 (section 9)
DO FIRST:   Run Q3 (full chain correlation) and Q4 (scheduled task masquerade) --
            highest fidelity, lowest FP, cover both the execution chain and the
            persistence mechanism independently of payload content.
FINDINGS:   [populate after first run -- host count, hit count, confirmed vs. FP]
GAPS:       Env-var handoff itself, in-memory AES/RC4/GZip/DEFLATE transforms, AMSI
            patch bytes, and the final reflective-load/process-hollowing step are not
            independently visible via standard Falcon telemetry (see section 15).
            Final payload family was never recovered by the primary source.
ACTIONS:    Deploy section 12 Immediate-tier hardening (2 ASR rules, PS logging, mail
            gateway attachment policy) this week; run section 11 benign baseline
            before promoting Q2/Q3/Q4/Q5 to Custom IOA Block mode.
OWNER:      HuntPack / detection engineering
VERSION:    v0.1 -- 2026-09-23
17

Changelog

v0.12026-09-23Initial HuntPack build from SANS ISC diary 33348 (Jan Kopriva, published 2026-09-17, last updated 2026-09-22). 8 CQL hunt queries, 4 Custom IOA candidates, tiered hardening playbook, and containment runbook. Author: HuntPack.
18

References

TierSourceUsed ForAccess Date
1SANS ISC diary 33348 — "LausivLoader analysis, or how to pass data between malware stages" (Jan Kopriva)Primary technical analysis, full IOC set, the handlers' own ATT&CK mapping2026-09-23
1SANS Stormcast, 2026-09-18 (Johannes Ullrich)Same-organization corroboration / no-retraction check2026-09-23
3malware.news repostSyndication check — confirmed no divergent detail2026-09-23
3OffSeq Threat Radar summaryAI-generated severity triage cue ("medium")2026-09-23
—MITRE ATT&CK Mitigations referenceM-code citations in section 12 (M1017, M1018, M1021, M1022, M1024, M1031, M1033, M1037, M1038, M1040, M1042, M1047, M1054)2026-09-23
—Microsoft Defender ASR rules referenceASR rule GUIDs used in the hardening playbook2026-09-23
—CIS Microsoft Windows Benchmark (controls 18-9-47-5-1-6, 18-9-47-5-1-7, 18-9-47-5-1-10, 18-9-100-2, 18-9-100-3)Hardening control citations, via the HuntPack-Pipeline threat-hardening-v2 reference set2026-09-23