从日常使用中发现问题
很多人觉得安全漏洞离自己很远,其实它可能就藏在你每天用的软件里。比如前两天朋友跟我说,他常用的记账App突然开始弹广告,点进去居然是借贷页面。这明显不正常,后来一查才发现是第三方SDK埋了后门。这类问题,普通人也能发现,关键是怎么找。
观察异常行为
最简单的办法就是留意软件有没有反常表现。比如耗电突然变高、流量莫名其妙增加、权限请求变多。有个用户反馈,他的天气App居然申请访问通讯录,这种明显越权的行为就是危险信号。
可以进手机设置里的应用管理,挨个看权限列表。像手电筒、日历这类工具类App,根本不需要定位或录音权限,一旦发现就该警惕。
用工具辅助扫描
光靠眼睛看不够,得借助专业工具。国内有不少免费的安全软件,比如腾讯手机管家、360安全卫士,装一个定期扫一下,能识别出已知的恶意代码或风险组件。
如果是开发者或者技术爱好者,可以用更深入的工具。比如用drozer检测Android App的组件暴露情况,命令行操作如下:
dz> run app.package.list -f banking
z> run app.activity.info -a com.example.bank.LoginActivity这类工具能帮你看到App背后调用了哪些敏感接口,是否存在可被劫持的Activity。
检查网络请求
很多漏洞是通过数据传输暴露的。你可以用Fiddler或Charles抓包,看看App发出去的数据是不是加密的。如果登录时密码是以明文发送,那风险就很大。
举个例子,有款小众购物App在提交订单时,把用户手机号、地址直接拼在URL参数里,像这样:
https://api.shop.com/order?name=张三&phone=138****1234&addr=北京市朝阳区...这种连HTTPS都没用好,中间人一截获就全完了。
关注更新日志和社区反馈
别跳过每次更新的“修复已知问题”这种话,有时候这就是在悄悄补漏洞。更靠谱的是去GitHub、V2EX或者知乎搜这个软件的名字+“漏洞”“泄露”关键词,经常有人提前爆出来。
之前有个笔记类App被爆出本地数据库没加密,任何人连上USB调试就能导出全部内容。这个问题最早就是在论坛里由用户贴截图发现的。
自己动手试一试
如果你愿意花点时间学基础,可以用ADB命令查看App的安装信息:
adb install app-debug.apk
adb shell pm list packages | grep test
adb logcat | grep Security看着复杂,其实几分钟就能学会。关键是养成怀疑精神——这个功能真的需要这么多权限吗?这条数据真的应该传出去吗?
安全不是非黑即白的事,漏洞往往藏在细节里。多问一句,多看一眼,很多时候就能避开坑。