NoReboot : la nouvelle faille qui permet d'espionner un iPhone
- 👨 Medhi Naitmazi
- Il y a 3 ans
- 💬 7 coms
NoReboot porte bien son nom
Historiquement, lorsqu'un virus infecte un appareil iOS, il peut être supprimé simplement en redémarrant l'appareil, ce qui efface le logiciel malveillant de la mémoire. Cependant, cette technique bloque les routines d'arrêt et de redémarrage du système, ce qui permet aux malwares de persister puisque l'appareil n'est jamais réellement éteint.
Comme cette attaque, que les chercheurs appellent logiquement "NoReboot" (pas de redémarrage), n'exploite aucune faille d'iOS et repose sur la tromperie humaine, elle ne peut pas être corrigée par Apple.
Pour redémarrer l'iPhone, vous savez qu'il faut appuyer sur le bouton d'alimentation et sur l'un des deux boutons de volume et les maintenir enfoncés jusqu'à ce que le curseur de l'option de redémarrage apparaisse, puis attendre plusieurs secondes que l'action se termine.
Lorsqu'un iPhone est éteint, son écran s'assombrit naturellement, l'appareil photo est désactivé, l'écran ne répond plus aux pressions, les sons des appels et des notifications sont coupés, tout comme les vibrations ou les indicateurs d'utilisation de la caméra ou des micro.
Les chercheurs en sécurité de ZecOps ont mis au point un PoC (proof of concept) de type trojan qui permet d'injecter un code spécialement conçu dans trois démons iOS pour simuler un arrêt en désactivant tous les indicateurs ci-dessus.
Comment ça marche NeReboot
Concrètement, le cheval de Troie détourne l'événement d'arrêt en accrochant le signal envoyé au "SpringBoard" (démon d'interaction de l'interface utilisateur). Au lieu du signal attendu, le logiciel enverra un code qui forcera le "SpingBoard" à s'éteindre, rendant l'appareil non réactif aux entrées de l'utilisateur. C'est la feinte parfaite dans ce cas, car les dispositifs qui entrent dans un état d'arrêt n'acceptent naturellement plus les entrées de l'utilisateur.
Ensuite, le démon "BackBoardd" reçoit l'ordre d'afficher la roue de chargement qui indique que le processus d'arrêt est en cours. "BackBoardd" est un autre démon iOS qui enregistre les événements de clics sur les boutons physiques et d'effleurements de l'écran avec des horodatages. Son utilisation abusive permet au cheval de Troie de savoir quand l'utilisateur tente d'allumer le téléphone.
En surveillant ces actions, l'utilisateur peut être trompé et relâcher le bouton plus tôt que prévu, évitant ainsi un redémarrage réel.
ZecOps décrit l'étape suivante de l'attaque "NoReboot" comme suit :
Le fichier va libérer le SpringBoard et déclencher un bloc de code spécial dans notre dylib injectée. Il s'agit d'exploiter l'accès SSH local pour obtenir les privilèges de l'utilisateur root, puis d'exécuter /bin/launchctl reboot userspace.
Cela va quitter tous les processus et redémarrer le système sans toucher au noyau. Le noyau reste corrigé. Par conséquent, le code malveillant n'aura aucun problème à continuer de s'exécuter après ce type de redémarrage. L'utilisateur verra l'effet du logo Apple au redémarrage.
Ceci est également géré par backboardd. Au lancement du SpringBoard, le backboardd laisse le SpringBoard prendre le contrôle de l'écran.
À la fin, l'utilisateur retrouve une interface utilisateur normale avec tous les processus et services fonctionnant comme prévu, sans aucune indication qu'il vient de subir un redémarrage simulé.
La démonstration en vidéo
Zecops a créé une vidéo montrant la technique NoReboot en action, illustrant comment elle peut facilement tromper quelqu'un en lui faisant croire que son appareil a été éteint. Attention donc à votre iPhone, même sous iOS 15 !