挖洞经验 | 静态分析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 反编译工具准备
-
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
dex2jar classes.dex
# 或
d2j-dex2jar classes.dex
2.3 反编译JAR文件
- 使用JD-GUI打开生成的
classes_dex2jar.jar - 浏览Java资源文件
- 可保存代码供后续分析
3. 静态分析技巧
3.1 关键文件查找
- 查找包含以下关键词的文件:
Constant.javaConfig.javaSettings.javaAuth.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/