Abuso de Android IME / InputMethodService (Teclados maliciosos)

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Resumen

Android permite teclados de terceros mediante un InputMethodService (IME). Una vez que un usuario habilita un teclado y lo selecciona como el método de entrada actual, el IME puede observar (e influir) esencialmente en todo el texto introducido en el dispositivo a través de las aplicaciones.

Esto es por lo que varios troyanos bancarios de Android incluyen una función de “teclado seguro”: el IME malicioso recibe pulsaciones de teclas incluso de aplicaciones que nunca incrustan un WebView (aplicaciones bancarias, aplicaciones de chat, billeteras de criptomonedas, etc.).

Note

android.permission.BIND_INPUT_METHOD normalmente se declara en el service del IME para que solo el sistema pueda vincularse a él. Declararlo no concede privilegios especiales por sí mismo; el paso clave es lograr que la víctima habilite/seleccione el teclado en Configuración.

Declaración en el manifiesto

Un teclado se expone a través de un servicio con la intent action android.view.InputMethod y un XML de configuración de 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>

Consejo de detección: una app que no parece un teclado y que declara un InputMethodService es una bandera roja.

De dónde provienen los datos

En tiempo de ejecución un IME obtiene:

  • La app objetivo en la que se escribe (a través de EditorInfo, p. ej. attribute.packageName en onStartInput).
  • El texto que se introduce (mediante la interacción del IME con el InputConnection actual y/o eventos de teclas según la implementación).

Esquema mínimo (no funcional) del high-signal hook point:

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

Flujo común de habilitación y recopilación (observado en la naturaleza)

  • El APK se comercializa como un “teclado seguro” o el teclado está incrustado dentro de un troyano más amplio.
  • El malware lleva a la víctima a los ajustes del teclado del sistema (p. ej., lanzando Settings.ACTION_INPUT_METHOD_SETTINGS y/o usando automatización de UI) hasta que el IME esté habilitado y establecido como predeterminado.
  • Las pulsaciones se almacenan en búfer por aplicación y se exfiltran a través del canal C2 existente del malware, a menudo combinado con otras fuentes de datos (p. ej., telemetría man-in-the-browser de WebView).

Cómo detectar / triaje

Comprobaciones en el dispositivo

  • Settings: teclados instalados / teclado predeterminado (buscar IMEs desconocidos).
  • ADB:
adb shell dumpsys input_method
adb shell ime list -a
adb shell ime help

Evaluación estática de un APK

  • Busca clases InputMethodService y el intent filter android.view.InputMethod.
  • Inspecciona la configuración IME @xml/* referenciada por android.view.im.
  • Comprueba si la funcionalidad declarada de la app justifica la inclusión de una UI/recursos completos de teclado.

Mitigaciones

  • User/MDM: permitir solo teclados de confianza; bloquear IMEs desconocidos en perfiles/dispositivos gestionados.
  • App-side (high risk apps): preferir autenticación resistente al phishing (passkeys/biometrics) y evitar confiar en la “entrada de texto secreta” como límite de seguridad (un IME malicioso se sitúa por debajo de la UI de la app).

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks