Android IME / InputMethodService Misbruik (Kwaadaardige Toetsenborde)

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Oorsig

Android laat derdeparty-toetsenborde toe via InputMethodService (IME). Sodra ’n gebruiker ’n sleutelbord aktiveer en dit as die huidige invoermetode kies, kan die IME in wese alle teksinsette wat op die toestel oor toepassings gegenereer word waarneem (en beïnvloed).

Dit is hoekom verskeie Android-banktrojans ’n “secure keyboard” funksie saamlewer: die kwaadwillige IME ontvang toetsaanslae selfs van toepassings wat nooit ’n WebView insluit nie (banktoepassings, kletsapps, crypto wallets, ens.).

Note

android.permission.BIND_INPUT_METHOD is tipies op die IME service verklaar sodat slegs die stelsel daaraan kan bind. Om dit te verklaar bied op sigself geen spesiale voorregte nie; die sleutestap is om die slagoffer te kry om die sleutelbord in Instellings te aktiveer/keur.

Manifest-verklaring

’n Sleutelbord word blootgestel via ’n service met die android.view.InputMethod intent action en ’n IME-konfigurasie 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>

Opsporingstip: ’n toepassing wat nie soos ’n sleutelbord lyk nie en InputMethodService verklaar, is ’n sterk rooi vlag.

Waar die data vandaan kom

Tydens uitvoering leer ’n IME:

  • Die teiken-app waarin getik word (via EditorInfo, bv. attribute.packageName in onStartInput).
  • Die teks wat ingevoer word (deur die IME se interaksie met die huidige InputConnection en/of key events, afhangend van die implementering).

Minimale (nie-funksionele) skets van die 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
}
}

Algemene aktiverings- en versamelwerkvloei (waargeneem in die wild)

  • Die APK word bemark as “secure keyboard” of die sleutelbord is ingebed binne ’n breër trojan.
  • Die malware dryf die slagoffer na die stelsel sleutelbordinstellings (bv. deur Settings.ACTION_INPUT_METHOD_SETTINGS te begin en/of UI automation te gebruik) totdat die IME geaktiveer en as standaard gestel is.
  • Keystrokes word per-app gebuffer en exfiltrated via die malware se bestaande C2-kanaal, dikwels gekombineer met ander databronne (bv., WebView man-in-the-browser telemetry).

Hoe om te ontdek / triage

Op-toestel kontrole

  • Settings: Geïnstalleerde sleutelborde / standaard sleutelbord (kyk na onbekende IMEs).
  • ADB:
adb shell dumpsys input_method
adb shell ime list -a
adb shell ime help

Statiese triage van ’n APK

  • Soek na InputMethodService klasse en die android.view.InputMethod intent-filter.
  • Inspekteer die @xml/* IME-konfigurasie wat deur android.view.im verwys word.
  • Kontroleer of die app se verklaarde funksionaliteit ooreenstem met die verskaffing van ’n volledige sleutelbord-UI/hulpbronne.

Versagtingsmaatreëls

  • User/MDM: gebruik ’n toelaatlys vir betroubare sleutelborde; blokkeer onbekende IMEs in bestuurde profiele/toestelle.
  • App-side (high risk apps): verkies autentisering wat bestand is teen phishing (passkeys/biometrics) en vermy om op “secret text entry” as ’n sekuriteitsgrens staat te maak (’n kwaadwillige IME sit onder die app UI).

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks