🔍 Contexte
Publié le 22 septembre 2026 par Jamf Threat Labs, cet article constitue une analyse technique approfondie d’une nouvelle variante du malware macOS PamStealer, baptisée Wavel, faisant suite à une première publication de juillet 2026. Il s’agit de la troisième variante connue de cette famille de stealers ciblant macOS.
🎣 Vecteur d’infection
Les victimes sont attirées via hxxps://wavel[.]app, un site imitant une application de portefeuille crypto multichain. Le bouton de téléchargement délivre un fichier Wavel.dmg depuis hxxps://y32me8[.]com/Wavel.dmg. Le DMG contient un AppleScript compilé (.scpt) qui, masqué par macOS (extension cachée dans Finder), s’ouvre avec Script Editor et exécute du code JXA embarqué.
⚙️ Chaîne d’infection — Stage 1 : dropper zsh et déchiffrement serveur
Le fichier JXA contient une large chaîne base64 décodée et exécutée via /bin/zsh -s. Le script zsh résultant :
- Télécharge pkgunpack, un utilitaire Mach-O FAT (arm64/x86_64) dédié au déchiffrement ECIES (X25519 + AES-256-GCM)
- Génère une paire de clés éphémères et effectue un échange de clés live avec le serveur C2
- Récupère un DEK (Data Encryption Key) chiffré depuis le serveur (format
SNWK1) - Déchiffre le payload (format
SNP1) uniquement avec la coopération du serveur - Extrait une archive
tar.gzcontenant Wavel.app, renommée en Finder.app lors de l’installation - Supprime la notification macOS d’ajout d’élément de connexion en arrière-plan (SIGSTOP/SIGKILL sur les processus système)
🔒 Mécanismes de persistance (multi-couches)
- LaunchAgent
com.apple.finder.agent(exécution toutes les 15 secondes) - Script de réparation
~/.repair-runavec backup local~/.sysnotif-backup.tgz - Hook shell ajouté à
~/.zshrc - Git hooks globaux (
post-checkout,pre-commit) viacore.hooksPath
🦠 Stage 2 : infostealer Swift (r8afup9un0)
Le second stage, réécrit de Rust vers Swift, est un FAT Mach-O nommé r8afup9un0 (projet interne : MacClient). Il réalise :
- Capture de mot de passe via une fausse fenêtre d’authentification AppKit (
AuthPromptWindow) validée par PAM (libpam.2.dylib, service"login") - Fausse fenêtre de crash imitant le dialogue macOS “damaged and can’t be opened”
- Extraction du trousseau via
_SecItemCopyMatching+security unlock-keychain+ copie directe delogin.keychain-db - Vol de bases de données navigateurs (17 cibles) via l’API SQLite backup, après kill forcé des processus helper (Chrome, Brave, Edge, Chromium, Vivaldi, Opera, Firefox)
📋 Type d’article
Analyse technique détaillée publiée par un éditeur de sécurité (Jamf Threat Labs), visant à documenter les TTPs, IOCs et évolutions d’une famille de malwares macOS activement développée.
🧠 TTPs et IOCs détectés
TTP
- T1566.002 — Phishing: Spearphishing Link (Initial Access)
- T1204.002 — User Execution: Malicious File (Execution)
- T1059.002 — Command and Scripting Interpreter: AppleScript (Execution)
- T1059.004 — Command and Scripting Interpreter: Unix Shell (Execution)
- T1543.001 — Create or Modify System Process: Launch Agent (Persistence)
- T1546.004 — Event Triggered Execution: Unix Shell Configuration Modification (Persistence)
- T1036.005 — Masquerading: Match Legitimate Name or Location (Defense Evasion)
- T1553.002 — Subvert Trust Controls: Code Signing (Defense Evasion)
- T1562.001 — Impair Defenses: Disable or Modify Tools (Defense Evasion)
- T1027 — Obfuscated Files or Information (Defense Evasion)
- T1573.001 — Encrypted Channel: Symmetric Cryptography (Command and Control)
- T1041 — Exfiltration Over C2 Channel (Exfiltration)
- T1555.001 — Credentials from Password Stores: Keychain (Credential Access)
- T1555.003 — Credentials from Password Stores: Credentials from Web Browsers (Credential Access)
- T1056.002 — Input Capture: GUI Input Capture (Credential Access)
- T1564.001 — Hide Artifacts: Hidden Files and Directories (Defense Evasion)
IOC
- Domaines :
wavel.app— VT · URLhaus · ThreatFox - Domaines :
y32me8.com— VT · URLhaus · ThreatFox - URLs :
https://wavel.app— URLhaus - URLs :
https://y32me8.com/Wavel.dmg— URLhaus - Fichiers :
Wavel.dmg - Fichiers :
pkgunpack - Fichiers :
r8afup9un0 - Fichiers :
Wavel.app - Fichiers :
Finder.app - Fichiers :
.sysnotif-backup.tgz - Fichiers :
.repair-run - Chemins :
~/Library/Application Support/System/.repair-run - Chemins :
~/Library/Application Support/System/.sysnotif-backup.tgz - Chemins :
~/Library/Application Support/System/.githooks/post-checkout - Chemins :
~/Library/Application Support/System/.githooks/pre-commit - Chemins :
~/Library/Keychains/login.keychain-db - Chemins :
~/.zshrc
⚠️ À propos de ces IOC — ils sont extraits automatiquement de l’article original le 27 septembre 2026 et n’ont pas fait l’objet d’une vérification externe. Un indicateur peut avoir été réattribué depuis : une IP de C2 peut redevenir un service légitime, un domaine sinkholé peut changer de propriétaire. Aucune garantie d’exactitude ni d’actualité — contrôlez leur validité avant tout usage opérationnel, en particulier avant de les injecter dans une blocklist ou un SIEM.
Malware / Outils
- PamStealer (stealer)
- pkgunpack (tool)
🟢 Indice de vérification factuelle : 82/100 (haute)
- ✅ jamf.com — source reconnue (liste interne) (20pts)
- ✅ 15000 chars — texte complet (fulltext extrait) (15pts)
- ✅ 17 IOCs (IPs/domaines/CVEs) (10pts)
- ✅ 2/4 IOCs confirmés (ThreatFox, URLhaus, VirusTotal) (12pts)
- ✅ 16 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 :
wavel.app(domain) → VT (10/91 détections)y32me8.com(domain) → VT (4/91 détections)
🔗 Source originale : https://www.jamf.com/blog/pamstealer-wavel-macos-infostealer/