The ClickFix social engineering technique has crossed a meaningful threshold: it is now being used to deliver a Go-based infostealer against macOS users, with cryptocurrency theft as the primary objective. According to reporting from BleepingComputer, the malware steals cryptocurrency assets, browser-stored passwords, Apple Keychain data, and cached credentials — a full-spectrum credential harvesting operation aimed squarely at the Mac user base that many organizations still treat as a lower-risk population.
This matters because ClickFix doesn't exploit a software vulnerability. It exploits the user. Victims are lured — typically through fake CAPTCHA pages, bogus browser update prompts, or counterfeit error dialogs — into copying and pasting a malicious command into Terminal themselves. That single design choice defeats a large portion of traditional perimeter and signature-based defenses: there is no exploit chain to catch, no suspicious attachment, and on macOS there is frequently no EDR agent watching at all.
If your environment includes macOS endpoints — developer laptops, executive machines, creative teams — this campaign deserves immediate hunting attention. The blast radius of a single successful execution includes wallet drain, enterprise SSO session theft via browser cookies, and domain credential exposure through cached credentials and Keychain contents.
Technical Analysis
What is being delivered
The payload in this campaign is a Go-compiled infostealer for macOS. Go has become a language of choice for cross-platform commodity malware because it produces large, statically-linked binaries that are awkward for signature engines and easy to recompile for x86_64 and Apple Silicon (arm64) from one codebase. The stealer's collection set includes:
- Cryptocurrency wallet data — wallet application data directories, browser extension wallets (e.g., MetaMask, Phantom-style extension storage), and related secrets
- Browser-stored passwords and cookies — Chromium-based browsers (Chrome, Edge, Brave, Arc) and Firefox profile data; stolen cookies enable session hijacking that bypasses MFA
- Apple Keychain data — the crown jewels on macOS: saved passwords, app tokens, Wi-Fi credentials, and in many cases enterprise credentials synced via iCloud Keychain
- Cached credentials — application-level tokens and cached logins harvested from the filesystem
How the ClickFix attack chain works (macOS variant)
The ClickFix technique, first popularized against Windows users with fake "fix this error" instructions, adapts cleanly to macOS:
- Lure: The victim lands on a compromised or malicious site presenting a fake CAPTCHA, a fake "browser update required" page, or a fabricated error message.
- Instruction: The page instructs the user to open Terminal (Spotlight → Terminal) and paste a provided command to "verify" or "fix" something.
- Execution: The pasted command is typically a
curl ... | bashorcurl ... | zshone-liner, or anosascript-driven flow, that downloads and executes the Go binary — often staged in/tmp,/private/tmp,$TMPDIR, or a hidden directory in the user's home folder. - Collection & staging: The stealer reads browser profile databases (e.g.,
~/Library/Application Support/Google/Chrome/...), Keychain files (~/Library/Keychains/login.keychain-db), and wallet paths, then archives and exfiltrates over HTTPS to attacker infrastructure. - Keychain access: Modern infostealers frequently attempt to trigger a Keychain authorization prompt — or invoke the
securitybinary (e.g.,security find-generic-password,security dump-keychain) — to coerce or trick the user into unlocking access with their login password.
Critically, the user executes the payload voluntarily, which means Gatekeeper quarantine attributes (com.apple.quarantine) may be bypassed or absent depending on the delivery method, and there is no phishing email or malicious document to retroactively block.
Affected platforms and exploitation status
- Platforms: macOS on both Intel (x86_64) and Apple Silicon (arm64). Go's universal/multi-arch compilation means defenders should assume both.
- No CVE applies: This is a social engineering and malware delivery campaign, not a vulnerability. There is no patch for "user pastes command into Terminal" — defense is behavioral, detective, and architectural.
- Exploitation status: Confirmed active in-the-wild delivery per the BleepingComputer report. ClickFix as a technique has seen sustained, growing adoption across crimeware groups through 2025 and into 2026, and the macOS variant represents an expansion of an already-proven playbook.
Detection & Response
The durable detection opportunities here are behavioral: Terminal-launched download-and-pipe execution, the security binary touching the Keychain, osascript credential prompts, and unsigned Go binaries executing from temp paths. These are the chokepoints every ClickFix-macOS variant must pass through regardless of payload recompilation.
Sigma Rules
---
title: macOS ClickFix Curl Pipe to Shell Execution
id: 3f8c1a92-7b2e-4d51-9f63-2a4b6c8d0e1f
status: experimental
description: Detects curl/wget download-and-pipe-to-shell patterns consistent with ClickFix lures that instruct macOS users to paste commands into Terminal. Parent process is Terminal or iTerm, which strongly indicates manual user-pasted execution.
references:
- https://www.bleepingcomputer.com/news/security/clickfix-attack-pushes-macos-infostealer-for-crypto-theft-attacks/
- https://attack.mitre.org/techniques/T1059/004/
- https://attack.mitre.org/techniques/T1204/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.execution
- attack.t1059.004
- attack.t1204
logsource:
category: process_creation
product: macos
detection:
selection_parent:
ParentImage|endswith:
- '/Terminal'
- '/iTerm2'
- '/zsh'
- '/bash'
selection_download:
CommandLine|contains:
- 'curl '
- 'wget '
selection_pipe:
CommandLine|contains:
- '| bash'
- '| sh'
- '| zsh'
- '|bash'
- '|sh'
- '|zsh'
condition: selection_parent and selection_download and selection_pipe
falsepositives:
- Legitimate developer installation scripts (Homebrew, rustup, oh-my-zsh) — baseline and allowlist by domain
level: high
---
title: macOS Keychain Access via security Utility
id: 9d2e5b14-6c3f-4a78-b521-8e3d7c9a1f02
status: experimental
description: Detects invocation of the macOS security binary to enumerate or dump Keychain contents, a common infostealer behavior for harvesting Apple Keychain data and cached credentials.
references:
- https://www.bleepingcomputer.com/news/security/clickfix-attack-pushes-macos-infostealer-for-crypto-theft-attacks/
- https://attack.mitre.org/techniques/T1555/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.credential_access
- attack.t1555
- attack.t1555.001
logsource:
category: process_creation
product: macos
detection:
selection_img:
Image|endswith: '/security'
selection_cmd:
CommandLine|contains:
- 'dump-keychain'
- 'find-generic-password'
- 'find-internet-password'
- 'export'
filter_keychain:
CommandLine|contains:
- 'login.keychain'
- 'keychain-db'
condition: selection_img and selection_cmd and not filter_keychain
falsepositives:
- MDM enrollment and legitimate password management tooling
- Developer CI scripts retrieving signing certificates
level: high
---
title: macOS Unsigned Binary Execution from Temp Directory
id: 5b7a3c81-2e9d-4f46-a173-6d8c4e2b9f05
status: experimental
description: Detects execution of binaries from macOS temporary or hidden staging directories where ClickFix-delivered Go infostealers commonly write payloads before execution.
references:
- https://www.bleepingcomputer.com/news/security/clickfix-attack-pushes-macos-infostealer-for-crypto-theft-attacks/
- https://attack.mitre.org/techniques/T1204/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.execution
- attack.t1204
- attack.t1036
logsource:
category: process_creation
product: macos
detection:
selection_path:
Image|contains:
- '/private/tmp/'
- '/var/folders/'
- '/.tmp/'
- '/Users/Shared/.'
selection_parent:
ParentImage|endswith:
- '/zsh'
- '/bash'
- '/Terminal'
- '/iTerm2'
filter_common:
Image|contains:
- '/Xcode'
- '/DerivedData'
condition: selection_path and selection_parent and not filter_common
falsepositives:
- Build systems executing from DerivedData or temp build paths — filter by known developer tooling
level: medium
KQL (Microsoft Sentinel / Defender)
If your Macs are onboarded to Microsoft Defender for Endpoint, this query hunts the full ClickFix behavioral cluster: shell-piped downloads from Terminal, security Keychain access, and osascript-driven password prompts — the three reliable fingerprints of this campaign.
// ClickFix macOS infostealer hunt: download-pipe execution, Keychain access, and credential prompts
let lookback = 14d;
let clickfix_exec = DeviceProcessEvents
| where Timestamp > ago(lookback)
| where DeviceOS has "macOS" or DeviceOS has "Mac"
| where InitiatingProcessFileName in~ ("Terminal", "iTerm2", "zsh", "bash", "sh")
| where ProcessCommandLine has_any ("curl", "wget")
| where ProcessCommandLine matches regex @"\|\s*(bash|sh|zsh)"
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine, SHA256, InitiatingProcessFileName, ReportId
| extend DetectionType = "CurlPipeToShell";
let keychain_access = DeviceProcessEvents
| where Timestamp > ago(lookback)
| where DeviceOS has "macOS" or DeviceOS has "Mac"
| where FileName =~ "security"
| where ProcessCommandLine has_any ("dump-keychain", "find-generic-password", "find-internet-password", "login.keychain")
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine, SHA256, InitiatingProcessFileName, ReportId
| extend DetectionType = "KeychainAccess";
let osascript_prompt = DeviceProcessEvents
| where Timestamp > ago(lookback)
| where DeviceOS has "macOS" or DeviceOS has "Mac"
| where FileName =~ "osascript"
| where ProcessCommandLine has_any ("display dialog", "hidden answer", "with password", "System Preferences")
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine, SHA256, InitiatingProcessFileName, ReportId
| extend DetectionType = "OsascriptCredPrompt";
union clickfix_exec, keychain_access, osascript_prompt
| summarize FirstSeen=min(Timestamp), LastSeen=max(Timestamp), DetectionTypes=make_set(DetectionType), Commands=make_set(ProcessCommandLine, 10) by DeviceName, AccountName, SHA256
| order by FirstSeen desc
Velociraptor VQL
For DFIR triage on a suspected Mac, this artifact pulls suspicious temp-path processes, persistence via LaunchAgents/LaunchDaemons, and recently-modified browser credential stores in one pass.
-- ClickFix macOS infostealer triage: suspicious execution paths, persistence, and credential-store access
SELECT Pid, Name, CommandLine, Exe, Username, CreateTime
FROM pslist()
WHERE Exe =~ '(?i)/private/tmp/|/var/folders/|/Users/Shared/\.'
OR CommandLine =~ '(?i)curl.*\|\s*(bash|sh|zsh)'
OR CommandLine =~ '(?i)security (dump-keychain|find-generic-password|find-internet-password)'
-- Check LaunchAgents and LaunchDaemons for recently planted persistence
SELECT FullPath, Mtime, Size,
read_file(filename=FullPath, length=4096) AS PlistContent
FROM glob(globs=['/Library/LaunchAgents/*.plist',
'/Library/LaunchDaemons/*.plist',
'/Users/*/Library/LaunchAgents/*.plist'])
WHERE Mtime > now() - (14 * 24 * 3600)
ORDER BY Mtime DESC
-- Recent access to browser credential stores and Keychain files
SELECT FullPath, Mtime, Atime, Size
FROM glob(globs=['/Users/*/Library/Application Support/Google/Chrome/*/Login Data',
'/Users/*/Library/Application Support/Google/Chrome/*/Cookies',
'/Users/*/Library/Keychains/login.keychain-db'])
ORDER BY Atime DESC
Remediation & Verification Script (Bash)
Run this on suspected macOS hosts to hunt for ClickFix staging artifacts, kill suspicious processes, and gather evidence before credential rotation.
#!/bin/bash
# ClickFix macOS infostealer triage and containment script
# Run with sudo on the suspected host. Preserves evidence before remediation.
EVIDENCE_DIR="/var/tmp/clickfix_triage_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$EVIDENCE_DIR"
echo "[+] Collecting suspicious processes (temp paths, curl pipes, security binary)..."
ps aux | grep -Ei '/private/tmp/|/var/folders/|curl.*\| *(bash|sh|zsh)|security (dump-keychain|find-generic-password)' \
| grep -v grep > "$EVIDENCE_DIR/suspicious_processes.txt"
cat "$EVIDENCE_DIR/suspicious_processes.txt"
echo "[+] Dumping recent shell history for pasted ClickFix commands..."
for user_home in /Users/*; do
for hist in "$user_home/.zsh_history" "$user_home/.bash_history"; do
[ -f "$hist" ] && grep -Ei 'curl|wget|osascript|base64' "$hist" >> "$EVIDENCE_DIR/shell_history_hits.txt" 2>/dev/null
done
done
echo "[+] Listing recently modified LaunchAgents/LaunchDaemons (last 14 days)..."
find /Library/LaunchAgents /Library/LaunchDaemons /Users/*/Library/LaunchAgents \
-name '*.plist' -mtime -14 -exec ls -la {} \; 2>/dev/null | tee "$EVIDENCE_DIR/persistence.txt"
echo "[+] Checking for unsigned/unsigned-looking binaries in temp staging paths..."
find /private/tmp /var/folders /Users/Shared -type f -perm +111 -mtime -14 2>/dev/null | while read -r f; do
sig=$(codesign -dv "$f" 2>&1 | head -1)
echo "$f :: $sig" >> "$EVIDENCE_DIR/unsigned_binaries.txt"
done
cat "$EVIDENCE_DIR/unsigned_binaries.txt" 2>/dev/null
echo "[+] Quarantining suspicious temp-path executables..."
find /private/tmp /Users/Shared -type f -perm +111 -mtime -14 2>/dev/null | while read -r f; do
if ! codesign -v "$f" 2>/dev/null; then
mv "$f" "$EVIDENCE_DIR/" && echo "QUARANTINED: $f"
fi
done
echo "[+] Done. Evidence preserved in $EVIDENCE_DIR"
echo "[!] NEXT STEPS: Force Keychain password change, revoke browser sessions/cookies,"
echo "[!] rotate enterprise SSO credentials, and treat all crypto wallets on this host as compromised."
Remediation
Because this campaign exploits user behavior rather than a software flaw, remediation is layered:
Immediate (contain the incident):
- Isolate the host from the network. Assume full credential compromise on any machine where the stealer executed.
- Rotate everything: Apple ID password, login keychain password, all browser-saved credentials, enterprise SSO/IdP passwords, and any application tokens cached on the device. Stolen session cookies mean you must also revoke active sessions at the IdP (Okta, Entra ID, Google Workspace) — password resets alone do not invalidate hijacked sessions.
- Treat crypto wallets as drained: Move any remaining assets to new wallets with fresh seed phrases generated on a clean device. Never reuse a seed phrase exposed to a compromised host.
Hardening (reduce the attack surface):
- Deploy macOS EDR. The single biggest gap in most environments: Macs without telemetry. Onboard every macOS endpoint to your EDR/MDR stack so the detections above actually fire.
- Enforce Gatekeeper and Notarization policy via MDM: Block execution of unsigned and unnotarized binaries. ClickFix payloads delivered via curl often lack quarantine attributes, but configuration profiles can still restrict execution to notarized or App Store software.
- Restrict Terminal/shell access for standard users where role-appropriate (developer exceptions aside), and alert on Terminal use by non-technical user populations — a finance or HR user spawning curl-piped shells is a high-fidelity signal.
- Browser hygiene policy: Discourage password storage in browsers for corporate credentials; enforce a managed password manager, and deploy conditional access policies that bind sessions to compliant devices to limit cookie-replay value.
- User awareness, specifically on ClickFix: Train users that no legitimate website, CAPTCHA, or "update" will ever ask them to paste commands into Terminal. This one sentence, internalized, kills the entire technique.
Detect (ongoing):
- Deploy the Sigma rules above to your macOS telemetry pipeline, run the KQL hunt across the last 14 days at minimum, and add the Velociraptor artifact to your macOS triage playbook. Watch for the
securitybinary and osascript credential dialogs — these are the highest-signal, lowest-noise indicators in the campaign.
Related Resources
Security Arsenal Managed SOC Services AlertMonitor Platform Book a SOC Assessment soc-mdr Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.