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をサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
概要
Android は InputMethodService (IME) を介してサードパーティのキーボードを許可します。ユーザーがキーボードを 有効化 し、現在の入力方法 として選択すると、IME はアプリを跨いでデバイス上で生成されるほぼ すべてのテキスト入力 を観察(および影響)できます。
これはいくつかの Android バンキングトロイの木馬が「secure keyboard」機能を同梱している理由です:悪意のある IME は WebView を埋め込んでいないアプリ(銀行アプリ、チャットアプリ、暗号ウォレットなど)からのキーストロークでさえ受け取ることができます。
Note
android.permission.BIND_INPUT_METHODは通常 IME の service に宣言され、システムのみがそれにバインドできます。宣言するだけでは特別な権限は付与されません。重要なのは被害者にキーボードを 有効化/選択 させて Settings で設定させることです。
Manifest の宣言
キーボードは android.view.InputMethod インテントアクションを持つ service と IME 構成 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>
Hunting tip: InputMethodService を宣言しているキーボードに見えないアプリは強いレッドフラッグです。
データはどこから来るか
実行時に IME は以下を取得します:
- 入力されている target app(
EditorInfo経由、例:onStartInputのattribute.packageName)。 - 入力されているテキスト(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”としてマーケティングされるか、キーボードがより広範なトロイの木馬内に埋め込まれている。
- マルウェアは被害者をシステムのキーボード設定へ誘導する(例:
Settings.ACTION_INPUT_METHOD_SETTINGSを起動する、および/または UI オートメーションを使用する)ことで、IME が有効化されデフォルトに設定されるまで操作させる。 - キー入力はアプリごとにバッファされ、マルウェアの既存の C2 チャンネル経由で exfiltrated されることが多く、しばしば他のデータソース(例:
WebViewの man-in-the-browser テレメトリ)と組み合わされる。
検出 / トリアージ方法
デバイス上でのチェック
- Settings: インストール済みキーボード / デフォルトキーボード(不明な IME を確認)。
- ADB:
adb shell dumpsys input_method
adb shell ime list -a
adb shell ime help
APKの静的トリアージ
InputMethodServiceクラスとandroid.view.InputMethodインテントフィルタを探す。android.view.imで参照されている@xml/*の IME 設定を調査する。- アプリの表明された機能がフルキーボードの UI/リソースを同梱することと一致するかを確認する。
対策
- User/MDM: 信頼できるキーボードを allowlist に登録する;管理対象プロファイル/デバイスでは不明な IME をブロックする。
- App-side (high risk apps): phishing-resistant な認証(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をサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。


