Android IME / InputMethodService का दुरुपयोग (दुष्ट कीबोर्ड)

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

अवलोकन

Android तीसरे-पक्ष के कीबोर्ड को InputMethodService (IME) के माध्यम से अनुमति देता है। एक बार जब उपयोगकर्ता किसी कीबोर्ड को सक्षम कर देता है और उसे वर्तमान इनपुट विधि के रूप में चयनित कर लेता है, तो IME डिवाइस पर एप्स में उत्पन्न होने वाले मूलतः सभी टेक्स्ट इनपुट को देख (और प्रभावित) कर सकता है।

इसी कारण से कई Android बैंकिंग ट्रोजन एक “secure keyboard” सुविधा को बंडल करते हैं: दुष्ट IME उन कीस्ट्रो्क्स को भी प्राप्त कर लेता है जो उन ऐप्स से आते हैं जिनमें कभी WebView एम्बेड नहीं होता (बैंकिंग ऐप्स, चैट ऐप्स, क्रिप्टो वॉलेट आदि)।

Note

android.permission.BIND_INPUT_METHOD सामान्यतः IME service पर घोषित किया जाता है ताकि केवल सिस्टम ही इसे बाइंड कर सके। इसे घोषित करने से स्वयं में कोई विशेष विशेषाधिकार नहीं मिलता; महत्वपूर्ण कदम पीड़ित को Settings में कीबोर्ड सक्षम/चयन करने के लिए प्रेरित करना है।

Manifest घोषणा

एक कीबोर्ड उस सेवा के माध्यम से एक्सपोज़ किया जाता है जिसका intent action android.view.InputMethod होता है और एक IME configuration 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>

शिकार सुझाव: एक गैर-कीबोर्ड जैसा दिखने वाला ऐप जो InputMethodService घोषित करता है, एक मजबूत चेतावनी संकेत है।

डेटा कहाँ से आता है

रनटाइम पर एक IME निम्न बातें सीखता है:

  • The लक्षित ऐप being typed into (via EditorInfo, e.g. attribute.packageName in onStartInput).
  • प्रविष्ट किया जा रहा टेक्स्ट (IME की वर्तमान InputConnection के साथ इंटरैक्शन और/या key events के माध्यम से, अमल पर निर्भर करता है).

Minimal (non-functional) sketch of the 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
}
}

सामान्य सक्षमकरण और संग्रह वर्कफ़्लो (वास्तविक दुनिया में देखी गई)

  • APK को “secure keyboard” के रूप में बाजार में प्रमोट किया जाता है या कीबोर्ड किसी बड़े trojan के अंदर embedded होता है।
  • malware पीड़ित को system keyboard सेटिंग्स में ले जाता है (उदाहरण के लिए Settings.ACTION_INPUT_METHOD_SETTINGS लॉन्च करके और/या UI automation का उपयोग करके) जब तक IME सक्षम न हो जाए और default के रूप में सेट न हो।
  • Keystrokes प्रति-ऐप buffer किए जाते हैं और malware के मौजूदा C2 चैनल के जरिए exfiltrate किए जाते हैं, अक्सर अन्य डेटा स्रोतों (जैसे, WebView man-in-the-browser telemetry) के साथ संयुक्त रूप में।

कैसे पता लगाएँ / ट्रायेज़

डिवाइस पर जांच

  • सेटिंग्स: इंस्टॉल किए गए कीबोर्ड / डिफ़ॉल्ट कीबोर्ड (अज्ञात IMEs के लिए देखें)।
  • ADB:
adb shell dumpsys input_method
adb shell ime list -a
adb shell ime help

APK की स्थैतिक जाँच

  • InputMethodService क्लास और android.view.InputMethod intent filter खोजें।
  • android.view.im द्वारा संदर्भित @xml/* IME config की जाँच करें।
  • जाँचें कि क्या ऐप की घोषित कार्यक्षमता पूर्ण कीबोर्ड UI/संसाधन भेजने से मेल खाती है।

निवारक उपाय

  • User/MDM: भरोसेमंद कीबोर्ड को allowlist करें; प्रबंधित प्रोफ़ाइल/डिवाइस में अज्ञात IMEs को ब्लॉक करें।
  • App-side (high risk apps): phishing-प्रतिरोधी प्रमाणीकरण (passkeys/biometrics) को प्राथमिकता दें और “secret text entry” को सुरक्षा सीमा के रूप में भरोसा करने से बचें (एक दुर्भावनापूर्ण IME ऐप UI के नीचे होता है)।

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें