Back to Intelligence

Vidar VM-Obfuscated Stealer + ClearFake/Amatera WebDAV Chain (UAT-10820): OTX Pulse Analysis — Enterprise Detection Pack

SA
Security Arsenal Team
September 9, 2026
11 min read

Two pulses hitting OTX on 2026-09-09 tell the same story from different angles: credential and session-token theft operations are maturing their evasion tradecraft faster than most enterprise detection stacks are adapting. One pulse dissects a Vidar infostealer variant that wraps its core logic in a custom virtual machine interpreter. The other exposes UAT-10820's ClearFake campaign delivering Amatera stealer, ZigCryptoStealer, and NetSupport Manager through fake CAPTCHA lures, WebDAV execution, and blockchain-staged JavaScript. Both operations end in the same place — your identity plane.


Threat Summary

Collectively, these pulses reveal a credential-theft ecosystem that has solved two of its biggest operational problems: analysis resistance and payload delivery resilience.

Vidar (Pulse 1) has adopted virtualization-based obfuscation — its malicious logic is compiled into proprietary bytecode executed by an embedded custom VM. Static signatures against the real payload logic are effectively useless because the code analysts see is an interpreter loop, not the steal logic. Layered on top: debugger detection via NtQueryInformationProcess, RDTSC timing checks, AV process enumeration, and system-resource-based sandbox evasion. The endgame is browser credential/cookie exfiltration, Azure token theft, and Telegram-based C2 — meaning stolen data transits through legitimate, whitelisted infrastructure.

ClearFake / UAT-10820 (Pulse 2) solves delivery. The chain injects JavaScript via Cloudflare Workers, with stage logic stored on BNB Smart Chain (the 'EtherHiding' technique — blockchain as immutable, unblockable C2 config storage). Victims see a fake Google CAPTCHA (ClickFix-style social engineering), are coerced into pasting a command, and end up executing a DLL over WebDAV. Two parallel chains were observed, one loading through a DLL named pf.ch. Final payloads: Amatera stealer (primary), ZigCryptoStealer (cryptocurrency wallet theft), and NetSupport Manager (legitimate RAT repurposed for persistent access).

Objective: bulk credential harvesting, session token theft (including Azure cloud tokens), and cryptocurrency wallet draining — fueling account takeover, initial access brokerage, and direct financial theft. UAT-10820 targets government entities across the US, Brazil, Egypt, India, Indonesia, Ukraine, and the British Indian Ocean Territory, but the lure infrastructure is indiscriminate — any enterprise user can land on a compromised site serving the fake CAPTCHA.


Threat Actor / Malware Profile

Vidar Infostealer (VM-Obfuscated Variant)

AttributeDetail
TypeInformation stealer / credential harvester
DistributionMalvertising, cracked software, phishing loaders (varies by operator)
ObfuscationCustom VM bytecode interpreter — core steal logic virtualized; static analysis sees only the interpreter
Anti-analysisNtQueryInformationProcess debugger checks, RDTSC timing detection, AV process enumeration, RAM/CPU resource checks for sandbox detection
Theft targetsBrowser credentials/cookies/autofill, cryptocurrency wallets, Azure/cloud tokens, files
C2Telegram API (dead-drop/config), exfil over HTTPS to legitimate services
PersistenceTypically run-and-done; some operators drop scheduled tasks or Run keys for re-execution

ClearFake / UAT-10820 Cluster

AttributeDetail
ActorUAT-10820
LureFake Google CAPTCHA on compromised sites (ClickFix-style paste-into-Run/terminal social engineering)
Delivery infraCloudflare Workers (JS injection) + BNB Smart Chain (EtherHiding — on-chain payload/config storage)
ExecutionWebDAV-mounted remote DLL side-load / direct DLL execution (pf.ch observed)
PayloadsAmatera stealer (primary), ZigCryptoStealer (crypto theft), NetSupport Manager (persistence/remote access)
TargetsGovernment; US, Brazil, Egypt, India, Indonesia, Ukraine, BIOT
PersistenceNetSupport Manager install as a service/startup; scheduled tasks

Why this pairing matters: Amatera handles the initial credential smash-and-grab while NetSupport Manager gives UAT-10820 a durable foothold. A single ClearFake hit is not just stolen cookies — it is potentially a persistent, interactively-operated intrusion.


IOC Analysis

The indicator set spans four operationalizable types:

  • File hashes (MD5/SHA1/SHA256) — Vidar samples and ClearFake chain binaries (e.g., SHA256 34c7929e..., abd28aec...). Push SHA256 values into EDR blocklists and threat intel platforms immediately. MD5/SHA1 remain useful for matching against malware repositories (MalwareBazaar, VirusTotal) but should not drive blocking decisions alone.
  • IPv4 (45.150.34.2) — likely C2 or staging. Block at egress, and retro-hunt NetFlow/proxy logs for 30+ days. A single static IP in a campaign dominated by dynamic infra (Workers, WebDAV, Telegram) is a gift — treat any historical hit as a confirmed compromise candidate.
  • Domains/hostnamesleaguejazire.com, smart.hugo-mapp.co, paf.hugo-mapp.co. Sinkhole or block at DNS. Note verification.google — this is a lookalike/abused-substring indicator, not Google infrastructure; match it as a full hostname string, never as a *.google pattern.
  • Behavioral indicators — WebDAV outbound connections from workstations, rundll32/mshta execution chains from browser processes, clipboard-paste-to-Run-dialog activity (ClickFix), and Telegram API egress from non-browser processes (Vidar).

Tooling: decode and pivot using OTX pulses directly (API/pulse export to STIX), validate hashes on VirusTotal/MalwareBazaar, detonate samples in ANY.RUN or a controlled sandbox (expect Vidar's VM and anti-sandbox checks to resist — use interactive analysis with timing patches), and enrich DNS/IP via passive DNS (SecurityTrails, PassiveTotal).


Detection Engineering

YAML
---
title: Vidar Infostealer - Anti-Analysis and Debugger Detection Behavior
id: 7c3a1e2d-9f4b-4a1c-b8e5-vidar0001anti
description: Detects process behaviors associated with Vidar infostealer anti-analysis routines including NtQueryInformationProcess debugger checks, RDTSC timing abuse, and AV process enumeration via toolhelp snapshot.
status: experimental
author: Security Arsenal Threat Intel
logsource:
    category: process_creation
    product: windows
detection:
    selection_parent_browser:
        ParentImage|endswith:
            - '\chrome.exe'
            - '\msedge.exe'
            - '\firefox.exe'
    selection_child_suspicious:
        Image|endswith:
            - '\rundll32.exe'
            - '\powershell.exe'
            - '\cmd.exe'
            - '\mshta.exe'
            - '\wscript.exe'
    selection_vidar_telemetry:
        CommandLine|contains:
            - 'NtQueryInformationProcess'
            - 'tasklist'
            - 'Get-Process'
    condition: selection_parent_browser and selection_child_suspicious
falsepositives:
    - Browser extension installers and enterprise software updaters spawning script interpreters
level: high
tags:
    - attack.defense_evasion
    - attack.t1497
    - attack.t1057
    - attack.t1059
---
title: ClickFix ClearFake - WebDAV Remote DLL Execution Chain
id: 8d4b2f3e-0a5c-5b2d-c9f6-clearfake002
id: 8d4b2f3e-0a5c-4b2d-c9f6-clearfake002
description: Detects the ClearFake/UAT-10820 infection chain where users are socially engineered via fake CAPTCHA prompts into executing commands that load DLLs over WebDAV (rundll32 with UNC/webdav paths or net use to WebDAV shares).
status: experimental
author: Security Arsenal Threat Intel
logsource:
    category: process_creation
    product: windows
detection:
    selection_webdav_exec:
        CommandLine|contains:
            - '\\'
            - '@SSL'
            - 'DavWWWRoot'
            - 'http://'
            - 'https://'
    selection_loader:
        Image|endswith:
            - '\rundll32.exe'
            - '\regsvr32.exe'
            - '\mshta.exe'
    selection_paste_lure:
        CommandLine|contains:
            - 'mshta'
            - 'powershell -w hidden'
            - 'iex'
    condition: (selection_webdav_exec and selection_loader) or (selection_loader and selection_paste_lure)
falsepositives:
    - Legitimate intranet WebDAV usage loading signed binaries (rare on workstations)
level: critical
tags:
    - attack.initial_access
    - attack.t1189
    - attack.t1204
    - attack.t1218
    - attack.t1105
---
title: Amatera NetSupport Persistence - RMM Install and Exfil Indicators
id: 9e5c304f-1b6d-4c3e-d0a7-amatera003
description: Detects NetSupport Manager RAT installation artifacts and credential-access behavior following Amatera/ZigCryptoStealer delivery, including suspicious service creation and Telegram API egress patterns.
status: experimental
author: Security Arsenal Threat Intel
logsource:
    category: service_install
    product: windows
detection:
    selection_netsupport_service:
        ServiceName|contains:
            - 'NetSupport'
            - 'client32'
        ServiceFileName|contains:
            - 'client32.exe'
            - 'pcictl.dll'
    selection_tmp_install:
        ServiceFileName|contains:
            - '\AppData\Local\Temp\'
            - '\Users\Public\'
            - '\ProgramData\'
    condition: selection_netsupport_service or (selection_tmp_install and selection_netsupport_service)
falsepositives:
    - Legitimate NetSupport deployments by IT (whitelist known IT-managed install paths and accounts)
level: high
tags:
    - attack.persistence
    - attack.t1543.003
    - attack.command_and_control
    - attack.t1219
KQL — Microsoft Sentinel / Defender
// ClearFake / UAT-10820 + Vidar Hunt — Microsoft Sentinel
// Hunts IOC hits, WebDAV execution, EtherHiding/Cloudflare Worker staging, and Telegram C2 egress
let lookback = 14d;
let fileHashes = dynamic(["34c7929e60aa09bffdf458f4ee0b618f65d77e1b77e161f66fb835e35c405cc4",
    "398633479c7d8c0c93616f50d1faaa7f01b5864c89de0911812da60bf90e3358",
    "3a2e69ca13d76af3d9502d352802be4d6aa00cc675da69fccab33dc3a0c914fe",
    "e42890753b9e9e08a29dab78db957677dfb9efd3dfa0aef84184d4257ad1a6f0",
    "abd28aecb2d57660bcd9455333b84d289aa883eaf5cf15def1bf0feb35833aa2",
    "93830d73ddf9665ae4d5665f1cebabd093646ed54356662e1b2a925bc2df681b",
    "7504898b17a9ce05eb9209128bcd0fb67d675a70c8c64f6f624d08b47b2fe3af"]);
let badDomains = dynamic(["leaguejazire.com", "smart.hugo-mapp.co", "paf.hugo-mapp.co", "verification.google"]);
let badIPs = dynamic(["45.150.34.2"]);
let netEvents = DeviceNetworkEvents
    | where TimeGenerated > ago(lookback)
    | where RemoteUrl has_any (badDomains)
       or RemoteIP in (badIPs)
       or (RemoteUrl contains "api.telegram.org" and InitiatingProcessFileName !in~ ("chrome.exe","msedge.exe","firefox.exe","telegram.exe"))
       or (RemotePort == 443 and InitiatingProcessFileName =~ "rundll32.exe")
    | project TimeGenerated, DeviceName, RemoteIP, RemoteUrl, InitiatingProcessFileName, InitiatingProcessCommandLine;
let fileEvents = DeviceFileEvents
    | where TimeGenerated > ago(lookback)
    | where SHA256 in~ (fileHashes)
    | project TimeGenerated, DeviceName, FileName, FolderPath, SHA256;
let procEvents = DeviceProcessEvents
    | where TimeGenerated > ago(lookback)
    | where ProcessCommandLine has_any ("DavWWWRoot", "@SSL\\", "pf.ch", "client32")
       or (FileName =~ "rundll32.exe" and ProcessCommandLine contains "http")
       or (InitiatingProcessFileName has_any ("chrome.exe","msedge.exe","firefox.exe")
           and FileName in~ ("powershell.exe","cmd.exe","mshta.exe","rundll32.exe"))
    | project TimeGenerated, DeviceName, FileName, ProcessCommandLine, InitiatingProcessFileName;
netEvents | union fileEvents, procEvents
| sort by TimeGenerated desc
PowerShell
<#
.SYNOPSIS
    Hunt for Vidar infostealer + ClearFake/Amatera/UAT-10820 artifacts on Windows endpoints.
.DESCRIPTION
    Checks for IOC file hashes, WebDAV client artifacts, NetSupport Manager persistence,
    suspicious scheduled tasks, Telegram C2 connections, and browser credential store access anomalies.
.EXAMPLE
    .Hunt-Vidar-ClearFake.ps1 -OutputPath C:\IR\hunt_results.json
#>
param([string]$OutputPath = ".\vidar_clearfake_hunt_$(Get-Date -Format 'yyyyMMdd_HHmmss').json")

$results = [ordered]@{
    Hostname           = $env:COMPUTERNAME
    ScanTime           = (Get-Date).ToString("o")
    HashHits           = @()
    NetSupportArtifacts = @()
    WebDavArtifacts    = @()
    SuspiciousTasks    = @()
    TelegramConnections = @()
    RunKeyAnomalies    = @()
}

# --- 1. IOC hash sweep (user-writable dirs where stealers/RATs stage) ---
$iocHashes = @(
    "34C7929E60AA09BFFDF458F4EE0B618F65D77E1B77E161F66FB835E35C405CC4",
    "398633479C7D8C0C93616F50D1FAAA7F01B5864C89DE0911812DA60BF90E3358",
    "3A2E69CA13D76AF3D9502D352802BE4D6AA00CC675DA69FCCAB33DC3A0C914FE",
    "E42890753B9E9E08A29DAB78DB957677DFB9EFD3DFA0AEF84184D4257AD1A6F0",
    "ABD28AECB2D57660BCD9455333B84D289AA883EAF5CF15DEF1BF0FEB35833AA2",
    "93830D73DDF9665AE4D5665F1CEBABD093646ED54356662E1B2A925BC2DF681B",
    "7504898B17A9CE05EB9209128BCD0FB67D675A70C8C64F6F624D08B47B2FE3AF"
)
$scanPaths = @("$env:LOCALAPPDATA\Temp", "$env:APPDATA", "C:\Users\Public", "C:\ProgramData")
foreach ($p in $scanPaths) {
    if (Test-Path $p) {
        Get-ChildItem -Path $p -Recurse -File -Include *.exe,*.dll,*.ch -ErrorAction SilentlyContinue |
            ForEach-Object {
                try {
                    $h = (Get-FileHash $_.FullName -Algorithm SHA256 -ErrorAction Stop).Hash
                    if ($iocHashes -contains $h) {
                        $results.HashHits += [pscustomobject]@{ Path = $_.FullName; SHA256 = $h }
                    }
                } catch {}
            }
    }
}

# --- 2. NetSupport Manager persistence (UAT-10820 follow-on RAT) ---
$nsPaths = @("$env:ProgramFiles\NetSupport", "${env:ProgramFiles(x86)}\NetSupport",
             "$env:APPDATA\client32.exe", "$env:LOCALAPPDATA\client32.exe", "C:\ProgramData\client32.exe")
foreach ($p in $nsPaths) { if (Test-Path $p) { $results.NetSupportArtifacts += $p } }
Get-Service -ErrorAction SilentlyContinue | Where-Object { $_.Name -match 'NetSupport|client32' -or $_.DisplayName -match 'NetSupport' } |
    ForEach-Object { $results.NetSupportArtifacts += "SERVICE: $($_.Name) [$($_.Status)]" }

# --- 3. WebDAV client cache / recent network providers (ClearFake execution vector) ---
$webdavCache = "$env:SystemRoot\ServiceProfiles\LocalService\AppData\Local\Temp\TfsStore"
if (Test-Path $webdavCache) { $results.WebDavArtifacts += "WebDAV cache present: $webdavCache" }
Get-ChildItem "HKCU:\Network" -ErrorAction SilentlyContinue | ForEach-Object {
    $remote = (Get-ItemProperty $_.PSPath -ErrorAction SilentlyContinue).RemotePath
    if ($remote -match 'http|@SSL|DavWWWRoot') { $results.WebDavArtifacts += "Mapped WebDAV: $remote" }
}
Get-ChildItem "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2" -ErrorAction SilentlyContinue |
    Where-Object { $_.PSChildName -match '@SSL|DavWWWRoot|http' } |
    ForEach-Object { $results.WebDavArtifacts += "MountPoint: $($_.PSChildName)" }

# --- 4. Suspicious scheduled tasks (stealer re-exec / RAT persistence) ---
Get-ScheduledTask -ErrorAction SilentlyContinue | ForEach-Object {
    $actions = $_.Actions | ForEach-Object { "$($_.Execute) $($_.Arguments)" }
    if (($actions -join ' ') -match 'Temp|AppData|Public|rundll32.*http|powershell.*-w hidden') {
        $results.SuspiciousTasks += [pscustomobject]@{ Task = $_.TaskName; Action = ($actions -join '; ') }
    }
}

# --- 5. Live Telegram C2 connections (Vidar exfil channel) ---
Get-NetTCPConnection -State Established -ErrorAction SilentlyContinue |
    Where-Object { $_.RemotePort -eq 443 } |
    ForEach-Object {
        $proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
        if ($proc -and $proc.Name -notmatch '^(chrome|msedge|firefox|telegram|svchost|Teams|slack)$') {
            try {
                $dns = (Resolve-DnsName $_.RemoteAddress -ErrorAction Stop).NameHost
            } catch { $dns = $null }
            if ($dns -match 'telegram|t\.me' -or $_.RemoteAddress -match '^(149\.154\.|91\.108\.)') {
                $results.TelegramConnections += [pscustomobject]@{
                    Process = $proc.Name; PID = $_.OwningProcess; RemoteIP = $_.RemoteAddress; DNS = $dns
                }
            }
        }
    }

# --- 6. Run key anomalies ---
foreach ($key in @("HKCU:\Software\Microsoft\Windows\CurrentVersion\Run",
                   "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run")) {
    if (Test-Path $key) {
        (Get-ItemProperty $key).PSObject.Properties | Where-Object {
            $_.Value -match 'Temp|AppData.*\.exe|client32|pf\.ch' -and $_.Name -notmatch '^PS'
        } | ForEach-Object { $results.RunKeyAnomalies += "$key :: $($_.Name) = $($_.Value)" }
    }
}

$results | ConvertTo-Json -Depth 5 | Out-File $OutputPath -Encoding UTF8
Write-Host "[+] Hunt complete. Findings written to $OutputPath" -ForegroundColor Green
if ($results.HashHits.Count -or $results.NetSupportArtifacts.Count -or $results.TelegramConnections.Count) {
    Write-Host "[!] HIGH-PRIORITY ARTIFACTS FOUND — escalate to IR immediately." -ForegroundColor Red
}

Response Priorities

Immediate (0–4 hours)

  • Block all IOCs: push SHA256 hashes to EDR blocklists; sinkhole leaguejazire.com, smart.hugo-mapp.co, paf.hugo-mapp.co, and the literal hostname string verification.google at DNS; block 45.150.34.2 at egress and retro-hunt proxy/NetFlow logs 30 days.
  • Hunt for execution artifacts: run the KQL query and PowerShell script across the fleet. Prioritize any endpoint with browser-spawned rundll32/mshta/powershell, WebDAV mount artifacts, or client32.exe presence.
  • Kill WebDAV egress on workstations: block outbound TCP 80/443 to WebDAV shares (the WebClient service should be disabled on standard user endpoints — it is the ClearFake execution rail).

24 Hours

  • Assume credential compromise on any hit. For endpoints showing Vidar/Amatera execution: force password resets and — critically — revoke all active sessions and refresh tokens (Entra ID/Azure tokens are explicitly targeted by Vidar; cookie theft enables MFA bypass via session replay). Re-enroll MFA where session theft is confirmed.
  • Cryptocurrency exposure check: if ZigCryptoStealer indicators hit, identify wallet applications/extensions on the host and treat keys as drained; notify affected users to move funds from uncompromised devices.
  • NetSupport triage: any unauthorized NetSupport Manager install indicates potential interactive intrusion — isolate the host, capture memory, and treat as hands-on-keyboard IR, not commodity malware cleanup.
  • Telegram egress audit: flag any non-browser process communicating with api.telegram.org or Telegram IP ranges (149.154.0.0/16, 91.108.0.0/16).

1 Week

  • ClickFix hardening: deploy awareness material specifically covering fake CAPTCHA/paste-into-Run lures; use browser isolation or script-control policies to prevent clipboard-hijack social engineering. Consider blocking mshta.exe, wscript.exe, and unsigned rundll32 executions from browser parent processes via WDAC/AppLocker.
  • Disable the WebClient (WebDAV) service fleet-wide via GPO unless a documented business need exists.
  • Restrict RMM tooling: maintain an allowlist of approved remote management tools; alert on installation of NetSupport and other commonly-abused RMM binaries outside IT deployment channels.
  • Cloud token hygiene: enforce Conditional Access with token-binding/compliant-device requirements so stolen session cookies and Azure tokens have reduced replay value; shorten token lifetimes for privileged roles.
  • Threat intel integration: subscribe the SIEM/SOAR to OTX pulse feeds for Vidar, Amatera, ClearFake, and UAT-10820 to auto-ingest hash/domain/IP updates as these campaigns rotate infrastructure.

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.