Security1 publisher2 min readPublished
MacSync now pipes a public iCloud calendar into zsh to stage its Mac payload
Kaspersky says the macOS stealer it first tracked as Mac.c has swapped script droppers for FAT Mach-O binaries in a chain found in September 2026, and its loader now reads shell commands out of a public iCloud calendar file.
The Watch · Security desk
What happened
- Kaspersky spotted a new MacSync infection chain in the wild in September 2026, three stages on from the AppleScript versions first advertised on the dark web in 2025 under the name Mac.c.
- In at least one sample the URL decrypted out of that binary pointed to a public iCloud calendar; in other cases it pointed straight to a file on an attacker-controlled server.
- MacSync is sold as a service, and Kaspersky's sighting of this chain was a fake crypto wallet called Toria with its own web page and promotion on X and Telegram.
Compiled by The WatchSomething wrong?How this is made
Why it matters
- capability Staging the next stage on iCloud puts delivery on a domain most Mac fleets already allow, so blocking it means inspecting Apple traffic instead of blackholing a host.
- constraint The shell script never lands on disk, so file scanning has no artifact to match. Detection has to fall back to process lineage: a shell started with a pipe on standard input.
- decision Teams whose macOS coverage rests on osascript and AppleScript text have to decide whether to add unsigned FAT Mach-O launches out of mounted disk images to what they monitor.
- precedent Because each operator buys the kit and picks its own lure, indicators harvested from the Toria campaign cover that campaign only, and the next fake app sold on the same service comes with its own.
The first-stage binary hides its next-stage URL in its own overlay and reads that overlay back to front. It locates the marker `SONOMAC1` at the tail, reads the 8 bytes in front of the marker as a length, then uses that length to bound the XOR ciphertext [16][17]. The key is ten bytes and spells `sonomabld` in ASCII, followed by 0x07 [1].
In at least one sample the decrypted URL was a public iCloud calendar [18]. The downloader opens an anonymous pipe, starts `zsh -s`, and feeds the calendar file into its standard input line by line [19]. The shell rejects the calendar's own lines as invalid commands and keeps reading until it reaches the payload after the `DESCRIPTION:` line. Those commands pull a .tar.gz archive from iCloud [20].
Kaspersky's stated change is that binary droppers replaced script-based ones and the payload modules are now written in Objective-C and Swift [4][5]. Scripting is still in the chain. In one build of the same fake application the DMG carried a compiled JXA script that decoded a shell script and passed it straight to the interpreter without writing it to disk; in another build of the same app, that script ran later, after a chain of droppers and loaders [11]. Coverage tuned to the AppleScript versions of 2025 is still pointed at the right layer [2], but the script now arrives compiled inside a FAT Mach-O that runs on Apple silicon and Intel alike [14].
Every temporary file goes in /tmp, including the .lock files that stop a second run, and each module deletes its temp files and its own logs once it finishes [12][13]. Before any of that, the .APP checks whether its bundle carries `com.apple.quarantine` and runs `xattr -cr` to strip all extended attributes [15]. That check and strip happens first in the chain. It is the earliest step visible in process telemetry.
MacSync is rented, so the first stage belongs to whoever rents it [7]. Kaspersky's own sighting was a nonexistent crypto wallet called Toria, with a dedicated web page and promotion on X and Telegram [9]; earlier public reporting on the family concentrated on social engineering and ClickFix-style attacks, and cracked-app installers have carried it throughout [8]. Hash-blocking one campaign's DMG leaves the next operator's lure untouched. The account is Kaspersky's own telemetry, published with four MacSync verdict families [21][2].
What to watch
- Whether Apple pulls the public iCloud calendar and the hosted archive it points to, and how quickly the operator re-hosts elsewhere.
- Whether the compiled-JXA-on-DMG build keeps appearing alongside the binary dropper chain in later campaigns.
- Whether other macOS families adopt the read-the-overlay-backwards loader and the SONOMAC1 marker, which would point to a shared builder.