安全路透社
当前位置:安全路透社 > 网络转载 > 正文

【WitAwards 2016 “年度安全产品”参评巡礼】阿里聚安全移动安全组件解析

阿里聚安全是一个面向开发者,以移动应用安全为核心的开放平台。 

今年5月发布的《中国移动互联网发展状况及其安全报告》中,据统计,2015年中国境内活跃的手机网民数量达7.8个亿,占全国人口数量的56.9%。其中用户使用最多的就是Andriod系统的智能手机,占比高达78.9%,而苹果的iOS系统占到了13.08%。

移动设备越来越普及,各类应用层出不穷,针对移动端App的攻击也不是什么新鲜事了。常见的移动App问题包括:外挂、重打包、网络请求仿冒、机密数据泄露、核心逻辑破解、运行环境风险监控等。那么该如何在重重威胁下保证你的应用安全呢?针对这些安全问题,目前市面上已经涌现出了一些解决办法,阿里聚安全的移动安全组件就是其中之一。

相关产品介绍

阿里聚安全的移动安全服务主要包括安全扫描、应用加固、兼容性测试和安全组件。除了安全组件,其他的功能都是只要开发者将自己的应用上传上来,就能够获得相应的服务。

QQ截图20161011112740.png

安全扫描

可以扫描漏洞、App中是否存在恶意代码、是不是山寨App。

应用加固

是通过加壳、加密、逻辑混淆、代码隐藏等各类安全加固方法,增加移动安全应用的安全防护等级,防止移动App被逆向分析,反编译,以及防止二次打包潜入各类病毒、广告等恶意代码。应用加固是针对移动应用的安装包直接加固,无需开发者修改源代码或进行二次开发。

兼容性测试

能够测试App在不同系统环境中的——安装,启动,Monkey,卸载;多版本的覆盖安装,脚本登录;App的启动时间,所占cpu、内存、流量情况;获取错误日志和activity截图;测试完成后会发给用户通知并出具测试报告。

如果需要个性化的定制服务,那么就需要安全组件了。

安全组件

作为阿里移动安全自主研发的安全SDK(Software Development Kit),它是一套针对移动应用的专业安全解决方案。主要是对移动应用的常见问题如外挂、重打包、网络请求仿冒、机密数据泄露、核心逻辑破解、运行环境风险监控等问题,进行针对性的安全保护和预警。

多平台支持:Android 、iOS、Windows Phone等。

分为免费版本和对企业用户的收费版本。

QQ截图20161011112601.png

核心功能

安全组件为应用提供了多层次的安全保护技术,底层安全模块防止安全组件代码被静态分析,运行层安全模块防止用户应用被动态分析,在保证安全组件和载体应用都安全的基础上,在应用层为用户提供多项安全功能,功能层次及说明如下图所示:

QQ截图20161011111935.png

应用层

1.安全存储:加解密过程中使用的密钥是随机生成的,并且与设备绑定。破解者即使拿到了用户手机上的加密数据,在自己的手机上也无法完成解密操作。能够保证应用隐私数据的机密性,不被恶意应用所窃取。

2.安全加密:其整个加解密过程都在安全沙箱中完成,不对外暴露任何密钥和加密算法。

3.安全签名:将请求的每个参数都计算一个签名值,并将这个签名值附加在请求的最后面。服务器在收到该请求的时候,只要使用服务器端安全组件对每个参数重新计算签名值,并和请求中附带的签名值做对比即可判断该请求是否被恶意篡改和伪造。

在这里提一下加密签名的区别

加密的目的是通过将信息翻译成密码内容来隐藏。签名则是用来确定信息的完整性和身份识别性,保证信息的发送者和发出的内容没有被篡改,保证客户端与服务端通信请求不被伪造。

运行层

1.安全沙箱:上述应用层的核心功能都构建在阿里自主研发的安全沙箱之上。在安全沙箱中,实现了反调试、反篡改、反内存窃取等核心功能。

2.加密中心:加密中心包括了白盒加密,白盒签名,动态秘钥生成及秘钥管理的功能。

3.动态更新:实时更新组件,保证攻防对抗的强度。

在这里不得不提到的是安全加密白盒加密到底有什么区别

白盒加密算法是一种基于加密函数的计算技术,将加密密钥隐藏在一系列的数据表中,用于在不安全环境下的加密计算。密钥不再以字符串或二进制数据的形式保存,而是融入到整个白盒算法中,化作算法本身,在整个加密、签名过程中,密钥不会以完整明文形式在内存出现。客户端只能加密,服务器端通过对应的SDK进行解密。

安全加密功能,其整个加解密过程都在安全沙箱中完成,对外不暴露任何密钥和加密算法。

白盒加密和安全加密在功能上类似,即都是把明文转化成密文。但是两者在实现方式上完全不同,白盒加密的技术新颖、运算更加迅速,在安全强度上远远高于普通的安全加密。

系统底层

1.字符串混淆:隐藏程序中的敏感字串,降低程序可读性,增强内部程序逻辑安全,提升破解和分析门槛。

2.控制流混淆:扩充分支逻辑和控制流程,隐藏程序核心逻辑,提高对程序执行流程的分析难度。

3.代码隐藏:定制的程序文件加壳保护,隐藏原始逻辑和程序入口。

4.代码加密:对代码进行加密隐藏。

5.指令插花:定制的干扰指令和程序乱序存储技术会增加静态分析难度,对抗IDA、readelf等静态分析工具指令乱序。

Android应用部署方法

上传应用

在登录后台之后,可以点击下图中的“添加应用”来上传自己的应用。其中Android平台需要上传应用的Android安装包;iOS平台需要上传应用的IPA文件。另外,iOS版安全组件目前仅对企业用户开放。

QQ截图20161011114113.png

下载安全组件

选择已经上传过的应用。最后点击页面底部的“生成SDK”和“下载SDK”即可完成安全组件SDK的下载操作。同样也是分为基础版和企业版。

a15b4afegw1f7d1zkq561j20zd0ouju0.png

将下载的SDK解压后,目录结构如下:

a15b4afegw1f7d24lzy6lj205e02ht8i.png

其中,android-client.zip为客户端SDK;yw_1222_0335.jpg为客户端安全加密图片;server.zip为服务器端SDK;conf.properties为服务器端对应密钥文件。

解压android-client.zip,里面会包含一个Android.SecurityGuardSDK. ${version}.tar.gz文件,解压之后目录结构如下:

a15b4afegw1f7d24mlaguj208o02dglf.png

从上图中可以看到,安全组件SDK分为两种版本,一种是Android Studio使用的aar,另一种是Eclipse使用的jar和so,两种版本功能一致,可以根据接入方式选择对应版本(当然,Android Studio也可以使用jar和so的形式接入),如下表所示:

QQ截图20161011115651.png

注意:免费的基础版只会包含SecurityGuardSDK这一个组件。

集成前准备

安全组件SDK在阿里巴巴的很多开放SDK中都有包含,如果你的APK中同时引入了这些SDK,则在集成安全组件SDK之前需要将这些SDK中包含的安全组件(.jar、.aar文件)、图片文件(yw_1222*.jpg)全部删掉。

开发流程

根据接入方式不同使用不同方式导入SDK,Android Studio使用aar方式导入,Eclipse使用jar和so方式导入。

1.Android Studio导入aar

如图把所有的aar都复制到项目的libs目录下,然后在该Module的build.gradle中增加如图配置:

a15b4afegw1f7d24srqaij22bc1cce47.png

2.Eclipse导入jar包和so

把SDK中的所有的jar包和so文件都复制到工程的libs目录下:

a15b4afegw1f7d24wjuh2j20v8100tmm.png

目前提供两种架构下的so文件,armeabi是针对arm架构编译的包,x86是针对x86架构编译的包。应用程序在不同cpu架构的机型里会选择相应的so文件加载。

注意:如果在想在x86的模拟器上运行你的程序,必须导入x86架构的so,但是可以在应用发布时去掉x86目录下的so。

3.导入加密文件

第一步中已经得到了加密文件yw_1222_0335.jpg,现在需要把这个加密文件导入到工程中 res\drawable\目录下,如果没有这个文件夹,请先创建。

下方左图为Android Studio中安全加密图片位置,右图为Eclipse中安全加密图片位置。

lALObQVQ5c0Ctc0DUw_851_693.png_620x10000q90g.jpg

4.添加权限信息

如果是Android Studio项目,则不需要在项目中额外配置权限,因为在aar中我们自己已经声明了权限。

如果是Eclipse项目,需要在AndroidMenifest.xml文件中添加下列权限配置:

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

5. 添加ProGuard配置

如果使用了proguard进行混淆,也根据接入方式的不同而分为Eclipse和AndrodStudio两种情况。

Eclipse:

如果在project.properties中指定了proguard配置,比如在project.properties中有如下的语句:proguard.config=proguard.cfg,则表明使用了proguard进行混淆,混淆配置在proguard.cfg文件中:

a15b4afegw1f7dwdor29zj205602w3yk.png

Android Studio:

如果在build.gradle中配置了proguardFiles,并且开启了minifyEnabled,如图所示,则表明使用proguard-rules.pro这个配置文件进行混淆。

a15b4afegw1f7dweayq39j20ic02g74e.png

为了保证我们需要的一些类不混淆,因此需要在proguard的配置文件中添加一些指令,也就是加入以下配置到proguard的配置文件里面:

-keep class com.taobao.securityjni.**{*;}

-keep class com.taobao.wireless.security.**{*;}

-keep class com.ut.secbody.**{*;}

-keep class com.taobao.dp.**{*;}

-keep class com.alibaba.wireless.security.**{*;}

6.调用安全组件

项目配置完成之后,就可以写代码调用安全组件了。

7.客户端接口说明

聚安全安全组件的主要接口如下表:

QQ截图20161011132717.png

初始化:负责整个聚安全安全组件的同步初始化。

异常:调用初始化或安全接口时,当接口调用失败时会抛出JAQException异常。JAQException包含错误码,可以用来甄别具体错误类型。

安全接口:提供了安全签名、安全加密、安全存储、模拟器检测四大类接口。其中,安全签名、安全加密需要使用指定的安全秘钥。这里说的“安全密钥”是指在聚安全官网上生成SDK时随机自动生成的“密钥”。如下图所示,该安全秘钥默认是隐藏的。

a15b4afegw1f7dujqonh7j20d407t3yl.png

指定密钥key默认隐藏

点击“查看安全密钥”按钮即可显示该密钥,如下图。

a15b4afegw1f7dujpyckoj20fw05qt8t.png

秘钥信息

如果在使用安全签名和安全加密功能时需要输入密钥KEY作为参数,只需填入上述“259fa***ff388”即可。

注意

a.安全组件SDK的加解密操作都是在自带的安全沙箱中进行的,对外并不暴露密钥和加密算法。应用在调用加解密接口的时候传入上述“安全密钥”,它会去沙箱中索引真正的密钥进行加解密操作。因此,这个“安全密钥”并不是传统意义上加密算法使用的密钥,而是一个密钥的索引。同时,秘钥信息和应用强绑定,黑客即使通过逆向手段拿到该密钥索引,也无法获取安全沙箱中执行加解密操作的真正密钥。

b.白盒加密和白盒签名采用了白盒加密技术对数据进行加密和签名操作,整个加密过程不会有秘钥的参与,因此不会存在秘钥泄露的风险。

发展现状

目前,阿里聚安全提供了全流程的风险管控服务,其包含仿冒监测、运行环境监测、攻击行为监测。目前监测到的注入攻击情况如下图所示。

监测.png

产品用户已覆盖8亿终端。

安全组件内部使用c语言和汇编实现,代码经过多次优化之后,主要接口的执行效率均在毫秒级。不过之后并没有将工具开源的打算。

安全组件已经应用于手机淘宝、支付宝等大型、超大型应用,历经多次双11活动,证实其稳定、安全、可靠性。

团队介绍

阿里聚安全是2016年2月25日阿里巴巴正式推出的企业安全产品,创建的初衷是与全社会共享阿里巴巴的专业安全技术和能力。阿里安全技术产品总监陈树华表示,阿里巴巴生于互联网,有最丰富的互联网业务场景,阿里聚安全是阿里巴巴16年风险防控技术的结晶。其中最大亮点是大数据风控。阿里巴巴安全部基于近10年对黑灰产业链的情报收集、深入研究和用户行为分析,结合大数据模型,针对各类风险建立了一整套数据驱动的监控-分析-识别-审理-处置的风控技术体系。阿里聚安全实人认证还是全网唯一通过公安部与工信部认可的在线手机发卡认证方案。

WitAwards年度安全评选火热报名

FreeBuf主办的FIT 2017(2017 FreeBuf互联网安全创新大会)将于2016年12月28日-29日在上海陆家嘴上海国际会议中心召开。与FIT 2017大会并行的WitAwards 2016,作为一年一度的互联网创新安全评选盛典和FIT 大会的重头戏之一,自然备受业界关注。  

201347081521117549.png  

WitAwards 2016互联网安全年度评选,旨在发掘全年卓越的安全产品和杰出人物;给予在2016年为安全行业做出贡献的个人、团队及产品以掌声和肯定;为超过100款安全产品的创新和努力,及行业的专业精神全情投入喝彩。

参选奖项报名

920146496057948409.png  

不同奖项的参与报名通道现已开启,9月15日-10月31日,针对以上四大奖项,任何人都可以进行线上报名,或以为他人及其产品提名的形式参与WitAwards 2016评选。FIT官方会对报名和提名的项目进行初步审核。

WitAwards2016参选奖项报名入口:http://wit.freebuf.com

行业评委申请

自古高手出民间,尤其在安全领域更是藏龙卧虎。

本届WitAwards年度互联网安全评选,特邀“懂安全”的你担当我们的行业评委,也相信你能够代表业界同行评选出最专业最优秀的奖项。

入选行业评委,将获得FIT 2017大会门票。

WitAwards 2016行业评委申请入口:http://form.mikecrm.com/liMYUT

*本文原创作者: 孙毛毛,本文属FreeBuf专题报道 

未经允许不得转载:安全路透社 » 【WitAwards 2016 “年度安全产品”参评巡礼】阿里聚安全移动安全组件解析

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册