🧠 新手必读总结:如何快速审计导出 Service?
🔍 第一步:用 jadx 打开 APK,搜索:
搜索关键词 | 用途 |
---|---|
android:exported="true" | 配置文件查看是否允许导出 |
exec( 或 Runtime.getRuntime() | 查找命令执行漏洞 |
deletePackage setComponentEnabledSetting | 查找敏感系统操作 |
Binder 子类 + getToken return SharedPreferences 等敏感方法 | 查找敏感数据泄露 |
rawQuery(" 或 SQL 拼接符号 | 查找 SQL 注入 |
Config.resetAll() System.exit() 等关键业务逻辑 | 查找功能滥用点 |
🔎 第二步:分析每个 Service 的 onStartCommand/onBind 参数来源
- 是不是直接用
intent.getStringExtra()
? - 有没有鉴权/白名单逻辑?
✅ 第三步:判断是否涉及敏感操作、状态控制或信息输出
- 涉及文件操作、命令执行、业务状态重置等都要重点审计!
✅ 防护 checklist(开发 & 审计通用)
检查点 | 建议 |
---|---|
是否导出 | 默认应为 false ,除非有明确用途 |
是否使用权限限制 | 使用 android:permission |
是否鉴权 | getCallingUid() + checkCallingPackage() |
是否校验参数 | 非空、正则、白名单、类型校验 |
是否限速 | 记录调用时间,设置冷却时间 |
是否返回敏感数据 | 对 Binder 、返回值要特别小心 |
📦 工具推荐
jadx-gui
:反编译 APK 查看 Service 代码drozer
:扫描导出组件 + 模拟调用frida
:注入 Hook,动态分析调用行为
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容