La plupart des groupes de cybercriminels organisés sont motivés par des raisons financières. Le passage de la banque en ligne à la banque mobile fait des applications bancaires mobiles les cibles privilégiées des cybercriminels. Plus les gens utilisent les applications mobiles pour les transactions bancaires, plus l'attention des adversaires est attirée et plus les cyberattaques sont nombreuses. 

En ce qui concerne les méthodes utilisées contre les applications bancaires mobiles, les données de renseignement sur les menaces de Verimatrix montrent que l'infection des utilisateurs mobiles par des logiciels malveillants l'emporte sur toutes les autres menaces dans l'écosystème Android, et les logiciels malveillants sont sans aucun doute le principal vecteur d'attaque utilisé dans la nature. 

Les trojans bancaires Android (ABT) sont des logiciels malveillants spécialement conçus pour attaquer les applications bancaires. Ils n'ont qu'un seul objectif : voler le maximum d'argent sur les comptes bancaires des victimes. Pour atteindre leur objectif après avoir accédé aux appareils des victimes, la première mesure de sécurité pour arrêter les trojans bancaires est les identifiants de connexion bancaire. 

Les attaques par superposition sont traditionnellement la technique la plus courante pour surmonter cet obstacle. Elles ne reposent sur rien d'autre que l'abus des services d'accessibilité. Ce billet se concentre sur la base technique des attaques par superposition. D'autres techniques de vol de données d'identification utilisées par les trojans bancaires seront étudiées dans un prochain article.

Accessibilité Abus de service

L'API du service d'accessibilité d'Android est conçue pour aider les personnes handicapées à utiliser les appareils et les applications Android. Elle permet d'interroger le contenu de la fenêtre active sur l'écran et d'interagir avec elle de manière programmatique. Au fil des ans, elle a également été utilisée pour le contrôle mains libres des applications, par exemple en conduisant ou en cuisinant, ou pour des tests automatisés d'interfaces utilisateur (IU) autres que celles prévues à l'origine. 

Les cybercriminels n'ont pas tardé à découvrir et à abuser de l'API du service d'accessibilité. Si la première occurrence remonte à 2013 selon les experts en renseignements sur les menaces, il s'agit aujourd'hui d'une caractéristique standard des trojans bancaires.

Lorsque l'application malveillante démarre, le premier objectif du cheval de Troie est d'obtenir l'autorisation d'accéder au service. Pour convaincre la victime, il ouvre une fenêtre d'apparence légitime sur l'écran, comme le montrent les figures 1 et 2.

Exemple de vue de Hook ABT en tant qu'application mobile superposée.

Figure 1 : Vue d'un échantillon de Hook ABT

Exemple de vue de Xenomorph ABT en tant qu'application mobile superposée.

Figure 2 : Vue d'un échantillon Xenomorph ABT

En cliquant sur ces fenêtres, la victime accède aux paramètres du système, où elle accorde à l'application malveillante les autorisations d'accès nécessaires. À partir de là, l'application s'accorde automatiquement toutes les autres autorisations en exploitant l'API du service d'accessibilité.

Attaque par superposition

Une attaque par superposition présente une fenêtre de phishing sur une application bancaire ciblée en espérant que la victime ne la reconnaisse pas. La fenêtre d'hameçonnage ressemble généralement à la page de connexion de l'application bancaire et se déclenche rapidement lorsque l'utilisateur lance l'application bancaire, ce qui incite la victime à taper ses coordonnées bancaires et/ou les informations relatives à sa carte de crédit dans la fenêtre superposée. Un cheval de Troie bancaire transfère ensuite immédiatement les données capturées au serveur de commande et de contrôle (C2). 

Ce sont principalement les applications bancaires mobiles qui sont visées par les attaques par superposition, mais de nombreuses applications de portefeuilles numériques et d'échange de crypto-monnaies ont été rapidement ajoutées à la liste des cibles ces dernières années en raison de leur popularité croissante. Les applications de courrier électronique, de messagerie, de médias sociaux, de shopping, de divertissement, de transport, de voyage et de restauration sont également des cibles courantes. Il est intéressant de noter que les marques locales populaires sont également des cibles dans les régions où l'activité des logiciels malveillants mobiles est élevée.

Le petit clip suivant montre à quoi ressemble une attaque par superposition dans la réalité.

Une vidéo montrant ce à quoi ressemble une attaque par superposition dans la réalité.

Mise en œuvre

Nous expliquerons la mise en œuvre de l'attaque par superposition à l'aide de l'exemple d'un cheval de Troie bancaire de pointe : Hook. La mise en œuvre est pratiquement la même dans les différents chevaux de Troie bancaires. Les extraits de code ci-dessous sont volontairement réduits pour une meilleure visibilité.

Le code suivant est responsable de la détection du changement de la fenêtre de premier plan. C'est ici que le service d'accessibilité est utilisé à mauvais escient pour l'attaque par superposition. Le système Android interrompt le cheval de Troie bancaire via la fonction de rappel surchargée onAccessibilityEvent(*), qui est appelée lorsqu'un événement se produit à l'écran. TYPE_WINDOW_STATE_CHANGED indique un changement dans la section visuellement distincte de l'écran ; par exemple, l'utilisateur a lancé une application bancaire qui a pris le contrôle de l'écran.

Première partie d'une explication par les experts de Verimatrix sur la manière dont une attaque par superposition peut être mise en place dans le code d'une application.

Le code suivant est chargé de vérifier si une application ciblée est lancée au premier plan et de déclencher l'attaque par superposition si c'est le cas :

Deuxième partie d'une explication des experts de Verimatrix sur la manière dont une attaque par superposition peut être mise en place dans le code d'une application.

Le code suivant est responsable du démarrage d'une nouvelle tâche au premier plan :

Troisième partie d'une explication des experts de Verimatrix sur la manière dont une attaque par superposition peut être mise en place dans le code d'une application.

Le code suivant est chargé de charger l'injection/la superposition web (fichier HTML) correspondant à l'application ciblée dans une vue web, de mettre à jour la configuration de la langue par défaut de la superposition en fonction des paramètres linguistiques de l'utilisateur et d'ajouter une interface javascript pour recevoir des données de la superposition.

Quatrième partie d'une explication des experts de Verimatrix sur la manière dont une attaque par superposition peut être mise en place dans le code d'une application.

La fonction returnResult(*) ou send_Log_injects(*) est appelée dans le fichier HTML du WebView pour transmettre des données au cheval de Troie bancaire.

Cinquième partie d'une explication des experts de Verimatrix sur la manière dont une attaque par superposition peut être mise en place dans le code d'une application.

Le code suivant initie le transfert de données vers un serveur de commande et de contrôle (C2) distant.

Sixième partie d'une explication des experts de Verimatrix sur la manière dont une attaque par superposition peut être mise en place dans le code d'une application.

La mise en œuvre des attaques par recouvrement ne dépend que de l'autorisation BIND_ACCESSIBILITY_SERVICE. Les autorisations REQUEST_IGNORE_BATTERY_OPTIMIZATIONS et RECEIVE_BOOT_COMPLETED sont également utiles pour le fonctionnement fiable des chevaux de Troie bancaires, qui sont indirectement utilisés dans les attaques par recouvrement.

Contre-mesures Android

À notre connaissance, Android OS n'a pas encore de solution pour arrêter complètement les attaques par superposition.

Dans Android 12, l'attribut AccessibilityTool est introduit. Il déclenche un avertissement pour prévenir les utilisateurs qu'une application, non déclarée comme un outil d'accessibilité, dispose de puissantes autorisations d'accessibilité 24 heures après les avoir accordées. Que les utilisateurs prennent cet avertissement au sérieux et révoquent les autorisations ou non, il reste une fenêtre de 24 heures qui peut être exploitée. 

Dans Android 13, les applications chargées latéralement ne peuvent pas obtenir d'autorisations d'accès. L'application garde une trace des méthodes d'installation des applications et empêche les applications installées sans session d'obtenir les autorisations d'accessibilité. Par exemple, cliquer sur le fichier APK (Android Package Kit) téléchargé sur le web déclenche généralement une installation non basée sur une session, alors que les boutiques d'applications prennent généralement en charge l'installation basée sur une session. Cette contre-mesure n'arrête pas les logiciels malveillants installés à partir des magasins d'applications, ni les logiciels malveillants déployés par une application intermédiaire, également connue sous le nom de "dropper app". Cette dernière met en œuvre une installation basée sur la session afin de charger l'application malveillante de manière latérale et de contourner les restrictions. Les utilisateurs peuvent également être incités à autoriser le paramètre restreint dans le menu d'information de l'application qui exempte explicitement l'application de cette contre-mesure.

Dans Android 14, l'attribut accessibilityDataSensitive de l'élément View est introduit. La classe View est l'élément de base des composants de l'interface utilisateur (UI). Le nouvel attribut permet aux développeurs de ne laisser que les outils d'accessibilité interagir avec les parties critiques de l'interface utilisateur. Cependant, les attaques par superposition n'interagissent pas avec l'interface utilisateur de l'application ciblée. Elles détectent que l'utilisateur lance une application et n'extraient que le nom du paquet de cette application à partir d'un événement d'accessibilité. Par conséquent, cette contre-mesure n'affecte pas les attaques par superposition. Cependant, d'autres caractéristiques essentielles des trojans bancaires avancés, telles que l'enregistrement des frappes et les systèmes de transfert automatique (STA), sont affectées.

Conclusion

La simplicité, l'efficacité et l'évolutivité des ABT leur permettent de réaliser des attaques par superposition. Vous trouverez ci-dessous une courte liste d'ABT tristement célèbres et de leur capacité d'attaque par superposition. Tous ces outils soutiennent l'attaque par superposition permise par l'utilisation abusive des services d'accessibilité. Il s'agit d'un élément essentiel de la boîte à outils de tout adversaire.

Troie bancaire Android (ABT) Accessibilité Abus de service Attaque par superposition
Alien
Oui
Oui
Anatsa (Teabot)
Oui
Oui
Cerbère
Oui
Oui
ERMAC
Oui
Oui
Gustuff
Oui
Oui
Crochet
Oui
Oui
Hydra
Oui
Oui
Octo (ExobotCompact, Coper)
Oui
Oui
Xénomorphe
Oui
Oui

L'activité de la place de marché InTheBox sur le web sombre est un autre bon indicateur de l'omniprésence des attaques par superposition. Il s'agit de la plus grande boutique spécialisée dans les overlays (fichiers HTML) pour divers ABT. Elle travaille sur la base d'une commande pour créer de nouveaux overlays, et les commandes satisfaites sont finalement proposées à tout le monde au prix de 30 dollars. En un an, 225 nouvelles cibles pour Alien/ Octo/ ERMAC/ Metadroid/ Hook et 52 nouvelles cibles pour Hydra ont été mises en vente. 

Graphique linéaire montrant le nombre d'overlays trouvés sur la place de marché InTheBox à partir de novembre 2022.

Verimatrix XTD détecte avec une grande précision les attaques par superposition et les abus de services d'accessibilité. Aujourd'hui, la fonction anti-malware est une nécessité pour les applications bancaires mobiles afin de se défendre contre les groupes cybercriminels sophistiqués, et XTD apporte les fonctions anti-malware nécessaires à n'importe quelle application mobile.