Back to Intelligence

Psychedelic Stealer: Fake CAPTCHA-Driven Infostealer Campaign Targeting Ukrainian Businesses — OTX Pulse Analysis & Enterprise Detection Pack

SA
Security Arsenal Team
October 25, 2026
12 min read

Intelligence Category: Infostealer & Credential Theft Campaigns
Source Pulse: The Psychedelic Stealer: When a CAPTCHA Becomes an Installer (AlienVault, 2026-10-25, TLP:WHITE)
Targeted Countries: Ukraine, United States of America
Urgency: HIGH — Active credential theft and session hijacking risk


Threat Summary

Arctic Wolf Labs telemetry, now indexed in AlienVault OTX, reveals an active and ongoing campaign in which adversaries compromise legitimate Ukrainian business websites and inject malicious iframes that render a Ukrainian-language fake Cloudflare verification page. This is a classic ClickFix-style social engineering attack: the victim is presented with what appears to be a routine bot-check CAPTCHA, but interaction with the page silently copies a Windows Installer (msiexec) command to the clipboard and instructs the user — in their native language — to paste it into the Windows Run dialog (Win+R).

The result is a fully user-assisted infection chain that bypasses most email gateways, attachment sandboxes, and exploit-focused defenses. The retrieved MSI package (elita.msi) delivers the Psychedelic infostealer, a commodity credential-theft malware that targets browser-stored credentials, session cookies, cryptocurrency wallets, and autofill data.

The strategic objective is clear: mass credential harvesting from Ukrainian business personnel and, secondarily, U.S.-based victims who interact with the compromised Ukrainian web properties. Stolen credentials are almost certainly being monetized on dark web markets or used for follow-on intrusion, BEC, and espionage-adjacent operations given the geographic targeting.


Threat Actor / Malware Profile

Malware Family: Psychedelic Stealer

AttributeDetail
TypeInfostealer / Credential Harvester
DistributionCompromised legitimate websites + injected iframes + fake CAPTCHA (ClickFix technique)
Payload Deliverymsiexec command copied to clipboard; user pastes into Run dialog; retrieves MSI from uasputnik.com/elita.msi
Social Engineering LanguageUkrainian (localized fake Cloudflare page: uasputnik.com/sputnik.html)
Primary TargetsBrowser credentials, cookies/session tokens, autofill data, crypto wallets, FTP/VPN client credentials
AttributionUnknown (unattributed threat actor)

Attack Chain

  1. Initial Access (T1189 — Drive-by Compromise): Adversary compromises legitimate Ukrainian business websites and injects malicious iframes.
  2. Social Engineering (T1204.001 — User Execution via Malicious Link / ClickFix): Fake Cloudflare CAPTCHA page prompts user interaction.
  3. Clipboard Hijack (T1115 — Clipboard Data): JavaScript on the fake page writes an msiexec command to the victim's clipboard.
  4. Execution (T1218.007 — Signed Binary Proxy Execution: Msiexec): Victim pastes the command into Win+R, executing msiexec against a remote MSI URL.
  5. Payload Retrieval: MSI package (elita.msi) is downloaded from attacker-controlled infrastructure (uasputnik.com).
  6. Collection & Exfiltration (T1555 — Credentials from Password Stores; T1052 — Exfil over C2): Psychedelic stealer harvests browser credential stores, cookies, and other secrets, then exfiltrates to C2.

Key Behaviors of Interest to Defenders

  • User-assisted msiexec execution against remote URLs — the single most reliable high-fidelity detection point.
  • Clipboard write events originating from browser processes immediately preceding Run dialog invocation.
  • MSI package staging — temporary MSI files written to %TEMP%, %APPDATA%, or user profile directories.
  • Browser credential store access — reads against Chrome Login Data, Cookies, Edge Login Data, Firefox logins.json.

IOC Analysis

The OTX pulse provides 9 indicators across three types:

TypeCountExampleOperational Use
FileHash-SHA256206f434695f93d7fd11eeff71358ff69fed79d310a66d993bbcc4ff979c117c90Block at EDR/AV; hash-sweep across endpoints
URL2https://uasputnik.com/elita.msi, https://uasputnik.com/sputnik.htmlDNS sinkhole; proxy/SWG block; retro-hunt in proxy logs
CVE4CVE-2026-85102, CVE-2026-85103, CVE-2026-84869, CVE-2026-76461Likely related to compromised web application vector; cross-reference with web server patch posture

SOC Operationalization Guidance:

  • SHA256 hashes should be pushed to EDR blocklists (CrowdStrike, Defender for Endpoint, SentinelOne) and swept across all endpoints via Live Response or equivalent.
  • URLs/domains (uasputnik.com) must be sinkholed at DNS (RPZ), blocked at the secure web gateway, and retro-hunted in proxy, DNS, and firewall logs for the past 30+ days.
  • CVEs referenced in the pulse likely correspond to vulnerabilities in the CMS or plugins running on compromised Ukrainian sites. If your organization operates web properties, validate patch levels for these CVEs immediately.
  • Tools like CyberChef, VirusTotal, MalwareBazaar, and ANY.RUN can be used to pivot on the hashes and URLs for additional context and related samples.

Detection Engineering

YAML
---
title: Psychedelic Stealer - Msiexec Remote MSI Execution via ClickFix Fake CAPTCHA
id: a1b2c3d4-psyc-0001-0001-000000000001
status: experimental
description: Detects msiexec.exe executing with a URL argument to install a remote MSI package, consistent with ClickFix fake CAPTCHA campaigns delivering Psychedelic stealer (T1218.007)
author: Security Arsenal Threat Intelligence
date: 2026/10/25
references:
  - https://arcticwolf.com/resources/blog/psychedelic-stealer-fake-clickfix-captcha-targets-ukraine/
  - https://otx.alienvault.com
tags:
  - attack.execution
  - attack.t1218.007
  - attack.t1204.001
  - attack.t1189
logsource:
  category: process_creation
  product: windows
detection:
  selection_img:
    Image|endswith: '\msiexec.exe'
  selection_cmd:
    CommandLine|contains:
      - 'http://'
      - 'https://'
  selection_protocol:
    CommandLine|contains:
      - '/i'
      - '/quiet'
      - '/qn'
  condition: selection_img and selection_cmd and selection_protocol
falsepositives:
  - Legitimate enterprise software deployment via MSI over HTTP (rare; SCCM typically uses SMB or HTTPS from internal servers)
level: high
---
title: Psychedelic Stealer - Clipboard Write Followed by Run Dialog Execution
id: a1b2c3d4-psyc-0002-0002-000000000002
status: experimental
description: Detects browser process writing to clipboard followed within 60 seconds by explorer.exe spawning msiexec, indicating ClickFix clipboard-hijack execution chain
tags:
  - attack.collection
  - attack.t1115
  - attack.execution
  - attack.t1204.001
  - attack.t1218.007
author: Security Arsenal Threat Intelligence
date: 2026/10/25
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|endswith: '\explorer.exe'
  selection_img:
    Image|endswith: '\msiexec.exe'
  selection_cmd_url:
    CommandLine|contains:
      - 'http'
      - '.msi'
  condition: selection_parent and selection_img and selection_cmd_url
falsepositives:
  - IT administrators running remote MSI installs via Run dialog
level: critical
---
title: Psychedelic Stealer - Browser Credential Store Access
id: a1b2c3d4-psyc-0003-0003-000000000003
status: experimental
description: Detects non-browser processes accessing Chrome, Edge, or Firefox credential and cookie stores, consistent with Psychedelic infostealer data collection (T1555.003)
tags:
  - attack.credential_access
  - attack.t1555.003
  - attack.t1555
author: Security Arsenal Threat Intelligence
date: 2026/10/25
logsource:
  category: file_event
  product: windows
detection:
  selection_chrome:
    TargetFilename|contains:
      - '\Google\Chrome\User Data\Default\Login Data'
      - '\Google\Chrome\User Data\Default\Cookies'
      - '\Google\Chrome\User Data\Default\Web Data'
  selection_edge:
    TargetFilename|contains:
      - '\Microsoft\Edge\User Data\Default\Login Data'
      - '\Microsoft\Edge\User Data\Default\Cookies'
  selection_firefox:
    TargetFilename|contains:
      - '\Mozilla\Firefox\Profiles\'
      - 'logins.json'
      - 'cookies.sqlite'
  filter_browsers:
    Image|endswith:
      - '\chrome.exe'
      - '\msedge.exe'
      - '\firefox.exe'
      - '\msmpeng.exe'
      - '\explorer.exe'
  condition: (selection_chrome or selection_edge or selection_firefox) and not filter_browsers
falsepositives:
  - Backup software accessing user profile directories
  - Enterprise DLP agents scanning browser data stores
level: high
KQL — Microsoft Sentinel / Defender
// Psychedelic Stealer Hunt — Fake CAPTCHA ClickFix Campaign
// Hunt for msiexec remote URL execution + C2 beaconing to uasputnik.com
// Microsoft Sentinel / Defender for Endpoint Advanced Hunting
// Author: Security Arsenal Threat Intelligence | 2026-10-25

let Lookback = 30d;
let SuspiciousMSIHosts = dynamic(["uasputnik.com"]);

// Query 1: msiexec spawning with HTTP/S URL arguments (ClickFix execution)
let MsiexecRemote = DeviceProcessEvents
| where TimeGenerated > ago(Lookback)
| where FileName =~ "msiexec.exe"
| where ProcessCommandLine has_any ("http://", "https://")
| where ProcessCommandLine has_any ("/i", "/qn", "/quiet")
| project TimeGenerated, DeviceName, AccountName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, SHA256, DeviceId
| extend DetectionType = "Msiexec_Remote_URL";

// Query 2: Network connections to known Psychedelic C2 / delivery infrastructure
let NetworkIOC = DeviceNetworkEvents
| where TimeGenerated > ago(Lookback)
| where RemoteUrl has_any (SuspiciousMSIHosts) or RemoteUrl contains "elita.msi" or RemoteUrl contains "sputnik.html"
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl, RemoteIP, RemotePort, DeviceId
| extend DetectionType = "Network_IOCs_uasputnik";

// Query 3: Hash-based detection for known Psychedelic payloads
let HashIOC = DeviceProcessEvents
| where TimeGenerated > ago(Lookback)
| where SHA256 in (
    "06f434695f93d7fd11eeff71358ff69fed79d310a66d993bbcc4ff979c117c90",
    "38e90affe37342ee36917cdc535fe9bf04589afa8430eb8d1ba1016adcfc1878"
  )
| project TimeGenerated, DeviceName, AccountName, FileName, FolderPath, SHA256, ProcessCommandLine, DeviceId
| extend DetectionType = "Hash_IOC_Psychedelic";

// Query 4: Non-browser processes accessing browser credential stores
let CredStoreAccess = DeviceFileEvents
| where TimeGenerated > ago(Lookback)
| where FolderPath has_any (
    "Chrome\\User Data\\Default\\Login Data",
    "Chrome\\User Data\\Default\\Cookies",
    "Edge\\User Data\\Default\\Login Data",
    "Edge\\User Data\\Default\\Cookies",
    "Firefox\\Profiles"
  )
| where not(InitiatingProcessFileName has_any ("chrome.exe", "msedge.exe", "firefox.exe", "MsMpEng.exe", "explorer.exe", "SearchIndexer.exe"))
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, FolderPath, FileName, DeviceId
| extend DetectionType = "Credential_Store_Access";

// Union all detection types
union MsiexecRemote, NetworkIOC, HashIOC, CredStoreAccess
| sort by TimeGenerated desc
PowerShell
# Psychedelic Stealer IOC & Artifact Hunt Script
# Security Arsenal Threat Intelligence | 2026-10-25
# Run on suspect endpoints or deploy via GPO/SCCM/Intune for fleet-wide sweep
# Requires: PowerShell 5.1+, local admin recommended

$ErrorActionPreference = 'SilentlyContinue'
$ReportPath = "$env:TEMP\Psychedelic_Hunt_Report_$(Get-Date -Format 'yyyyMMdd_HHmmss').txt"
$Findings = @()

function Write-Finding($Category, $Detail) {
    $entry = "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] [$Category] $Detail"
    $script:Findings += $entry
    Write-Host $entry -ForegroundColor Red
}

Write-Host "=== Psychedelic Stealer IOC Hunt ===" -ForegroundColor Cyan
Write-Host "Scanning host: $env:COMPUTERNAME`n" -ForegroundColor Cyan

# ── 1. Known SHA256 Hashes ──
$KnownHashes = @(
    '06f434695f93d7fd11eeff71358ff69fed79d310a66d993bbcc4ff979c117c90',
    '38e90affe37342ee36917cdc535fe9bf04589afa8430eb8d1ba1016adcfc1878'
)

Write-Host "[1/6] Checking for known malicious file hashes..." -ForegroundColor Yellow
$SearchPaths = @("$env:TEMP", "$env:APPDATA", "$env:LOCALAPPDATA", "$env:USERPROFILE\Downloads", "C:\Users\Public")
foreach ($path in $SearchPaths) {
    Get-ChildItem -Path $path -Recurse -File -ErrorAction SilentlyContinue | ForEach-Object {
        $hash = (Get-FileHash -Path $_.FullName -Algorithm SHA256 -ErrorAction SilentlyContinue).Hash
        if ($KnownHashes -contains $hash) {
            Write-Finding "MALICIOUS_HASH" "File: $($_.FullName) | SHA256: $hash"
        }
    }
}

# ── 2. Suspicious MSI Artifacts ──
Write-Host "[2/6] Checking for suspicious MSI files and staging artifacts..." -ForegroundColor Yellow
$MSISuspectPaths = @("$env:TEMP", "$env:APPDATA", "$env:LOCALAPPDATA\Temp", "C:\Users\Public\Downloads")
foreach ($path in $MSISuspectPaths) {
    Get-ChildItem -Path $path -Filter "*.msi" -Recurse -ErrorAction SilentlyContinue | ForEach-Object {
        if ($_.Name -match 'elita|sputnik|update|install|setup|checker|verify' -or $_.Length -lt 5MB) {
            Write-Finding "SUSPICIOUS_MSI" "MSI file: $($_.FullName) | Size: $($_.Length) bytes | Modified: $($_.LastWriteTime)"
        }
    }
}

# ── 3. Msiexec Run Dialog Artifacts (MUICache / UserAssist) ──
Write-Host "[3/6] Checking UserAssist and MUICache for msiexec execution artifacts..." -ForegroundColor Yellow
$UserAssistPaths = Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist" -ErrorAction SilentlyContinue
foreach ($key in $UserAssistPaths) {
    $values = Get-ItemProperty "$($key.PSPath)\Count" -ErrorAction SilentlyContinue
    if ($values) {
        $values.PSObject.Properties | ForEach-Object {
            $decoded = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String(($_.Name -replace '.', '=')))
            if ($decoded -match 'msiexec.*http') {
                Write-Finding "RUN_DIALOG_ARTIFACT" "UserAssist entry decoded: $decoded"
            }
        }
    }
}

# ── 4. Clipboard Hijack / Browser IOC Evidence ──
Write-Host "[4/6] Checking DNS cache for uasputnik.com resolution..." -ForegroundColor Yellow
$DNSCache = Get-DnsClientCache -ErrorAction SilentlyContinue | Where-Object { $_.Entry -match 'uasputnik' }
if ($DNSCache) {
    foreach ($entry in $DNSCache) {
        Write-Finding "DNS_IOC" "DNS cache entry: $($entry.Entry) -> $($entry.Data)"
    }
}

# ── 5. Network Connections to C2 ──
Write-Host "[5/6] Checking active network connections for uasputnik.com or suspicious outbound..." -ForegroundColor Yellow
$Connections = Get-NetTCPConnection -State Established -ErrorAction SilentlyContinue
foreach ($conn in $Connections) {
    $proc = Get-Process -Id $conn.OwningProcess -ErrorAction SilentlyContinue
    if ($conn.RemoteAddress -notmatch '^(10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.|127\.)' -and $proc.Name -notmatch '^(svchost|System|chrome|msedge|firefox|teams|outlook)') {
        Write-Finding "SUSPICIOUS_CONNECTION" "Process: $($proc.Name) (PID $($conn.OwningProcess)) -> $($conn.RemoteAddress):$($conn.RemotePort)"
    }
}

# ── 6. Scheduled Tasks / Persistence Check ──
Write-Host "[6/6] Checking for suspicious scheduled tasks and Run key persistence..." -ForegroundColor Yellow
$RunKeys = @(
    'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run',
    'HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce',
    'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run',
    'HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce'
)
foreach ($key in $RunKeys) {
    $values = Get-ItemProperty $key -ErrorAction SilentlyContinue
    if ($values) {
        $values.PSObject.Properties | Where-Object { $_.Value -match 'msiexec|elita|sputnik|http.*\.msi' } | ForEach-Object {
            Write-Finding "PERSISTENCE_RUNKEY" "$key\$($_.Name) = $($_.Value)"
        }
    }
}

$SuspiciousTasks = Get-ScheduledTask -ErrorAction SilentlyContinue | Where-Object {
    $_.TaskName -match 'elita|sputnik|update|verify|checker' -and
    $_.Actions.Execute -match 'msiexec|powershell|cmd|wscript'
}
foreach ($task in $SuspiciousTasks) {
    Write-Finding "PERSISTENCE_SCHTASK" "Task: $($task.TaskName) | Action: $($task.Actions.Execute) $($task.Actions.Arguments)"
}

# ── Summary ──
Write-Host "`n=== Hunt Complete ===" -ForegroundColor Cyan
if ($Findings.Count -eq 0) {
    Write-Host "No indicators of Psychedelic Stealer compromise found on this host." -ForegroundColor Green
    $Findings += "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] CLEAN — No IOCs detected."
} else {
    Write-Host "$($Findings.Count) finding(s) detected. Review report at: $ReportPath" -ForegroundColor Red
    Write-Host "RECOMMENDED: Isolate host from network and escalate to IR team." -ForegroundColor Red
}

$Findings | Out-File -FilePath $ReportPath -Encoding UTF8
Write-Host "Report saved: $ReportPath" -ForegroundColor Cyan

Response Priorities

Immediate (0–4 hours)

  • Block uasputnik.com at DNS (RPZ), secure web gateway, and firewall. Add both URLs (/elita.msi, /sputnik.html) to URL blocklists.
  • Push SHA256 hashes (06f434..., 38e90a...) to EDR blocklist and initiate a fleet-wide hash sweep.
  • Hunt for msiexec remote URL execution using the Sigma rules and KQL queries above across the last 30 days.
  • Alert on any endpoint where explorer.exe spawned msiexec with HTTP/S arguments — this is the ClickFix execution signature.
  • Isolate any endpoint with confirmed hash or network IOC matches.

24 Hours

  • Force credential resets for all users on endpoints that show evidence of Psychedelic stealer execution. This includes domain credentials, VPN credentials, and any credentials stored in browsers on the affected machine.
  • Invalidate all active sessions (OAuth tokens, SSO sessions, browser sessions) for affected users — infostealers exfiltrate session cookies, enabling session hijacking without passwords.
  • Check MFA bypass attempts — adversaries using stolen session cookies may attempt to access SaaS applications without triggering MFA.
  • Sweep for lateral movement from compromised endpoints using harvested credentials.
  • Review web application logs if your organization operates any public-facing websites for evidence of iframe injection.

1 Week

  • Implement application control policies (WDAC / AppLocker) to block msiexec.exe from installing packages from remote URLs. This is the single most effective architectural control against ClickFix-style attacks.
  • Deploy browser-level clipboard protections — consider Group Policy or browser extension policies that restrict JavaScript clipboard write access, or alert on clipboard write events from browser processes.
  • User awareness training — specifically educate users that no legitimate CAPTCHA or Cloudflare verification will ever ask them to paste a command into the Windows Run dialog. This is a universal red flag.
  • Audit CMS and web application patching against the four CVEs listed (CVE-2026-85102, CVE-2026-85103, CVE-2026-84869, CVE-2026-76461) if you operate any public-facing web properties.
  • Review and tighten Conditional Access policies for SaaS applications to enforce device compliance checks and impossible-travel detection.

Related Resources

Security Arsenal Incident Response
Managed SOC & MDR Services
AlertMonitor Threat Detection
From The Dark Side Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.