Des chercheurs ont découvert une nouvelle technique permettant à un logiciel malveillant sous iOS de persister sur un appareil infecté en simulant son processus d’arrêt, ce qui rend impossible de déterminer physiquement si un iPhone est éteint ou non.
Cette découverte, baptisée « NoReboot« , est due à la société de sécurité mobile ZecOps, qui a découvert qu’il est possible de bloquer puis de simuler une opération de redémarrage d’iOS, en faisant croire à l’utilisateur que le téléphone a été éteint alors qu’il est en réalité toujours en marche.
La société basée à San Francisco a qualifié ce problème de « bug de persistance ultime […] qui ne peut pas être corrigé parce qu’il n’exploite aucun bug de persistance, mais joue seulement des tours à l’esprit humain« .
NoReboot fonctionne en interférant avec les routines utilisées dans iOS pour éteindre et redémarrer l’appareil, les empêchant effectivement de se produire en premier lieu et permettant à un cheval de Troie de réaliser la persistance sans persistance, car l’appareil n’est jamais réellement éteint.
Pour ce faire, un code spécialement conçu est injecté dans trois démons iOS, à savoir InCallService, SpringBoard et Backboardd, afin de simuler un arrêt en désactivant tous les signaux audiovisuels associés à un appareil sous tension, notamment l’écran, les sons, les vibrations, l’indicateur de l’appareil photo et le retour tactile.
En d’autres termes, l’idée est de donner l’impression que l’appareil a été éteint sans vraiment l’éteindre, en détournant l’événement qui est activé lorsque l’utilisateur appuie et maintient simultanément le bouton latéral et l’un des boutons de volume, et fait glisser le curseur « glisser pour éteindre« .
« Bien que nous ayons désactivé tous les retours physiques, le téléphone reste entièrement fonctionnel et est capable de maintenir une connexion Internet active« , expliquent les chercheurs. « L’acteur malveillant pourrait manipuler le téléphone à distance de manière flagrante sans se soucier d’être pris car l’utilisateur est trompé en pensant que le téléphone est éteint, soit en étant éteint par la victime, soit par des acteurs malveillants utilisant la ‘batterie faible’ comme excuse. »
La souche du malware force ensuite le SpingBoard, qui fait référence à l’interface utilisateur graphique d’iOS, à se fermer (par opposition à l’ensemble du système d’exploitation), puis commande au BackBoardd, le démon qui gère tous les événements liés au toucher et aux clics sur les boutons physiques, d’afficher l’effet du logo Apple si l’utilisateur choisit de rallumer le téléphone en marche, tandis que le code malveillant continue de persister.
De plus, cette technique pourrait théoriquement être étendue pour manipuler un redémarrage forcé associé à un iPhone en faisant délibérément apparaître le logo Apple quelques secondes plus tôt lorsqu’un tel événement est enregistré via le Backboardd, trompant ainsi la victime pour qu’elle relâche le bouton latéral sans véritablement déclencher un redémarrage forcé.
Bien qu’aucun logiciel malveillant n’ait été détecté ou documenté publiquement à ce jour utilisant une méthode ressemblant à NoReboot, les résultats soulignent que même le processus de redémarrage d’iOS n’est pas à l’abri d’être détourné une fois qu’un adversaire a obtenu l’accès à un appareil cible.
Les menaces ont atteint la « persistance » sans exploits de persistance », concluent les chercheurs. Un exploit de preuve de concept (PoC) démontrant NoReboot est accessible via GitHub.