Android IME / InputMethodService Abuse (Malicious Keyboards)

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Overview

Android, üçüncü taraf klavyelere bir InputMethodService (IME) aracılığıyla izin verir. Bir kullanıcı bir klavyeyi etkinleştirdiğinde ve onu geçerli giriş yöntemi olarak seçtiğinde, IME cihazda uygulamalar arasında üretilen neredeyse tüm metin girişlerini gözlemleyebilir (ve etkileyebilir).

Bu nedenle birçok Android banking trojans “güvenli klavye” özelliğini paketler: kötü amaçlı IME, WebView hiç gömme yapmayan uygulamalardan bile tuş vuruşlarını alır (bankacılık uygulamaları, sohbet uygulamaları, kripto cüzdanlar vb.).

Note

android.permission.BIND_INPUT_METHOD tipik olarak IME service üzerinde beyan edilir, böylece yalnızca sistem ona bağlanabilir. Bunu beyan etmek tek başına özel ayrıcalık vermez; kilit adım kurbanın klavyeyi etkinleştirmesini/seçmesini Ayarlar’da sağlamaktır.

Manifest declaration

Bir klavye, android.view.InputMethod intent action ile bir service ve bir IME konfigürasyon XML’i aracılığıyla açığa çıkar:

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

Avlanma ipucu: Klavye gibi görünmeyen ve InputMethodService bildiren bir uygulama güçlü bir uyarı işaretidir.

Veriler nereden geliyor

Çalışma zamanında bir IME şunları öğrenir:

  • Yazılan hedef uygulama (EditorInfo aracılığıyla, ör. attribute.packageName in onStartInput).
  • Girilen metin (IME’nin mevcut InputConnection ile etkileşimi ve/veya uygulamaya bağlı olarak tuş olayları yoluyla).

Yüksek sinyalli hook point’in minimal (işlevsel olmayan) taslağı:

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

Yabanda gözlemlenen yaygın etkinleştirme ve toplama iş akışı

  • APK, “güvenli klavye” olarak pazarlanır veya klavye daha geniş bir trojanın içine gömülüdür.
  • Malware, kurbanı sistem klavye ayarlarına yönlendirir (ör. Settings.ACTION_INPUT_METHOD_SETTINGS başlatarak ve/veya UI automation kullanarak) ta ki IME etkinleştirilip varsayılan olarak ayarlanana kadar.
  • Keystrokes uygulama başına tamponlanır ve malware’in mevcut C2 kanalı üzerinden exfiltrated edilir; genellikle diğer veri kaynaklarıyla (ör. WebView man-in-the-browser telemetry) birleştirilir.

Nasıl tespit edilir / triaj

Cihaz üzerindeki kontroller

  • Settings: Yüklü klavyeler / varsayılan klavye (bilinmeyen IME’leri arayın).
  • ADB:
adb shell dumpsys input_method
adb shell ime list -a
adb shell ime help

APK için statik triyaj

  • InputMethodService sınıflarını ve android.view.InputMethod intent filtresini arayın.
  • android.view.im tarafından referans verilen @xml/* IME konfigürasyonunu inceleyin.
  • Uygulamanın beyan edilen işlevselliğinin tam bir klavye UI/kaynakları sağlamasıyla tutarlı olup olmadığını kontrol edin.

Önlemler

  • Kullanıcı/MDM: güvenilir klavyoları beyaz listeye alın; yönetilen profiller/cihazlarda bilinmeyen IME’leri engelleyin.
  • Uygulama tarafı (yüksek riskli uygulamalar): phishing’e dirençli kimlik doğrulamasını tercih edin (passkeys/biometrics) ve “secret text entry”yi bir güvenlik sınırı olarak kullanmaktan kaçının (kötü amaçlı bir IME uygulama UI’sının altında çalışır).

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin