应用安全常见问题及解决方案

Razor

2019/07/03 发布于 技术 分类

安卓绿色联盟 

文字内容
1. 安卓绿色联盟·第21期技术沙龙 应用安全常见问题及解决方案 北京场 主办方: 日期:2018年9月15日
2. 01、Android应用安全现状 目录 02、Android应用常见问题及解决方案 03、Android应用隐私问题及解决方案
3. 01 Android应用安全现状
4. Android应用安全现状 Android平台用户成为最主要的攻击对象。2016年移动互联网恶意程序主 要针对Android平台,共有2,053,450个,占99.9%以上,位居第一。
5. Android应用安全现状 安全审计发现,应用普遍存在漏洞并带有泄露隐私的行为。 部分应用含有病毒并带有恶意行为。
6. 02 Android应用常见问题 及解决方案
7. Android应用常见问题 1、组件问题 2、Url绕过问题 3、中间人攻击 4、Webview 漏洞
8. 组件问题 • 组件暴露 • 调用隐藏功能、拒绝服务 • 组件含有权限未设置保护 • 执行高权限功能 • 组件配置失当 • 造成的被劫持问题(隐式调用被劫持)
9. 组件问题——某使用广泛SDK • SDK存在导出Activity • xxActivity • xxActivity • 将输入的字符串作为组件名称、传入 值 • 恶意应用可以利用此绕过安卓沙箱限 制,访问应用内任意组件及传值
10. 组件问题——某使用广泛SDK
11. 组件问题——某使用广泛SDK
12. 组件问题——造成影响及解决方案 1、拒绝服务 2、调用未授权界面(甚至后门) 工具:Drozer Drozer是一款Android安全测试框架
13. Url绕过问题 • 路径遍历漏洞 • 问题应用/SDK大量使用路径/Url作为参数,如果 不校验路径的合法性,容易导致路径遍历攻击 • Android 平台最典型的路径遍历漏洞是ZipEntry, URL路径遍历问题跟传统的web相同。 • Url白名单绕过 • Webview组件加载url,但是使用者并不一定希望 webview组件任何网页都可以加载,因此会实现一 个白名单函数约束加载的网页 • 常见约束ur的函数有contains()、indexOf()、 endwith()、getHost()等等。
14. URL绕过问题——白名单绕过案例 • XX应用可以绕过白名单 • 这一步只要域名中有.xxx.com即可通过检查。最后构造的 url是:http://m.xxx.com.xxx.org/webview.html,其中 m.xxx.com.cubarco.org是攻击者可以注册的域名
15. URL绕过问题解决方案 • URL白名单存在场景: • • • • • Android:scheme属性 暴露组件 扫一扫 聊天输入 评论 • 不安全校验函数 • • • • • contains() indexOf() endwith() getHost() getPathSegments()
16. 中间人攻击 • Http中间人攻击 • 所有http都可以被中间人攻击 • Https中间人攻击 • 漏洞位置:X509TrustManager 、HostnameVerifier 、 setHostnameVerifier • 漏洞触发前提条件: (1)自定义的X509TrustManager不校验证书; (2)或实现的自定义HostnameVerifier不校验域名接受任意域名; (3)使用setHostnameVerifier (ALLOW_ALL_HOSTNAME_VERIFIER); • 对应场景: (1)客户端不校验SSL证书或者校验逻辑有误 (2)自定义实现HostnameVerifier接口,却不检查站点域名和证书域名是否匹配 (3)直接使用接受任意域名的HostnameVerifier接口 • 解决方案:Burp Suite
17. Webview漏洞 • WebView远程代码执行(4.3版本以前) • CVE-2012-6636 addJavascriptInterface 利用该漏洞执行任意Java对象的 方法 • CVE-2013-4710 openFile 同源绕过 • File • • • 域控制不严 setAllowFileAccessFromFileURLs setAllowUniversalAccessFromFileURLs setAllowFileAccess + setJavaScriptEnabled(true) • 信息泄露 • 密码明文存储 setSavePassword (true)(4.4版本前) • 地理位置泄露 setGeolocationEnabled • Url 外部可控 • loadUrl (String url) • loadUrl (String url, Map<String, String> additionalHttpHeaders) • loadData(String data, String mimeType, String encoding) • loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)
18. Webview漏洞——JavaScript接口暴露 @JavaScriptInterface接口暴露 某应用中供应商sdk存在 大量暴露javascript接口
19. Webview漏洞——JavaScript接口暴露 通过代码跟踪发现,这个 接口可以执行很多操作。 例如发短信、打电话、下 载应用等等功能 利用方式: 将js脚本中间人注入到该 应用的webview交互返回 的报文中即可
20. Webview漏洞解决方案 扫描代码关键字: 1、setSavePassword 2、setGeolocationEnabled 3、setAllowFileAccessFromFileURLs 4、setAllowUniversalAccessFromFileURLs 5、setAllowFileAccess 6、setJavaScriptEnabled 7、@JavascriptInterface 8、setAllowContentAccess
21. 03 Android应用隐私问题 及解决方案
22. 隐私泄露途径 NFC 网络上传 隐私数据 SD卡存储 短信发送 蓝牙传输 Log日志
23. 如何检查应用内的隐私泄露? flowdroid是一款针对Android app数据流分析工具 工具路径:https://github.com/secure-software-engineering/FlowDroid 工具分析信息流所有可能的路径,追踪从source到sink的 所有数据流。 source sink source:账号密码、联系人、短信、数据库、IMEI 等敏感数据 sink:因特网、存储卡、log打印、短信发送等泄露点
24. 案例——某供应商sdk 发现某应用中供应商sdk的出现source-sink问题 定位sink所在位置: getHttpURLConnection 跟踪代码,找到发送数据 的方法setHttpHeader 可以看到v0作为http头部 数据发送了
25. 案例——某供应商sdk 继续跟进setHttpHeader 方法 确认每一个子函数的具体 执行内容,如该方法的最 后一行,addHeadSign
26. 案例——某供应商sdk 跟踪到getDeviceId的方 法,方法名就跟获取imei 号有关 分析该疑似获取IMEI号的 方法 可以看到获取了手机的 IMEI号,而且很心机的做 了sha256的加密
27. THANKS