Back to Intelligence

AMOS Stealer + XMRig macOS ClickFix Crimekit: EtherHiding C2 on Polygon Blockchain — OTX Detection Pack

SA
Security Arsenal Team
August 26, 2026
10 min read

Classification: TLP:WHITE | Intelligence Type: APT & Nation-State Campaign Intelligence | Pulse Source: AlienVault OTX


Threat Summary

Security researchers have dissected a sophisticated macOS-targeting crimekit that chains together three of the most concerning trends in modern intrusion tradecraft: ClickFix social engineering, the Atomic macOS Stealer (AMOS), and EtherHiding — a technique where command-and-control infrastructure is stored inside Polygon blockchain smart contracts rather than traditional domains or IPs.

The attack chain begins with fake CAPTCHA verification pages served from disposable domains. Victims — typically macOS users lured via malvertising, SEO poisoning, or compromised websites — are instructed to "verify" their humanity by copying and pasting a command into Terminal. That command executes malicious AppleScript via osascript, kicking off a multi-stage infection that delivers:

  1. AMOS (Atomic macOS Stealer) — harvesting Keychain credentials, browser cookies/session tokens, cryptocurrency wallet data, and files of interest.
  2. XMRig cryptominer — converting the compromised endpoint into a Monero mining asset for persistent revenue generation.

The strategic shift here is the C2 layer. By embedding C2 addresses in Polygon smart contract storage, the operators gain blockchain-resilient infrastructure: there is no domain to seize, no IP to sinkhole, and the C2 address can be rotated on-chain at will. Traditional blocklists are structurally ineffective against this model — defenders must instead detect the behavior of on-chain lookups (JSON-RPC calls to Polygon RPC endpoints) and the initial execution chain.

Objective: Dual monetization — credential/wallet theft via AMOS plus resource hijacking via XMRig — with blockchain-hardened infrastructure for long campaign lifespan. The "Unknown" actor attribution and crimekit packaging indicate this is likely sold or rented on underground forums, meaning multiple operators may deploy it simultaneously.


Threat Actor / Malware Profile

ClickFix Initial Access (T1204 / T1659)

ClickFix weaponizes user trust in CAPTCHA flows. The fake verification page presents a "copy" button that places an osascript -e ... command on the victim's clipboard, then instructs them to paste it into Terminal to "complete verification." This bypasses Gatekeeper and signature checks entirely — the user is the execution vector. No exploit required.

AMOS — Atomic macOS Stealer

  • Distribution: ClickFix lures, fake software updates, cracked application bundles, malvertising.
  • Payload behavior: Prompts for the user's password via a spoofed system dialog to unlock the Keychain; exfiltrates browser credentials, cookies, autofill data, Telegram/session data, and crypto wallet files (Exodus, Electrum, MetaMask browser extensions, etc.).
  • C2 communication: HTTPS POST exfiltration to rotating infrastructure; in this variant, the C2 address is resolved from a Polygon smart contract rather than hardcoded.
  • Anti-analysis: Blockchain-resolved C2 defeats static IOC extraction; payloads are frequently packed/encrypted; short-lived staging domains.

EtherHiding C2 (T1071.001 / T1027)

The backdoor agent queries public Polygon RPC endpoints (JSON-RPC eth_call) to read C2 addresses stored in attacker-controlled smart contracts. Implications:

  • Traffic to Polygon RPC nodes (polygon-rpc.com, rpc-mainnet.matic.*, Infura/Alchemy endpoints) is the network-layer detection pivot.
  • The C2 can be updated by a contract transaction, making infrastructure effectively immortal from a takedown perspective.

XMRig Cryptominer (T1496)

Deployed as the persistence-revenue payload. Watches for: high CPU from unexpected processes, outbound connections to mining pools (port 3333/5555/7777, stratum protocol), and miners disguised as system process names.

Persistence (T1543.001)

The infection establishes persistence via LaunchAgents — plist files dropped into ~/Library/LaunchAgents/ with RunAtLoad enabled, relaunching the backdoor agent at every login.


IOC Analysis

The pulse contains 25 indicators, dominated by domains — the disposable ClickFix lure and staging infrastructure. Representative sample:

IndicatorTypeRole
citcix6.xyzdomainClickFix lure / staging
sj98xe4.xyzdomainClickFix lure / staging
hf98x4d.sitedomainPayload delivery
xuiaxwx.comdomainPayload delivery
gesck4m.prodomainStaging
apdhlhs3.xyzdomainStaging
okekjaiw.clickdomainStaging
8jdjpwka.babydomainStaging

Operationalization guidance for SOC teams:

  1. Treat domains as ephemeral. These are algorithmically-flavored throwaway registrations across cheap TLDs (.xyz, .site, .pro, .click, .baby). Block them at DNS/proxy, but prioritize TLD-level heuristics: newly registered domains (<30 days) on these TLDs serving CAPTCHA pages should trigger heightened scrutiny.
  2. DNS telemetry is your highest-fidelity feed. Ingest these IOCs into your DNS sinkhole/resolver blocklist and retro-hunt DNS query logs for the past 90 days — a single historical query to one of these domains identifies a potentially compromised macOS host.
  3. Do not rely on domain IOCs for the C2 layer. The actual backdoor C2 is blockchain-resolved. Hunt for eth_call JSON-RPC traffic to Polygon endpoints from non-browser processes — that is the durable detection.
  4. Tooling: Use your threat intel platform (OpenCTI, MISP, ThreatConnect) to ingest the OTX pulse via API; Sigma/YARA tooling (e.g., yara against memory dumps for AMOS strings) for host-side confirmation; URLScan.io and VirusTotal for lure-page pivoting on the domain sample.

Detection Engineering

YAML
---
title: macOS ClickFix Malicious AppleScript Execution via Terminal
id: 9f2a1b7e-3c4d-4e5f-8a6b-1d2c3e4f5a01
status: production
description: Detects ClickFix-style social engineering where users are tricked into pasting malicious osascript commands into Terminal, as used by the AMOS/XMRig EtherHiding crimekit
author: Security Arsenal Threat Intel
references:
    - https://notes.netbytesec.com/2026/08/anatomy-of-macos-clickfix-crimekit-that.html
date: 2026/08/26
modified: 2026/08/26
tags:
    - attack.execution
    - attack.t1059.002
    - attack.t1204
logsource:
    category: process_creation
    product: macos
detection:
    selection_process:
        Image|endswith:
            - '/osascript'
            - '/bash'
            - '/zsh'
    selection_flags:
        CommandLine|contains:
            - 'osascript -e'
    selection_suspicious:
        CommandLine|contains:
            - 'base64'
            - 'curl'
            - 'do shell script'
            - 'eval'
            - ' | sh'
            - ' | bash'
    condition: selection_process and (selection_flags or selection_suspicious)
falsepositives:
    - Legitimate MDM enrollment scripts and IT automation
level: high
---
title: macOS LaunchAgent Persistence Creation for Backdoor Agent
id: 9f2a1b7e-3c4d-4e5f-8a6b-1d2c3e4f5a02
status: production
description: Detects creation of suspicious LaunchAgent plist files, the persistence mechanism used by the AMOS/EtherHiding macOS backdoor agent
author: Security Arsenal Threat Intel
references:
    - https://notes.netbytesec.com/2026/08/anatomy-of-macos-clickfix-crimekit-that.html
date: 2026/08/26
modified: 2026/08/26
tags:
    - attack.persistence
    - attack.t1543.001
logsource:
    category: file_event
    product: macos
detection:
    selection_path:
        TargetFilename|contains:
            - '/Library/LaunchAgents/'
            - '~/Library/LaunchAgents/'
    selection_ext:
        TargetFilename|endswith: '.plist'
    filter_known:
        TargetFilename|contains:
            - 'com.apple.'
            - 'com.google.'
            - 'com.microsoft.'
    condition: selection_path and selection_ext and not filter_known
falsepositives:
    - Legitimate third-party software installers (investigate signing and parent process)
level: medium
---
title: EtherHiding Polygon RPC Query from Non-Browser Process
id: 9f2a1b7e-3c4d-4e5f-8a6b-1d2c3e4f5a03
status: production
description: Detects outbound connections to Polygon blockchain RPC endpoints from non-browser processes, consistent with EtherHiding C2 address resolution via smart contract reads
author: Security Arsenal Threat Intel
references:
    - https://notes.netbytesec.com/2026/08/anatomy-of-macos-clickfix-crimekit-that.html
date: 2026/08/26
modified: 2026/08/26
tags:
    - attack.command_and_control
    - attack.t1071.001
    - attack.t1027
logsource:
    category: network_connection
    product: macos
detection:
    selection_dest:
        DestinationHostname|contains:
            - 'polygon-rpc.com'
            - 'rpc-mainnet.matic'
            - 'polygon-mainnet'
            - 'matic-mainnet'
            - 'polygon.llamarpc.com'
            - 'polygon.drpc.org'
    filter_browsers:
        Image|endswith:
            - '/Safari'
            - '/Google Chrome'
            - '/firefox'
            - '/Brave Browser'
            - '/Arc'
    condition: selection_dest and not filter_browsers
falsepositives:
    - Legitimate Web3 wallet daemons, crypto trading tools, development activity (hardhat/foundry)
level: high
KQL — Microsoft Sentinel / Defender
// Hunt: AMOS/XMRig ClickFix crimekit - lure domains, osascript abuse, and EtherHiding RPC lookups
// Microsoft Sentinel | Time range: last 30 days
let ClickFixIOCs = dynamic(["citcix6.xyz","sj98xe4.xyz","hf98x4d.site","xuiaxwx.com","gesck4m.pro","apdhlhs3.xyz","okekjaiw.click","8jdjpwka.baby"]);
let PolygonRPC = dynamic(["polygon-rpc.com","rpc-mainnet.matic.network","rpc-mainnet.maticvigil.com","polygon.llamarpc.com","polygon.drpc.org","polygon-mainnet.g.alchemy.com","polygon-mainnet.infura.io"]);
union isfuzzy=true
    (DeviceNetworkEvents
    | where RemoteUrl has_any (ClickFixIOCs)
    | project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl, RemoteIP, ActionType
    | extend HuntHit = "ClickFix Lure Domain"),
    (DeviceNetworkEvents
    | where RemoteUrl has_any (PolygonRPC)
    | where not(InitiatingProcessFileName has_any ("Safari","chrome","firefox","brave","Arc","MicrosoftEdge"))
    | project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl, RemoteIP
    | extend HuntHit = "EtherHiding Polygon RPC from Non-Browser"),
    (DeviceProcessEvents
    | where FileName =~ "osascript"
    | where ProcessCommandLine has_any ("base64","curl","do shell script","eval")
    | where InitiatingProcessFileName has_any ("Terminal","iTerm2","zsh","bash")
    | project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName
    | extend HuntHit = "Suspicious osascript from Terminal (ClickFix Pattern)"),
    (DeviceProcessEvents
    | where ProcessCommandLine has_any ("xmrig","stratum+tcp","--donate-level","--coin=monero")
       or FileName has_any ("xmrig")
    | project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine, FolderPath
    | extend HuntHit = "XMRig Cryptominer Execution")
| order by Timestamp desc
Bash / Shell
#!/bin/bash
# macOS Hunt Script: AMOS Stealer / XMRig / EtherHiding ClickFix Crimekit
# Run via MDM (Jamf, Kandji) or manually across Mac fleet. Requires sudo for full coverage.

echo "=== [1] Checking LaunchAgents/LaunchDaemons for suspicious persistence ==="
for dir in ~/Library/LaunchAgents /Library/LaunchAgents /Library/LaunchDaemons; do
    if [ -d "$dir" ]; then
        echo "--- $dir ---"
        # Flag non-Apple plists modified in the last 90 days
        find "$dir" -name "*.plist" -mtime -90 2>/dev/null | while read plist; do
            if ! grep -qi "apple\|google\|microsoft\|jamf\|adobe" "$plist" 2>/dev/null; then
                echo "[SUSPICIOUS] $plist"
                /usr/libexec/PlistBuddy -c "Print :ProgramArguments" "$plist" 2>/dev/null
                /usr/libexec/PlistBuddy -c "Print :RunAtLoad" "$plist" 2>/dev/null
            fi
        done
    fi
done

echo "=== [2] Checking for XMRig and suspicious miner processes ==="
ps aux | grep -iE "xmrig|stratum|monero|cryptonight" | grep -v grep
ps aux | awk '$3 > 80.0 {print "[HIGH CPU]", $0}'

echo "=== [3] Hunting ClickFix IOC domains in DNS caches and logs ==="
IOCS="citcix6.xyz sj98xe4.xyz hf98x4d.site xuiaxwx.com gesck4m.pro apdhlhs3.xyz okekjaiw.click 8jdjpwka.baby"
for ioc in $IOCS; do
    dscacheutil -cachedump -entries host 2>/dev/null | grep -i "$ioc" && echo "[HIT - DNS CACHE] $ioc"
    log show --last 30d --predicate 'process == "mDNSResponder"' 2>/dev/null | grep -i "$ioc" && echo "[HIT - LOG] $ioc"
done

echo "=== [4] Checking for EtherHiding - active connections to Polygon RPC endpoints ==="
lsof -i -nP 2>/dev/null | grep -iE "polygon-rpc|matic|maticvigil|llamarpc|drpc" | grep -v -iE "safari|chrome|firefox|brave"
netstat -anv 2>/dev/null | grep ESTABLISHED | awk '{print $5}' | sort -u

echo "=== [5] Checking for AMOS artifacts - Keychain access prompts and staged exfil ==="
ls -la /tmp/ 2>/dev/null | grep -iE "\.zip|\.tar|out|dump|loot" 
find ~/Library/Application\ Support -maxdepth 2 -name "*.log" -mtime -30 -newer /var/db/.AppleSetupDone 2>/dev/null | head -20
log show --last 7d --predicate 'eventMessage CONTAINS "securityd"' 2>/dev/null | grep -iE "deny|prompt" | tail -20

echo "=== [6] Shell history check for pasted osascript/curl ClickFix commands ==="
for histfile in ~/.zsh_history ~/.bash_history; do
    if [ -f "$histfile" ]; then
        grep -iE "osascript -e|base64.*\| *(sh|bash)|curl.*\| *(sh|bash)" "$histfile" 2>/dev/null && echo "[HIT - HISTORY] $histfile"
    fi
done

echo "=== Hunt complete. Review [SUSPICIOUS] and [HIT] entries. ==="

Response Priorities

Immediate (0–4 hours)

  • Block all 8 lure/staging domains (and full 25-IOC set from the OTX pulse) at DNS resolver, secure web gateway, and EDR network layers. Add alerting on the cheap-TLD pattern (.xyz/.site/.pro/.click/.baby) combined with newly-registered-domain categorization.
  • Run the KQL hunt and Bash script across the entire macOS fleet. Any host with a historical DNS query to a lure domain, an osascript-from-Terminal execution, or non-browser Polygon RPC traffic is presumed compromised.
  • Audit ~/Library/LaunchAgents on all macOS endpoints via MDM for unsigned or recently created plists.

24 Hours

  • Force credential rotation for any user whose device touched an IOC. AMOS exfiltrates Keychain contents, browser cookies, and session tokens — password resets alone are insufficient. Revoke all active sessions and OAuth tokens (IdP sign-out everywhere, invalidate browser session cookies at the identity provider level) and rotate any credentials stored in the Keychain or browsers on affected hosts, including SSH keys and API tokens.
  • Review crypto wallet exposure. If users stored wallet files or browser wallet extensions (MetaMask, Phantom) on affected devices, treat wallets as drained and initiate asset migration to fresh keys.
  • Check MDM/EDR coverage gaps — ClickFix succeeds where users can open Terminal and execute arbitrary commands. Inventory which macOS users have unrestricted Terminal access.

1 Week

  • Deploy application control for script interpreters. Use MDM configuration profiles or tools like Santa/esf-based controls to restrict osascript execution to signed, approved contexts — this breaks the entire ClickFix delivery model for macOS.
  • Implement egress policy on blockchain RPC endpoints. Business justification for endpoints reaching Polygon/Ethereum RPC nodes is rare; alert on or block JSON-RPC egress from non-approved processes and servers.
  • User awareness update. Publish guidance that no legitimate CAPTCHA ever requires pasting commands into Terminal. This single behavioral message neutralizes the ClickFix technique class.
  • Retro-hunt 90 days of DNS, proxy, and EDR telemetry for the full IOC set and for eth_call-shaped traffic patterns, and onboard the Sigma detections into continuous monitoring.

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.