持续原文更新……
APP漏洞类型及绕过姿势
1. 信息泄露漏洞
logcat输出敏感信息
应用层log敏感信息输出
防护建议:
1、eclipse中配置 ProGuard实现release版apk实现自动删除Log.d(/v)等代码。
2、使用自定义LogCat类,上线前关闭Logcat开关。
应用层System.out.println敏感信息输出
系统bug异常导致log输出
Native层敏感Log输出
敏感信息可分为产品敏感信息和用户敏感信息两类,对产品敏感信息可以这样界定:
泄露后直接对企业安全造成重大损失或有助于帮助攻击者获取企业内部信息,并可能帮助攻击者尝试更多的攻击路径的信息。
以下这些信息都属于产品敏感信息:登录密码、后台登录及数据库地址、服务器部署的绝对路径、内部IP、地址分配规则、网络拓扑、页面注释信息(开发者姓名或工号、程序源代码)。
而用户敏感信息有两个界定原则:
用户隐私保护主要考虑直接通过该数据或者结合该数据与其它的信息,可以识别出自然人的信息。
一旦发生数据泄露事件,可以被恶意人员利用并获取不当利润。
敏感信息硬编码
这些敏感信息泄露的原因大多数情况下是因为信息未加密或储存位置不当造成的:
代码中明文使用敏感信息,比如:服务器地址、数据库信息等
数据库中明文保存敏感信息,比如:账号、密码、银行卡等
SD卡中保存敏感信息或隐私数据,比如:聊天记录、通讯录等
日志中打印敏感信息:比如:账号、密码
通信过程中明文传输敏感信息
以上这些做法都会使APP中的敏感信息暴露在黑客的眼皮底下,只要黑客认为该信息有价值,他就会轻而易举的获取这些敏感信息,最直接的损失可能就是用户的账号被盗、网银被盗刷等。
而黑客如果知道了登录密码、后台登录及数据库地址、服务器部署的绝对路径、内部IP、地址分配规则、网络拓扑等产品敏感信息,会极大节省攻击时间,获取该应用的绝对控制权,其损失不是能够用金钱来衡量的。另外,这些敏感信息泄露,也会招来其他试探性的黑客去尝试攻击,导致服务器处于危险境地。
2. 组件漏洞
Activity 组件越权
危害
不合理的Activity组件导出,一般会导致的问题有:基于Android Browser Intent Scheme URLs的攻击手段,利用了浏览器保护措施的不足,通过浏览器去调用应用自定义的scheme规范的链接启动Activity,把浏览器作为桥梁间接实现Intend-Based攻击,相比于普通Intend-Based攻击,这种方式极具隐蔽性,而且由于恶意代码隐藏WebPage中,传统的特征匹配完全不起作用。拒绝服务,通过Intent给Activity传输畸形数据使得程序崩溃拒绝服务影响用户体验;越权绕过,Activity用户界面被绕过给公司造成损失或者是窃取了用户的信息、Activity界面被劫持产生欺诈等安全事件。
漏洞
在Android系统中,Activity默认是不导出的,如果设置了exported=“true”这样的关键值或者是添加了这样的属性,并且没有显示的设置为exported=“false”,那么此时Activity是导出的,如果Activity被不合理的导出,那么就会有越权绕过或者是泄漏敏感信息等安全风险,比如在业务过程中会有一些敏感的界面是需要用户输入密码才能查看的,但是如果没有对调起此activity的组件进行权限验证,那么就会造成验证的越权问题,导致恶意的攻击者不需要输入密码等信息也可以打开这个界面。还有通过Intent给Activity传输畸形数据使得程序崩溃拒绝服务影响用户体验或Activity界面被劫持产生欺诈等安全事件。
防护
私有Activity不应被其他应用启动相对是安全的,创建activity时: 设置exported属性为false。
公开暴露的Activity组件,可以被任意应用启动,创建activity: 设置exported属性为true。
谨慎处理接收的intent。
有返回数据时不应包含敏感信息。
不应发送敏感信息。
当收到返回数据时谨慎处理。
service漏洞挖掘
危害
Service 是android四大组件之一,一个Service是没有界面且能长时间运行于后台的应用组件。
其它应用的组件可以启动一个服务运行于后台,即使用户切换到另一个应用也会继续运行。另外,
一个组件可以绑定到一个service来进行交互,即使这个交互是进程间通讯也没问题。例如,一个
service可能处理网络事物,播放音乐,执行文件I/O,或与一个内容提供者交互,所有这些都在后
台进行。 Service不是分离开的进程,除非其