Des chercheurs de la société de sécurité Kaspersky ont révélé une campagne de piratage de quatre ans ciblant des iPhones, dont ceux appartenant à des employés de Kaspersky à Moscou. Le programme malveillant nommé "Triangulation" a exploité une vulnérabilité matérielle inconnue, permettant aux cybercriminel d'obtenir un accès sans précédent. Une fonction matérielle secrète a été utilisée pour contourner les protections de la mémoire. Les chercheurs ont découvert cette fonction après des mois de rétro-ingénierie. L'attaque reste non attribuée à un acteur connu, bien que des allégations aient été faites sur une implication de la NSA. La complexité de cette attaque est qualifiée de l'une des plus sophistiquées jamais observées.« La sophistication de l'exploit et l'obscurité de la fonctionnalité suggèrent que les attaquants disposaient de capacités techniques avancées », a écrit Boris Larin, chercheur chez Kaspersky, dans un courriel. « Notre analyse n'a pas révélé comment ils ont eu connaissance de cette fonctionnalité, mais nous explorons toutes les possibilités, y compris une divulgation accidentelle dans des versions antérieures du firmware ou du code source. Il est également possible qu'ils l'aient découverte par le biais d'une rétro-ingénierie matérielle ».
D'autres questions restent sans réponse, écrit Larin, même après environ 12 mois d'enquête intensive. Outre la manière dont les cybercriminels ont appris l'existence de la fonction matérielle, les chercheurs ne savent toujours pas à quoi elle sert précisément. Ils ne savent pas non plus si cette fonction fait partie intégrante de l'iPhone ou si elle est activée par un composant matériel tiers tel que le CoreSight d'ARM.
La campagne de backdooring de masse, qui, selon les autorités russes, a également infecté les iPhones de milliers de personnes travaillant dans des missions diplomatiques et des ambassades en Russie, a été révélée en juin. Selon Kaspersky, sur une période d'au moins quatre ans, les malwares ont été diffusées dans des messages iMessage et installaient des logiciels malveillants par le biais d'une chaîne d'exploitation complexe, sans que le destinataire n'ait à agir.
Les appareils étaient alors infectés par des logiciels espions complets qui, entre autres, transmettaient des enregistrements de microphones, des photos, des données de géolocalisation et d'autres données sensibles à des serveurs contrôlés par les cyercriminels.
Triangulation, le nom donné par Kaspersky au logiciel malveillant et à la campagne qui l'a installé - exploitait quatre vulnérabilités critiques de type « zero-day », c'est-à-dire de graves failles de programmation qui étaient connues des cybercriminels avant qu'elles ne le soient d'Apple. L'entreprise a depuis apporté des correctifs aux quatre vulnérabilités, qui sont répertoriées comme suit :
- CVE-2023-32434
- CVE-2023-32435
- CVE-2023-38606
- CVE-2023-41990
Outre les iPhones, ces failles critiques et la fonction matérielle secrète étaient présentes dans les Macs, les iPods, les iPads, les Apple TV et les Apple Watches. De plus, les exploits récupérés par Kaspersky ont été intentionnellement développés pour fonctionner sur ces appareils également. La chaîne d'infection peut être résumée par le graphique suivant :
Un appareil reçoit une pièce jointe iMessage malveillante qui lance une chaîne d'exploits, dont l'exécution aboutit finalement au lancement de l'implant TriangleDB.
Outre les exploits et les composants de l'implant TriangleDB, la chaîne d'infection contient deux étapes de validation, à savoir JavaScript Validator et Binary Validator. Ces validateurs collectent diverses informations sur l'appareil de la victime et les envoient au serveur. Ces informations sont ensuite utilisées pour déterminer si l'iPhone ou l'iPad sur lequel TriangleDB sera implanté pourrait être un appareil de recherche. En effectuant de telles vérifications, les attaquants peuvent s'assurer que leurs exploits 0-day et l'implant ne sont pas brûlés.
Validateur JavaScript
Au début de la chaîne d'infection, la victime reçoit une pièce jointe iMessage invisible contenant un exploit de type "zero-click". Le but ultime de cet exploit est d'ouvrir silencieusement une URL unique sur le domaine backuprabbit[.]com. La page HTML hébergée sur cette URL contient du code JavaScript obscurci de la bibliothèque de cryptographie NaCl, ainsi qu'une charge utile chiffrée. Cette charge utile est le validateur JavaScript. Ce validateur effectue de nombreuses vérifications, notamment différentes opérations arithmétiques telles que Math.log(-1) ou Math.sqrt(-1), la disponibilité de composants tels que Media Source API, WebAssembly et d'autres.
Et, comme nous l'avons déjà mentionné, il effectue une technique d'empreinte appelée Canvas Fingerprinting en dessinant un triangle jaune sur un fond rose avec WebGL et en calculant sa somme de contrôle :
| Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | context.bufferData(context.ELEMENT_ARRAY_BUFFER, l, context.STATIC_DRAW);
context.useProgram(C);
context.clearColor(0.5, 0.7, 0.2, 0.25);
context.clear(context.COLOR_BUFFER_BIT);
context.drawElements(context.TRIANGLES, l.length, context.UNSIGNED_SHORT, 0);
C.L = context.getAttribLocation(C, Z('VE'));
C.W = context.getUniformLocation(C, Z('Zv'));
context.enableVertexAttribArray(C.L);
context.vertexAttribPointer(C.L, 3, context.FLOAT, !1, 0, 0);
context.uniform2f(C.W, 1, 1);
context.drawArrays(context.TRIANGLE_STRIP, 0, 3);
var h = new Uint8Array(262144);
context.readPixels(0, 0, 256, 256, context.RGBA, context.UNSIGNED_BYTE, h);
data['xT'] = h[88849];
data['jHWOO'] = h[95054];
data['aRR'] = h[99183];
data['ffJEi'] = h[130012];
for (var p = 0, _ = 0; _ < h.length; _++)
p += h[_];
data['WjOn'] = p; |
Code dessinant le triangle
Ce triangle est en fait la raison pour laquelle cette campagne a été baptisé « Opération Triangulation ». Après avoir exécuté le validateur, il chiffre et envoie toutes les informations collectées à une autre URL unique sur backuprabbit[.]com afin de recevoir (ou non) l'étape suivante de la chaîne d'infection.
Le détail le plus intriguant est le ciblage de la fonction inconnue jusqu'à présent, qui s'est avérée essentielle à la campagne de l'opération Triangulation. Une faille dans cette fonction a permis aux cybercriminels de contourner les protections avancées de la mémoire basées sur le matériel et conçues pour sauvegarder l'intégrité du système de l'appareil, même après qu'un cybercriminel ait acquis la...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.