SuperAPI AI 工具集

re-android-crypto

安全与审计

查看项目

更新于 10-15 21:34

技能介绍

用途:面向 Android 应用的加密体系审计,覆盖密钥体系(AndroidKeyStore)、加解密调用链与第三方加密库选型还原。若目标为 JNI/so 原生逻辑、通用加密算法识别或通用密钥提取,则分别转向 re-android-native、re-crypto-id、re-crypto-keys;非 Android 平台不适用。

主要能力:

  1. Keystore 审计:在应用进程内加载 AndroidKeyStore,用 aliases() 枚举条目,梳理别名对应的算法(AES/RSA/EC)、用途(encrypt/decrypt/sign/verify)与来源;API 31+ 用 KeyInfo.getSecurityLevel() 取 SOFTWARE/TRUSTED_ENVIRONMENT(TEE)/STRONGBOX 三档,API 23–30 仅 isInsideSecureHardware() 布尔,无法区分 TEE 与 StrongBox。生物绑定密钥在认证失败时不可用。产出别名→算法/用途/背书清单,不记录密钥字节。
  2. crypto hook:用 Frida 拦截 KeyStore.getKey/getEntry(记录别名与用途)、Cipher.init 系列(算法/模式/IV 来源)、Signature/Mac 初始化。Key 对象不携带别名,须在 getKey 处记录,也可用 SecretKeyFactory.getInstance(key.getAlgorithm(), 'AndroidKeyStore').getKeySpec(key, KeyInfo.class) 经 KeyInfo.getKeystoreAlias() 取回。静态可用 jadx 搜索相关调用点互证。
  3. 第三方库分析:按符号前缀(SSL_/EVP_/crypto_/sodium_)与依赖声明识别 BoringSSL/OpenSSL/Tink/libsodium,定位调用点,管加密语义;库内 .so 实现细节转 re-android-native。

使用方式与工具:先验证再使用。frida 用于动态 hook,验证 frida --version;python3、jadx 用于静态定位;adb shell 取运行态,KeyStore 枚举须在应用进程内执行。动态 hook 默认沙箱。产出密钥体系图、调用点清单与 hook 脚本,并可 sha256 存档。

限制与常见坑:AndroidKeyStore 硬件背书密钥不可导出,getEncoded() 拿不到字节属设计而非缺失,应改走审计;isInsideSecureHardware 为 true 不能断言 StrongBox,API 31+ 才可细分;hook 脚本只记录别名与用途,密钥字节不得打印或落盘;第三方库的加密语义归本技能,内部 JNI 逻辑归 re-android-native。