Ontinue researchers have detailed a four-stage attack chain delivering Psychedelic Stealer, an infostealer sold as part of a broader malware-as-a-service platform called Lunex. The campaign targets Ukrainian-speaking users through compromised Ukrainian websites that display ClickFix-style fake Cloudflare CAPTCHA verification pages — the same social-engineering pattern we've watched explode across the threat landscape since 2024 and into 2026.
What elevates this campaign above commodity stealer noise is the final-stage tradecraft: the operators drop and load a vulnerable AMD driver to terminate or blind security tooling — a classic Bring Your Own Vulnerable Driver (BYOVD) technique — before harvesting browser credentials. No CVE is publicly associated with this specific abuse at the time of writing; the driver abuse itself is the story, and it is a fully present-tense, actively-distributed threat.
If your SOC is not hunting for browser-spawned script interpreters, user-writable driver loads, and non-browser processes touching browser credential stores, you have a blind spot this campaign is built to walk through.
Introduction: Why This Matters Right Now
Three converging trends make this campaign worth your immediate attention:
- ClickFix has industrialized social engineering. Fake CAPTCHA pages instructing users to paste a malicious command into a Run dialog or PowerShell window bypass nearly every email gateway, attachment sandbox, and URL rewriter on the market — because the user is the execution vector. There is no malicious attachment to detonate.
- MaaS platforms like Lunex lower the bar. Affiliates with no development skill can rent a stealer with BYOVD capability, meaning EDR-kill tradecraft that used to belong to ransomware crews is now in the hands of low-tier credential thieves.
- BYOVD against commodity EDR is working. Every time a stealer successfully disables monitoring before touching
Login Data, your last line of defense — the browser credential vault — is exposed with no telemetry to alert on.
The victimology is currently Ukraine-focused, but MaaS distribution means the same builder, the same fake-CAPTCHA kit, and the same driver will be pointed at other regions. Treat the TTPs as globally relevant today.
Technical Analysis
Affected Products and Platforms
- Delivery surface: Compromised Ukrainian websites serving fake Cloudflare verification (CAPTCHA) interstitials
- Target platforms: Windows endpoints with Chromium- and Gecko-based browsers (credential stores are the objective)
- Security controls targeted: Endpoint EDR/AV processes terminated via a vulnerable signed AMD kernel driver (BYOVD, MITRE ATT&CK T1562.001 / T1068)
- Threat platform: Lunex malware-as-a-service; payload branded Psychedelic Stealer
Attack Chain (Defender's View)
Stage 1 — Lure. The victim lands on a compromised Ukrainian site and is presented with a fake Cloudflare "verify you are human" page. The page instructs the user to press Win+R, paste clipboard contents (silently placed there by the page's JavaScript), and press Enter. MITRE ATT&CK: T1204.002 (User Execution: Malicious File/Command).
Stage 2 — Initial execution. The pasted command launches a script interpreter — typically mshta.exe, powershell.exe, or cmd.exe — spawned in the context of the user's interaction with the browser session. This retrieves the next-stage payload from attacker infrastructure.
Stage 3 — Defense impairment (BYOVD). The payload writes a legitimate, signed but vulnerable AMD driver to a user-writable location (%TEMP%, %APPDATA%, %PUBLIC%), creates a service to load it, and uses the driver's kernel access to terminate or unhook EDR/AV processes. Key forensic artifacts: a driver service created by a non-system user process, and a kernel driver loaded from a non-standard path.
Stage 4 — Credential theft and exfiltration. With monitoring impaired, the stealer enumerates browser profile directories (%LOCALAPPDATA%\Google\Chrome\User Data\, %APPDATA%\Mozilla\Firefox\Profiles\, Edge, Brave, Opera), reads Login Data, Cookies, Web Data, and Local State, decrypts what it can, and exfiltrates over HTTPS.
Exploitation Status
- Actively distributed in the wild via MaaS affiliates; confirmed by Ontinue's research.
- No CVE has been published for the abused AMD driver in this reporting; the weakness is a signed-driver abuse pattern, not a newly disclosed patchable bug. Do not wait for a CVE to act — the mitigations are behavioral and configuration-based.
- Not listed in CISA KEV at time of writing (no CVE exists to list).
Detection & Response
The detections below target the highest-signal links in the chain: browser-adjacent script execution (ClickFix), driver loads from user-writable paths (BYOVD), and non-browser access to browser credential stores (theft stage). Each was chosen because it survives tuning in a real enterprise environment.
SIGMA Rules
---
title: ClickFix-Style Browser-Spawned Script Execution
id: 1f4a9c62-8e3d-4b71-a592-6c7d8e9f0a1b
status: experimental
description: Detects mshta, powershell, or rundll32 launched directly by a web browser, consistent with ClickFix fake-CAPTCHA paste-execution lures such as those delivering Lunex/Psychedelic Stealer.
references:
- https://thehackernews.com/2026/09/lunex-stealer-abuses-amd-driver-to.html
- https://attack.mitre.org/techniques/T1204/002/
- https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/09/10
tags:
- attack.execution
- attack.t1204.002
- attack.t1059
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\chrome.exe'
- '\msedge.exe'
- '\firefox.exe'
- '\brave.exe'
- '\opera.exe'
selection_child:
Image|endswith:
- '\mshta.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\rundll32.exe'
- '\wscript.exe'
- '\cscript.exe'
condition: selection_parent and selection_child
falsepositives:
- Rare legitimate enterprise browser extensions or internal tooling that shell out to script hosts
level: high
---
title: Kernel Driver Service Created From User-Writable Path (BYOVD)
id: 2b5c8d71-4f6a-4e92-b381-7d8e9f0a1b2c
status: experimental
description: Detects creation of a kernel driver service whose binary resides in a user-writable directory, a hallmark of BYOVD attacks such as Lunex Stealer loading a vulnerable AMD driver to terminate EDR processes.
references:
- https://thehackernews.com/2026/09/lunex-stealer-abuses-amd-driver-to.html
- https://attack.mitre.org/techniques/T1562/001/
- https://attack.mitre.org/techniques/T1068/
author: Security Arsenal
date: 2026/09/10
tags:
- attack.defense_evasion
- attack.t1562.001
- attack.privilege_escalation
- attack.t1068
logsource:
category: process_creation
product: windows
detection:
selection_sc:
Image|endswith: '\sc.exe'
CommandLine|contains:
- 'create'
- 'type= kernel'
selection_path:
CommandLine|contains:
- '\AppData\'
- '\Temp\'
- '\Public\'
- '\ProgramData\'
- '\Downloads\'
condition: selection_sc and selection_path
falsepositives:
- Legitimate driver installers staging from ProgramData are rare but possible; validate signer and service name
level: critical
---
title: Non-Browser Process Accessing Browser Credential Stores
id: 3c6d9e82-5a7b-4f03-c492-8e9f0a1b2c3d
status: experimental
description: Detects processes other than the browser itself reading Chrome, Edge, Firefox, or other browser credential databases, consistent with infostealer behavior observed in Psychedelic Stealer after EDR impairment.
references:
- https://thehackernews.com/2026/09/lunex-stealer-abuses-amd-driver-to.html
- https://attack.mitre.org/techniques/T1555/003/
author: Security Arsenal
date: 2026/09/10
tags:
- attack.credential_access
- attack.t1555.003
logsource:
category: file_access
product: windows
detection:
selection_files:
TargetFilename|contains:
- '\User Data\Default\Login Data'
- '\User Data\Default\Cookies'
- '\User Data\Local State'
- '\Firefox\Profiles\'
- '\logins.json'
- '\key4.db'
exclusion_browsers:
Image|endswith:
- '\chrome.exe'
- '\msedge.exe'
- '\firefox.exe'
- '\brave.exe'
- '\opera.exe'
condition: selection_files and not exclusion_browsers
falsepositives:
- Enterprise backup agents, DLP scanners, and some password managers; allowlist known-good processes by hash
level: high
KQL (Microsoft Sentinel / Defender)
// Hunt: ClickFix lure + BYOVD staging + credential store access (Lunex / Psychedelic Stealer)
// Part 1: Browser-spawned script interpreters (ClickFix paste-execution)
let Browsers = dynamic(["chrome.exe","msedge.exe","firefox.exe","brave.exe","opera.exe"]);
let ScriptHosts = dynamic(["mshta.exe","powershell.exe","pwsh.exe","rundll32.exe","wscript.exe","cscript.exe","cmd.exe"]);
DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where InitiatingProcessFileName in~ (Browsers)
| where FileName in~ (ScriptHosts)
| project TimeGenerated, DeviceName, AccountName, InitiatingProcessFileName,
InitiatingProcessCommandLine, FileName, ProcessCommandLine, SHA256, ReportId
| sort by TimeGenerated desc;
// Part 2: Driver files written to user-writable paths (BYOVD staging of AMD driver)
DeviceFileEvents
| where TimeGenerated > ago(14d)
| where FileName endswith ".sys"
| where FolderPath has_any ("\\AppData\\","\\Temp\\","\\Public\\","\\Downloads\\","\\ProgramData\\")
| project TimeGenerated, DeviceName, InitiatingProcessAccountName,
InitiatingProcessFileName, InitiatingProcessCommandLine, FolderPath, FileName, SHA256;
// Part 3: Suspicious .sys loads reported by Defender tamper/driver telemetry
DeviceEvents
| where TimeGenerated > ago(14d)
| where ActionType has_any ("DriverLoad","IoCreateDriver")
| where FileName has_any ("amd") or AdditionalFields has "amd"
| where FolderPath !has "\\System32\\drivers\\"
| project TimeGenerated, DeviceName, ActionType, FileName, FolderPath,
InitiatingProcessFileName, InitiatingProcessCommandLine, AdditionalFields;
Velociraptor VQL
-- Hunt: BYOVD staging and stealer artifacts (Lunex / Psychedelic Stealer)
-- Look for .sys drivers in user-writable paths AND processes touching browser credential stores
SELECT Pid, Name, CommandLine, Exe, Username, CreateTime
FROM pslist()
WHERE Exe =~ '(?i)\\(AppData|Temp|Public|Downloads)\\.*\.(exe|dll|sys)$'
OR CommandLine =~ '(?i)(Login Data|Local State|logins\.json|key4\.db|sc\.exe.*type=.*kernel)'
-- Enumerate staged driver files in user-writable locations
SELECT FullPath, Size, Mtime, Ctime
FROM glob(globs='C:/Users/*/AppData/**/*.sys')
WHERE Mtime > now() - 1209600 -- last 14 days
Remediation / Verification Script
# Lunex/Psychedelic Stealer defensive posture check + hardening (run as Administrator)
# 1. Verify Microsoft Vulnerable Driver Blocklist is enabled (blocks known-abused signed drivers)
$vdb = Get-CimInstance -Namespace "root\Microsoft\Windows\DeviceGuard" -ClassName Win32_DeviceGuard -ErrorAction SilentlyContinue
if ($vdb) {
Write-Host "[+] VBS/HVCI Services Running: $($vdb.SecurityServicesRunning)"
Write-Host "[+] VBS Services Configured: $($vdb.SecurityServicesConfigured)"
} else {
Write-Host "[-] Device Guard WMI class unavailable - verify Windows 10 1809+/Win11"
}
# 2. Enable the Vulnerable Driver Blocklist if not configured (1 = enabled)
$vdbPath = "HKLM:\SYSTEM\CurrentControlSet\Control\CI\Config"
$vdbValue = (Get-ItemProperty -Path $vdbPath -Name VulnerableDriverBlocklistEnable -ErrorAction SilentlyContinue).VulnerableDriverBlocklistEnable
if ($vdbValue -ne 1) {
Set-ItemProperty -Path $vdbPath -Name VulnerableDriverBlocklistEnable -Value 1
Write-Host "[!] Vulnerable Driver Blocklist ENABLED - reboot required"
} else {
Write-Host "[+] Vulnerable Driver Blocklist already enabled"
}
# 3. Block mshta child execution vector via Attack Surface Reduction rule (ClickFix mitigation)
# ASR rule: Block abuse of exploited vulnerable signed drivers = 56a863a9-875e-4185-98a7-b882c64b5ce5
Add-MpPreference -AttackSurfaceReductionRules_Ids "56a863a9-875e-4185-98a7-b882c64b5ce5" -AttackSurfaceReductionRules_Actions Enabled
# ASR rule: Block process creations from PSExec/WMI + Office/script abuse (adjacent hardening)
Add-MpPreference -AttackSurfaceReductionRules_Ids "d1e49aac-8f56-4280-b9ba-993a6d77406c" -AttackSurfaceReductionRules_Actions Enabled
Write-Host "[+] ASR rules applied: vulnerable signed driver block + suspicious child processes"
# 4. Audit for staged .sys files in user-writable paths from the last 14 days
$paths = @("$env:SystemDrive\Users\*\AppData","$env:SystemDrive\Users\Public","$env:SystemDrive\ProgramData")
Get-ChildItem -Path $paths -Recurse -Filter *.sys -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-14) } |
Select-Object FullName, Length, LastWriteTime |
Format-Table -AutoSize
Write-Host "[*] Review any .sys files above - drivers do not belong in user directories"
# 5. Enumerate recently created kernel driver services by non-standard paths
Get-CimInstance Win32_SystemDriver |
Where-Object { $_.PathName -notmatch 'system32|SysWOW64|Program Files|Windows' -and $_.PathName -ne $null } |
Select-Object Name, DisplayName, State, StartMode, PathName |
Format-Table -AutoSize
Remediation and Hardening Guidance
There is no patch to apply — this is a configuration and behavioral problem. Prioritize the following:
1. Neutralize the ClickFix lure (highest ROI).
- Train users on the specific pattern: no legitimate website will ever ask you to press Win+R and paste a command. Cloudflare verification never requires clipboard interaction.
- Consider GPO/AppLocker/WDAC restrictions blocking
mshta.exeandpowershell.exefrom being spawned by browser processes — this kills the technique outright for standard users. - Disable the Run dialog for non-administrative users where operationally feasible (
NoRunGPO), and restrictWin+Rworkflows in high-risk user populations.
2. Close the BYOVD gap.
- Enable the Microsoft Vulnerable Driver Blocklist (enabled by default on Windows 11 22H2+ with memory integrity; verify on your fleet — see script above).
- Deploy the ASR rule Block abuse of exploited vulnerable signed drivers (
56a863a9-875e-4185-98a7-b882c64b5ce5) in block mode after an audit window. - Ensure your EDR tamper protection is enabled fleet-wide and alert on any EDR service stop or sensor heartbeat loss — a stealer that kills your EDR should itself be your loudest alert.
3. Protect the credential stores.
- Enforce browser App-Bound Encryption support by keeping Chrome/Edge current; migrate master passwords out of browsers into an enterprise password manager.
- Alert on non-browser processes reading
Login Data,Cookies,Local State,logins.json, andkey4.db(rules provided above). - Assume compromise post-detection: force enterprise-wide credential resets for any affected user, revoke session tokens, and review MFA enrollment for newly registered factors.
4. Network controls.
- Block newly registered domains at the DNS/proxy layer — ClickFix lure pages and stealer C2 overwhelmingly live on fresh infrastructure.
- Alert on clipboard-write events from untrusted web content where your browser management tooling supports it (enterprise browser policies can restrict clipboard permissions per-site).
5. Threat hunting cadence. Run the KQL and VQL hunts above weekly for the next 30 days, and permanently onboard the BYOVD service-creation Sigma rule. The Lunex platform will be resold, rebranded, and retargeted — the TTPs will outlive the brand name.
The Bottom Line
Psychedelic Stealer via Lunex is not sophisticated because of zero-days — it's effective because it chains three things most environments leave open: user-executed commands, vulnerable signed drivers, and unmonitored browser credential stores. Every one of those is closable today with native Microsoft controls and the detections in this post. The organizations that get hit by MaaS stealers in 2026 are the ones still treating driver loads and EDR heartbeat loss as background noise.
Related Resources
Security Arsenal Managed SOC Services AlertMonitor Platform Book a SOC Assessment soc-mdr Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.