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 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
概述
Android 通过 InputMethodService(IME)允许第三方键盘。 一旦用户启用某个键盘并将其设为当前输入法,该 IME 就可以在跨应用范围内观察(并影响)设备上几乎所有的文本输入。
这就是为什么多个 Android 银行木马会捆绑“安全键盘”功能:恶意 IME 即使在那些从未嵌入 WebView 的应用(银行应用、聊天应用、加密钱包等)中也能接收按键。
Note
android.permission.BIND_INPUT_METHOD通常在 IME service 上声明,因此只有系统可以绑定它。仅声明它本身并不会授予特殊权限;关键步骤是让受害者在设置中启用/选择该键盘。
Manifest 声明
键盘通过具有 android.view.InputMethod intent action 的 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>
狩猎提示: 声明 InputMethodService 的非键盘外观应用是一个强烈的危险信号。
数据来源
运行时,IME 会获知:
- 正在输入的 目标应用(通过
EditorInfo,例如在onStartInput中的attribute.packageName)。 - 正在输入的文本(通过 IME 与当前
InputConnection的交互和/或基于实现的 key events)。
最小(非功能性)高信号 hook 点示意:
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 通道外传,通常与其他数据来源(例如,
WebViewman-in-the-browser telemetry)结合。
如何检测 / 分级处置
设备上检查
- Settings: 已安装的键盘 / 默认键盘(查找未知的 IME)。
- ADB:
adb shell dumpsys input_method
adb shell ime list -a
adb shell ime help
APK 的静态初筛
- 查找
InputMethodService类和android.view.InputMethodintent 过滤器。 - 检查由
android.view.im引用的@xml/*IME 配置。 - 检查应用声明的功能是否与提供完整键盘 UI/资源 相符。
缓解措施
- 用户/MDM:将受信任的键盘加入允许列表;在受管理的配置文件/设备中阻止未知 IME。
- 应用端(高风险应用):优先采用抗钓鱼的认证(passkeys/生物识别),并避免将 “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 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
HackTricks

