CrashStealer: Novel macOS Information Stealer Disguised as Apple Crash Reporter (Jamf Threat Labs)

CrashStealer (TL-2026-1470), also tracked as CrashStealer, is a medium-severity malware campaign, first published 2026-07-18. It has no confirmed attribution, affects Apple macOS, maps to 37 MITRE ATT&CK techniques (T1005, T1020, T1027), and is covered by 9 detection rules and 21 indicators of compromise.

Key facts for TL-2026-1470

Threat ID
TL-2026-1470
Also known as
CrashStealer
Severity
MEDIUM
Status
ACTIVE
Category
MALWARE
First published
2026-07-18
Last reviewed
2026-07-18
Attribution confidence
LOW
Motivation
FINANCIAL
Target sectors
technology, finance, generalconsumer, cryptocurrency
Target regions
Global
Detection rules
9
Indicators of compromise
21

Malware and tooling in CrashStealer

Malware and tooling: CrashStealer

Jamf Threat Labs disclosed CrashStealer, a native C++ macOS infostealer distributed via a signed and Apple-notarized "Werkbit Setup" dropper that fetches and installs a payload impersonating Apple's CrashReporter component. It harvests browser, cryptocurrency wallet, password-manager, and Keychain credentials, spoofs native macOS password prompts, encrypts stolen data with AES-256-GCM, exfiltrates over libcurl to a hardcoded C2 IP, and uses control-flow flattening, encrypted strings, and anti-debugging to resist analysis.

How CrashStealer works

CrashStealer is a macOS information stealer, first observed under development on VirusTotal in May 2026 and seen in active in-the-wild deployment by early July 2026, publicly disclosed by Jamf Threat Labs on July 13, 2026. Unlike most commodity macOS stealer activity (which is typically written in scripting languages or Swift), CrashStealer is implemented natively in C++ around an internal orchestration class the authors named MacOSData, exposing collection routines such as collectBrowserData, collectExtensions, collectFirefoxExtensions, collectSoftwareTargets, and runFileSearcher.

The infection chain begins with a signed and Apple-notarized disk image named "Werkbit Setup" containing Werkbit.app, whose executable (internal name veltod, bundle identifier dev.golove.velto) is signed with Developer ID "Emil Grigorov (WWB7JA7AQV)" and hardened runtime enabled -- allowing it to clear Gatekeeper without warning. Distribution occurred via the fake software site werkbit[.]io, registered in late June 2026, with downloads gated behind a meeting PIN to limit exposure to targeted visitors.

On execution, veltod queries the GitHub API to retrieve sys.cache from the repository mgothiclove/pkeys, which directs it to fetch a Base64-encoded shell script from endpoint-api-v1[.]com/d/f1b24e. That script downloads CrashReporter.dmg over cleartext HTTP from endpoint-api-v1[.]com/d/f1b24e/download, mounts it, and copies the CrashReporter.app bundle (bundle ID com.apple.crashreporter, impersonating a genuine Apple component) into the hidden staging directory /tmp/.CrashReporter/, stripping the original signature and re-signing ad-hoc before launch and disk-image cleanup. The payload persists by copying itself to ~/Library/Caches/com.apple.crashreporter/CrashReporter.app and installing a LaunchAgent at ~/Library/LaunchAgents/com.apple.crashreporter.helper.plist (label com.apple.crashreporter.helper) with RunAtLoad true and KeepAlive/SuccessfulExit false, causing automatic relaunch; each re-signing operation changes the binary's hash while preserving code.

Before harvesting, CrashStealer displays a native-styled fake macOS password-authorization prompt to the user and validates the entered credential locally via dscl -authonly (a legitimate macOS directory-service utility), caching the validated password to ~/.cache/.sys_auth (mode 600) for reuse. It then runs collectSoftwareTargets, a reconnaissance pass against embedded security/EDR/analysis tool names using defaults read and du -sh. Data collection targets Chromium-family browsers (Chrome, Brave, Edge, Opera, Opera GX, Vivaldi, Chromium, NAVER Whale) and Firefox login data, approximately 80 cryptocurrency wallet browser extensions (including MetaMask, Phantom, Coinbase Wallet, Trust Wallet, Rabby, OKX Wallet, Exodus, Keplr, Solflare, Backpack), and 14 password managers (1Password, Bitwarden, LastPass, Dashlane, Keeper, KeePassXC, NordPass, Enpass, RoboForm, among others), plus a copy of the local login.keychain-db. A separate file-searcher routine recursively walks ~/Documents and ~/Downloads, excluding cache/log paths and filtering out large binaries/installers.

Collected files are individually encrypted with AES-256-GCM (Apple CommonCrypto), keyed via PBKDF2-HMAC-SHA256 over 10,000 iterations with a hardcoded salt constant panel_salt_v1, staged as .cache files, then packaged into hidden ZIP archives named with a .zx_ prefix plus 8 random hex characters (e.g. .zx_c67e4203.zip) inside ~/.cache/com.apple.crashreporter/. Exfiltration uses libcurl's multipart (curl_mime) interface to a hardcoded C2 IP, 179.43.166.242, embedded in Info.plist as an App Transport Security exception; earlier samples' ATS configuration permitted cleartext HTTP, dropped the minimum TLS version to 1.0, and waived forward secrecy for that IP.

The malware employs analysis-resistance techniques atypical for commodity macOS stealers: control-flow flattening (dispatch-block/jump-table branching), encrypted strings held as a blob in the __const section and decoded at runtime via a byte-substitution routine, and a pre-main constructor (run during dynamic-linker initialization) that queries sysctl KERN_PROC/P_TRACED to detect an attached debugger and exits with code 45 if found, plus an additional later-stage debugger check.

Jamf attributed operator infrastructure including delivery domain endpoint-api-v1[.]com and werkbit[.]io, and operator/panel domains cohezo[.]io, cohezo[.]com, and cordinex[.]io. Following Jamf's disclosure and notification, Apple revoked the Developer ID (Emil Grigorov, WWB7JA7AQV) used to sign the Werkbit dropper, disabling the specific delivery vector documented, though Jamf and other outlets caution the malware or a re-signed variant could resurface under a new identity.

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

Collection

T1005 Data from Local System; T1074.001 Local Data Staging; T1560.001 Archive via Utility

Exfiltration

T1020 Automated Exfiltration; T1041 Exfiltration Over C2 Channel

Defense Evasion

T1027 Obfuscated Files or Information; T1027.013 Encrypted/Encoded File; T1036.005 Match Legitimate Resource Name or Location; T1140 Deobfuscate/Decode Files or Information; T1497.001 System Checks; T1564.001 Hidden Files and Directories

Credential Access

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

Execution

T1059 Command and Scripting Interpreter; T1204.002 Malicious File

Command and Control

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

Discovery

T1082 System Information Discovery; T1083 File and Directory Discovery; T1518 Software Discovery; T1518.001 Security Software Discovery

defense-impairment

T1112 Modify Registry; T1553.002 Code Signing; T1647 Plist File Modification; T1685 Disable or Modify Tools

Initial Access

T1189 Drive-by Compromise; T1566 Phishing

Persistence

T1543.001 Launch Agent

Resource Development

T1583.001 Domains; T1585.003 Cloud Accounts

Affected products and versions in CrashStealer

  • Apple — macOS
    Vulnerable versions: all supported macOS versions targeted by user-mode credential theft

Remediation for CrashStealer

Immediate actions

  • Block network egress to C2 IP 179.43.166.242
  • Block/monitor DNS and web traffic to endpoint-api-v1[.]com, werkbit[.]io, cohezo.io, cohezo.com, cordinex.io
  • Hunt for the GitHub repository reference mgothiclove/pkeys in proxy/DNS logs
  • Search endpoints for hidden staging path /private/tmp/.CrashReporter/ and persistence copy at ~/Library/Caches/com.apple.crashreporter/CrashReporter.app
  • Search for LaunchAgent ~/Library/LaunchAgents/com.apple.crashreporter.helper.plist (label com.apple.crashreporter.helper) and remove if found
  • Hunt for hidden archives matching ~/.cache/com.apple.crashreporter/.zx_*.zip
  • Revoke and rotate any credentials/keychain items on affected hosts (browser logins, crypto wallet seed phrases, password-manager vaults) treating them as compromised

Workarounds

  • Treat any macOS application requesting Keychain/password authorization outside of Apple's actual System Settings/Login flow as suspicious; verify prompts originate from a system process before entering credentials

Longer-term hardening

  • Deploy EDR/XDR with behavioral detection for masquerading Apple-named bundle IDs (e.g. com.apple.* running from user-writable paths) and for dscl -authonly invoked by non-system processes
  • Enforce application allowlisting / notarization-ticket verification beyond Gatekeeper's pass/fail signal, since this campaign used a validly signed and notarized dropper
  • Educate users against downloading software update tools or meeting-related installers gated behind PINs from unsolicited links
  • Monitor for anomalous libcurl multipart POST traffic and TLS-downgrade/ATS-exception configurations in third-party app bundles

Weaknesses (CWE) in CrashStealer

CWE-451, CWE-506, CWE-522, CWE-311

Timeline of CrashStealer

  • A CrashStealer sample, still under active development, is first identified on VirusTotal by Jamf Threat Labs.
  • The fake software distribution site werkbit[.]io is registered in late June 2026, ahead of active deployment.
  • Jamf begins observing in-the-wild detections of CrashStealer, indicating the malware has moved from development into production use.
  • Following notification, Apple revokes the Developer ID (Emil Grigorov, WWB7JA7AQV) used to sign the Werkbit Setup dropper, disabling that specific delivery vector.
  • Jamf Threat Labs publicly discloses CrashStealer with a full technical analysis, including dropper mechanics, MacOSData internals, and IOCs.
  • Help Net Security publishes coverage summarizing Jamf's findings on password theft via the fake crash-reporting tool.
  • MacRumors reports on CrashStealer impersonating Apple's tool to steal Mac passwords and cryptocurrency.
  • SecurityWeek references CrashStealer in a news-roundup article, the initiating source for this threat record.

Sources cited for CrashStealer

Threats related to CrashStealer

Detection coverage for TL-2026-1470

As of 2026-07-18, Threadlinqs Intelligence publishes 9 detection rule(s) for TL-2026-1470 across Splunk SPL, Microsoft KQL and Sigma, covering 21 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-1470

2 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