Sur Android et iOS, les services d’accessibilité offrent des fonctionnalités pour aider à l’utilisation d’un smartphone : commentaires audio, sous-titre, affichage personnalisé… Certaines applications mobiles conçues dans une démarche inclusive sont compatibles avec les services d’accessibilité.
Pour activer ces services dans une application, celle-ci requiert la permission Accessibilité. Seulement voilà, cette permission offre aux applications un accès complet à l’appareil de l’utilisateur. Aujourd’hui, de plus en plus de cybercriminels l’exploitent pour prendre le contrôle des smartphones et tablettes. Lorsque c’est le cas, les utilisateurs se retrouvent dans une impasse, incapables de désinstaller ou même de réinitialiser leur appareil.
Récemment, la solution Pradeo Security a neutralisé une application utilisant les services d’accessibilité d’Android à des fins malveillantes sur un mobile protégé. Le malware identifié a été installé via un lien de phishing. Il se fait passer pour une application de scan de code QR mais exploite en réalité la permission d’accessibilité afin de procéder à des transactions bancaires frauduleuses.
Les risques liés aux services d’accessibilité sur mobile
Une application peut utiliser la permission android.permission.BIND_ACCESSIBILITY_SERVICE afin de bénéficier de fonctionnalités avancées facilitant l’accessibilité à des utilisateurs ayant des déficiences auditives, visuelles, etc. Avec cette permission, une application peut contrôler l’intégralité de l’écran (clics, mouvements…) ainsi que le clavier, lire ce qui est affiché et fermer ou ouvrir des applications.
Ces fonctionnalités sont sensibles puisqu’elles permettent de contrôler quasiment toutes les couches d’un appareil. Lorsqu’une application malveillante se voit octroyer la permission d’accessibilité par l’utilisateur, elle peut envoyer vers un serveur distant toutes les informations affichées sur l’écran et tapées sur le clavier, empêcher sa propre désinstallation ou une réinitialisation du système, et même se lancer automatiquement au redémarrage de l’appareil. Malheureusement, les canaux de distribution utilisés par les pirates tels que les stores d’applications non-officiels et les messageries (SMS) n’apportent aucune protection pour faire face au problème.
Etude de cas : QR-Code Scanner
Nom de l’application analysée : QR-Code Scanner
Nom de package : com.square.boss
Environnement : Android
L’application QR-Code Scanner est en apparence une application de scan de code QR. Son icône et son nom n’attirent pas les soupçons. Cependant, au lancement on s’aperçoit qu’aucune fonctionnalité de scan de code QR n’est proposée. Immédiatement, l’application envoie une notification qui pousse à octroyer l’option d’accessibilité, qui est nécessaire à l’exécution de son attaque. Tant que l’utilisateur ne donne pas son consentement, elle envoie en continu la même demande de permission.
Une fois autorisée, le malware peut approuver ses propres demandes de permissions à la place de l’utilisateur et ce de manière invisible. Ainsi, il s’octroie toutes les permissions qui lui permettront de perpétrer son attaque en temps voulu.
En l’occurrence, notre analyse du malware laisse transparaître que l’objectif du pirate derrière l’application est de commettre des fraudes, en récoltant des données que l’utilisateur tape ou affiche sur son écran (identifiant, mot de passe, numéros de carte bancaire…) et en interceptant le code temporaire d’authentification envoyé.
Premièrement, l’application QR-Code Scanner accède à la liste des applications installées sur l’appareil de la victime afin d’identifier un potentiel intérêt. Lorsque des applications bancaires ou de e-commerce sont utilisées, il y a plus de chance que des données bancaires soit manipulées par l’utilisateur. Lorsque c’est le cas, le pirate l’espionne à son insu et collecte les informations.
Pour entrer dans le compte client de la victime ou effectuer un paiement avec sa carte bancaire, le pirate intercepte le code temporaire contenu dans un SMS ou une notification. Il contourne ainsi toutes les mesures de sécurité qui authentifient les paiements et connexions via un code. Seuls les protocoles de vérification utilisant les données biométriques y résistent.
Finalement, l’application utilise l’appareil de la victime pour se répandre sur d’autres appareils. Pour ce faire, elle envoie un SMS contenant un lien de phishing à toute la liste de contacts. Ainsi, le message provient d’un numéro connu et a plus de chance de convaincre les destinataires d’installer le malware.
Tout au long de l’attaque, le malware exploite les services d’accessibilité pour :
- Espionner l’activité du smartphone
- S’octroyer et empêcher le retrait des permissions dont il a besoin
- Empêcher la désinstallation de l’application, via l’accueil ou dans les paramètres
- Empêcher la réinitialisation aux paramètres d’usine, et ce même depuis un appareil tiers
- Empêcher la mise en veille ou l’arrêt de son processus
- Se lancer automatiquement au démarrage
Les permissions exploitées par le malware sont les suivantes :
android.permission.QUERY_ALL_PACKAGES
android.permission.QUICKBOOT_POWERON
android.permission.RECEIVE_LAUNCH_BROADCASTS
android.permission.GET_TASKS
android.permission.SYSTEM_ALERT_WINDOW
android.permission.RECEIVE_SMS
android.permission.READ_SMS
android.permission.WRITE_SMS
android.permission.SEND_SMS
android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
android.intent.action.BOOT_COMPLETED
com.htc.intent.action.QUICKBOOT_POWERON
android.intent.action.QUICKBOOT_POWERON
android.permission.RECEIVE_BOOT_COMPLETED
android.permission.QUICKBOOT_POWERON
Mesures de protection
Malgré la nécessité indéniable des services d’accessibilité, les droits avancés qu’ils offrent sur le système font qu’ils doivent être utilisés (côté développeur) et autorisés (côté utilisateur) avec une attention toute particulière.
Aujourd’hui, seulement quelques outils et actions de remédiation sont efficaces pour désinstaller le malware analysé :
- Le blocage de l’application avant son lancement avec Pradeo Security
- La désinstallation forcée de l’application avec Pradeo Security for Samsung
- La désinstallation via une solution de gestion des terminaux (UEM, MDM)
- La désinstallation via ADB command