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
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
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_METHODnormalmente 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.packageNameenonStartInput). - El texto que se introduce (mediante la interacción del IME con el
InputConnectionactual 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_SETTINGSy/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
InputMethodServicey el intent filterandroid.view.InputMethod. - Inspecciona la configuración IME
@xml/*referenciada porandroid.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
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.


