Nadużycie Android IME / InputMethodService (złośliwe klawiatury)
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Przegląd
Android pozwala na klawiatury firm trzecich poprzez InputMethodService (IME). Gdy użytkownik włączy klawiaturę i wybierze ją jako aktualną metodę wprowadzania, IME może obserwować (i wpływać na) zasadniczo wszystkie wprowadzane teksty na urządzeniu we wszystkich aplikacjach.
Dlatego kilka trojanów bankowych na Androida dołącza funkcję „bezpiecznej klawiatury”: złośliwe IME otrzymuje naciśnięcia klawiszy nawet z aplikacji, które nigdy nie osadzają WebView (aplikacje bankowe, komunikatory, portfele kryptowalut itp.).
Note
android.permission.BIND_INPUT_METHODjest zazwyczaj deklarowane na service IME, więc tylko system może się z nim związać. Sama deklaracja nie przyznaje specjalnych uprawnień; kluczowym krokiem jest nakłonienie ofiary do włączenia/wybrania klawiatury w Ustawieniach.
Deklaracja w manifeście
Klawiatura jest udostępniana poprzez usługę z akcją intent android.view.InputMethod oraz konfiguracją IME w pliku XML:
<!-- 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>
Wskazówka: aplikacja, która nie wygląda na klawiaturę, a deklaruje InputMethodService, to silny sygnał ostrzegawczy.
Skąd pochodzą dane
W czasie działania IME poznaje:
- Docelowa aplikacja, do której wpisywany jest tekst (przez
EditorInfo, np.attribute.packageNamewonStartInput). - Wprowadzany tekst (przez interakcję IME z aktualnym
InputConnectioni/lub zdarzeniami klawiszy, w zależności od implementacji).
Minimalny (niefunkcjonalny) szkic 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
}
}
Typowy proces aktywacji i zbierania danych (obserwowany w terenie)
- APK jest reklamowany jako „secure keyboard” lub klawiatura jest osadzona w większym trojanie.
- Malware kieruje ofiarę do ustawień systemowej klawiatury (np. uruchamiając
Settings.ACTION_INPUT_METHOD_SETTINGSi/lub używając UI automation), aż IME zostanie włączone i ustawione jako domyślne. - Naciśnięcia klawiszy są buforowane per-aplikacja i exfiltrated przez istniejący kanał C2 malware, często łączone z innymi źródłami danych (np.
WebViewman-in-the-browser telemetry).
Jak wykryć / przeprowadzić triage
Kontrole na urządzeniu
- Settings: Zainstalowane klawiatury / klawiatura domyślna (szukaj nieznanych IME).
- ADB:
adb shell dumpsys input_method
adb shell ime list -a
adb shell ime help
Statyczna analiza (triage) APK
- Szukaj klas
InputMethodServicei filtru intentandroid.view.InputMethod. - Przeanalizuj konfigurację IME
@xml/*odwoływaną przezandroid.view.im. - Sprawdź, czy deklarowana funkcjonalność aplikacji odpowiada dostarczaniu pełnego interfejsu klawiatury/zasobów.
Środki zaradcze
- Użytkownik/MDM: zezwalaj tylko zaufanym klawiaturom; blokuj nieznane IME w profilach/urządzeniach zarządzanych.
- Po stronie aplikacji (aplikacje wysokiego ryzyka): stosuj uwierzytelnianie odporne na phishing (passkeys/biometrics) i unikaj polegania na „secret text entry” jako granicy bezpieczeństwa (złośliwe IME znajduje się poniżej interfejsu aplikacji).
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.


