车联网之APP安全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
车联网网络安全之APP 安全
背景:我们的生活、工作、学习都正在被数字化、移动化。智能手机的普及推动了手机APP 的快速发展,小到沟通聊天、车票预定,大到银行理财、支付交易,各种APP 层出不穷。人们对APP 的功能性、多样性的积极态度远远超出了对信息安全的担忧,APP 的安全方面并没有得到很好的保证,通过APP 导致的信息安全事件,经常被爆出。正在兴起的车联网也未能幸免,据统计车联网信息安全约50%安全漏洞、风险,来自于车载APP。针对APP 的设计与研发,需要对信息安全高度重视,做到杜渐防萌,确保用户敏感数据的安全。
车载APP 攻击手段
•静态分析
静态分析指的是对APP 安装文件的安全漏洞检测。首先获得应用程序安装包文件,即APK 文件,然后通过逆向工具(如APKIDE、Dex2Jar 等)进行反编译,将APK 文件逆向为Java 源文件或JAR 文件,对其进行源代码级的解析。
常见的Java 层逆向工具:Android Killer 和APKIDE
Android Killer 是一款可以对APK 文件进行反编译的可视化工具,它能够对反编译后的Smali 文件进行修改,并将修改后的文件重新进行打包形成APK 文件。一旦APK 文件被逆向,那么很容易对其进行篡改和注入攻击。
APKIDE 也是可视化的、用于修改安卓APK 文件的工具。该工具集成了ApkTool,Dex2jar,JD-GUI 等APK 修改工具,集APK 反编译、APK 打包、APK 签名为一体,是非常便利的APK 修改工具。
常见的NATIVE 层逆向工具:IDA pro
IDA pro 以其强大的功能和众多的插件成为了很多逆向分析师的首选。IDA pro 是商业产品。使用IDA 反汇编二进制文件的目的,是利用工具得到反汇编之后的伪代码,另外,再结合file 、readelf 等指令使用,可以说如虎傅翼,准确还原出源代码并非难事。
以上是Java 层和Native 层逆向的常用方法。静态分析的优点是无需运行代码,无需像动态分析那样改写Android 系统源码,或要求用户对Android 系统进行重定制和安装定制版的ROM,因此静态分析具有速度快、轻量级的优点。但是静态分析的缺点是因为无法真实模拟程序的动态运行,所以存在误报率高的问题。
•动态分析
由于静态分析难以满足安全人员的分析要求,天生对软件加固、混淆免疫的动态分析技术应运而生。相对于轻量级的静态分析,动态分析则是重量级的程序运行时的分析。在一般情形,需对Android 系统进行重新定制与改写,包括改写安全机制;在原生Android 系统中加入监视器,实时监视数据的流向;在危险函数调用时,检测所需权限等。
常见的动态分析的工具:TaintDroid
TaintDroid 是变量级和方法级的污点跟踪技术工具,可对敏感数据进行污点标记,污点数据在通过程序变量、方法、文件和进程间通信等途径扩散时,对其进行跟踪审查。如果污点数据在一个泄露点(如网络接口)离开系统,TaintDroid 就在日志中记录数据标记、传输数据的应用程序和数据目的地,实现对多种敏感数据泄露源点的追踪。
动态分析的优点是,检测精度较高,缺点是需要修改Android 系统源码,形成用户全新裁
剪的操作系统,同时需要通过更新ROM 安装这种定制系统。另外还有代码覆盖率低,执行
效率低下等,但是瑕不掩瑜,个人认为熟悉各种动态分析技术的核心原理也应当是安全从业
人员的必备要求。
•其他攻击手段
恶意软件攻击:最著名的三大AndroidRootExploit 恶意软件是Zimperlich、Exploid 和RATC(RageAgainstTheCage)。恶意软件的核心原理是砸壳或解密,然后发起“rootexploit”攻击,通过非法手段获取根权限。
提权攻击:指没有任何权限的恶意程序能够通过第三方合法APP 获得所需的权限,或者说
一个拥有较低(较少)权限的应用程序访问拥有较高(较多)权限的组件而不受任何限制。
中间人攻击(MITM):顾名思义,攻击者插入到原本直接通讯的双方,让双方以为还在直接跟对方通讯,但实际上双方的通讯对方已变成了中间人,信息已经是被中间人获取或篡改。
车载APP 安全方案
•APP 合法性
一般情况下,车厂对自己放在应用市场的APP 都有严格的审查策略、验签名机制、开发者ID 的管理,以此来确保APP 的合法性。如下是一个简单的APP 生产流程图:
1. 车厂委托APP 供应商开发APP 应用;
2. APP 供应商登陆车厂的开发者中心申请开发用的证书;
3. 车厂将APP 供应商开发完成的APP,推送到应用市场后台;
4. 汽车用户到车厂专属的应用商店,下载自己想要的APP。
•APP 研发阶段安全策略
1:API 接口
检查所有jar 包,特别是引用第三方jar 包时,一定要做接口是否安全分析,并做代码扫描,自行开发的jar 包、War 包需要加密处理,防止反编译、防止逆向工程。如果SO 库文件的话,源代码需要进行混淆处理,增强反编译的难度。另外,对混淆策略做评估分析,防止APP 性能有明显下降;同时,SO 库文件还需要进行加壳处理,使SO 文件无法正确反编译和反汇编。另外,API 接口还需要授权绑定,防止API 接口被非授权应用调用运行。2:功能测试报告
APP 开发过程中,单元测试报告,结合测试报告,代码review 记录。
3:性能测试报告
关注的参数有:CPU,内存,耗电量,流量,FPS,APP 的安装耗时和启动耗时。
4:自身安全
通过静态分析技术,识别APP 自身存在的恶意行为、敏感权限、病毒木马等风险。
5:防代码逆向
覆盖Java、C、C++、C#、Lua、JavaScript 代码,识别每项代码防逆向工程的自我保护能力。6:防动态攻击
独创真机运行模式,模拟调试、内存dump、注入Hook 等攻击,检测APP 的自我动态防御能力。