不安全的存储与通信
常见缺陷
不安全的存储与通信 是 CoddyKit 上的免费 Ethical Hacking Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ethical Hacking Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ethical Hacking Academy 课程共包含 4 节课。
两个经典漏洞
最常见的两类移动端漏洞是不安全的数据存储和不安全的通信。它们都出现在 OWASP 移动端十大风险中。
这两类问题都源于开发者过度信任设备,以及对数据保护不当。
应用在哪里存储数据
应用会将数据保存在 /data/data/<package>/ 中:
- SharedPreferences:XML 键值文件。
- SQLite 数据库。
- 内部和外部文件。
渗透测试人员会逐一检查这些位置,查找以明文存储的机密信息。
/data/data/com.app/shared_prefs/prefs.xml明文机密信息
一种常见漏洞是在 SharedPreferences 或数据库中以明文存储密码、令牌或 PII。
在已获取 Root 权限的设备上,攻击者可以通过备份或使用 Objection 直接读取这些数据。敏感数据应当加密,或存放在安全硬件中。
<string name="auth_token">eyJhbGci...plaintext...</string>外部存储风险
写入外部存储(SD 卡区域)的数据,在旧版 Android 上可被所有用户读取,或可被任何获得存储权限的应用访问。
将敏感文件保存在那里会使其暴露给其他应用。写入磁盘的日志也会造成类似泄露。
存储机密信息的正确方式
安全选项包括 Android Keystore(密钥存储在硬件中,永远不会暴露给应用)和 EncryptedSharedPreferences。
Keystore 可以在不泄露密钥的情况下执行加密操作,这比在代码中硬编码密钥安全得多。
不安全的通信
不安全的通信是指数据在未得到适当保护的情况下传输。最糟糕的情况是明文 HTTP,网络上的任何人都可以读取或修改流量。
所有敏感流量都必须使用 HTTPS/TLS。
http://api.app.com/login # cleartext, credentials exposed拦截流量
要检查流量,请将设备的流量转发到 Burp Suite 等拦截代理。您需要在设备上安装 Burp 的 CA 证书,才能读取 HTTPS 流量。
这样可以发现 API 端点、参数,以及传输中的任何敏感数据。
证书固定
构建良好的应用会使用证书固定,拒绝除自身证书以外的任何证书,从而阻止基本代理。
正如您所学,使用 Frida 绕过 SSL 固定可以禁用这一机制,让您仍然能够拦截流量并评估实际的 API 安全性。
弱 TLS 与验证
即使使用 HTTPS,也可能存在以下漏洞:信任所有证书、接受已过期的证书,或禁用主机名验证。这些做法通常是为了方便开发而临时加入的。
即使存在 TLS,这些问题仍会让攻击者实施中间人攻击。
备份与日志
另外还有两种泄露途径:
android:allowBackup="true"允许任何能够访问设备的人通过adb backup提取应用数据。- 详细的 logcat 输出可能会打印令牌或 PII。
在生产环境中,这两项都应当禁用或进行脱敏处理。
adb backup -f data.ab com.app剪贴板与屏幕截图
有两种经常被忽视的泄露途径:将敏感数据复制到剪贴板(在旧版 Android 上可被其他应用读取),以及应用转入后台时系统截取的屏幕截图。
银行应用会使用 FLAG_SECURE 窗口标志来缓解这一问题,该标志会阻止屏幕截图和任务切换器预览。
快速检查
回想一下,在 Android 上保存加密密钥最安全的位置。
回顾
现在您已经了解了不安全的存储和通信:
- 应用会在 SharedPreferences、数据库、外部存储和日志中泄露明文机密信息。
- 将机密信息存储在 Android Keystore 或 EncryptedSharedPreferences 中。
- 不安全的通信包括从明文 HTTP到弱 TLS 验证的各种情况;使用 Burp 进行拦截。
- 使用 Frida 绕过证书固定;禁用 allowBackup 并对日志进行脱敏。
您已完成移动应用渗透测试课程。
常见问题解答
「不安全的存储与通信」课时是免费的吗?
是的 — 「不安全的存储与通信」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ethical Hacking Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ethical Hacking Academy 课程共包含 4 节课。
「不安全的存储与通信」这节课中我会学到什么?
常见缺陷 你通过在浏览器中直接运行的动手代码来练习 Ethical Hacking Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ethical Hacking Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ethical Hacking Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「不安全的存储与通信」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ethical Hacking Academy 课中编写并运行代码吗?
能。每节 Ethical Hacking Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Android 应用结构
- APK 静态分析
- 使用 Frida 进行动态分析
- 不安全的存储与通信