🔍 Contexte
Publié le 31 juillet 2026 par Unit 42 (Palo Alto Networks), cet article présente une analyse technique approfondie de XCSSET v40, la dernière itération d’une famille de malwares macOS ciblant les développeurs Apple. Après des mois de dormance, les opérateurs ont déployé cette version en avril 2026, avec une seconde vague en mai 2026.
🎯 Vecteur d’infection et propagation
Le malware se propage via une attaque de chaîne d’approvisionnement en injectant un script downloader dans des projets Xcode légitimes hébergés sur GitHub. L’infection est déclenchée uniquement lorsque le développeur compile le projet localement. XCSSET v40 peut infecter tous les projets Xcode existants sur un système compromis et se propage via des dépôts Git open-source.
🔗 Chaîne d’infection (4 phases)
- Phase 1 : Script initial injecté dans le projet Xcode, contact C2 via
/a - Phase 2 : Reconnaissance hôte (OS, username), exfiltration vers le C2
- Phase 3 : Téléchargement du loader principal, compilation d’un wrapper AppleScript, exécution en mémoire via
osascript, suppression des fichiers temporaires - Phase 4 : Module orchestrateur
booten mémoire, chargement des modules spécialisés
🧩 Nouveaux modules notables
- chrome_remote : Backdoor via le protocole Chrome DevTools (CDP), WebSocket persistant vers le C2, injection JavaScript, vol de cookies/credentials, manipulation de wallets crypto (MetaMask), reverse shell fileless via
console.log - tdesktop : Trojaniseur Telegram Desktop — remplace le binaire légitime par une version malveillante signée ad hoc, configuration AES chiffrée depuis
/w?tr
🛡️ Nouvelles TTPs
- Polymorphisme multi-couches : recompilation du loader toutes quelques heures (8 hashes distincts en 24h), chiffrement AES-256-CBC avec IV aléatoire par transmission, chiffres César et substitution sur les noms de fonctions/variables
- Architecture dual-key : clé entrante dans le loader AppleScript compilé, clé sortante séparée
- Persistance fileless : utilisation du système
defaultsmacOS pour stocker des payloads Base64 encodés sous des clés aléatoires - Affaiblissement des défenses : désactivation de SoftwareUpdate, blocage de CloudTelemetryService, verrou exclusif sur la base YARA XProtect (XPdb), reset TCC via
tccutil reset AppleEvents - Anti-VM : module
statsvérifiant CPU/hardware, résultats envoyés au C2 pour bloquer les sandboxes
🌐 Infrastructure C2
Environ 40 domaines enregistrés début 2026 en plusieurs vagues, vieillis avant déploiement. Pivot géographique : domaines .ru (Russie) et .in (Inde) enregistrés en parallèle, cohérent avec le ciblage de développeurs en Asie du Sud. Quatre adresses IP opérateur liées par un thumbprint SSL partagé (6e480d648fa1b70612f5d198a66875e28847547d), des clés SSH réutilisées et un certificat RDP auto-signé commun — constituant des échecs OPSEC significatifs.
📋 Modules identifiés (17 au total)
Incluant : boot, stats, clipboard_v2, payloader, replicator_finder, git_finder, zip_infect_finder, data_folders_finder, firefox_data, notes_app, settings_app, finder_app, persist, browser_remote, safari_remote, chrome_remote, tdesktop
📌 Type d’article
Analyse technique approfondie publiée par une équipe de recherche en threat intelligence (Unit 42), visant à documenter les capacités de XCSSET v40, exposer son infrastructure C2 et fournir des indicateurs de compromission exploitables.
🧠 TTPs et IOCs détectés
TTP
- T1195.001 — Supply Chain Compromise: Compromise Software Dependencies and Development Tools (Initial Access)
- T1059.002 — Command and Scripting Interpreter: AppleScript (Execution)
- T1059.004 — Command and Scripting Interpreter: Unix Shell (Execution)
- T1027.002 — Obfuscated Files or Information: Software Packing (Defense Evasion)
- T1027.009 — Obfuscated Files or Information: Embedded Payloads (Defense Evasion)
- T1620 — Reflective Code Loading (Defense Evasion)
- T1055 — Process Injection (Defense Evasion)
- T1497.001 — Virtualization/Sandbox Evasion: System Checks (Defense Evasion)
- T1562.001 — Impair Defenses: Disable or Modify Tools (Defense Evasion)
- T1547.011 — Boot or Logon Autostart Execution: Plist Modification (Persistence)
- T1543.004 — Create or Modify System Process: Launch Daemon (Persistence)
- T1176 — Browser Extensions (Persistence)
- T1539 — Steal Web Session Cookie (Credential Access)
- T1056.001 — Input Capture: Keylogging (Collection)
- T1115 — Clipboard Data (Collection)
- T1041 — Exfiltration Over C2 Channel (Exfiltration)
- T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)
- T1573.001 — Encrypted Channel: Symmetric Cryptography (Command and Control)
- T1568 — Dynamic Resolution (Command and Control)
- T1553.002 — Subvert Trust Controls: Code Signing (Defense Evasion)
- T1036.005 — Masquerading: Match Legitimate Name or Location (Defense Evasion)
- T1485 — Data Destruction (Impact)
- T1490 — Inhibit System Recovery (Impact)
IOC
- IPv4 :
91.108.106.229— AbuseIPDB · VT · ThreatFox - IPv4 :
95.142.35.34— AbuseIPDB · VT · ThreatFox - IPv4 :
95.142.35.206— AbuseIPDB · VT · ThreatFox - IPv4 :
95.142.37.159— AbuseIPDB · VT · ThreatFox - IPv4 :
151.243.109.188— AbuseIPDB · VT · ThreatFox - IPv4 :
178.208.92.129— AbuseIPDB · VT · ThreatFox - IPv4 :
178.208.92.168— AbuseIPDB · VT · ThreatFox - Domaines :
accapple.ru— VT · URLhaus · ThreatFox - Domaines :
adschecks.ru— VT · URLhaus · ThreatFox - Domaines :
adsmobi.ru— VT · URLhaus · ThreatFox - Domaines :
adsmorein.in— VT · URLhaus · ThreatFox - Domaines :
adsmoreme.in— VT · URLhaus · ThreatFox - Domaines :
amdcdn.ru— VT · URLhaus · ThreatFox - Domaines :
amzndev.in— VT · URLhaus · ThreatFox - Domaines :
amzndev.ru— VT · URLhaus · ThreatFox - Domaines :
amznprod.in— VT · URLhaus · ThreatFox - Domaines :
applecdn.ru— VT · URLhaus · ThreatFox - Domaines :
appledisk.ru— VT · URLhaus · ThreatFox - Domaines :
appledns.ru— VT · URLhaus · ThreatFox - Domaines :
applehosts.ru— VT · URLhaus · ThreatFox - Domaines :
appletime.in— VT · URLhaus · ThreatFox - Domaines :
bulksec.ru— VT · URLhaus · ThreatFox - Domaines :
cdnamz.in— VT · URLhaus · ThreatFox - Domaines :
cdnamz.ru— VT · URLhaus · ThreatFox - Domaines :
cdnapple.in— VT · URLhaus · ThreatFox - Domaines :
cdnatapple.ru— VT · URLhaus · ThreatFox - Domaines :
cdnroute.ru— VT · URLhaus · ThreatFox - Domaines :
checkcdn.ru— VT · URLhaus · ThreatFox - Domaines :
chromeads.ru— VT · URLhaus · ThreatFox - Domaines :
cnmag.ru— VT · URLhaus · ThreatFox - Domaines :
devnetaps.ru— VT · URLhaus · ThreatFox - Domaines :
dnsapple.ru— VT · URLhaus · ThreatFox - Domaines :
dnsrelays.ru— VT · URLhaus · ThreatFox - Domaines :
explorecdn.ru— VT · URLhaus · ThreatFox - Domaines :
fiddlejoy.ru— VT · URLhaus · ThreatFox - Domaines :
figmacat.ru— VT · URLhaus · ThreatFox - Domaines :
figmanets.in— VT · URLhaus · ThreatFox - Domaines :
funchats.ru— VT · URLhaus · ThreatFox - Domaines :
gironetcdn.ru— VT · URLhaus · ThreatFox - Domaines :
goalmate.ru— VT · URLhaus · ThreatFox - Domaines :
googlenets.ru— VT · URLhaus · ThreatFox - Domaines :
greencn.ru— VT · URLhaus · ThreatFox - Domaines :
icloudsnet.ru— VT · URLhaus · ThreatFox - Domaines :
imails.ru— VT · URLhaus · ThreatFox - Domaines :
legalads.in— VT · URLhaus · ThreatFox - Domaines :
littleads.in— VT · URLhaus · ThreatFox - Domaines :
littledns.ru— VT · URLhaus · ThreatFox - Domaines :
maganet.ru— VT · URLhaus · ThreatFox - Domaines :
mindelgate.ru— VT · URLhaus · ThreatFox - Domaines :
netapsdev.ru— VT · URLhaus · ThreatFox - Domaines :
netcdnads.in— VT · URLhaus · ThreatFox - Domaines :
netcdnamz.ru— VT · URLhaus · ThreatFox - Domaines :
netcdndev.in— VT · URLhaus · ThreatFox - Domaines :
netcorps.ru— VT · URLhaus · ThreatFox - Domaines :
netsprot.in— VT · URLhaus · ThreatFox - Domaines :
netsproto.in— VT · URLhaus · ThreatFox - Domaines :
networkads.in— VT · URLhaus · ThreatFox - Domaines :
rigacdn.in— VT · URLhaus · ThreatFox - Domaines :
rigmajoys.in— VT · URLhaus · ThreatFox - Domaines :
rigmanet.ru— VT · URLhaus · ThreatFox - Domaines :
rigmanets.in— VT · URLhaus · ThreatFox - Domaines :
sahusuzuki.in— VT · URLhaus · ThreatFox - Domaines :
stuffdns.in— VT · URLhaus · ThreatFox - Domaines :
testjoys.ru— VT · URLhaus · ThreatFox - Domaines :
timewebnet.in— VT · URLhaus · ThreatFox - Domaines :
vigmanet.ru— VT · URLhaus · ThreatFox - Domaines :
whitead.in— VT · URLhaus · ThreatFox - Domaines :
whiteads.ru— VT · URLhaus · ThreatFox - Domaines :
wincdn.ru— VT · URLhaus · ThreatFox - Domaines :
windsecure.ru— VT · URLhaus · ThreatFox - URLs :
https://amzndev.in/d/zw_sfp64— URLhaus - URLs :
https://amzndev.ru/d/zw_sfp64— URLhaus - URLs :
https://googlenets.ru/d/zw_sfp64— URLhaus - URLs :
https://netcdndev.in/d/zw_sfp64— URLhaus - URLs :
https://whitead.in/d/zw_sfp64— URLhaus - URLs :
https://whiteads.ru/d/zw_sfp64— URLhaus - SHA1 :
6e480d648fa1b70612f5d198a66875e28847547d— VT · MalwareBazaar - Fichiers :
chrome_remote - Fichiers :
Telegram.app - Chemins :
/tmp/r - Chemins :
/tmp/p.app - Chemins :
~/.tr - Chemins :
~/.tr_map
Malware / Outils
- XCSSET v40 (other)
- chrome_remote (backdoor)
- tdesktop trojanizer (other)
🟢 Indice de vérification factuelle : 90/100 (haute)
- ✅ unit42.paloaltonetworks.com — source reconnue (liste interne) (20pts)
- ✅ 34829 chars — texte complet (fulltext extrait) (15pts)
- ✅ 83 IOCs dont des hashes (15pts)
- ✅ 6/9 IOCs confirmés (AbuseIPDB, ThreatFox, URLhaus, VirusTotal) (15pts)
- ✅ 23 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ pas de CVE à vérifier (0pts)
IOCs confirmés externellement :
91.108.106.229(ip) → VT (3/91 détections)95.142.35.34(ip) → VT (4/91 détections)95.142.35.206(ip) → VT (3/91 détections)accapple.ru(domain) → VT (20/91 détections)adschecks.ru(domain) → VT (8/91 détections)
🔗 Source originale : https://unit42.paloaltonetworks.com/xcsset-v40-malware-analysis/