mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
7.2 KiB
7.2 KiB
绕过生物识别认证(Android)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 您在网络安全公司工作吗?您想在HackTricks中看到您的公司广告吗?或者您想要访问最新版本的PEASS或下载HackTricks的PDF?查看订阅计划!
- 发现PEASS家族,我们独家的NFTs系列
- 获取官方PEASS & HackTricks周边商品
- 加入💬 Discord群组或telegram群组或在Twitter上关注我🐦@carlospolopm。
- 通过向hacktricks仓库和hacktricks-cloud仓库提交PR来分享您的黑客技巧。
方法1 – 不使用CryptoObject绕过
这里的重点是onAuthenticationSucceeded回调,这在认证过程中至关重要。WithSecure的研究人员开发了一个Frida脚本,可以绕过*onAuthenticationSucceeded(...)*中的NULL CryptoObject。该脚本强制在方法调用时自动绕过指纹认证。下面是一个简化的代码片段,演示了在Android指纹上下文中的绕过,完整的应用程序可在GitHub上找到。
biometricPrompt = new BiometricPrompt(this, executor, new BiometricPrompt.AuthenticationCallback() {
@Override
public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) {
Toast.makeText(MainActivity.this,"Success",Toast.LENGTH_LONG).show();
}
});
运行Frida脚本的命令:
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass.js
方法2 – 异常处理方法
另一个由WithSecure提供的Frida脚本解决了绕过不安全的加密对象使用问题。该脚本调用onAuthenticationSucceeded,并传入一个未经指纹授权的CryptoObject。如果应用程序尝试使用不同的密码对象,将触发一个异常。该脚本准备调用onAuthenticationSucceeded并处理_Cipher_类中的javax.crypto.IllegalBlockSizeException,确保应用程序使用的后续对象都用新密钥加密。
运行Frida脚本的命令:
frida -U -f com.generic.insecurebankingfingerprint --no-pause -l fingerprint-bypass-via-exception-handling.js
在到达指纹屏幕并启动 authenticate()
后,在 Frida 控制台中输入 bypass()
以激活绕过:
Spawning com.generic.insecurebankingfingerprint...
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> Hooking BiometricPrompt.authenticate()...
Hooking BiometricPrompt.authenticate2()...
Hooking FingerprintManager.authenticate()...
[Android Emulator 5554::com.generic.insecurebankingfingerprint]-> bypass()
方法 3 – Instrumentation 框架
像 Xposed 或 Frida 这样的 Instrumentation 框架可以在运行时挂钩应用程序方法。对于指纹认证,这些框架可以:
- 模拟认证回调: 通过挂钩
BiometricPrompt.AuthenticationCallback
的onAuthenticationSucceeded
、onAuthenticationFailed
或onAuthenticationError
方法,你可以控制指纹认证过程的结果。 - 绕过 SSL Pinning: 这允许攻击者拦截并修改客户端和服务器之间的通信,可能改变认证过程或窃取敏感数据。
Frida 示例命令:
frida -U -l script-to-bypass-authentication.js --no-pause -f com.generic.in
方法 4 – 反向工程与代码修改
像 APKTool
、dex2jar
和 JD-GUI
这样的反向工程工具可以用来反编译安卓应用程序,阅读其源代码,并了解其认证机制。步骤通常包括:
- 反编译 APK:将 APK 文件转换为更易于人类阅读的格式(如 Java 代码)。
- 分析代码:寻找指纹认证的实现,并识别潜在的弱点(如后备机制或不当的验证检查)。
- 重新编译 APK:修改代码以绕过指纹认证后,重新编译应用程序,签名,并安装在设备上进行测试。
方法 5 – 使用自定义认证工具
有专门设计的工具和脚本用于测试和绕过认证机制。例如:
- MAGISK 模块:MAGISK 是一个安卓工具,允许用户对其设备进行 root 并添加模块,这些模块可以修改或伪造硬件级别的信息,包括指纹。
- 自定义脚本:可以编写脚本与 Android Debug Bridge (ADB) 或直接与应用程序的后端交互,以模拟或绕过指纹认证。
参考资料
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 如果你在一家网络安全公司工作?你想在 HackTricks 中看到你的公司广告?或者你想要访问最新版本的 PEASS 或下载 HackTricks 的 PDF?查看订阅计划!
- 发现PEASS 家族,我们独家的 NFTs 收藏。
- 获取官方 PEASS & HackTricks 商品
- 加入 💬 Discord 群组 或 telegram 群组 或在 Twitter 上关注我 🐦@carlospolopm。
- 通过向 hacktricks 仓库 和 hacktricks-cloud 仓库 提交 PR 来分享你的黑客技巧。