Android IME / InputMethodService zloraba (zlonamerne tastature)

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Pregled

Android dozvoljava third-party tastature putem InputMethodService (IME). Kada korisnik omogući tastaturu i izabere je kao trenutnu metodu unosa, IME može posmatrati (i uticati na) praktično sav unos teksta koji se generiše na uređaju u okviru aplikacija.

Zbog toga nekoliko Android banking trojana uključuje opciju “secure keyboard”: zlonamerni IME prima pritiske tastera čak i iz aplikacija koje nikada ne ugrađuju WebView (bankarske aplikacije, chat aplikacije, crypto wallets itd.).

Note

android.permission.BIND_INPUT_METHOD se obično deklariše na IME service tako da samo sistem može da se bind-uje na njega. Deklarisanje samo po sebi ne daje posebne privilegije; ključni korak je naterati žrtvu da omogući/izabere tastaturu u Settings.

Deklaracija u manifestu

Tastatura se izlaže preko servisa sa android.view.InputMethod intent action i IME konfiguracionim XML-om:

<!-- 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>

Savet za otkrivanje: aplikacija koja ne liči na tastaturu, a deklariše InputMethodService, predstavlja jaku crvenu zastavicu.

Odakle dolaze podaci

U toku izvršavanja IME saznaje:

  • ciljana aplikacija u koju se kuca (putem EditorInfo, npr. attribute.packageName u onStartInput).
  • Tekst koji se unosi (kroz interakciju IME-a sa trenutnim InputConnection i/ili događajima tastera, u zavisnosti od implementacije).

Minimalna (nefunkcionalna) skica tačke hook-a visokog signala:

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

Uobičajeni tok omogućavanja i prikupljanja (zabeleženo u stvarnom svetu)

  • APK se reklamira kao „sigurna tastatura“ ili je tastatura ugrađena u širi trojan.
  • Malver navodi žrtvu u sistemske postavke tastature (npr. pokretanjem Settings.ACTION_INPUT_METHOD_SETTINGS i/ili korišćenjem UI automatizacije) dok IME ne bude omogućeno i postavljeno kao podrazumevano.
  • Pritisci tastera se keširaju po aplikaciji i eksfiltriraju preko postojećeg C2 kanala malvera, često u kombinaciji sa drugim izvorima podataka (npr. WebView man-in-the-browser telemetrija).

Kako otkriti / uraditi trijažu

Provere na uređaju

  • Settings: Instalirane tastature / podrazumevana tastatura (tražite nepoznate IME).
  • ADB:
adb shell dumpsys input_method
adb shell ime list -a
adb shell ime help

Statička trijaža APK-a

  • Potražite InputMethodService klase i android.view.InputMethod intent filter.
  • Pregledajte @xml/* IME konfiguraciju na koju se poziva android.view.im.
  • Proverite da li izjava o funkcionalnosti aplikacije odgovara tome da aplikacija isporučuje kompletnu tastaturu (UI/resursi).

Mitigacije

  • User/MDM: dozvolite na allowlisti pouzdane tastature; blokirajte nepoznate IME-e na managed profilima/uređajima.
  • App-side (high risk apps): preferirajte autentifikaciju otpornu na phishing (passkeys/biometrics) i izbegavajte oslanjanje na “secret text entry” kao bezbednosnu granicu (maliciozni IME se nalazi ispod UI aplikacije).

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks