CrashStealer: Notarized Fake Apple CrashReporter App Steals macOS Keychain, Browser, and Crypto Wallet Credentials

CrashStealer (TL-2026-1358), also tracked as MacOS.Stealer.Crash, is a high-severity malware campaign, first published 2026-07-15. It has no confirmed attribution, affects Apple macOS, maps to 32 MITRE ATT&CK techniques (T1005, T1027, T1036.005), and is covered by 9 detection rules and 23 indicators of compromise.

Key facts for TL-2026-1358

Threat ID
TL-2026-1358
Also known as
MacOS.Stealer.Crash
Severity
HIGH
Status
ACTIVE
Category
MALWARE
First published
2026-07-15
Last reviewed
2026-07-15
Attribution confidence
LOW
Motivation
FINANCIAL
Target sectors
technology, cryptocurrency, general consumer individual macos users
Target regions
Global
Detection rules
9
Indicators of compromise
23

Malware and tooling in CrashStealer

Malware and tooling: CrashStealer

CrashStealer is a C++ macOS information-stealer that impersonates Apple's CrashReporter component to trick users into revealing their local system password, then unlocks the Keychain and exfiltrates browser credentials, cookies, ~80 cryptocurrency wallet extensions, and 14 password managers' data. It is distributed via a signed, Apple-notarized dropper ('Werkbit Setup'/Werkbit.app) served from a PIN-gated fake software site (werkbit[.]io) registered in late June 2026, indicating a targeted, invitation-only campaign.

How CrashStealer works

CrashStealer (detected as MacOS.Stealer.Crash) is a macOS information-stealer first observed on VirusTotal in early May 2026 in an apparently unfinished state, with confirmed in-the-wild deployment by early July 2026. The malware is delivered through a multi-stage chain: a signed and Apple-notarized disk image named 'Werkbit.app' ('Werkbit Setup'), distributed from the fake software site werkbit[.]io (registered late June 2026), gates its download behind a meeting PIN — a mechanism that limits exposure to invited/targeted victims and frustrates automated analysis and crawling by security vendors. The dropper (bundle ID dev.golove.velto, binary 'veltod') is signed with a valid Apple Developer ID belonging to 'Emil Grigorov' (Team ID WWB7JA7AQV) and carries a legitimate Apple notarization ticket, allowing it to pass Gatekeeper without an unidentified-developer warning. Apple has since revoked the associated signing credentials after Jamf Threat Labs disclosed the campaign.

Once launched, the dropper contacts a GitHub repository (github.com/mgothiclove/pkeys) to retrieve a staged file ('sys.cache') containing curl commands that fetch a shell script. That script downloads the second-stage payload disk image over cleartext HTTP from endpoint-api-v1[.]com/d/f1b24e/download, saving it as CrashReporter.dmg to /private/tmp/.CrashReporter/CrashReporter.app/Contents/MacOS/. The payload masquerades as Apple's crash-reporting utility, using bundle ID com.apple.crashreporter, the legitimate tool's icon and metadata, and the app name 'CrashReporter.app' to appear trustworthy.

On execution, CrashStealer displays a fake macOS system password prompt designed to resemble a legitimate administrator-privilege authorization dialog. When the victim enters their password, the malware validates it locally and offline using the macOS Directory Service command-line utility ('dscl -authonly'), caching the validated credential at ~/.cache/.sys_auth (mode 600); an incorrect password produces a fake authentication error and re-prompts the victim, closely mimicking real macOS behavior. Once validated, the captured local account password is used to unlock the user's Keychain — macOS's encrypted secret store containing Safari logins, Wi-Fi passwords, application passwords, private cryptographic keys, certificates, and access tokens.

CrashStealer then harvests browser profile data (login databases, cookies, autofill data) from nine Chromium-based browsers (Chrome, Brave, Edge, Opera, Opera GX, Vivaldi, Chromium, NAVER Whale) plus Firefox, targets roughly 80 cryptocurrency wallet browser extensions (including MetaMask, Phantom, Coinbase Wallet, Trust Wallet, Rabby, OKX Wallet, Exodus, Keplr, Solflare, and Backpack), and 14 desktop/browser password managers (1Password, Bitwarden, LastPass, Dashlane, Keeper, KeePassXC, NordPass, Enpass, and RoboForm, among others). It additionally sweeps user-writable locations such as ~/Documents and ~/Downloads for small files of interest, while deliberately skipping system/cache directories (Caches, Logs, Trash, .Trash, CrashReporter, DiagnosticReports, WebKit, Saved Application State, nsurlsessiond, bird, node_modules, __pycache__, .git) and executable/library/archive/media file types to avoid collecting noise or detection artifacts.

Harvested items are organized into staging subdirectories under ~/.cache/com.apple.crashreporter/ using prefixes '.brw_' (browser data), '.ext_' (wallet/extension data), and '.sw_' (password manager/software data), individually encrypted per-file, then packaged into ZIP archives named in the pattern '.zx_[8-hex-chars].zip'. Encryption uses AES-256-GCM via Apple's native CommonCrypto framework, with keys derived through PBKDF2-HMAC-SHA256 over 10,000 iterations and a hardcoded salt constant ('panel_salt_v1'). Exfiltration is performed via libcurl using its multipart form-data interface, initially over cleartext HTTP and later HTTPS, to a hardcoded C2 IP address (179.43.166.242) allow-listed through an App Transport Security (ATS) exception baked into the payload's Info.plist. Operators manage compromised hosts through a web panel at hxxps://endpoint-api-v1[.]com/login.

Persistence is established via a LaunchAgent at ~/Library/LaunchAgents/com.apple.crashreporter.helper.plist (label com.apple.crashreporter.helper), configured with RunAtLoad=true and SuccessfulExit=false so the agent relaunches the stealer after any unsuccessful exit, ensuring the malware survives reboots and remains active across sessions; the malware also re-signs its own binary to keep its code signature valid after modification.

CrashStealer incorporates layered anti-analysis defenses typical of a maturing commercial-grade stealer: multiple sysctl-based debugger-detection checks (querying KERN_PROC / P_TRACED, exiting with code 45 if a debugger is attached), control-flow flattening using dispatch blocks and jump tables to hinder static analysis, and runtime string decryption for sensitive strings stored in the binary's __const section. Related attacker-controlled infrastructure identified alongside werkbit[.]io includes the domains cohezo[.]io, cohezo[.]com, and cordinex[.]io, suggesting a broader distribution network beyond the single observed campaign.

MITRE ATT&CK techniques used in TL-2026-1358

Collection

T1005 Data from Local System; T1119 Automated Collection; T1560.001 Archive via Utility

Defense Evasion

T1027 Obfuscated Files or Information; T1036.005 Match Legitimate Resource Name or Location; T1140 Deobfuscate/Decode Files or Information; T1218 System Binary Proxy Execution; T1497.001 System Checks

Exfiltration

T1041 Exfiltration Over C2 Channel

Credential Access

T1056.002 GUI Input Capture; T1539 Steal Web Session Cookie; T1552.001 Credentials In Files; T1555.001 Keychain; T1555.003 Credentials from Web Browsers; T1555.005 Password Managers

Discovery

T1057 Process Discovery; T1083 File and Directory Discovery; T1518 Software Discovery

Execution

T1059.004 Unix Shell; T1204.002 Malicious File

Command and Control

T1071.001 Web Protocols; T1102 Web Service; T1105 Ingress Tool Transfer

Initial Access

T1189 Drive-by Compromise

Persistence

T1543.001 Launch Agent; T1547.015 Login Items

defense-impairment

T1553.002 Code Signing; T1685 Disable or Modify Tools

command-and-control

T1573.001 Symmetric Cryptography

Resource Development

T1583.001 Domains; T1588.003 Code Signing Certificates

Impact

T1657 Financial Theft

Affected products and versions in CrashStealer

  • Apple — macOS
    Vulnerable versions: all supported macOS versions accepting Gatekeeper-notarized third-party applications

Remediation for CrashStealer

Immediate actions

  • Block outbound network connections to C2 IP 179.43.166.242 at network/DNS perimeter
  • Block/sinkhole DNS resolution for werkbit[.]io, endpoint-api-v1[.]com, cohezo[.]io, cohezo[.]com, and cordinex[.]io
  • Hunt for LaunchAgent com.apple.crashreporter.helper.plist at ~/Library/LaunchAgents/ across managed macOS fleets
  • Hunt for staging artifacts under ~/.cache/com.apple.crashreporter/ (subdirectories .brw_, .ext_, .sw_ and files matching .zx_*.zip)
  • Hunt for disk images or apps named 'Werkbit', 'Werkbit Setup', or 'CrashReporter.app' outside /System and Apple's official CrashReporter locations
  • If a match is found, revoke/rotate the local account password used to unlock Keychain, rotate all browser-saved credentials, and rotate cryptocurrency wallet seed phrases/private keys
  • Verify code-signing/notarization revocation status of Developer ID WWB7JA7AQV (Emil Grigorov) via Apple Gatekeeper/spctl before allowing any binary signed by that identity to run

Workarounds

  • Treat any download gated behind a meeting/access PIN from an unfamiliar software vendor as high-risk and avoid installing
  • Never enter your macOS account password into a prompt triggered by a third-party 'crash reporter' or diagnostic-sounding utility
  • Verify Developer ID and notarization status manually (spctl -a -vvv) before running installers from non-App-Store sources, and independently confirm the developer identity is legitimate rather than trusting notarization alone

Longer-term hardening

  • Deploy EDR/XProtect-equivalent behavioral detection for LaunchAgent creation combined with fake system password-prompt UI patterns on macOS
  • Enforce application allow-listing / notarization-plus-vendor-reputation checks rather than trusting Apple notarization alone as a safety signal
  • Educate users that legitimate macOS system password prompts are never triggered by third-party crash-reporting or diagnostic utilities
  • Deploy network egress monitoring/DLP for AES-encrypted ZIP exfiltration to unrecognized IPs from user-space macOS processes
  • Restrict browser extension installation policy for cryptocurrency wallets and password managers on managed endpoints where feasible

Timeline of CrashStealer

  • CrashStealer sample first appears on VirusTotal in an apparently unfinished/in-development state, per Jamf Threat Labs tracking.
  • Distribution domain werkbit[.]io is registered, later used to host the notarized 'Werkbit Setup' dropper behind a PIN gate.
  • Confirmed in-the-wild deployment of CrashStealer begins via the PIN-gated werkbit[.]io site, delivering the notarized Werkbit.app dropper.
  • AppleInsider publishes coverage of the CrashStealer campaign targeting Mac users' passwords and data.
  • Jamf Threat Labs publishes technical analysis of CrashStealer, detailing the fake CrashReporter masquerade, notarization abuse, and full credential-theft capability set.
  • BleepingComputer, TheHackerNews, SecurityAffairs, Help Net Security, Infosecurity Magazine, TechRadar, and Cybersecurity News publish independent coverage corroborating the campaign's technical details and IOCs.
  • Apple revokes the code-signing and notarization credentials for Developer ID WWB7JA7AQV (Emil Grigorov) after Jamf shared findings with Apple's security team.
  • Malwarebytes Threat Intelligence publishes consumer-facing coverage warning that the fake Apple app can unlock a Mac's password vault, prompting this threat record.

Sources cited for CrashStealer

Threats related to CrashStealer

Detection coverage for TL-2026-1358

As of 2026-07-15, Threadlinqs Intelligence publishes 9 detection rule(s) for TL-2026-1358 across Splunk SPL, Microsoft KQL and Sigma, covering 23 indicator(s) of compromise. The whole corpus is readable without an account; a free account unlocks full detection query text in Splunk SPL, Microsoft KQL and Sigma; paid tiers add raw indicator values, correlation and the MCP server. Threadlinqs MCP server · View plans.

Community OSINT corroboration for TL-2026-1358

4 of this threat's indicators have also been reported by the open-source security community, which observed at least one of them before this report was published. Community sightings are unverified and are kept separate from Threadlinqs' curated indicators. Indicator values, reporters and campaign linkage are available to authenticated Red-tier users.

Threadlinqs Intelligence — Real-Time Threat Detection Platform

[ 0 threats ] [ 0 det ] [ CRIT: 0 ] [ HIGH: 0 ]
// threat_feed
$ sort --newest
Showing all threats

Latest Threats