上周为大家介绍到了 APP 端的备份功能开启漏洞及本地拒绝服务漏洞,本周会为大家介绍完毕最后三个常见的 App 端漏洞:任意调试漏洞、中间人劫持漏洞及加密算法漏洞。
说到任意调试漏洞,我们就要提到 AndroidManifest.xml ,它是每个 Android 程序中必须的文件。它位于整个项目的根目录,描述了 package 中暴露的组件( activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的 Activities, ContentProviders, Services, 和 Intent Receivers,还能指定 permissions 和 instrumentation (安全控制和测试)。
而在 AndroidManifest.xml 文件中, debuggable 属性值被设置为 true 时(默认为 false ),该程序可被任意调试 ,这就产生了任意调试漏洞。
任意调试漏洞的危害:
可被动态调试,增加了 apk 被破解、分析的风险。 目前动态调试器的功能都很强大,如果 debuggable 属性为 true ,则可轻易被调试,通常用于重要代码逻辑分析、破解付费功能等。
下图是 IDA 的调试界面,可以下断点、单步执行,调试过程中可以看到变量内容,即使没有 java 代码,反编译后的 smali 代码也比较容易阅读,加上动态调试,对 App 的逆向分析将变得容易的多。
中间人攻击是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。
HTTPS 中间人攻击漏洞有以下来源:
示例:
攻击效果: 某 App 中添加收货地址,使用中间人劫持能获取到手机号、地址、姓名等敏感信息。
我们从上面的攻击效果可以看出来,利用中间人劫持漏洞,攻击者可通过中间人攻击(比如使用钓鱼 WiFi ),盗取账户密码明文、聊天内容、通讯地址、电话号码以及信用卡支付信息等敏感信息,甚至通过中间人劫持将原有信息替换成恶意链接或恶意代码程序,以达到远程控制、恶意扣费等攻击意图。
在各大漏洞平台上,有大量存在 HTTPS 证书不校验漏洞,例如国内绝大部分 Android APP 存在信任所有证书漏洞、亚马逊最新官方 Android 版存在一处信任所有证书漏洞、 Yahoo 雅虎在国内访问遭遇 SSL 中间人攻击、携程旅游网最新 Android 客户端 https 未校验证书导致 https 通信内容完全被捕获。
以下几种行为会有产生加密算法漏洞的危险:
而加密信息被破解后,产生的危害也就不言而喻了:加密信息被泄露。如果加密的是账号、密码、银行卡、身份证等信息,破解后可被不法分子用于诈骗、盗号、盗刷等。
相关案例:
某 P2P 应用客户端,用来加密数据的 DES 算法的密钥硬编码在 Java 代码中,而 DES 算法是对称密码算法,既加密密钥和解密密钥相同。知道了密文和加密算法以及密钥,通过解密操作,可以从文件中恢复出原始的手势密码。
某租车 APP 与服务器通信的接口采用 http 传输数据,并且有对传输的部分参数进行了加密,加密算法采用 AES ,但是密钥硬编码在 java 代码中为“ shenzhoucar123123 ”,可被逆向分析出来,导致伪造请求,结合服务器端的漏洞,引起越权访问的风险,如越权查看其它用户的订单等。 攻击者完全可以做到使用其他脚本重新实现相同的加密功能并拼接出各个接口请求,批量的刷取订单信息和用户其他信息。
那么 APP 端的常见漏洞就介绍到这里,就像蒲公英之前所说的, APP 端本身的漏洞只占到了 Android 应用目前可发现漏洞的 21%,除了 5%通信层的漏洞,剩下的都是服务器端的漏洞,这里就留到下次说明了。