Android IME / InputMethodService Abus (Claviers malveillants)

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Aperçu

Android permet les claviers tiers via un InputMethodService (IME). Une fois qu’un utilisateur active un clavier et le sélectionne comme méthode de saisie actuelle, l’IME peut observer (et influencer) essentiellement toute la saisie de texte produite sur l’appareil à travers les applications.

C’est pourquoi plusieurs banking trojans Android intègrent une fonctionnalité de « secure keyboard » : l’IME malveillant reçoit les frappes même d’applications qui n’embarquent jamais un WebView (applications bancaires, de chat, crypto wallets, etc.).

Note

android.permission.BIND_INPUT_METHOD est typiquement déclarée sur le service de l’IME de sorte que seul le système peut s’y connecter. La déclarer n’accorde pas de privilèges spéciaux en soi ; l’étape clé est d’amener la victime à activer/sélectionner le clavier dans les Paramètres.

Déclaration dans le manifest

Un clavier est exposé via un service avec l’intent action android.view.InputMethod et un XML de configuration IME:

<!-- AndroidManifest.xml -->
<service
android:name=".SpyKeyboard"
android:permission="android.permission.BIND_INPUT_METHOD"
android:exported="false">

<intent-filter>
<action android:name="android.view.InputMethod" />
</intent-filter>

<meta-data
android:name="android.view.im"
android:resource="@xml/spy_ime" />
</service>

Astuce de détection : une application qui ne ressemble pas à un clavier et qui déclare un InputMethodService est un signal d’alerte majeur.

D’où proviennent les données

À l’exécution, un IME apprend :

  • L’application cible dans laquelle on tape (via EditorInfo, par ex. attribute.packageName dans onStartInput).
  • Le texte saisi (via l’interaction de l’IME avec le InputConnection courant et/ou les événements de touches selon l’implémentation).

Esquisse minimale (non fonctionnelle) du point d’accroche à fort signal :

public class SpyKeyboard extends InputMethodService {
@Override public void onStartInput(EditorInfo attribute, boolean restarting) {
// attribute.packageName identifies the foreground app receiving input
}
}

Flux courant d’activation et de collecte (observé sur le terrain)

  • L’APK est commercialisé comme un « clavier sécurisé » ou le clavier est intégré dans un trojan plus vaste.
  • Le malware pousse la victime vers les paramètres du clavier système (p.ex. en lançant Settings.ACTION_INPUT_METHOD_SETTINGS et/ou en utilisant UI automation) jusqu’à ce que l’IME soit activé et défini par défaut.
  • Les frappes sont mises en tampon par application et exfiltrées via le canal C2 existant du malware, souvent combinées avec d’autres sources de données (p.ex., télémétrie WebView man-in-the-browser).

Comment détecter / effectuer le triage

Vérifications sur l’appareil

  • Settings: Claviers installés / clavier par défaut (chercher des IME inconnus).
  • ADB:
adb shell dumpsys input_method
adb shell ime list -a
adb shell ime help

Triage statique d’un APK

  • Recherchez les classes InputMethodService et le filtre d’intent android.view.InputMethod.
  • Inspectez la configuration IME @xml/* référencée par android.view.im.
  • Vérifiez si la fonctionnalité déclarée de l’application correspond à l’intégration d’une interface clavier complète et de ses ressources.

Mesures d’atténuation

  • User/MDM : mettre sur liste blanche les claviers de confiance ; bloquer les IME inconnus dans les profils/appareils gérés.
  • Côté application (applications à haut risque) : privilégier une authentification résistante au phishing (passkeys/biometrics) et éviter de se reposer sur “secret text entry” comme frontière de sécurité (un IME malveillant se situe sous l’UI de l’application).

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks