mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
5.2 KiB
5.2 KiB
绕过生物识别认证(Android)
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)!
- 您在网络安全公司工作吗? 想要看到您的公司在HackTricks中做广告吗? 或者您想要访问PEASS的最新版本或下载PDF格式的HackTricks吗? 请查看订阅计划!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获取官方PEASS和HackTricks周边产品
- 加入💬 Discord群 或电报群 或在Twitter上关注我 🐦@carlospolopm。
- 通过向hacktricks repo和hacktricks-cloud repo提交PR来分享您的黑客技巧。
方法1 – 无需使用加密对象绕过
重点在于onAuthenticationSucceeded回调,在认证过程中至关重要。WithSecure的研究人员开发了一个Frida脚本,可以绕过onAuthenticationSucceeded(...)中的空CrytoObject。该脚本在方法调用时强制自动绕过指纹认证。以下是一个简化的代码片段,演示了在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 – 仪器化框架
仪器化框架如Xposed或Frida可用于在运行时钩入应用程序方法。对于指纹认证,这些框架可以:
- 模拟认证回调:通过钩入
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
的逆向工程工具可用于反编译 Android 应用程序,阅读其源代码,并了解其身份验证机制。一般步骤包括:
- 反编译 APK:将 APK 文件转换为更易读的格式(如 Java 代码)。
- 分析代码:查找指纹身份验证的实现,并识别潜在的弱点(如备用机制或不正确的验证检查)。
- 重新编译 APK:在修改代码以绕过指纹身份验证后,重新编译、签名并安装应用程序到设备进行测试。
方法 5 – 使用自定义身份验证工具
有专门设计用于测试和绕过身份验证机制的工具和脚本。例如:
- MAGISK 模块:MAGISK 是一款用于 Android 的工具,允许用户对其设备进行 root,并添加可修改或欺骗硬件级信息(包括指纹)的模块。
- 自定义脚本:可以编写脚本与 Android 调试桥(ADB)交互,或直接与应用程序后端交互以模拟或绕过指纹身份验证。