Mac.c stealer evolves into MacSync: Now with a backdoor: Header image
Moonlock Lab 7 min read

Mac.c stealer evolves into MacSync: Now with a backdoor

Published:Sep 12, 2025

In April 2025, a new macOS stealer developer emerged under the alias “mentalpositive.” Their stealer, mac.c, wasn’t sophisticated. It wasn’t particularly stealthy or feature-rich at launch, either. However, it did have one important thing going for it. It was cheap.

The low price point gave mac.c a unique edge among traffer teams — groups that drive victims to malicious sites via phishing or malvertising — that were looking for low-cost, easily deployable macOS infostealers. We covered the initial rise of this malware in our article, Mac.c Stealer Takes on AMOS, at the time.

Few could have predicted what would happen next.

A screenshot of a post by user mentalpositive about the new stealer and its low price point.

One month later, the stealer has undergone a surprising transformation. Rebranded as MacSync, the tool now includes a fully-featured Go-based agent acting as a backdoor, expanding its functionality far beyond basic data exfiltration.

This makes MacSync one of the first known cases of a macOS stealer with modular, remote command and control capabilities.

The rebrand: Same stealer, new ambitions

No one anticipated how swiftly mac.c would expand beyond pure info-stealing. In a recent interview with security researcher @g0njxa, published just a week before our sample analysis, the MacSync team revealed the following key insights:

  • Userbase: The project may be young, but its userbase has already grown to nearly 3 dozen.
  • Rebranding rationale: The project was at risk of dying, so it was sold to ensure further development.
Screenshot of an interview with use Interview with @g0njxa explaining the rebrand of mac.c into MacSync.
The rebrand of mac.c into MacSync is discussed in an interview with cybersecurity researcher @g0njxa.
  • Team continuity: Despite the change in management, the development team remained intact.
A screenshot of user mentalpositive posting to announce the rebranding of mac.c to MacSync.
Bad actor mentalpositive posted an announcement about the rebranding of mac.c to MacSync.
  • Future threats: There will be an emphasis on phishing, combined with app-specific vulnerabilities. This acknowledges AI-enhanced defenses, but one can bet on the human factor in “8 out of 10 cases.”
  • Feature expansion: When asked about competitors blending stealers with backdoor capabilities, the response was telling: “Expansion of functionality is positive; we’re not an exception. Work is underway, and a new release will be published soon.”

This teased “expansion” materialized more quickly than expected. On the same day the interview dropped, we encountered an interesting sample (SHA256: a42eece43aad2e2a2f98d41b1b48025c252452318a864d32d0f9156adaabe65b) tied to MacSync.

According to a Reddit post, it spread through a known “ClickFix” campaign: a fake Cloudflare Turnstile prompt urging users to copy a command, which instead pasted a Base64-obfuscated AppleScript. This script was executed in the background, stealing data and dropping the new backdoor component.

Consequently, the infection chain for MacSync follows a structured progression, leveraging social engineering, multi-stage execution, and data exfiltration.

A graphic illustrating the MacSync infection chain, step by step.

Technical breakdown: The new Go-based backdoor

The core of this stealer remains an AppleScript payload, unchanged from earlier versions. It collects sensitive data (e.g., credentials, wallets), zips it as /tmp/salmonela.zip (a fun nod to the bacteria Salmonella), and exfils via a POST to https://meshsorterio[.]com/api/data/receive with a custom X-Bid header (e.g., f48fbe39836779cadbf148b5952919fd).

A health check hits /api/health. The script then fetches the backdoor from https://gamma[.]meshsorterio[.]com/trovo/index.php, unzipping and executing it as ./shell after a 30-second delay. Finally, it cleans up the temporary files.

Here’s where the new version of the stealer diverges from the original. The backdoor is now an obfuscated Go Mach-O binary, exhibiting agent behavior. This obfuscation (Go garbling) complicates static reversing.

A screenshot of the Go Mach-O binary payload in MacSync.
A second screenshot of the Go Mach-O binary payload in MacSync.

In spite of the obfuscation, dynamic analysis and network captures were sufficient to map its communication flow and capabilities. So, let’s break it down, step by step.

1. Background execution and agent startup

The backdoor runs as a background process, initializing with log messages such as the one seen in the following image.

A screenshot with an example of the MacSync backdoor running as a background process.

The log message shown above confirms a dual polling cadence: fast polling (5s) immediately after launch for rapid task acquisition, transitioning to steady-state polling (30s).

2. Initial check-in to C2

The agent then registers to the C2 via a POST request to /api/external/machines/me.

A screenshot showing the MacSync POST request and response.

This suggests the AppleScript phase phishes credentials, and the Go backdoor is designed to receive and use them for privileged actions.

3. Polling for commands

At this point, the agent polls its task queue with a GET request to /api/external/machines/commands/<machine_id>. An empty response ({}) indicates no current tasking.

A screenshot showing the MacSync agent polling its task queue with a GET request, and the response.

4. Server trust and command execution

We tested the agent behavior by injecting a fake command, “echo BOOM; exit 42,” via BurpSuite.

A screenshot showing the results when Moonlock tested the MacSync agent behavior by injecting a fake command.

As seen in the image above, the agent accepted and executed the command.

5. Logging and RCE

The agent now logs the local execution output.

A screenshot showing the MacSync local execution output.

6. Result reporting and protocol enforcement

The agent attempts to send a POST to /api/external/machines/result.

A screenshot showing the MacSync agent attempting to send a POST.

7. Internal JSON Schema from binary

A strings dump from the binary reveals all keys used in its C2 protocol: “os”, “arch”, “error”, “hostname”, “success”, “output”, “username”, “command”, “platform”, “command_id”, “exit_code”, “machine_id”, “sudo_password”.

A screenshot showing the keys used in the MacSync C2 protocol.

A summing up of our analysis reveals a classic backdoor lifecycle:

  1. Registration: Generates a machine ID (e.g., localhost-mpuser) and POSTs inventory to brsp[.]meshsorterio.com/api/external/machines/meon. Payload includes os: darwin, arch: arm64, hostname, username, and platform. Response schema includes a sudo_password field, hinting at integration with the stealer’s phishing for elevated creds
  2. Polling: Dual cadence: fast (5s) for initial checks, normal (30s) thereafter, and GETs /api/external/machines/commands/<machine_id> for tasks
  3. Execution and reporting: Executes received commands (e.g., our test echo BOOM; exit 42) and POSTs results to /api/external/machines/result with output, error, exit_code, and command_id (a tampered response confirmed remote code execution capability)

How MacSync differs from AMOS

In short, this isn’t just about more features. It’s a total architectural shift.

AMOS, updated in July 2025 with its own backdoor, relies on C-based components and shells out to curl for C2 communication. This creates noisy artifacts (process chains like osascript -> bash -> curl) that EDRs and IDS have hunted for years.

MacSync’s approach is stealthier:

  • Language and networking: Written in Go, MacSync uses the native net/http library for HTTPS requests. There are no external curlcalls, reducing host-level noise. Curl-hunting is mature, but Go’s embedded client evades those rules, pushing detection toward network heuristics.
  • Modularity: The stealer (AppleScript) and backdoor (Go agent) are separate modules. The stealer phishes creds, while the backdoor reuses them (via sudo_password) for privileged RCE.
  • Protocol: RESTful queue semantics enable scalable botnet ops.

MacSync in the wild: A glimpse at distribution

MacPaw’s CleanMyMac telemetry confirms that MacSync has already reached users in multiple countries, with detections concentrated in Europe and North America.

The heatmap below visualizes the geographic distribution of observed stealer activity, with the highest share of detections coming from Ukraine, followed by the United States, Germany, and the UK.

While the infection volume remains relatively low overall (hundreds of detections compared to AMOS’s tens of thousands), the spread across diverse regions signals growing adoption among traffer teams targeting macOS users globally.

A heatmap showing the geographic distribution of observed MacSync stealer activity.
The current MacSync stealer heatmap should be treated as directional, as coverage reflects both attacker reach and where we have visibility.

Wrapping up: A quiet evolution with loud implications

The story of MacSync is a reminder that in the world of malware, price and accessibility can beat elegance — at least at first.

What began as a budget-friendly stealer is now evolving into a modular remote access tool for macOS, complete with credential reuse support and REST-style tasking. This combination puts individual users at real risk of account takeovers and asset theft. Plus, it puts companies at risk of source code exposure, credential compromise, and follow-up attacks from Macs that often hold disproportionate access.

By ditching noisy shell commands in favor of native Go-based HTTP clients, MacSync is more difficult to catch. For defenders, this shift indicates a need to move detection from the command line to the network layer, while watching out for small, quiet agents doing very real damage.

Stay vigilant. The macOS threat space is heating up. If you spot more samples or variants, share them with @moonlock_lab. Let’s collaborate to track this evolution together.

Indicators of compromise

typeindicatornotes
sha256a42eece43aad2e2a2f98d41b1b48025c252452318a864d32d0f9156adaabe65bMach-O (Go). Registers, polls, executes, posts results.
sha256cfd338c16249e9bcae69b3c3a334e6deafd5a22a84935a76b390a9d02ed2d032Stealer/first stage; exfil + staging of Go agent.
domainmeshsorterio[.]comShared infrastructure
domainwww[.]meshsorterio[.]comFront host
domainbrsp[.]meshsorterio[.]comRegistration, commands, results API
domaingamma[.]meshsorterio[.]comDelivers SHS.zip → ./shell
domaind[.]meshsorterio[.]comRelated subdomain
domainplsp[.]meshsorterio[.]comRelated subdomain
domaincnct[.]meshsorterio[.]comRelated subdomain
domaincon[.]meshsorterio[.]comRelated subdomain
domaindev[.]meshsorterio[.]comDev environment
domainstaging[.]meshsorterio[.]comStaging environment
domaintesting[.]meshsorterio[.]comTesting environment
domainrxkbnwuc[.]meshsorterio[.]comRelated subdomain 
domainsphnugamma[.]meshsorterio[.]comRelated subdomain 
domainb3e34878-5a7d-458b-8a35-3ea1dae23fdd[.]meshsorterio[.]comRelated subdomain 
domain_msdcs[.]meshsorterio[.]comRelated subdomain 
domain_tcp[.]meshsorterio[.]comRelated subdomain 

This is an independent publication, and it has not been authorized, sponsored, or otherwise approved by Apple Inc. Mac and macOS are trademarks of Apple Inc.

MoonLock Banner
Kseniia Yamburh

Kseniia Yamburh

Kseniia is a malware research engineer at Moonlock, the cybersecurity division of MacPaw. She specializes in OSINT intelligence gathering and analysis. Her passion lies in writing about new investigations and findings in the field of cybersecurity.