Android IME / InputMethodService Matumizi Mabaya (Vibodi zenye madhara)

Tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Muhtasari

Android inaruhusu kibodi za wahusika wa tatu kupitia InputMethodService (IME). Mara mtumiaji anapowasha kibodi na kuichagua kama current input method, IME inaweza kuangalia (na kuathiri) takriban ingizo lote la maandishi linalotolewa kwenye kifaa kwa apps zote.

Hii ndiyo sababu trojans kadhaa za benki za Android hujumuisha kipengele cha “kibodi salama”: IME yenye madhara hupokea vitufe hata kutoka kwa apps ambazo hazijawahi kuingiza WebView (apps za benki, za mazungumzo, pochi za crypto, n.k.).

Note

android.permission.BIND_INPUT_METHOD kwa kawaida huainishwa kwenye huduma ya IME service ili mfumo pekee uweze kuibatiza. Kuweka kibadilisho hicho hakutoa vibali maalum peke yake; hatua muhimu ni kumshawishi mwathiriwa kuwasha/kuchagua kibodi katika Mipangilio.

Manifest declaration

Kibodi inaonyeshwa kupitia huduma yenye kitendo cha intent android.view.InputMethod na XML ya usanidi ya IME:

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

Hunting tip: programu isiyoonekana kama kibodi ambayo inatangaza InputMethodService ni ishara kali ya hatari.

Wapi data inatoka

Wakati wa runtime, IME inajifunza:

  • Programu lengwa ambayo inaandikishwa (kupitia EditorInfo, kwa mfano attribute.packageName katika onStartInput).
  • Maandishi yanayoingizwa (kupitia mwingiliano wa IME na InputConnection ya sasa na/au matukio ya funguo kulingana na utekelezaji).

Mchoro mdogo (usiofanya kazi) wa eneo la hook lenye ishara kubwa:

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

Mtiririko wa kawaida wa kuwezesha na ukusanyaji (uliobainika katika mazingira ya kweli)

  • APK inauzwa kama “kibodi salama” au kibodi imejumuishwa ndani ya trojan kubwa zaidi.
  • Malware hupeleka mwanaathiriwa kwenye mipangilio ya kibodi ya mfumo (kwa mfano kwa kuanzisha Settings.ACTION_INPUT_METHOD_SETTINGS na/au kwa kutumia UI automation) hadi IME iwe imewezeshwa na kuwekwa kama chaguo-msingi.
  • Bonyezo za kibodi huwekwa kwenye buffer kwa kila app na hutolewa kwa njia ya chaneli ya C2 ya malware iliyopo, mara nyingi zikichanganywa na vyanzo vingine vya data (mfano, WebView man-in-the-browser telemetry).

Jinsi ya kutambua / kuchunguza

Ukaguzi kwenye kifaa

  • Mipangilio: Kibodi zilizosanikishwa / kibodi chaguo-msingi (angalia IME zisizojulikana).
  • ADB:
adb shell dumpsys input_method
adb shell ime list -a
adb shell ime help

Tathmini ya statiki ya APK

  • Tafuta madarasa ya InputMethodService na intent filter ya android.view.InputMethod.
  • Chunguza @xml/* IME config inayorejelewa na android.view.im.
  • Kagua kama utendakazi ulioelezwa wa app unaendana na kutolewa kwa UI/rasilimali kamili za keyboard.

Kupunguza hatari

  • User/MDM: weka keyboards za kuaminika kwenye orodha ya kuruhusu; zuia IMEs zisizojulikana kwenye profaili/vifaa vinavyosimamiwa.
  • App-side (high risk apps): pendelea uthibitishaji sugu kwa phishing (passkeys/biometrics) na epuka kutegemea “secret text entry” kama mipaka ya usalama (IME yenye nia mbaya iko chini ya UI ya app).

Tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks