AmnesiaStealer — macOS ClickFix Infostealer + Live Browser Hijack
Executive Summary
AmnesiaStealer is a newly discovered, multi-stage Rust-based macOS infostealer first reported by Jamf Threat Labs (researcher Thijs Xhaflaire) on 2026-08-13. It is delivered via a ClickFix-style lure: a counterfeit GitHub "Download for macOS" page — correct dark theme, Octocat logo, a fake "Verified Publisher" badge — presenting a "Terminal installation" box that tricks the victim into pasting and running a Base64-encoded Terminal command. The malware is named after the "Amnesia Panel" backend it reports to, whose failed-login page returns Russian-language error text.
Three-stage chain: Stage 0 is a self-deleting shell dropper that strips the quarantine attribute, ad-hoc code-signs, and launches a password-protected ("dulin") ZIP payload; Stage 1 is the Rust infostealer itself, which stages loot in a directory named with 25 random alphanumeric characters under /tmp (subfolders Browsers/, Passwords/, Wallets/, Notes/, Telegram/, FileGrabber/, plus system_info.json, installed_apps.txt, collection_report.txt, and a cleartext pwd file — the harvested local password is also written to ~/.pwd); Stage 2 is an on-demand stream_module that gives the operator live, hands-on-keyboard control of the victim's browser.
Persistence is a root LaunchDaemon that impersonates Apple's crash-reporting service (com.apple.ReportCrash.agent_<digits>.plist under /Library/LaunchDaemons/). Data theft spans 16 Chromium-family browsers (Chrome, Brave, Arc, Edge, Opera, Vivaldi, Chromium, and others) plus Safari, Apple Notes, Telegram, and iCloud/local Keychain. For Safari cookie theft the malware reuses CVE-2020-9771 — a macOS Time Machine / mount_apfs local-snapshot TCC bypass Apple patched in Catalina 10.15.4/10.15.5. A host where this bypass actually succeeds is either running an unpatched or downgraded macOS, or is exposed to a regressed/variant bypass — treat a successful mount_apfs -o nobrowse invocation as a hardening signal in its own right, independent of AmnesiaStealer.
Distinctive capability: the Stage 2 stream_module clones the victim's browser profile, launches it headless, and relays it over the Chrome DevTools Protocol (CDP) — the operator receives a live screencast at ~3fps with full keyboard, mouse, scroll, navigation, and tab-management input, effectively driving the victim's already-authenticated browser session (banking, email, social) without any on-screen change the victim would notice. A clipboard-hijacking module targets nine cryptocurrency address formats (Bitcoin, Bitcoin Cash, Ethereum, TRON, Litecoin, Monero, Solana, Ripple, ATOM/Cosmos) but was observed disabled in the analyzed build — treated below as a dormant capability to watch, not a firing detection.
Defender priority: This pack is built around what makes AmnesiaStealer distinct from other macOS ClickFix stealers already in the HuntPack library (AMOS, MacSync, Phexia) — the 25-char /tmp staging directory with named subfolders (Q3), the root LaunchDaemon masquerading as Apple crash reporting (Q4), the mount_apfs -o nobrowse CVE-2020-9771 signal (Q5), the Amnesia Panel C2 domain family (Q8), and the CDP remote-debugging flags that precede a live browser hijack (Q9). Pair the ClickFix bootstrap hunt (Q1–Q2) with these AmnesiaStealer-specific behaviors rather than relying on generic ClickFix signatures alone.
Source Review & Web Hunter Notes
| Source | Tier | Key finding | Carry forward |
|---|---|---|---|
| Jamf Threat Labs — original research (Thijs Xhaflaire) | Primary Research | Full 3-stage architecture, XOR config key, staging dir structure, C2 API paths, TCC bypass techniques, Stage 2 CDP relay details, both binary hashes | Yes |
| The Hacker News — Ravie Lakshmanan | Reporting | Confirms attack chain, clipboard-hijack currency list, exfil staging dir pattern, ~/.pwd cleartext storage, Chrome Safe Storage recovery | Yes |
| SecurityWeek — Ionut Arghire | Reporting | CVE-2020-9771 confirmation, Safe Storage key overwrite / macOS 26 credential-destruction behavior, AMOS/MacSync/CrashStealer overlap note | Yes |
| SecurityAffairs — Pierluigi Paganini | Reporting | LaunchDaemon exact naming pattern (com.apple.ReportCrash.agent), dscl/security unlock-keychain credential flow, CDP Network.getAllCookies detail | Yes |
| Infosecurity Magazine — James Coker | Reporting | Audio-mute-during-theft behavior, 7-browser CDP scope confirmation | Partial (no new IOCs) |
| GBHackers — Divya | Reporting | Full atomic IOC set — domains, IPs, both SHA-256 hashes, archive password, temp-file naming pattern, exact LaunchDaemon path | Yes |
| SC Media — Laura French | Reporting | Targeted file-extension list, CVE-2020-9771 patch-version confirmation, 3fps screencast detail | Yes |
| Brinztech — breach alert | Secondary | XOR key corroboration, mitigation recommendations | Partial (advisory only) |
| Cyber Security News — Guru Baran | Reporting | Landing-page domain (github[.]aoitour[.]com), stage-by-stage delivery mechanics | Yes |
| MacTech.com — Dennis Sellers | Secondary | General campaign summary, Jamf mitigation pointer | Partial (context only) |
Provenance note: every atomic IOC in §4/§10 (SHA-256 hashes, C2 domains, IPs, file paths, archive password, XOR key) is drawn from the cited reporting above and is present verbatim in the saved source snapshots at AmnesiaStealer-macOS-ClickFix-Hunt-sources/. The two IP addresses (138.124.70.84, 138.124.96.160) and the shlyapadulina[.]space / amz.shlyapadulina[.]space domains are corroborated by only one outlet (GBHackers) — flagged medium confidence below; validate before broad blocking. Both SHA-256 hashes and the primary C2 domain (debug[.]allllowef[.]space) are corroborated across two or more independent sources and carry high confidence. Fetched articles were treated strictly as research data — none contained instructions directed at an AI agent, and none were acted upon as commands.
Hunt Brief & Attack Chain
Hunt hypotheses
- H1: A macOS host runs the ClickFix bootstrap —
Terminal/bashdecoding and executing a long Base64 blob pasted from a fraudulent web page. - H2: A process strips the quarantine attribute, ad-hoc code-signs, and
nohup-launches a binary extracted from a password-protected ZIP — the Gatekeeper-bypass handoff between Stage 0 and Stage 1. - H3: A staging directory named with 25 random alphanumeric characters appears under
/tmp, containing the AmnesiaStealer-specific artifact set (Browsers/,Passwords/,Wallets/,Notes/,Telegram/,FileGrabber/,pwd, etc.). - H4: A root LaunchDaemon is installed and loaded that impersonates Apple's crash-reporting service (
com.apple.ReportCrash.agent_<digits>.plist). - H5: A process invokes
mount_apfs -o nobrowseagainst a local Time Machine snapshot — the CVE-2020-9771 TCC-bypass primitive used for Safari cookie theft. - H6: A spoofed "Installer" password prompt is followed by
dscl . -authonlyvalidation and/orsecurity unlock-keychain -p— the credential-harvest stage. - H7: A non-browser process reads Chromium
Cookies/Login Data/Web Data/Local Statestores across multiple distinct browser bundles in a short window — mass credential-store collection. - H8: Any host resolves or connects to the Amnesia Panel C2 domain family (
debug[.]allllowef[.]space,news[.]allllowef[.]space,shlyapadulina[.]space) or its published IPs. - H9: A non-browser process spawns a Chromium-family binary with
--remote-debugging-port/--headlessflags — the Stage 2stream_moduleactivating live CDP browser control.
Attack chain
| # | Step | Observable | ATT&CK |
|---|---|---|---|
| 1 | Counterfeit GitHub page (fake Verified Publisher badge) presents a "Terminal installation" box; victim copies and pastes a Base64 command | Terminal → bash decoding a long Base64 blob | T1204.004 / T1140 |
| 2 | Stage 0 shell script downloads a password-protected ("dulin") ZIP, strips quarantine, ad-hoc codesigns, nohup-launches, clears shell history, self-deletes | xattr -d com.apple.quarantine, codesign --sign -, unzip -P, nohup | T1553.001 / T1140 |
| 3 | Stage 1 Rust infostealer stages loot under a 25-char random /tmp directory | /tmp/<25-char>/Browsers, Passwords, Wallets, Notes, Telegram, FileGrabber, pwd | T1560 / T1005 |
| 4 | Root LaunchDaemon persistence impersonating Apple crash reporter | /Library/LaunchDaemons/com.apple.ReportCrash.agent_<digits>.plist + launchctl bootstrap/load | T1543.004 |
| 5 | Native "Installer" password prompt captured, validated via dscl, stored cleartext at ~/.pwd / staging-dir pwd; used to unlock Keychain | dscl . -authonly, security unlock-keychain -p, cleartext .pwd writes | T1056.002 / T1552.001 / T1555.001 |
| 6 | CVE-2020-9771 TCC bypass mounts an APFS local snapshot to reach protected Safari cookie data | mount_apfs -o nobrowse | T1548 |
| 7 | 16 Chromium-family browsers + Safari + Apple Notes + Telegram + Keychain harvested; Chrome Safe Storage key overwritten (destructive on macOS 26+) | Reads of Cookies, Login Data, Web Data, Local State across multiple browser bundles | T1555.003 / T1539 / T1217 |
| 8 | Collected data archived and exfiltrated to Amnesia Panel C2 | HTTP(S) to debug[.]allllowef[.]space/send/, X-API-Key header, Russian-language panel errors | T1071.001 |
| 9 | On operator command, stream_module clones the browser profile, spawns it headless with CDP flags, relays a live 3fps screencast + full input over a WebSocket relay | --remote-debugging-port, --headless, WebSocket relay to C2 | T1219 / T1113 |
Consolidated IOC Table
Atomic indicators are from the cited reporting (§2/§18). IPs and the shlyapadulina[.]space domain family are single-sourced (GBHackers) — validate before blocking. The clipboard-hijack module is confirmed present but disabled in the analyzed build; it is listed as a behavioral watch item, not an active detection.
| Type | Value | Confidence | Action | Context |
|---|---|---|---|---|
| Domain | debug.allllowef.space | high | block | Amnesia Panel C2 root + /send/ exfil endpoint (Q8) |
| Domain | news.allllowef.space | medium | block | Related C2 infrastructure (Q8) |
| Domain | shlyapadulina.space, amz.shlyapadulina.space | medium | hunt | Single-sourced C2/delivery infra — validate (Q8) |
| Domain | github.aoitour.com | high | block | Counterfeit GitHub ClickFix landing page |
| IPv4 | 138.124.70.84 | medium | hunt | Single-sourced C2 host — validate before block (Q8) |
| IPv4 | 138.124.96.160 | medium | hunt | Single-sourced C2 host — validate before block (Q8) |
| SHA256 | de5748aac4a4d4cb48cf050652679e6bc49eda33d9ffaa0d280b578122fab55a | high | detect | Stage 1 Rust infostealer binary (2-source corroborated) |
| SHA256 | e853748ca8f9a5a9168263617409a9039ab09f4ffc7d860374c1e3b0b67b31a5 | high | detect | Stage 2 stream_module binary (2-source corroborated) |
| File path (pattern) | /tmp/<25-char-random>/{Browsers,Passwords,Wallets,Notes,Telegram,FileGrabber} | high | detect | Staging directory (Q3) |
| File path | ~/.pwd, staging-dir pwd | high | detect | Cleartext harvested local password (Q6) |
| File path (pattern) | /Library/LaunchDaemons/com.apple.ReportCrash.agent_<digits>.plist | high | detect | Root LaunchDaemon persistence (Q4) |
| File path | /tmp/tempAppleScript.scpt, /tmp/starter | medium | hunt | Osascript fallback / staging artifact |
| Behavior | mount_apfs -o nobrowse (CVE-2020-9771) | high | detect | TCC bypass for Safari cookie theft (Q5) |
| Behavior | Base64-decoded Terminal paste from a counterfeit GitHub page | high | detect | ClickFix bootstrap (Q1) |
| Behavior | Chrome DevTools Protocol relay: --remote-debugging-port / --headless on a cloned browser profile | medium | hunt | Stage 2 live browser hijack (Q9) |
| Context (not a block target) | XOR key 4mn3s1a_2o26!xK; archive password dulin; Safe Storage overwrite key pqz8N3vKxRmY2aLcQ | medium | enrich | Analyst identification / malware-config confirmation only |
| Behavior (dormant) | Clipboard hijack targeting BTC, BCH, ETH, TRON, LTC, XMR, SOL, XRP, ATOM addresses | medium | enrich | Present in code, disabled in analyzed build — watch, do not alert as active |
Affected Surface & Telemetry Matrix
Affected: macOS endpoints from Catalina through macOS 26, Intel and Apple Silicon. No vulnerability is exploited for initial access — delivery is 100% social engineering (ClickFix). CVE-2020-9771 is used post-compromise as a TCC bypass; it only succeeds on unpatched/downgraded macOS or via a bypass variant, so a successful hit is itself a patch-hygiene signal.
macOS telemetry model note: Falcon's macOS sensor does not expose Windows-style Registry or Service-Control-Manager telemetry. Persistence here shows up as a LaunchDaemon plist write + launchctl process invocation (the macOS analog to a Windows service install), credential access shows up as process-level dscl/security/mount_apfs invocations plus TCC-protected file opens (there is no SAM/LSASS equivalent), and defense evasion shows up as xattr/codesign Gatekeeper manipulation rather than AMSI/ETW tampering. Every query in §8 is written against this macOS-specific model, not translated from a Windows pack.
| Surface | Telemetry | Priority | Gap |
|---|---|---|---|
| macOS process tree | Falcon ProcessRollup2 / SyntheticProcessRollup2 (event_platform=Mac) | Critical | Requires Falcon sensor deployed on Macs |
| File opens on credential/browser stores | Falcon FileOpenInfo (macOS) — TargetFileName, ImageFileName | Critical | Confirm macOS file-open telemetry enabled in policy |
| LaunchDaemon / LaunchAgent persistence | Process evidence (launchctl bootstrap/load) + native audit-log sweep (§7) | Critical | No dedicated macOS "service install" Falcon event — rely on the launchctl process + native log |
| DNS resolution | Falcon DnsRequest (DomainName, Amnesia Panel domain family) | Critical | None — good coverage |
| Network egress | Falcon NetworkConnectIP4 (C2 IPs, CDP WebSocket relay) | High | HTTPS/WSS payload opaque; rely on destination + process context |
| TCC / Keychain / privacy database | Process evidence for mount_apfs, tccutil, security invocations | High | TCC.db content itself is not directly queryable via CQL |
ATT&CK Mapping
| Tactic | Technique | Behavior | Query / Control |
|---|---|---|---|
| Initial Access | T1204.004 — User Execution: Malicious Copy & Paste | ClickFix counterfeit-GitHub Base64 Terminal paste | Q1, §12 awareness |
| Execution | T1059.004 — Unix Shell | bash decode-and-execute bootstrap | Q1 |
| Defense Evasion | T1140 — Deobfuscate/Decode Files or Information | Base64-decoded payload command | Q1 |
| Defense Evasion | T1553.001 — Subvert Trust Controls: Gatekeeper Bypass | xattr -d com.apple.quarantine + ad-hoc codesign | Q2 |
| Collection | T1560 — Archive Collected Data | 25-char /tmp staging directory + named subfolders | Q3 |
| Persistence | T1543.004 — Create or Modify System Process: Launch Daemon | Root LaunchDaemon impersonating Apple crash reporter | Q4 |
| Defense Evasion | T1548 — Abuse Elevation Control Mechanism (TCC bypass) | CVE-2020-9771 mount_apfs -o nobrowse | Q5 |
| Credential Access | T1056.002 — GUI Input Capture | Spoofed "Installer" native password prompt | Q6 |
| Credential Access | T1552.001 — Unsecured Credentials: Credentials In Files | Cleartext password at ~/.pwd / staging pwd | Q6, §4 |
| Credential Access | T1555.001 — Credentials from Password Stores: Keychain | security unlock-keychain -p | Q6 |
| Credential Access / Collection | T1555.003 / T1539 — Credentials from Web Browsers / Steal Web Session Cookie | Cookies, Login Data, Web Data, Local State across 16 browsers | Q7 |
| Collection | T1217 — Browser Information Discovery | Bookmarks, extensions, profile enumeration | Q7 |
| Command & Control | T1071.001 — Application Layer Protocol: Web Protocols | HTTP(S) exfil to Amnesia Panel /send/ | Q8 |
| Command & Control / Collection | T1219 / T1113 — Remote Access Software / Screen Capture | CDP-relayed headless browser, 3fps live screencast, full input | Q9 |
| Collection (dormant) | T1115 — Clipboard Data | Crypto-address clipboard hijack (disabled in analyzed build) | §4, §15 (watch item) |
Native Audit-Log Hunts
macOS-native checks that complement the Falcon CQL in §8 — useful for live triage on a suspect Mac (run read-only first; capture before remediating).
Persistence & staging artifacts (macOS shell)
# Root LaunchDaemon impersonating Apple crash reporting
ls -la /Library/LaunchDaemons/ | grep -Ei "ReportCrash\.agent_[0-9]"
sudo launchctl list | grep -Ei "ReportCrash\.agent_[0-9]"
# 25-char random staging directory under /tmp with AmnesiaStealer artifact set
find /tmp -maxdepth 1 -type d -regex '.*/[A-Za-z0-9]\{25\}$' 2>/dev/null \
-exec sh -c 'ls "$1"/Browsers "$1"/Passwords "$1"/Wallets "$1"/Telegram "$1"/pwd 2>/dev/null && echo "SUSPECT: $1"' _ {} \;
# Cleartext harvested password
test -f ~/.pwd && echo "AmnesiaStealer password store present: ~/.pwd"
TCC bypass & credential harvest (macOS shell / unified log)
# CVE-2020-9771 style local-snapshot mount (should be rare outside Time Machine's own backupd) log show --last 1d --predicate 'process == "mount_apfs"' 2>/dev/null | grep -i "nobrowse" # dscl-based local password validation + Keychain unlock outside normal admin activity log show --last 1d --predicate 'process == "dscl" OR process == "security"' 2>/dev/null \ | grep -Ei "authonly|unlock-keychain" # Gatekeeper bypass chain (quarantine strip + ad-hoc sign) log show --last 1d --predicate 'process == "xattr" OR process == "codesign"' 2>/dev/null \ | grep -Ei "com.apple.quarantine|--sign -"
Stage 2 CDP relay check
# Chromium-family process launched headless with a remote-debugging port open
ps aux | grep -Ei "(chrome|brave|edge|arc|opera|vivaldi|chromium).*(--headless|--remote-debugging-port)" | grep -v grep
lsof -iTCP -sTCP:LISTEN -n -P | grep -Ei ":92[0-9]{2}\b" # common CDP debug-port range; confirm parent process
Treat the combination of a 25-char /tmp staging directory, the ReportCrash.agent_<digits> LaunchDaemon, and a cleartext ~/.pwd as confirmed AmnesiaStealer infection — proceed to §14 containment and capture the plist, staging directory, and any active CDP relay process before removal.
CrowdStrike LogScale CQL Hunt Queries
Looks for: a Terminal/shell-descended process decoding a long Base64 blob — the ClickFix "paste this to verify/install" bootstrap. FP: very low; ad-hoc manual base64 decoding of long strings is rare on user endpoints. Review every hit.
// HUNT: AmnesiaStealer ClickFix bootstrap — base64-encoded command pasted into Terminal (macOS) // MITRE: T1204.004, T1140, T1059.004 | CONF: high FP: low COST: low | REQUIRES: ProcessRollup2 (macOS) // FALSE POSITIVES: rare; developers occasionally decode base64 blobs manually — review CommandLine context // TUNING: keep ParentBaseFileName scoped to Terminal/bash/zsh/sh; widen if the lure spawns via a different app #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | event_platform=Mac | ParentBaseFileName=/^(Terminal|bash|zsh|sh)$/i | CommandLine=/(base64\s+-{0,2}[Dd](ecode)?|echo\s+[A-Za-z0-9+\=]{60,}\s*\|)/i | groupBy([ComputerName, ParentBaseFileName, FileName, CommandLine], function=([count(aid, as=hits), collect([UserName])])) | sort(hits, order=desc)
Looks for: the Stage 0 → Stage 1 handoff — quarantine-attribute removal, ad-hoc code signing, extraction of a password-protected ZIP, and a nohup-backgrounded launch in the same process tree. FP: low; some developer workflows ad-hoc-sign local builds — review ParentBaseFileName and correlate with Q1/Q3.
// HUNT: AmnesiaStealer Gatekeeper bypass — quarantine strip + ad-hoc codesign + protected-archive extraction (macOS) // MITRE: T1553.001, T1140 | CONF: high FP: low COST: low | REQUIRES: ProcessRollup2 (macOS) // FALSE POSITIVES: low; developer ad-hoc signing of locally-built binaries // TUNING: raise confidence when chained with Q1 or Q3 hits on the same host within minutes #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | event_platform=Mac | CommandLine=/(xattr\s+-d\s+com\.apple\.quarantine|codesign\s+--sign\s+-|unzip\s+-P\s+\S+|nohup\s+\S+.{0,20}&)/i | groupBy([ComputerName, ParentBaseFileName, FileName, CommandLine], function=([count(aid, as=hits), collect([UserName])])) | sort(hits, order=desc)
Looks for: file access under a 25-character random-alphanumeric directory in /tmp whose contents match the AmnesiaStealer artifact naming convention (Browsers, Passwords, Wallets, Notes, Telegram, FileGrabber, Diagnostics, system_info.json, installed_apps.txt, collection_report.txt, pwd). This is the single highest-fidelity, most AmnesiaStealer-specific signature in this pack. FP: very low — this exact naming pattern is not a normal macOS or developer-tooling convention.
// HUNT: AmnesiaStealer 25-char /tmp staging directory with named loot subfolders (macOS) // MITRE: T1560, T1005 | CONF: high FP: low COST: medium | REQUIRES: FileOpenInfo (macOS) // FALSE POSITIVES: very low; this naming convention is not used by legitimate installers or dev tooling // TUNING: if COST is a concern in a large fleet, scope the time window in the console picker rather than in-query #event_simpleName=/FileOpenInfo/ | TargetFileName=/\/tmp\/[A-Za-z0-9]{25}\/(Browsers|Passwords|Wallets|Notes|Telegram|FileGrabber|Diagnostics|system_info\.json|installed_apps\.txt|collection_report\.txt|pwd)/i | table([@timestamp, ComputerName, aid, ImageFileName, TargetFileName, UserName], limit=200)
Looks for: a launchctl bootstrap/load invocation referencing a ReportCrash.agent_<digits> label — AmnesiaStealer's exact LaunchDaemon-impersonation pattern. Falcon's macOS sensor has no dedicated "service install" event, so this is caught via the launchctl process invocation rather than a file-write event (see §5 telemetry note). FP: very low; the real Apple ReportCrash LaunchDaemon (com.apple.ReportCrash, no .agent_<digits> suffix) is preloaded at boot by launchd itself, not re-loaded by a user-invoked launchctl command.
// HUNT: AmnesiaStealer root LaunchDaemon — ReportCrash.agent_<digits> impersonation (macOS) // MITRE: T1543.004 | CONF: high FP: low COST: low | REQUIRES: ProcessRollup2 (macOS) // FALSE POSITIVES: very low; genuine com.apple.ReportCrash is loaded by launchd at boot, not via user launchctl // TUNING: extend the label regex if a variant build uses a different Apple-service name #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | event_platform=Mac | FileName=/^launchctl$/i | CommandLine=/(bootstrap|load).{0,120}ReportCrash\.agent_?[0-9]*/i | groupBy([ComputerName, ParentBaseFileName, CommandLine, UserName], function=count(aid, as=hits)) | sort(hits, order=desc)
Looks for: a process mounting an APFS local Time Machine snapshot with -o nobrowse — the CVE-2020-9771 primitive AmnesiaStealer reuses to bypass TCC for Safari cookie theft. A hit on a fully patched, non-downgraded macOS host is unexpected and worth escalating on its own — it indicates either a regressed/variant bypass or a tampered OS. FP: medium; Time Machine's own backupd/tmutil perform legitimate local-snapshot mounts — exclude those parents.
// HUNT: CVE-2020-9771 TCC bypass — mount_apfs -o nobrowse local snapshot mount (macOS) // MITRE: T1548 | CONF: high FP: medium COST: low | REQUIRES: ProcessRollup2 (macOS) // FALSE POSITIVES: Time Machine's own backupd/tmutil legitimately mount local snapshots // TUNING: exclude ParentBaseFileName in (backupd, tmutil); a hit outside those parents is high-value #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | event_platform=Mac | FileName=/^mount_apfs$/i | CommandLine=/nobrowse/i | ParentBaseFileName!=/^(backupd|tmutil)$/i | groupBy([ComputerName, ParentBaseFileName, CommandLine, UserName], function=count(aid, as=hits)) | sort(hits, order=desc)
Looks for: local password validation via dscl . -authonly and/or a security unlock-keychain -p call, consistent with AmnesiaStealer's native "Installer" password-prompt harvest. FP: low under a non-admin, non-MDM parent process; some enterprise MDM/provisioning tooling uses dscl legitimately — allowlist known management agents.
// HUNT: AmnesiaStealer credential harvest — dscl authonly / Keychain unlock (macOS) // MITRE: T1056.002, T1552.001, T1555.001 | CONF: high FP: low COST: low | REQUIRES: ProcessRollup2 (macOS) // FALSE POSITIVES: MDM/provisioning tooling may use dscl legitimately — allowlist by ParentBaseFileName // TUNING: correlate with Q3 (staging dir) hits on the same host to confirm the AmnesiaStealer chain #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | event_platform=Mac | CommandLine=/(dscl\s+\.\s+-?authonly|security\s+unlock-keychain\s+-p)/i | groupBy([ComputerName, ParentBaseFileName, FileName, CommandLine, UserName], function=count(aid, as=hits)) | sort(hits, order=desc)
Looks for: a non-browser process reading Cookies, Login Data, Web Data, or Local State — AmnesiaStealer's 16-browser sweep. FP: medium; backup/sync agents and browser-migration tools also touch these files — exclude the owning browser bundle and known backup agents, and prioritize a single process touching multiple distinct browser bundles.
// HUNT: Non-browser process reads Chromium credential/session stores across multiple bundles (macOS) // MITRE: T1555.003, T1539, T1217 | CONF: high FP: medium COST: medium | REQUIRES: FileOpenInfo (macOS) // FALSE POSITIVES: backup/sync agents, browser profile-migration tools // TUNING: exclude ImageFileName for the owning browser bundle + known backup agents; prioritize a single // process hitting 3+ distinct browser bundle paths within a short window #event_simpleName=/FileOpenInfo/ | TargetFileName=/\/(Cookies|Login Data|Login Data For Account|Web Data|Local State)$/i | ImageFileName!=/\/(Google Chrome|Google Chrome Helper.*|Microsoft Edge|Brave Browser|Opera|Vivaldi|Arc|Chromium|Safari|com\.apple\.).*$/i | groupBy([ComputerName, ImageFileName, TargetFileName, UserName], function=count(aid, as=hits)) | sort(hits, order=desc)
Looks for: any host resolving or connecting to the published Amnesia Panel C2 infrastructure. FP: low for the domains; the two IPs are single-sourced — treat as hunt, not an automatic block, until corroborated.
// HUNT: AmnesiaStealer atomic C2 sweep — Amnesia Panel domain family + published IPs (macOS/all) // MITRE: T1071.001 | CONF: high FP: low COST: low | REQUIRES: DnsRequest / NetworkConnectIP4 // FALSE POSITIVES: low for domains; IPs are single-sourced (GBHackers) — confirm before broad block // TUNING: extend the domain list as new Amnesia Panel infrastructure is published #event_simpleName=/DnsRequest|NetworkConnectIP4/ | DomainName=/(allllowef\.space|shlyapadulina\.space)$/i OR RemoteAddressIP4=/^(138\.124\.70\.84|138\.124\.96\.160)$/ | groupBy([ComputerName, DomainName, RemoteAddressIP4, ContextBaseFileName], function=count(aid, as=hits)) | sort(hits, order=desc)
Looks for: a Chromium-family browser spawned headless with --remote-debugging-port — the moment the stream_module clones the victim's profile and opens the CDP relay for live operator control. FP: medium; legitimate browser-automation/QA tooling (Selenium, Puppeteer, Playwright) uses the same flags — exclude known automation hosts/parents, and prioritize a browser process whose parent is not a normal launcher (Finder, Dock, another browser).
// HUNT: AmnesiaStealer Stage 2 — Chromium spawned headless with CDP remote-debugging flags (macOS) // MITRE: T1219, T1113 | CONF: medium FP: medium COST: low | REQUIRES: ProcessRollup2 (macOS) // FALSE POSITIVES: legitimate browser-automation/QA tooling (Selenium, Puppeteer, Playwright) // TUNING: exclude known CI/automation hosts and ParentBaseFileName values for those frameworks #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | event_platform=Mac | FileName=/^(Google Chrome|Brave Browser|Microsoft Edge|Arc|Opera|Vivaldi|Chromium)$/i | CommandLine=/--remote-debugging-port=[0-9]+/i | CommandLine=/--headless/i | groupBy([ComputerName, ParentBaseFileName, FileName, CommandLine, UserName], function=count(aid, as=hits)) | sort(hits, order=desc)
Field-name note: queries use standard Falcon fields (#event_simpleName, event_platform, ParentBaseFileName, FileName, ImageFileName, CommandLine, TargetFileName, ContextBaseFileName, DomainName, RemoteAddressIP4, ComputerName, aid, UserName). Q3/Q7 use FileOpenInfo, the same macOS file-access event already validated in the AMOS-Stealer-macOS-Hunt pack in this library — confirm it is enabled for macOS hosts in your tenant policy.
Custom IOA Recommendations
| IOA name | Pattern | Exclusions | Deployment |
|---|---|---|---|
| macOS-Amnesia-TmpStagingDir | File access under /tmp/<25-char-random>/ matching the AmnesiaStealer artifact set (process-create/file-access IOA, macOS) | None known — pattern is not used by legitimate installers | Host group: all Macs; Action: Detect → Prevent |
| macOS-Amnesia-LaunchDaemon | launchctl bootstrap/load referencing ReportCrash.agent_<digits> | None — genuine ReportCrash is loaded by launchd at boot, not via user launchctl | Host group: Macs; Action: Prevent (high fidelity) |
| macOS-CVE-2020-9771-Mount | mount_apfs -o nobrowse outside a backupd/tmutil parent | Time Machine's own snapshot mounts | Host group: Macs; Action: Detect |
| macOS-Amnesia-ClickFix-Base64 | Terminal/shell decoding a long base64 blob (process-create IOA) | Rare developer manual decode workflows | Host group: all Macs; Action: Detect |
Start every IOA in Detect. Promote macOS-Amnesia-LaunchDaemon and macOS-Amnesia-TmpStagingDir to Prevent first — both are behaviorally distinctive to AmnesiaStealer with essentially no known legitimate collision.
Machine-Readable IOC Appendix
Atomic indicators are from cited research and ready to import. The two IP addresses are single-sourced (GBHackers) — set to detect/validate rather than hard block. Domains and hashes carry higher confidence.
type,value,action,severity,expiration,description,tags domain,debug.allllowef.space,block,critical,2027-02-16,AmnesiaStealer Amnesia Panel C2 root + exfil,campaign:amnesiastealer domain,news.allllowef.space,block,high,2027-02-16,AmnesiaStealer related C2 infrastructure,campaign:amnesiastealer domain,shlyapadulina.space,detect,medium,2026-11-16,AmnesiaStealer C2/delivery infra (single-sourced),campaign:amnesiastealer domain,amz.shlyapadulina.space,detect,medium,2026-11-16,AmnesiaStealer C2/delivery infra (single-sourced),campaign:amnesiastealer domain,github.aoitour.com,block,high,2027-02-16,AmnesiaStealer counterfeit GitHub ClickFix landing page,campaign:amnesiastealer ipv4,138.124.70.84,detect,medium,2026-11-16,AmnesiaStealer C2 host (single-sourced-validate),campaign:amnesiastealer ipv4,138.124.96.160,detect,medium,2026-11-16,AmnesiaStealer C2 host (single-sourced-validate),campaign:amnesiastealer sha256,de5748aac4a4d4cb48cf050652679e6bc49eda33d9ffaa0d280b578122fab55a,prevent,critical,2027-02-16,AmnesiaStealer Stage 1 Rust infostealer binary,campaign:amnesiastealer sha256,e853748ca8f9a5a9168263617409a9039ab09f4ffc7d860374c1e3b0b67b31a5,prevent,critical,2027-02-16,AmnesiaStealer Stage 2 stream_module binary,campaign:amnesiastealer
STAGE /tmp/<25-random-alphanumeric-chars>/ -> loot staging directory STAGE .../Browsers .../Passwords .../Wallets .../Notes .../Telegram .../FileGrabber STAGE .../system_info.json .../installed_apps.txt .../collection_report.txt .../pwd CREDS ~/.pwd -> cleartext harvested local password PERSIST /Library/LaunchDaemons/com.apple.ReportCrash.agent_<digits>.plist -> root LaunchDaemon DROPPER /tmp/starter /tmp/tempAppleScript.scpt -> Stage 0 staging / osascript fallback CONFIG XOR key 4mn3s1a_2o26!xK (analyst identification only, not a block target) CONFIG Archive password "dulin"; Safe Storage overwrite key pqz8N3vKxRmY2aLcQ
BEHAVIOR: Terminal/shell decodes long base64 blob (ClickFix bootstrap) -> detect (Q1) BEHAVIOR: xattr quarantine strip + ad-hoc codesign + protected-zip extraction -> detect (Q2) BEHAVIOR: 25-char /tmp staging dir with AmnesiaStealer artifact set -> detect (Q3) BEHAVIOR: launchctl load of ReportCrash.agent_<digits> LaunchDaemon -> detect (Q4) BEHAVIOR: mount_apfs -o nobrowse outside Time Machine (CVE-2020-9771) -> detect (Q5) BEHAVIOR: dscl authonly / security unlock-keychain credential harvest -> detect (Q6) BEHAVIOR: non-browser process reads Cookies/Login Data across multiple bundles -> detect (Q7) BEHAVIOR: DNS/network to Amnesia Panel domain family or published IPs -> detect (Q8) BEHAVIOR: Chromium spawned headless with --remote-debugging-port (CDP hijack) -> hunt (Q9) BEHAVIOR: clipboard hijack of BTC/BCH/ETH/TRON/LTC/XMR/SOL/XRP/ATOM addresses -> dormant, watch only (disabled in analyzed build)
CHECK ls -la /Library/LaunchDaemons/ | grep -Ei "ReportCrash\.agent_[0-9]"
CHECK test -f ~/.pwd && echo "AmnesiaStealer password store present"
CHECK find /tmp -maxdepth 1 -type d -regex '.*/[A-Za-z0-9]\{25\}$'
LOG log show --last 1d --predicate 'process == "mount_apfs"' | grep -i nobrowse
LOG ps aux | grep -Ei "(chrome|brave|edge|arc).*(--headless|--remote-debugging-port)" | grep -v grep
KILL (after evidence capture) sudo launchctl bootout system /Library/LaunchDaemons/com.apple.ReportCrash.agent_<digits>.plist
Detection Validation Gates
| Gate | Check | Pass criteria |
|---|---|---|
| Telemetry ready | Falcon for macOS reporting ProcessRollup2, FileOpenInfo, DnsRequest, NetworkConnectIP4 on all Macs | All Macs visible in last 24h with macOS-platform events |
| Benign baseline | Run Q5/Q7/Q9 over 7–14 days; catalog Time Machine snapshot mounts, browser backup/sync agents, and any legitimate automation hosts | Documented allowlist before alerting |
| Positive test | In a lab Mac: echo "dGVzdA==" | base64 -D from Terminal; xattr -d com.apple.quarantine a test file then codesign --sign - it; create /tmp/<25-random-chars>/Browsers and open a file in it | Q1, Q2, and Q3 fire |
| Atomic sweep | Run Q8 across the estate for the published domains/IPs; run a hash sweep for both SHA-256 values | Zero hits in a clean estate; any hit = investigate immediately |
| Promotion | Q3 (staging dir) and Q4 (LaunchDaemon) IOAs → Prevent; Q9 (CDP hijack) stays Detect until automation hosts are excluded | Signed off by detection owner |
Hardening — Tiered
- Block/detect the §10 C2 domains and hashes at DNS/proxy and Falcon IOC Management; hunt Q1–Q9 across the last 14 days for any host with a Q3 (staging dir) or Q4 (LaunchDaemon) hit — isolate and proceed to §14 for any positive. Verify: confirm the CSV imported cleanly via
Falcon Console → IOC Management → search "amnesiastealer". M1031 (Network Intrusion Prevention). - Confirm macOS patch level fleet-wide — CVE-2020-9771 was fixed in Catalina 10.15.4/10.15.5; a host where Q5 fires despite being "current" indicates either a downgraded OS or a regressed/variant bypass and should be treated as its own incident. Verify:
sw_vers -productVersionacross the fleet via MDM inventory. M1051 (Update Software). - User-awareness flash: "paste this into Terminal to install/verify" is an attack, even on a page that looks like GitHub with a verified badge — never paste a command from a web page without reading it first. Verify: track completion in the security-awareness platform. M1017 (User Training) — counters T1204.004.
- Deploy the §9 Custom IOAs in Detect across all Macs; promote
macOS-Amnesia-LaunchDaemonandmacOS-Amnesia-TmpStagingDirto Prevent (both are high-fidelity, low-collision). Verify: Falcon Console → Custom IOA → confirm deployed host-group coverage = 100% of Mac fleet. M1040 (Behavior Prevention on Endpoint). - Restrict use of
sudo mount_apfsand audit any-o nobrowseinvocation outside Time Machine's own process; consider a macOS configuration profile that logs or blocks ad-hoc APFS snapshot mounts for standard users. Verify: re-run Q5 after deployment and confirm onlybackupd/tmutilparents remain. M1028 (Operating System Configuration). - Enforce Gatekeeper / notarization requirements via MDM (disable "Anywhere" app-source setting fleet-wide) so quarantine-strip + ad-hoc-codesign chains (Q2) are rarer and more anomalous. Verify:
spctl --statusreportsassessments enabledon all managed Macs. M1038 (Execution Prevention).
- Deploy MDM configuration profiles that restrict LaunchDaemon/LaunchAgent installation to signed, managed payloads and alert on any unmanaged plist appearing under
/Library/LaunchDaemons/. Verify: quarterly audit comparing observed LaunchDaemons against the managed baseline. M1047 (Audit). - Egress/DNS filtering so newly registered or low-reputation domains (the Amnesia Panel pattern: short-lived, oddly-spelled TLD-abusing names) are flagged before first contact; feed Q8's domain family into a continuously updated threat-intel blocklist. Verify: confirm DNS security tooling ingests the Falcon IOC feed. M1037 (Filter Network Traffic).
- Reduce standing local-admin rights so the native "Installer" password prompt (Q6) has less blast radius if a non-admin user is tricked — a non-admin's password does not unlock a root LaunchDaemon install path as readily. Verify: MDM report of local-admin group membership trending toward zero for standard users. M1026 (Privileged Account Management).
Deployable Playbooks
1 · Read-only sweep for AmnesiaStealer artifacts (Falcon RTR / MDM script)
Prerequisites: Falcon RTR read-only session or MDM custom-script deployment capability; no elevated privileges required for the checks below.
Reboot required: none.
Rollback: none required — this script only reads and prints; it makes no changes.
#!/bin/bash
# Run per-user context where possible. Read-only enumeration only.
echo "== LaunchDaemon check =="
ls -la /Library/LaunchDaemons/ 2>/dev/null | grep -Ei "ReportCrash\.agent_[0-9]"
echo "== Staging directory check =="
find /tmp -maxdepth 1 -type d -regex '.*/[A-Za-z0-9]\{25\}$' 2>/dev/null
echo "== Cleartext password store check =="
for ua in /Users/*; do
[ -f "$ua/.pwd" ] && echo "PASSWORD STORE: $ua/.pwd"
done
echo "== Active CDP relay check =="
ps aux | grep -Ei "(chrome|brave|edge|arc|opera|vivaldi|chromium).*(--headless|--remote-debugging-port)" | grep -v grep
2 · Remove persistence & artifacts after evidence capture
Prerequisites: local admin/root (via Falcon RTR elevated session or MDM); Stage 1 evidence capture completed for the plist, staging directory, and any binaries under quarantine BEFORE this step runs.
Reboot required: no — launchctl bootout takes effect immediately without a reboot.
Rollback: if a legitimate host is misidentified, restore the quarantined plist and staging directory from the evidence copy and re-run sudo launchctl bootstrap system /Library/LaunchDaemons/<restored-plist>. Because the daemon is malicious in every confirmed case, rollback is expected to be rare — document the false-positive if it occurs.
# 1) Capture evidence FIRST (copy, do not move, to an evidence share): sudo cp -R /Library/LaunchDaemons/com.apple.ReportCrash.agent_<digits>.plist /evidence/ 2>/dev/null sudo cp -R /tmp/<25-char-staging-dir> /evidence/ 2>/dev/null # 2) Unload and remove the malicious LaunchDaemon: sudo launchctl bootout system /Library/LaunchDaemons/com.apple.ReportCrash.agent_<digits>.plist sudo rm -f /Library/LaunchDaemons/com.apple.ReportCrash.agent_<digits>.plist # 3) Remove staging directory and cleartext password stores: rm -rf /tmp/<25-char-staging-dir> rm -f ~/.pwd /tmp/pwd /tmp/starter /tmp/tempAppleScript.scpt
3 · Block Amnesia Panel C2 at the network edge
Prerequisites: access to the DNS sinkhole / secure-web-gateway policy console.
Reboot required: none — DNS/proxy policy changes apply on next resolution.
Rollback: remove the entries from the denylist; no endpoint-side change is made, so rollback is a simple policy revert with no residual state.
# DNS/proxy denylist (import via your control plane): debug.allllowef.space news.allllowef.space github.aoitour.com # Detect-and-validate (single-sourced, lower confidence — hunt before hard-blocking): shlyapadulina.space amz.shlyapadulina.space 138.124.70.84 138.124.96.160
Because C2 infrastructure for these campaigns typically rotates, treat the domain/IP list as a seed — rely on Q1–Q7 (which detect AmnesiaStealer's on-host behavior, not just its current infrastructure) to catch a re-infrastructured wave.
Containment Runbook
| Phase | Actions | Owner | Evidence |
|---|---|---|---|
| Isolate | Network-contain the Mac via Falcon RTR/host-containment; block the §10 C2 domains/IPs at DNS/proxy | SOC | Containment timestamp, host ID |
| Capture | Preserve the LaunchDaemon plist, the full 25-char staging directory, ~/.pwd, and the process tree for any active CDP-relay browser process before removal | IR | Plist + staging dir + process tree |
| Eradicate | Bootout + remove the LaunchDaemon; delete the staging directory and cleartext password files; kill any live --remote-debugging-port browser process; confirm no second persistence mechanism | IR + Endpoint | Removed-artifact list |
| Credentials | Rotate the user's local macOS account password plus every credential the stealer could reach: browser-saved passwords, Keychain items, Chrome Safe Storage-protected data, crypto wallets, Telegram session, iCloud Keychain re-verification | IAM + user | Rotation records, wallet review |
| Recover & monitor | If a live CDP session was confirmed active (T1219/T1113), treat any account accessed through the victim's authenticated browser sessions during that window as potentially compromised — force sign-out of active sessions on high-value services; keep Q1–Q9 + IOAs enabled; re-image if hands-on operator activity is confirmed | SOC + Endpoint | Post-recovery hunt results, session-revocation log |
Detection Coverage Map
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1204.004 / T1140 | ClickFix base64 Terminal paste | Q1 | macOS-Amnesia-ClickFix-Base64 | Good |
| T1553.001 | Quarantine strip + ad-hoc codesign + archive extraction | Q2 | — | Good |
| T1560 / T1005 | 25-char /tmp staging directory with named artifacts | Q3 | macOS-Amnesia-TmpStagingDir | Good |
| T1543.004 | Root LaunchDaemon impersonating Apple crash reporter | Q4 | macOS-Amnesia-LaunchDaemon | Good |
| T1548 | CVE-2020-9771 TCC bypass (mount_apfs -o nobrowse) | Q5 | macOS-CVE-2020-9771-Mount | Good |
| T1056.002 / T1552.001 / T1555.001 | Spoofed password prompt, dscl validation, Keychain unlock | Q6 | — | Good |
| T1555.003 / T1539 / T1217 | 16-browser credential/session-store collection | Q7 | — | Partial |
| T1071.001 | Amnesia Panel C2 exfil | Q8 | — | Partial |
| T1219 / T1113 | CDP-relayed live browser hijack | Q9 | — | Partial |
| T1115 | Clipboard crypto-address hijack | — | — | Gap — dormant capability |
Coverage note: browser credential-store reads (Q7) and C2 exfil (Q8) are rated Partial because both overlap with legitimate software (backup agents, normal HTTPS traffic) — this pack catches them with reasonable fidelity but leans on the surrounding chain (staging dir → LaunchDaemon → credential harvest) for confirmation rather than alerting on either signal alone. The CDP live-hijack query (Q9) is Partial because the same command-line flags are used by legitimate browser-automation tooling; tune the exclusion list to your environment before promoting to Prevent. Clipboard hijacking (T1115) has no query because Jamf's analysis confirmed the module is present in the code but disabled in the observed build — shipping a query against inactive functionality would not fire and was deliberately omitted rather than fabricated; re-add coverage immediately if a future build is reported with it enabled.
Hunt Summary Ticket
TITLE : AmnesiaStealer — macOS ClickFix Infostealer + Live Browser Hijack
SEVERITY : High — newly disclosed (2026-08-13), credential + wallet + live-session theft, root persistence
SCOPE : macOS Catalina through macOS 26 — social-engineering delivery, no initial-access CVE;
CVE-2020-9771 reused post-compromise for Safari TCC bypass (patched 10.15.4/10.15.5)
HYPOTHESIS : ClickFix base64 paste -> Gatekeeper bypass -> /tmp staging dir -> root LaunchDaemon ->
credential/Keychain harvest (+/- CVE-2020-9771) -> 16-browser collection -> Amnesia Panel exfil ->
on-demand CDP live browser hijack (~3fps, full input)
QUERIES : Q1 ClickFix bootstrap | Q2 Gatekeeper bypass | Q3 staging dir | Q4 LaunchDaemon | Q5 CVE-2020-9771 |
Q6 credential harvest | Q7 browser collection | Q8 C2 sweep | Q9 CDP hijack
DO FIRST : Import §10 IOCs; hunt Q1-Q9 14d; isolate any host with a Q3 or Q4 hit; verify macOS patch level
fleet-wide for CVE-2020-9771 exposure
FINDINGS : <fill from hunt>
GAPS : Clipboard-hijack module confirmed present but disabled in analyzed build — no active query;
browser-collection and C2-exfil queries rated Partial (overlap with legitimate software)
ACTIONS : Block/detect C2 (sect 10), deploy IOAs (sect 9), rotate creds/wallets/Keychain/browser sessions
for confirmed hosts, patch-verify CVE-2020-9771, user-awareness on ClickFix
OWNER : HuntPack
VERSION : v0.1 · 2026-08-16
Changelog
/tmp staging directory signature, root LaunchDaemon persistence (Apple crash-reporter impersonation), CVE-2020-9771 TCC-bypass reuse, credential/Keychain harvest, 16-browser credential-store collection, Amnesia Panel C2, and Stage 2 CDP live-browser-hijack activation. Ships cited atomic IOCs (2 SHA-256 hashes, 5 domains, 2 IPs, LaunchDaemon/staging-dir path patterns) — all traced to the 10 saved source snapshots in AmnesiaStealer-macOS-ClickFix-Hunt-sources/; none fabricated. Clipboard-hijack capability (T1115) is noted as a confirmed-but-dormant module and deliberately shipped without a detection query.References
| Tier | Source | Used for | Access date |
|---|---|---|---|
| Primary Research | Jamf Threat Labs — AmnesiaStealer: macOS Infostealer That Hijacks Browsers | Full technical analysis — staging dir, XOR key, C2 API, TCC bypasses, CDP relay, both hashes | 2026-08-16 |
| Reporting | The Hacker News — AmnesiaStealer Hijacks Chromium Sessions | Attack-chain confirmation, clipboard-hijack currency list | 2026-08-16 |
| Reporting | SecurityWeek — AmnesiaStealer macOS Malware Steals Data, Controls Browser Sessions | CVE-2020-9771 confirmation, Safe Storage overwrite behavior | 2026-08-16 |
| Reporting | SecurityAffairs — AmnesiaStealer Gives Attackers Live Control of Victims' macOS Browsers | LaunchDaemon naming pattern, credential-harvest flow | 2026-08-16 |
| Reporting | Infosecurity Magazine — Novel macOS Infostealer AmnesiaStealer Spread via ClickFix | Audio-mute behavior, CDP browser-scope confirmation | 2026-08-16 |
| Reporting | GBHackers — New AmnesiaStealer Malware Targets macOS Users | Atomic IOC set — domains, IPs, hashes, archive password, LaunchDaemon path | 2026-08-16 |
| Reporting | SC Media — MacOS AmnesiaStealer Malware Spread Through ClickFix | Targeted file-extension list, CVE patch-version confirmation | 2026-08-16 |
| Secondary | Brinztech — AmnesiaStealer Multi-Stage Rust Infostealer breach alert | XOR key corroboration, mitigation recommendations | 2026-08-16 |
| Reporting | Cyber Security News — AmnesiaStealer macOS Malware Hijacks Browser Sessions | Landing-page domain, delivery mechanics | 2026-08-16 |
| Secondary | MacTech.com — Jamf Threat Labs releases report of macOS malware dubbed 'AmnesiaStealer' | Campaign summary, Jamf mitigation pointer | 2026-08-16 |
| Framework | NVD — CVE-2020-9771 (macOS Time Machine / mount_apfs TCC bypass) | TCC-bypass technical basis, patch versions | 2026-08-16 |
| Framework | MITRE ATT&CK — T1543.004 Launch Daemon | Persistence technique + mitigations | 2026-08-16 |