挖洞经验 | 静态分析APK文件发现APP应用硬编码密码泄露
字数 1556 2025-08-18 11:39:26

安卓APP静态分析:发现硬编码密码泄露漏洞

1. 准备工作

1.1 获取APK文件

  • 从手机中提取已安装的APK
  • 使用APK下载网站获取:
    • https://apk.support/apk-downloader
    • https://apkpure.com/

1.2 反编译工具准备

  1. dex2jar - 将DEX文件转换为JAR文件

    • GitHub地址:https://github.com/pxb1988/dex2jar
    • 备用命令:d2j-dex2jar classes.dex
  2. JD-GUI - Java反编译器

    • 下载地址:https://github.com/java-decompiler/jd-gui
    • 替代方案:https://mac.filehorse.com/download-jd-gui-java-decompiler/
  3. Mobile Security Framework (MobSF) - 自动化移动安全测试框架

    • 支持静态和动态分析
    • 支持Android和iOS应用

2. 反编译流程

2.1 解压APK文件

  1. 将APK文件后缀改为.zip
  2. 解压ZIP文件
  3. 查找classes.dex文件(可能有多个)

2.2 转换DEX为JAR

dex2jar classes.dex
# 或
d2j-dex2jar classes.dex

2.3 反编译JAR文件

  1. 使用JD-GUI打开生成的classes_dex2jar.jar
  2. 浏览Java资源文件
  3. 可保存代码供后续分析

3. 静态分析技巧

3.1 关键文件查找

  • 查找包含以下关键词的文件:
    • Constant.java
    • Config.java
    • Settings.java
    • Auth.java

3.2 重点关注内容

  1. 硬编码凭据

    • 用户名/密码
    • API密钥
    • 加密密钥
  2. 敏感URL

    • 后台管理接口
    • 第三方服务API
  3. 配置信息

    • 服务器地址
    • 数据库连接信息

3.3 分析案例

SMS路径下的Constant.java文件中发现:

  • 硬编码的用户名和密码
  • 短信发送接口URL
  • 位置信息等敏感数据

4. 漏洞利用

4.1 验证硬编码凭据

  1. 在相关服务登录页面尝试使用发现的凭据
  2. 本例中成功登录了reson8短信平台:
    • 网址:https://www.reson8.ae/
    • 权限:短信发送管理系统

4.2 潜在危害

  1. 控制短信发送功能
  2. 修改短信接口配置
  3. 查看/下载用户手机号码
  4. 进行营销推广操作
  5. 账户充值管理

5. 防护建议

5.1 开发人员建议

  1. 避免硬编码

    • 绝不将凭据直接写入代码
    • 使用安全的配置管理方案
  2. 必要时的安全存储

    • 使用Android Keystore系统
    • 实施适当的加密措施
  3. 代码审查

    • 建立静态代码分析流程
    • 检查可能泄露的敏感信息

5.2 安全测试建议

  1. 建立检查列表

    • 系统化检查常见安全问题
    • 包括但不限于硬编码凭据
  2. 自动化工具辅助

    • 使用MobSF等工具进行初步扫描
    • 结合手动分析确认结果
  3. 持续监控

    • 定期进行安全测试
    • 特别是版本更新后

6. 总结

通过静态分析APK文件,安全研究人员能够发现许多潜在的安全问题,特别是硬编码凭据这类高风险漏洞。开发人员应当重视此类问题,采取适当的安全措施保护敏感信息。安全测试人员在进行移动应用测试时,静态分析应作为基础且必要的步骤。

7. 参考资源

  1. dex2jar工具:https://github.com/pxb1988/dex2jar
  2. JD-GUI反编译器:https://github.com/java-decompiler/jd-gui
  3. Mobile Security Framework:https://github.com/MobSF/Mobile-Security-Framework-MobSF
  4. Reson8短信平台:https://www.reson8.ae/
安卓APP静态分析:发现硬编码密码泄露漏洞 1. 准备工作 1.1 获取APK文件 从手机中提取已安装的APK 使用APK下载网站获取: https://apk.support/apk-downloader https://apkpure.com/ 1.2 反编译工具准备 dex2jar - 将DEX文件转换为JAR文件 GitHub地址:https://github.com/pxb1988/dex2jar 备用命令: d2j-dex2jar classes.dex JD-GUI - Java反编译器 下载地址:https://github.com/java-decompiler/jd-gui 替代方案:https://mac.filehorse.com/download-jd-gui-java-decompiler/ Mobile Security Framework (MobSF) - 自动化移动安全测试框架 支持静态和动态分析 支持Android和iOS应用 2. 反编译流程 2.1 解压APK文件 将APK文件后缀改为 .zip 解压ZIP文件 查找 classes.dex 文件(可能有多个) 2.2 转换DEX为JAR 2.3 反编译JAR文件 使用JD-GUI打开生成的 classes_dex2jar.jar 浏览Java资源文件 可保存代码供后续分析 3. 静态分析技巧 3.1 关键文件查找 查找包含以下关键词的文件: Constant.java Config.java Settings.java Auth.java 3.2 重点关注内容 硬编码凭据 : 用户名/密码 API密钥 加密密钥 敏感URL : 后台管理接口 第三方服务API 配置信息 : 服务器地址 数据库连接信息 3.3 分析案例 在 SMS 路径下的 Constant.java 文件中发现: 硬编码的用户名和密码 短信发送接口URL 位置信息等敏感数据 4. 漏洞利用 4.1 验证硬编码凭据 在相关服务登录页面尝试使用发现的凭据 本例中成功登录了reson8短信平台: 网址:https://www.reson8.ae/ 权限:短信发送管理系统 4.2 潜在危害 控制短信发送功能 修改短信接口配置 查看/下载用户手机号码 进行营销推广操作 账户充值管理 5. 防护建议 5.1 开发人员建议 避免硬编码 : 绝不将凭据直接写入代码 使用安全的配置管理方案 必要时的安全存储 : 使用Android Keystore系统 实施适当的加密措施 代码审查 : 建立静态代码分析流程 检查可能泄露的敏感信息 5.2 安全测试建议 建立检查列表 : 系统化检查常见安全问题 包括但不限于硬编码凭据 自动化工具辅助 : 使用MobSF等工具进行初步扫描 结合手动分析确认结果 持续监控 : 定期进行安全测试 特别是版本更新后 6. 总结 通过静态分析APK文件,安全研究人员能够发现许多潜在的安全问题,特别是硬编码凭据这类高风险漏洞。开发人员应当重视此类问题,采取适当的安全措施保护敏感信息。安全测试人员在进行移动应用测试时,静态分析应作为基础且必要的步骤。 7. 参考资源 dex2jar工具:https://github.com/pxb1988/dex2jar JD-GUI反编译器:https://github.com/java-decompiler/jd-gui Mobile Security Framework:https://github.com/MobSF/Mobile-Security-Framework-MobSF Reson8短信平台:https://www.reson8.ae/