☕ 逆向分析APK很有趣...直到你发现生产环境密钥就这么赤裸裸地躺在代码里。
在分析一个公开的Android APK时,我直接在应用的strings.xml
文件中发现了硬编码的Facebook和Google API凭证。这些凭证包括Facebook App ID、Facebook Client Token、Google API Key等敏感标识符。此类暴露可能导致API调用仿冒、配额滥用等风险——仅需反编译APK即可实现。
本文将带您了解:
使用Apktool进行反编译:
java -jar apktool.jar d target.apk -o output_folder -f
该命令将应用解包为可读的目录结构,可访问资源文件、清单和smali代码。
在res/values/strings.xml
中发现以下内容:
<string name="facebook_app_id">47711************</string>
<string name="facebook_client_token">ab3495bb67f3e*******************</string>
<string name="google_api_key">AIzaSyCc6**********************</string>
<string name="google_crash_reporting_api_key">AIzaSyCc6**********************</string>
<string name="google_app_id">1:16327*******:android:d2f5************</string>
<string name="google_storage_bucket">[redacted].firebasestorage.app</string>
🧠 重要提醒:任何硬编码在strings.xml中的内容都会编译到最终APK,且可通过apktool、jadx甚至grep等工具轻松获取。
通过Graph API测试凭证有效性:
curl "https://graph.facebook.com/app?access_token=47711************|ab3495bb67f3e*******************"
返回结果证实该凭证有效,攻击者可仿冒应用发起Graph API调用。
尝试使用该密钥调用地理编码API:
curl "https://maps.googleapis.com/maps/api/geocode/json?address=New+York&key=AIzaSyCc6**********************"
由于开发者已在Google Cloud Console设置访问限制,密钥虽暴露但未被滥用。
❌ 禁止做法:
<string name="facebook_client_token">ab3495bb67f3e*******************</string>
✅ 正确做法:
🔐 核心原则:只要存在于APK中的内容,就不算秘密。
分析APK时务必:
AIza
、facebook_client_token
等特征字符串这类漏洞看似简单却在生产环境中异常普遍。通过负责任地披露,您正在帮助提升应用安全性。如果您是开发者——请立即轮换密钥并检查构建流程。
🙌 披露声明:已通过正规渠道通知受影响企业,本文所有数据均已脱敏处理。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。