Phexia Stealer — macOS ClickFix Infostealer + RAT

Fake-CAPTCHA "ClickFix" lure → pasted Terminal command → dig-TXT dead-drop C2 → osascript/JXA implant with LaunchAgent persistence, credential theft, and reverse-shell tasking
Threat
Phexia Stealer (macOS)
Severity
ACTIVE CAMPAIGN
Type
macOS Infostealer + RAT
Delivery
ClickFix · social engineering
Attribution
Suspected APT28 (unconfirmed)
Version
v0.1 · 2026-06-26
Author
HuntPack
Confidence
High (behavioral + atomic)
01

Executive Summary

Phexia Stealer is a macOS infostealer-plus-RAT distributed through ClickFix social engineering: a fraudulent bot-verification / fake-CAPTCHA page silently places a downloader command on the victim's clipboard and instructs them to paste and run it in Terminal. Reporting on the broader June 2026 ClickFix wave pairs Phexia with HellsUchecker, an EtherHiding-delivered backdoor that executes files retrieved from C2 and reports results back.

Signature chain: the pasted command runs a bash one-liner that uses dig to fetch a DNS TXT record (a dead-drop resolver) from a public resolver, pipes the result to curl, and executes it as JavaScript via osascript (JXA). This fileless bootstrap lets the operator change behavior by editing a DNS record — nothing on disk changes. The implant then installs a LaunchAgent (e.g. ~/Library/LaunchAgents/com.components.<rand>.plist with a matching script under ~/Library/), loads it with launchctl load (RunAtLoad), and polls C2 every 60 seconds for new osascript tasks.

Capabilities: host fingerprinting (ioreg … IOPlatformExpertDevice, whoami/id -un), local password harvesting via a spoofed "System Preferences" dialog validated with dscl . authonly and stored to ~/.passphrase, tccutil reset All to coax privacy prompts, and theft of browser data, extensions, cookies/history, crypto wallets, password managers, Keychain, and Telegram session data. C2 domains are rotated and discovered via a Telegram bot; infrastructure is hosted on vdsina VPS.

Defender priority: The strongest, version-independent detection is the ClickFix bootstrap shapeTerminal/bash spawning dig (TXT lookup) and curl piped into osascript — and the LaunchAgent + 60-second osascript polling that follows. Pair behavioral hunts (Q1–Q4) with an atomic sweep for the published C2 domains/IP (Q5). Falcon for macOS gives full process/network/DNS visibility here, so coverage is good.

02

Source Review & Web Hunter Notes

SourceTierPulledNote
The Hacker News — ClickFix expands (June 2026)ReportingPhexia + HellsUchecker named; ClickFix delivery, EtherHidingCampaign context
Cookie Engineer — macOS Phexia campaign deep-diveResearchFull chain + atomic IOCs (domains, IP, LaunchAgent, osascript)Primary technical + indicator source
Netskope — macOS ClickFix AppleScript stealer + RATResearchClickFix clipboard lure, AppleScript stealer, persistent RATCorroborating chain detail
Microsoft Security — macOS ClickFix utilities lureVendorFake macOS-utility CAPTCHA lures deliver infostealersDelivery corroboration
Objective-See — Mac malware roundupSecondarymacOS infostealer landscape contextBackground

Provenance note: every atomic IOC in §4/§10 (C2 domains x2db.cx, a5db.ch, a6b6.biz, kfcnevkusno.one, goldenticketsshop.com; IP 146.103.98.59; Telegram bot t.me/neverfakebot; LaunchAgent path pattern) is taken from the cited Cookie Engineer / Netskope research — none are fabricated. The LaunchAgent label string is sample-specific (random per campaign) — match on the com.components.* / ~/Library/ pattern, not the exact characters.

03

Hunt Brief & Attack Chain

Hunt hypotheses

  • H1: A macOS host runs the ClickFix bootstrap — bash/Terminal spawning dig (TXT lookup) and/or curl piped into osascript/osacompile.
  • H2: A new LaunchAgent plist appears under ~/Library/LaunchAgents/ (pattern com.components.* / com.launch.*) and is loaded via launchctl load with a script body under ~/Library/.
  • H3: Credential-access tradecraft fires — dscl . authonly, osascript dialog spoofing "System Preferences", tccutil reset All, writes to ~/.passphrase.
  • H4: An osascript/curl process beacons on a ~60-second cadence to rotating domains (dead-drop / Telegram-sourced C2).
  • H5: Any host resolves or connects to the published Phexia C2 domains or IP 146.103.98.59.

Attack chain

#StepObservableATT&CK
1ClickFix fake-CAPTCHA places command on clipboard; user pastes into TerminalTerminalbash -c with copied one-linerT1204.004 / T1059.004
2dig TXT dead-drop resolver → curl → osascript (fileless bootstrap)dig … TXT, curl piped to osascriptT1071.004 / T1059.002
3LaunchAgent persistence + launchctl load (RunAtLoad)New ~/Library/LaunchAgents/com.components.*.plistT1543.001
4Host profilingioreg … IOPlatformExpertDevice, whoami, id -unT1082 / T1033
5Password harvest via spoofed dialog + dscl validationosascript dialog, dscl . authonly, ~/.passphraseT1056.002 / T1555
660s C2 polling, task download & executecurl to /api.php//get.php; recurring osascriptT1071.001 / T1041
7Steal browser/wallet/Keychain/Telegram data; exfilAccess to browser profiles, wallets, KeychainT1555 / T1539 / T1217
04

Consolidated IOC Table

Atomic indicators below are from cited research (Cookie Engineer / Netskope). C2 domains rotate — treat the list as a seed and pivot on the dead-drop / Telegram-sourced infrastructure. Validate before blocking shared hosting.

TypeValueConfidenceActionContext
Domaingoldenticketsshop.comhighblockDead-drop / C2 (Q5)
Domainx2db.cx, a5db.ch, a6b6.biz, kfcnevkusno.onehighblockRotating C2 (Q5)
IPv4146.103.98.59mediumblockvdsina VPS C2 host (validate — shared)
Telegramt.me/neverfakebothighenrichDomain-distribution bot (operator)
File path~/Library/LaunchAgents/com.components.*.plisthighdetectPersistence (pattern; Q2)
File path~/.passphrasehighdetectHarvested password store (Q3, §7)
Behaviordig … TXTcurlosascript chainhighdetectClickFix bootstrap (Q1)
Behaviordscl . authonly + spoofed "System Preferences" dialoghighdetectCredential access (Q3)
URI/api.php?connect&username=, /get.php?txid=, /api.php?checkmediumhuntC2 endpoints (proxy logs)
05

Affected Surface & Telemetry Matrix

Affected: macOS endpoints (Intel & Apple Silicon) where a user can be socially engineered into pasting a command into Terminal. No vulnerability is exploited — delivery is 100% social engineering, so any current macOS version is in scope. Falcon for macOS provides process, file, network, and DNS telemetry for the full chain.

SurfaceTelemetryPriorityGap
macOS process treeFalcon ProcessRollup2 / SyntheticProcessRollup2 (macOS)CriticalRequires Falcon sensor on Macs
LaunchAgent / file writesFalcon file-write telemetry (TargetFileName under ~/Library/LaunchAgents)CriticalConfirm macOS file-write events enabled in policy
DNS resolutionFalcon DnsRequest (DomainName, TXT lookups to dead-drop)CriticalTXT-record content not captured — match domain
Network egressFalcon NetworkConnectIP4 (60s C2 beacon, vdsina IP)HighHTTPS payload opaque; rely on dest + cadence
Keychain / browser storesFile access to browser profiles, Keychain, wallet pathsHighRead access can be noisy; correlate with chain
06

ATT&CK Mapping

TacticTechniqueBehaviorQuery / Control
ExecutionT1204.004 — User Execution: Malicious Copy & PasteClickFix clipboard → Terminal pasteQ1, §12 awareness
ExecutionT1059.002 / T1059.004 — AppleScript / Unix Shellosascript JXA + bash one-linerQ1, Q4
Command & ControlT1071.004 — DNS (dead-drop resolver)dig TXT lookup drives behaviorQ1, Q5
PersistenceT1543.001 — Launch Agent~/Library/LaunchAgents/com.components.* + launchctlQ2
DiscoveryT1082 / T1033 — System / Owner discoveryioreg, whoami, id -unQ3
Credential AccessT1056.002 / T1555 — GUI input capture / credential storesSpoofed dialog + dscl authonly; Keychain theftQ3, §7
Collection / ExfilT1539 / T1217 / T1041 — Cookies / Browser data / C2 exfilBrowser, wallet, Telegram data over C2Q4, Q5
07

Native Audit-Log Hunts

macOS-native checks that complement the Falcon CQL in §8 — useful for live triage on a suspect Mac (run with care, read-only first).

Persistence & artifacts (macOS shell)

# Suspicious LaunchAgents (Phexia pattern: com.components.* / random label)
ls -la ~/Library/LaunchAgents/ /Library/LaunchAgents/
grep -rEl "osascript|curl|base64|dig .*TXT" ~/Library/LaunchAgents/ 2>/dev/null
# Harvested password store written by the implant
ls -la ~/.passphrase 2>/dev/null
# Loaded agents referencing the home dir
launchctl list | grep -Ei "components|launch\."

Unified log — bootstrap & beacon (macOS)

# dig TXT dead-drop + osascript execution in the last day
log show --last 1d --predicate 'process == "dig" OR process == "osascript" OR process == "curl"' 2>/dev/null \
  | grep -Ei "TXT|api.php|get.php|osascript"
# tccutil reset abuse (privacy-prompt coaxing)
log show --last 1d --predicate 'process == "tccutil"' 2>/dev/null

Treat a LaunchAgent that shells out to osascript/curl, plus the presence of ~/.passphrase, as confirmed Phexia infection — proceed to §14 containment and capture the plist + script before removal.

08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · ClickFix bootstrap — dig TXT / curl piped into osascript
CONF HIGHFP LOWCOST LOW

Looks for: the fileless bootstrap — a shell/Terminal-descended process running dig for a TXT record and/or curl output executed by osascript. FP: very low; curl|osascript and ad-hoc TXT lookups are rare on user endpoints. Review every hit.

// HUNT: Phexia ClickFix bootstrap — dig TXT dead-drop + curl-to-osascript (macOS)
// MITRE: T1059.002, T1071.004, T1204.004 | CONF: high  FP: low  COST: low | REQUIRES: ProcessRollup2 (macOS)
// FALSE POSITIVES: rare; some admin tooling pipes curl output — review CommandLine
// TUNING: keep ParentBaseFileName scoped to shells/Terminal; widen if launched by an app bundle
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| event_platform=Mac
| CommandLine=/(dig\s+.*\s+txt|dig\s+@?[\d.]+.*txt|curl\s.{0,160}(osascript|osacompile)|osascript\s.{0,120}(do shell script|IOPlatformExpertDevice))/i
| groupBy([ComputerName, ParentBaseFileName, ImageFileName, CommandLine], function=([count(aid, as=hits), collect([UserName])]))
| sort(hits, order=desc)
Q2 · LaunchAgent persistence written under ~/Library/LaunchAgents
CONF HIGHFP MEDCOST LOW

Looks for: a new LaunchAgent plist (Phexia pattern com.components.*) written to ~/Library/LaunchAgents/, especially by a shell/osascript process. FP: legitimate apps install LaunchAgents; exclude known vendor labels and signed installers, and prioritize plists written by bash/osascript/curl.

// HUNT: Phexia LaunchAgent persistence write (macOS)
// MITRE: T1543.001 | CONF: high  FP: medium  COST: low | REQUIRES: file-write telemetry (macOS)
// FALSE POSITIVES: legit app LaunchAgents; allowlist signed vendor bundle IDs
// TUNING: prioritize ContextBaseFileName in (bash, sh, osascript, curl); exclude known good labels
#event_simpleName=/NewExecutableWritten|NewScriptWritten|MachOFileWritten/
| event_platform=Mac
| TargetFileName=/\/Library\/LaunchAgents\/.*\.plist$/i
| TargetFileName=/(com\.components\.|com\.launch\.)/i
| groupBy([ComputerName, ContextBaseFileName, TargetFileName], function=([count(aid, as=writes), collect([UserName])]))
| sort(writes, order=desc)
Q3 · macOS credential-access tradecraft (dscl / spoofed dialog / tccutil)
CONF HIGHFP LOWCOST LOW

Looks for: the credential-harvest stage — dscl . authonly (local password validation), osascript displaying a "System Preferences"/password dialog, or tccutil reset All. FP: low under a shell/osascript parent; dscl authonly is rarely used by normal users.

// HUNT: Phexia credential access — dscl authonly / spoofed password dialog / tccutil reset (macOS)
// MITRE: T1056.002, T1555, T1548 | CONF: high  FP: low  COST: low | REQUIRES: ProcessRollup2 (macOS)
// FALSE POSITIVES: rare; some MDM tooling uses dscl — allowlist by ImageFileName/parent
// TUNING: combine with Q1/Q2 host hits to confirm full chain
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| event_platform=Mac
| CommandLine=/(dscl\s+\.\s+(-)?authonly|tccutil\s+reset\s+All|osascript.{0,120}(System Preferences|password|passphrase)|ioreg\s+-rd1\s+-c\s+IOPlatformExpertDevice)/i
| groupBy([ComputerName, ParentBaseFileName, ImageFileName, CommandLine], function=([count(aid, as=hits), collect([UserName])]))
| sort(hits, order=desc)
Q4 · Recurring osascript/curl C2 beacon (~60s cadence)
CONF MEDFP MEDCOST MED

Looks for: repeated curl/osascript executions consistent with the 60-second task-polling loop. FP: automation/polling tools also recur; raise the execs threshold and correlate with Q1/Q2/Q3 on the same host.

// HUNT: Phexia 60s C2 polling loop — recurring curl/osascript (macOS)
// MITRE: T1071.001, T1041 | CONF: medium  FP: medium  COST: medium | REQUIRES: ProcessRollup2 (macOS)
// FALSE POSITIVES: legit polling daemons; correlate with persistence + bootstrap hits
// TUNING: adjust the execs threshold (default >= 10/host/hour) to your baseline
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| event_platform=Mac
| ImageFileName=/\/(curl|osascript)$/i
| CommandLine=/(api\.php|get\.php|txid=|connect&username=|--connect-timeout\s+5)/i
| groupBy([ComputerName, ImageFileName], function=([count(aid, as=execs), collect([CommandLine])]))
| execs>=10
| sort(execs, order=desc)
Q5 · Atomic sweep — published C2 domains & IP
CONF HIGHFP LOWCOST LOW

Looks for: any host resolving or connecting to the published Phexia C2 domains or the vdsina IP. FP: low for the domains; validate the IP (shared hosting) before blocking estate-wide.

// HUNT: Phexia atomic C2 sweep — domains + vdsina IP (macOS/all)
// MITRE: T1071 | CONF: high  FP: low  COST: low | REQUIRES: DnsRequest / NetworkConnectIP4
// FALSE POSITIVES: low; IP is shared VPS — confirm before broad block
// TUNING: extend the domain list as new dead-drop / Telegram-sourced domains surface
#event_simpleName=/DnsRequest|NetworkConnectIP4/
| DomainName=/(goldenticketsshop\.com|x2db\.cx|a5db\.ch|a6b6\.biz|kfcnevkusno\.one)$/i OR RemoteAddressIP4=/^146\.103\.98\.59$/
| groupBy([ComputerName, DomainName, RemoteAddressIP4], function=([count(aid, as=hits), collect([ContextBaseFileName])]))
| sort(hits, order=desc)

Field-name note: queries use standard Falcon fields (#event_simpleName, event_platform, ParentBaseFileName, ImageFileName, CommandLine, TargetFileName, ContextBaseFileName, DomainName, RemoteAddressIP4, ComputerName, aid, UserName). Confirm the macOS file-write #event_simpleName values available in your tenant for Q2 (the path/label filters carry the precision).

09

Custom IOA Recommendations

IOA namePatternExclusionsDeployment
macOS-ClickFix-Curl-OsascriptShell/Terminal → curl output piped to osascript, or dig … TXT bootstrap (process-create IOA, macOS)Sanctioned admin scripts that pipe curlHost group: all Macs; Action: Detect → Prevent
macOS-Phexia-LaunchAgentLaunchAgent plist written under ~/Library/LaunchAgents by bash/osascript/curlSigned vendor installers / MDMHost group: Macs; Action: Detect
macOS-Cred-Dialog-Dsclosascript password dialog + dscl . authonly within the same process treeMDM enrollment flowsHost group: Macs; Action: Prevent (high fidelity)

Phexia uses only built-in macOS binaries (living-off-the-land), so scope IOAs by behavioral chaining (parent shell → curl/osascript → persistence/credential step) rather than by file hash. Start in Detect; promote the credential-dialog IOA to Prevent first.

10

Machine-Readable IOC Appendix

Atomic indicators are from cited research and ready to import; the IP is shared VPS infrastructure — set it to detect/validate rather than hard block. Domains rotate; keep the list updated from the dead-drop / Telegram source.

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
domain,goldenticketsshop.com,block,high,2026-09-26,Phexia macOS C2 / dead-drop,campaign:phexia-clickfix
domain,x2db.cx,block,high,2026-09-26,Phexia macOS rotating C2,campaign:phexia-clickfix
domain,a5db.ch,block,high,2026-09-26,Phexia macOS rotating C2,campaign:phexia-clickfix
domain,a6b6.biz,block,high,2026-09-26,Phexia macOS rotating C2,campaign:phexia-clickfix
domain,kfcnevkusno.one,block,high,2026-09-26,Phexia macOS rotating C2,campaign:phexia-clickfix
ipv4,146.103.98.59,detect,medium,2026-09-26,Phexia vdsina VPS C2 (validate-shared),campaign:phexia-clickfix
Host ArtifactsmacOS paths
PERSIST  ~/Library/LaunchAgents/com.components.*.plist   -> LaunchAgent (label com.launch.*)
SCRIPT   ~/Library/<campaign-id>                          -> second-stage osascript body
CREDS    ~/.passphrase                                   -> harvested local password
C2URI    /api.php?check  /get.php?txid=  /api.php?connect&username=
TG       t.me/neverfakebot                               -> operator domain-distribution bot
Behavioral Signaturesship as-is
BEHAVIOR: shell -> dig TXT dead-drop -> curl piped to osascript          -> detect (Q1)
BEHAVIOR: LaunchAgent com.components.* written under ~/Library           -> detect (Q2)
BEHAVIOR: dscl . authonly + spoofed System Preferences dialog            -> detect (Q3)
BEHAVIOR: tccutil reset All by a shell/osascript descendant              -> detect (Q3)
BEHAVIOR: recurring curl/osascript to /api.php /get.php (~60s)            -> hunt   (Q4)
BEHAVIOR: resolve/connect to published Phexia domains or 146.103.98.59   -> block  (Q5)
Triage One-Linersread-only first
CHECK  ls -la ~/Library/LaunchAgents/ | grep -Ei "components|launch\."
CHECK  test -f ~/.passphrase && echo "PHEXIA passphrase store present"
CHECK  launchctl list | grep -Ei "components|launch\."
LOG    log show --last 1d --predicate 'process == "osascript"' | grep -Ei "api.php|txid"
KILL   (after capture) launchctl unload ~/Library/LaunchAgents/com.components.*.plist
11

Detection Validation Gates

GateCheckPass criteria
Telemetry readyFalcon for macOS reporting ProcessRollup2, file-write, DnsRequest, NetworkConnect on all MacsAll Macs visible in last 24h with macOS events
Benign baselineRun Q2/Q4 over 7–14 days; catalog legitimate LaunchAgents and recurring curl/osascript daemonsDocumented allowlist before alerting
Positive testIn a lab Mac, run a benign dig example.com TXT then echo 'log "x"' | osascript; write a dummy ~/Library/LaunchAgents/com.components.test.plistQ1 and Q2 fire
Atomic sweepRun Q5 across the estate for the published domains/IPZero hits in a clean estate; any hit = investigate
PromotionCredential-dialog IOA (Q3 pattern) → Prevent; ClickFix bootstrap IOA → Detect then PreventSigned off by detection owner
12

Hardening — Tiered

Immediate (0–72h)
  • Block the published C2 domains/IP at DNS/proxy and import the §10 IOCs (domains block, IP detect-and-validate).
  • Hunt now with Q1–Q5 over the last 14 days; for any host with a LaunchAgent + ~/.passphrase hit, isolate and run §14.
  • User awareness flash: warn that "paste this command into Terminal to verify you're human" is an attack — never paste commands from a web page (MITRE M1017 User Training; counters T1204.004).
Near term (this week)
  • Deploy the §9 IOAs (ClickFix bootstrap, LaunchAgent, credential-dialog) in Detect across all Macs; promote the credential-dialog IOA to Prevent.
  • Restrict / monitor Terminal and osascript for non-developer user populations; alert on osascript spawned by browsers or from clipboard-paste workflows.
  • Enforce that browser password managers / Keychain require re-auth; rotate credentials for any user who ran the lure (M1027).
Strategic
  • Deploy macOS configuration profiles that limit LaunchAgent creation to managed/MDM scopes and flag user-writable LaunchAgents (M1028).
  • Egress controls / DNS filtering so dead-drop TXT lookups to attacker domains and beacon traffic are blocked and logged (M1037 Filter Network Traffic).
  • Roll out phishing-resistant MFA so harvested local/web passwords have limited reuse value (M1032).
13

Deployable Playbooks

1 · Sweep Macs for Phexia persistence (Falcon RTR / MDM script, read-only)

#!/bin/bash
# Run per-user context. Read-only enumeration — capture before remediation.
for ua in /Users/*; do
  la="$ua/Library/LaunchAgents"
  [ -d "$la" ] && grep -rEl "osascript|curl|base64|dig .*[Tt][Xx][Tt]" "$la" 2>/dev/null
  [ -f "$ua/.passphrase" ] && echo "PHEXIA passphrase store: $ua/.passphrase"
done

2 · Remove persistence after evidence capture

# Capture first (copy plist + script to evidence), THEN unload & remove:
plist=~/Library/LaunchAgents/com.components.<rand>.plist
launchctl unload "$plist" 2>/dev/null
# move (do not delete) to quarantine for analysis:
mkdir -p ~/phexia-quarantine && mv "$plist" ~/phexia-quarantine/ 2>/dev/null
rm -f ~/.passphrase 2>/dev/null

3 · Block C2 at the network edge

# DNS/proxy denylist (import via your control plane):
goldenticketsshop.com
x2db.cx
a5db.ch
a6b6.biz
kfcnevkusno.one
# Detect-and-validate (shared VPS): 146.103.98.59

Because Phexia rotates domains via a Telegram bot, treat the domain list as a moving target — block what's known, but rely on the §8 behavioral queries to catch new infrastructure.

14

Containment Runbook

PhaseActionsOwnerEvidence
IsolateNetwork-contain the Mac via Falcon RTR; block the §10 C2 at DNS/proxySOCContainment timestamp, host ID
CapturePreserve the LaunchAgent plist, the ~/Library/<id> script, and ~/.passphrase before removal; pull the osascript/curl process treeIRPlist + script + process tree
EradicateUnload + quarantine the LaunchAgent; remove dropped scripts and ~/.passphrase; confirm no second persistenceIR + EndpointRemoved artifact list
CredentialsRotate the user's local password + every credential the stealer could reach: browser-saved, Keychain, crypto wallets, Telegram session, password-manager vaultIAM + userRotation records, wallet review
Recover & monitorRe-image if RAT tasking ran hands-on; keep Q1–Q5 + IOAs enabled; watch for re-infection from new domainsSOC + EndpointPost-recovery hunt results
15

Detection Coverage Map

TechniqueBehaviorCQLIOACoverage
T1204.004 / T1059ClickFix paste → bash/osascript bootstrapQ1macOS-ClickFix-Curl-OsascriptGood
T1071.004dig TXT dead-drop resolverQ1, Q5macOS-ClickFix-Curl-OsascriptGood
T1543.001LaunchAgent persistenceQ2macOS-Phexia-LaunchAgentGood
T1056.002 / T1555Spoofed dialog + dscl + Keychain theftQ3macOS-Cred-Dialog-DsclGood
T1071.001 / T104160s C2 polling + exfilQ4, Q5IOC importPartial
T1539 / T1217Browser/cookie/wallet collectionQ3 (chain) · §7Partial

Coverage note: collection of specific browser/wallet/Keychain files is read-activity that is noisy in isolation — this pack catches it via the surrounding chain (bootstrap → persistence → credential dialog → beacon) rather than alerting on every file read. C2 exfil over HTTPS is opaque, so detection leans on destination + cadence (Q4/Q5). Falcon-for-macOS coverage of process/file/DNS makes the early chain high-fidelity.

16

Hunt Summary Ticket

TITLE      : Phexia Stealer — macOS ClickFix Infostealer + RAT
SEVERITY   : High — active campaign (June 2026), credential + wallet theft, persistent RAT
SCOPE      : macOS endpoints (any version) — social-engineering delivery, no CVE
HYPOTHESIS : ClickFix paste -> dig TXT dead-drop -> curl|osascript -> LaunchAgent -> 60s C2 -> creds/exfil
QUERIES    : Q1 bootstrap | Q2 LaunchAgent | Q3 cred access | Q4 C2 beacon | Q5 atomic domain/IP sweep
DO FIRST   : Block C2 domains; import IOCs; hunt Q1-Q5 14d; isolate hosts with LaunchAgent + ~/.passphrase
FINDINGS   : <fill from hunt>
GAPS       : HTTPS exfil opaque; browser/wallet reads caught via chain, not standalone
ACTIONS    : Block C2, deploy IOAs (sect 9), rotate creds/wallets/Keychain, user-awareness on ClickFix
OWNER      : HuntPack
VERSION    : v0.1 · 2026-06-26
17

Changelog

v0.22026-06-29CQL syntax review (crowdstrike-logscale-v3): removed invalid FileCreateInfo event (Q2).
v0.12026-06-26Initial HuntPack for the Phexia Stealer macOS ClickFix campaign (with HellsUchecker context). 5 CQL hunt queries (ClickFix bootstrap, LaunchAgent persistence, credential-access tradecraft, 60s C2 beacon, atomic domain/IP sweep), macOS-native triage hunts, custom IOA recommendations, tiered hardening, playbooks, and containment. Ships cited atomic IOCs (5 C2 domains, vdsina IP, LaunchAgent + ~/.passphrase artifacts) — all traced to the Cookie Engineer / Netskope research; none fabricated.
18

References

TierSourceUsed forAccess date
ReportingThe Hacker News — ClickFix campaigns expand (June 2026)Phexia + HellsUchecker naming, ClickFix/EtherHiding2026-06-26
ResearchCookie Engineer — macOS Phexia campaignFull chain + atomic IOCs (domains, IP, LaunchAgent, osascript)2026-06-26
ResearchNetskope — macOS ClickFix AppleScript stealer + RATClickFix lure, AppleScript stealer, persistent RAT2026-06-26
VendorMicrosoft Security — macOS ClickFix utilities lureDelivery corroboration2026-06-26
SecondaryObjective-See — Mac malware roundupmacOS infostealer landscape context2026-06-26
FrameworkMITRE ATT&CK — T1543.001 Launch AgentPersistence technique + mitigations2026-06-26