Dans un billet technique signé Miguel, l’auteur documente une chaîne d’attaque où des résultats sponsorisés Google renvoient vers des chats LLM partagés (ChatGPT, DeepSeek) contenant des commandes terminal obfusquées visant macOS.

L’attaque débute par du malvertising: des requêtes courantes (ex. « how to clear storage on mac ») mènent à des chats LLM semblant légitimes mais qui livrent des commandes base64. Celles-ci récupèrent un script bash demandant en boucle le mot de passe, le valident (dscl . -authonly), l’enregistrent (/tmp/.pass), téléchargent un binaire (/tmp/update depuis nonnida.com) et l’exécutent avec sudo après suppression de l’attribut de quarantaine.

Le binaire macOS déploie une chaîne multi‑étapes: obfuscation par opérations arithmétiques + XOR, décodage 6 bits avec alphabet caché, puis exécution d’AppleScript. Trois charges sont décodées: (1) Antianalyse/VM (détecte QEMU/VMware/KVM, serials et CPU indicatifs), (2) masquage du Terminal, (3) stealer/installeur principal (>800 lignes) attribué à Shamus d’après les chaînes décodées.

Les capacités d’exfiltration couvrent de nombreux artefacts: cookies/historiques/logins/stockages des navigateurs Chromium (plus de 12 variantes) et Firefox (cookies.sqlite, logins.json, key4.db), plus de 15 portefeuilles crypto desktop (Electrum, Exodus, Atomic, Core wallets, Ledger Live/Trezor Suite, etc.), la Keychain macOS (login.keychain-db), des fichiers ciblés (txt, pdf, docx, wallet, key, json, db), Telegram (tdata) et OpenVPN (profils). L’archive volée est compressée et envoyée en POST vers un C2 avec en-têtes personnalisés.

La persistance est assurée via un LaunchDaemon root (com.finder.helper) chargeant un agent (/.agent) qui lance un binaire utilisateur (/.helper). Le malware sait aussi remplacer des applications crypto (ex. Ledger Live) par des versions trojanisées téléchargées depuis l’infra de l’attaquant. Le billet fournit également des recommandations de détection (création de LaunchDaemons, scripts de demande de mot de passe, remplacements d’apps wallet, collecte massive de profils navigateurs, etc.).

IOCs

  • Domaines/IP: nonnida.com (livraison), 45.94.47.205 (C2 /contact)
  • Chemins/fichiers: /tmp/.pass, /tmp/update, ~/.helper, ~/.agent, ~/.username, ~/.private, /Library/LaunchDaemons/com.finder.helper.plist
  • Réseau: POST http://45.94.47.205/contact (multipart/form-data avec headers user/BuildID/cl/cn), GET https:///zxc/app, GET https:///zxc/app.zip, GET https:///zxc/apptwo.zip
  • Processus/Services: LaunchDaemon com.finder.helper, exécution ~/.helper côté utilisateur

TTPs

  • TA0001 Initial Access: Malvertising via résultats sponsorisés menant à des chats LLM partagés malveillants
  • TA0005 Defense Evasion: Obfuscation base64/arithmétique+XOR, décodage alphabet 6 bits personnalisé, détection VM/sandbox, suppression xattr
  • TA0006 Credential Access: Hameçonnage de mot de passe système (boucle dscl . -authonly, faux dialogue AppleScript), vol de Keychain
  • TA0009 Collection: Parcours massif de profils navigateurs, wallets, fichiers sensibles, Telegram/OpenVPN
  • TA0011 Command and Control: Exfiltration via HTTP POST avec en‑têtes personnalisés et retry logic
  • TA0003 Persistence / TA0002 Execution: LaunchDaemon root, agent bash (/.agent), exécution du bot (/.helper)
  • TA0040 Impact/Privilege Escalation: Utilisation du mot de passe capturé avec sudo -S; trojanisation d’apps wallet (Ledger Live/Trezor)

Conclusion: Il s’agit d’une analyse de menace détaillée d’une campagne combinant malvertising et chats LLM pour distribuer un stealer macOS (Shamus), avec focalisation sur la chaîne d’infection, l’obfuscation, les capacités d’exfiltration et les mécanismes de persistance.


🔗 Source originale : https://blog.breakpointsecurity.pt/blog/chatgpt-deepseek-malvertising