P.K. SHARMA

Cyber security intelligence, AI governance, practitioner analysis

AI Security

Microsoft says MacSync Stealer rotates domains too fast to block. All 31 in its own list share one registrar and none was registered this year

The report is right that behaviours outlive infrastructure. Its indicator table also shows the replacements were bought in batches up to a year before the campaign was reported, which is why domain-age blocking would have caught none of it.

By Parminder Kumar Sharma · · 5 min read

An illustration on a deep navy ground. On the left, a dark terminal window with an amber outlined command line reading curl minus X PUT minus minus data dash binary at dash. A glowing amber bar leaves the window and breaks into four separate cubes, labelled upload id, chunk index and total chunks, flowing toward a loose grid of six identical empty cyan outlined rectangles on the right, labelled 31 domains one registrar and none registered in 2026. A caption under the terminal reads staged archive split into chunks.

What Microsoft published

Microsoft Defender Experts and Microsoft Security Research published an analysis of MacSync Stealer on 18 August 2026, extending earlier work by RST Cloud. It is a macOS information stealer delivered through ClickFix social engineering, where the victim is talked into pasting a command into Terminal.

The report's method is the interesting part, and Microsoft is careful to say the headline number is not the point:

Applying this standard linked more than 30 domains, making the domain count an outcome of the behavioral methodology rather than the primary finding.

The behaviours that stayed constant while domains changed are specific enough to hunt on: recurring URI paths /curl/, /dynamic?txd= and /gate?buildtxd=, a macOS User-Agent, an api-key header, curl invoked with -k -s --max-time, and chunked uploads over HTTP PUT carrying upload_id, chunk_index and total_chunks.

RST Cloud contributed the sharpest single detail, and it is the one to remember: a static API-key value shared across four confirmed C2 domains, while the build token rotated per deployment. The operator rotated the identifier a defender can see in a URL and left the one sitting in a header alone.

The chain Microsoft observed, and what each phase leaves behind

  1. 1

    Payload retrieval

    An interactive zsh session runs curl against a /curl/ path, then decodes with base64 and gunzip.

  2. 2

    AppleScript execution

    osascript launches sh, cp, rm, curl, mkdir and killall, blending macOS scripting with Unix tooling.

  3. 3

    Collection

    Keychain material, browser Safe Storage keys, cookies, SSH keys, AWS credentials, Kubernetes configs, Apple Notes, wallet artefacts.

  4. 4

    Staging

    Data staged under /tmp/sync* and compressed into /tmp/osalogging.zip, then split into chunks.

  5. 5

    Chunked exfiltration

    curl -X PUT --data-binary uploads each chunk with upload_id, chunk_index and total_chunks to a /gate path.

  6. 6

    Cleanup

    Temporary archives, staging folders and lock files removed to reduce on-disk evidence.

Phases and hunting value as described in Microsoft's 18 August 2026 analysis. Rebuilt as text rather than reproduced as their diagram, so every string here is searchable and correctable.

Their own indicator list answers a question the report does not ask

Microsoft's defensive argument is that rotating infrastructure decays static domain blocking, so hunt on request shape instead. That is right, and this site would not argue with it.

It does raise a question neither report addresses: where do the replacement domains come from? Every one of the 31 domains in Microsoft's indicator table was queried against Verisign's RDAP service on 18 August 2026 for this briefing. The answer is not what the word "rotating" suggests.

All 31 domains were bought before the campaign was ever reported

Verisign RDAP · 18 Aug 2026

263 days, no domain in the list registered

8

3

6

Sep 2024

26 Sep 2025

18 Aug 2026, report

31 of 31

at a single registrar, Unstoppable Domains

0

registered at any point in 2026

14 of 31

registered on just two days, 26 Sep and 28 Nov 2025

Every domain in Microsoft’s indicator table, queried against Verisign’s RDAP service on 18 August 2026 for this briefing. Bar height is the number of domains registered that day. Registrar and registration date are point-in-time registry records and neither proves who bought a domain, but the distribution is the observation: the rotation described in the report draws on stock acquired long before it.

All 31 sit with a single registrar. Not one was registered in 2026. The newest is 28 November 2025, 263 days before the report was published, and the oldest goes back to October 2024. Fourteen of the 31 were registered on just two days: eight on 26 September 2025 and six on 28 November 2025.

So the rotation is real and the registration is not. The operator is cycling through stock bought in batches up to a year in advance. Rotation and registration are different activities, and the report describes the first without touching the second.

Why that matters more than it sounds

A newly-registered-domain block would have caught none of this. Blocking or scoring domains by age is one of the most widely deployed controls in enterprise filtering, it is cheap, and against this campaign it is worth nothing, because by the time any of these domains served a payload it had been sitting in a drawer for months.

The registrar is a stronger pivot than the report offers, and a cheaper one. Microsoft's behavioural pivots need process ancestry, command lines and network telemetry correlated together, which in practice means an EDR product and someone to write the queries. A registrar plus a registration window is a DNS-log query. It is coarser and it will produce false positives, because a large registrar has many legitimate customers. It is also available to teams who have none of the telemetry the report assumes.

And the innocuous names are not what they look like. A defender scanning that list sees dogtrainersgeorgia.com, newjerseypetsitter.com, oaklandwaterdamage.com and reasonably concludes these are small business sites that got compromised. The registration data does not support that reading: those three were registered on the same day, at the same registrar, in the same batch of six. They are purpose-registered cover, not victims. That distinction changes what you do when one appears in your logs, because there is no third party to notify and no compromised site to remediate.

What rotates and what did not, across the same 31 domains

AttributeBehaviour across the campaign
C2 domainReplaced quickly after public disclosure. The reason static blocking decays.
Build token, buildtxdRotates per deployment, per RST Cloud.
API-key headerStatic across four confirmed C2 domains, per RST Cloud.
URI paths and upload parametersUnchanged across more than 30 domains, per Microsoft.
RegistrarOne, across all 31 domains in the indicator table.
Registration windowAugust 2024 to November 2025. Nothing in 2026, and 14 of 31 on two days.
Left column from Microsoft and RST Cloud's published analysis. Right column from Verisign RDAP records read on 18 August 2026. Registry data is point-in-time and a registrar of record can be a reseller, so this identifies a pattern rather than an owner.

What to do with this

Take this with you

Additions to the hunting guidance, not replacements for it

  • Run Microsoft’s queries first. The request-shape pivots are the durable ones and they detect activity, where registration data only clusters infrastructure after the fact.
  • Stop relying on domain age as a signal for this class of threat. A pre-purchased pool defeats it by construction, and it is worth knowing which of your controls quietly assume newness equals risk.
  • Pivot on the registrar and the registration window when you get a hit, not just on the domain. Fourteen of these came from two purchase days, so one confirmed indicator is a thread to a batch.
  • Do not treat the innocuous-sounding domains as compromised third parties. Registration records place them in the same batches as the rest, so there is nobody to notify.
  • If you are on macOS 26.4 or later, the Terminal paste warning blocks the first phase outright. Check whether your fleet is actually on it, because every behavioural pivot in this report describes what happens after that control fails.

The position

The Microsoft report is good work and its central claim is correct: behaviours outlive infrastructure, and hunting on request shape beats matching domains. The piece of advice underneath it is the one worth carrying, which is that the pivots you can rely on are the ones the attacker cannot change without rebuilding their tooling.

What the same data shows, and what nobody wrote down, is that the attacker did not have to change much at all. The API key stayed static across four C2 domains, the URI paths stayed static across more than thirty, and the domains themselves were bought in bulk before the campaign was ever reported. Rotation looks like agility from the outside. From the registry it looks like inventory management.

This is the third briefing this week where the published artefact is accurate and answers a narrower question than the reader is asking, after a status page that named components and never a cause and an advisory that said no user action was required. Here the gap is smaller and more forgivable, because an indicator table is not supposed to be an analysis. It is still worth noticing that the answer was sitting inside the evidence both vendors published.

Sources

  1. PrimaryHunting MacSync Stealer infrastructure through behavioral pivotsMicrosoftaccessed 2026-08-19
  2. PrimaryMacSync Stealer C2 infrastructure rotationRST Cloudaccessed 2026-08-19
  3. PrimaryRDAP registration records for the 31 indicator domains, queried 18 August 2026Verisignaccessed 2026-08-19

Share this briefing

Know someone who owns this problem? Send it to them.

Related briefings

The briefing, in your inbox

Practitioner analysis of cyber and AI security news. No vendor noise.

One email per briefing. Unsubscribe any time.