🔍 Contexte
Publié le 10 avril 2026 par Jamf Threat Labs (auteur : Nir Avraham / GotR00tAcce55), cet article constitue le troisième volet d’une série de recherches sur le spyware commercial Predator (attribué à Intellexa). Il fait suite aux publications de janvier et février 2026 sur les techniques anti-analyse et le contournement des indicateurs d’enregistrement iOS.
🎯 Périmètre de l’exploitation
La chaîne d’exploitation analysée cible iOS antérieur à la version 17 et les appareils jusqu’à la génération A16, couvrant 21 modèles d’iPhone (iPhone XS à iPhone 14 Pro Max, 2018–2022), organisés en 5 classes de dispositifs.
⚙️ Composants techniques clés
1. FDGuardNeonRW — Primitive R/W kernel via registres NEON
- Exploite les registres vectoriels ARM NEON (V0–V31, 128 bits) comme canal de données covert pour lire/écrire la mémoire kernel arbitraire
- Lecture : 528 octets par opération via
thread_get_state/ messages d’exception Mach (msgh_id 2406 / 0x966), jusqu à 10 tentatives - Écriture : modification de l’état VFP/NEON via réponse d’exception, confirmation par polling sur 3 secondes
- Permet de résoudre le KASLR (Kernel Address Space Layout Randomization) en localisant les structures kernel
2. Contournement PAC via gadget JavaScriptCore
- Predator recherche dans le framework
JavaScriptCored’Apple une séquence de 20 octets contenant l’instructionPACIA X16, X17à proximité deJSC::JSArrayBuffer::isShared() - Utilise
dlopen(JavaScriptCore)+dlsym(isShared)+memmem()pour localiser le gadget - Permet de forger des pointeurs signés PAC en contrôlant X16 (pointeur) et X17 (discriminateur)
3. Cache de signature PAC à 256 entrées
- Pré-calcule 512 appels remotePACIA (256 × 2 discriminateurs PC/LR) à l’initialisation
- Indexé par octet de poids fort de l’adresse, permettant des lookups instantanés lors des callbacks de hooks
4. callFunc — Exécution de fonctions distantes
- Utilise un “trojan thread” maintenu à un breakpoint dans le processus cible
- Combine cache PAC + exceptions Mach + manipulation d’état de thread pour exécuter des fonctions arbitraires avec jusqu’à 6 arguments (x0–x5)
- Référence interne :
TaskROPDevOff.h— technique ROP pour appareils sans Developer Mode
5. RWTransfer — Transfert de primitives kernel inter-processus
- Partage les capacités R/W kernel entre le processus “watcher” et les processus “helper”
- Parcourt les listes chaînées kernel pour localiser les structures
task, l’espace IPC et les entrées de ports Mach
6. Résolution distante de méthodes Objective-C
- Exécute la chaîne de résolution runtime Objective-C à distance via
callFuncpour gérer les slides ASLR per-processus
7. Matrice de support — 21 modèles, 5 classes
- Configurations per-classe avec offsets kernel précis
- Identification du modèle via
uname()avec comparaisons XOR sur les identifiants ASCII (ex:iPhone15,3= iPhone 14 Pro Max) - Retour de code 5 pour les modèles non supportés (protection contre kernel panic)
🛡️ Mitigations architecturales Apple
- L’introduction du SPTM (Secure Page Table Monitor) sur les puces A15+ (gestion des tables de pages en EL2) représente une mitigation significative contre les techniques décrites
📋 Type d’article
Il s’agit d’une analyse technique approfondie issue de reverse engineering de samples iOS de Predator. L’objectif principal est de documenter publiquement pour la première fois le moteur d’exploitation kernel de Predator, en détaillant chaque composant technique de la chaîne post-exploitation.
🧠 TTPs et IOCs détectés
Acteurs de menace
- Intellexa (cybercriminal) —
TTP
- T1404 — Exploit OS Vulnerability (Privilege Escalation)
- T1055 — Process Injection (Defense Evasion)
- T1622 — Debugger Evasion (Defense Evasion)
- T1179 — Hooking (Credential Access)
- T1629.003 — Impair Defenses: Disable or Modify Tools (Defense Evasion)
- T1625 — Hijack Execution Flow (Persistence)
Malware / Outils
- Predator (other)
🟢 Indice de vérification factuelle : 65/100 (haute)
- ✅ jamf.com — source reconnue (liste interne) (20pts)
- ✅ 15811 chars — texte complet (fulltext extrait) (15pts)
- ⬜ aucun IOC extrait (0pts)
- ⬜ pas d’IOC à vérifier (0pts)
- ✅ 6 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ✅ acteur(s) identifié(s) : Intellexa (5pts)
- ⬜ pas de CVE à vérifier (0pts)
🔗 Source originale : https://www.jamf.com/blog/predator-spyware-ios-kernel-exploitation-engine/