Android IME / InputMethodService Abuse (Malicious Keyboards)
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Visão geral
Android permite teclados de terceiros via um InputMethodService (IME). Uma vez que um usuário ativa um teclado e o seleciona como o método de entrada atual, o IME pode observar (e influenciar) essencialmente toda a entrada de texto produzida no dispositivo através dos apps.
É por isso que vários trojans bancários Android incluem um recurso de “secure keyboard”: o IME malicioso recebe keystrokes até mesmo de apps que nunca incorporam um WebView (apps bancários, apps de chat, wallets de crypto, etc.).
Note
android.permission.BIND_INPUT_METHODé tipicamente declarado no service do IME para que somente o sistema possa bindar nele. Declarar essa permissão não concede privilégios especiais por si só; o passo-chave é conseguir que a vítima ative/selecione o teclado nas Settings.
Manifest declaration
A keyboard é exposta via um service com a intent action android.view.InputMethod e um XML de configuração do 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>
Hunting tip: um app que não parece um teclado mas declara um InputMethodService é um forte sinal de alerta.
De onde vêm os dados
Em tempo de execução um IME aprende:
- O aplicativo alvo em que se digita (via
EditorInfo, p.ex.attribute.packageNameemonStartInput). - O texto inserido (através da interação do IME com o
InputConnectionatual e/ou eventos de tecla dependendo da implementação).
Esboço mínimo (não funcional) do ponto de hook de alto sinal:
public class SpyKeyboard extends InputMethodService {
@Override public void onStartInput(EditorInfo attribute, boolean restarting) {
// attribute.packageName identifies the foreground app receiving input
}
}
Fluxo comum de habilitação e coleta (observado no mundo real)
- O APK é comercializado como “teclado seguro” ou o teclado está embutido dentro de um trojan mais amplo.
- O malware direciona a vítima para as configurações do teclado do sistema (por exemplo, lançando
Settings.ACTION_INPUT_METHOD_SETTINGSe/ou usando automação de UI) até que o IME seja habilitado e definido como padrão. - As teclas digitadas são armazenadas em buffer por aplicativo e exfiltradas via o canal C2 já existente do malware, frequentemente combinadas com outras fontes de dados (por exemplo, telemetria de
WebViewman-in-the-browser).
Como detectar / triar
Verificações no dispositivo
- Configurações: Teclados instalados / teclado padrão (procure por IMEs desconhecidos).
- ADB:
adb shell dumpsys input_method
adb shell ime list -a
adb shell ime help
Triagem estática de um APK
- Procure por classes
InputMethodServicee pelo filtro de intentandroid.view.InputMethod. - Inspecione a configuração IME
@xml/*referenciada porandroid.view.im. - Verifique se a funcionalidade declarada do app corresponde ao fornecimento de uma UI/recursos de teclado completo.
Mitigações
- User/MDM: allowlist teclados confiáveis; bloquear IMEs desconhecidos em perfis/dispositivos gerenciados.
- No lado do app (aplicativos de alto risco): prefira autenticação resistente a phishing (passkeys/biometrics) e evite confiar na “secret text entry” como uma barreira de segurança (um IME malicioso fica abaixo da UI do app).
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.


