随着移动互联网技术的飞速发展与移动设备性能的不断提高等因素,移动流量逐渐超越 PC 端流量,早在 2016 年,美国网站通讯流量监测机构 StatCounter 就指出,在全球范围内,从移动端如智能手机与平板电脑上网的流量第一次超过了 PC 端。在当年 10 月份,网上有 51.3% 的访问来自移动设备,而 48.7% 来自于 PC。人们越来越依赖移动客户端去获取、发布各种信息,同时,也把经济活动和商务活动等与移动流量更加紧密地联系了起来。
伴随这些变化,移动领域爆发了各种各样的安全问题,这使人们意识到移动端的安全问题也十分严峻不容忽视。近年来,行业内针对移动端安全问题的关注程度正在逐年上升。
梆梆安全是一家以服务模式为用户提供安全防护能力的公司,在 11 月 18 日看雪论坛举办的 2017 安全开发者峰会上,我们采访了梆梆安全 CTO 陈彪,请他分享了移动流量时代下的安全危机。以下内容由采访整理而成。
当下的移动安全问题
当下的移动安全问题可以分为四类,二次打包、系统漏洞、薅羊毛以及业务安全。
1、二次打包
第一类问题是较为传统的二次打包,从安卓系统出现以后,这种问题就存在了,而且相对来说 iOS 的情况是比较理想的。造成这个问题的原因主要有两个,第一个是中国以前的安卓市场特别混乱,有很多应用市场,所以(黑客、非法牟利者等)把别人的应用包改了之后,也有地方可放。第二个原因是技术上的,由于安卓应用主要采用 Java 编写,容易被逆向、修改、篡改。
2、系统漏洞
第二类问题是由现在越来越多的系统漏洞造成的,比如说现在安卓系统不断爆出各类安全漏洞,这些漏洞有可能被不法分子利用。像最近爆发的 Wi-Fi 协议漏洞,这些漏洞一旦被恶意利用,用户信息会被泄露,甚至面临其他安全威胁。
3、薅羊毛
第三类问题是现在比较流行的薅羊毛。某些公司会通过 App 组织各类优惠推广活动,需要用户去抢单、抢优惠券等,由此形成了专门的羊毛党,他们会通过非法手段去刷单刷票。这些活动的入口大多在 Web 端和移动端,那么羊毛党可在移动端通过分析流量数据、解析协议,伪造出模拟协议,去跟原本做活动的服务器进行交互,从而达到虚假抢票的目的,也就是说羊毛党用机器方式去模拟正常人的抢票动作。这样会对商家和正常用户造成很大的损害,严重干扰正常的商业推广。
4、业务安全
还有一个是业务安全问题。我们做了很多银行的业务,检测他们移动 App 有没有安全隐患,这里面就发现很多问题。App 在业务逻辑上的安全漏洞可能会使用户密码泄露,造成身份认证信息或者指纹之类的信息泄露,还可能会造成交易信息被窃取。
移动安全问题解决之道
针对上边说到的这些问题,梆梆安全都给出了相应的解决办法,我们现在业务也是按照这四个方向去做的。比如刚才说的第一个问题二次打包,我们通过加固,阻止包被修改,用各种高强度的东西从技术手段上去解决问题。
第二个系统的问题,系统的问题基本上是通过安卓不断地升级操作系统、系统的组件去解决的,我们主要是做一些防护和检测工作,比如我们会检测用户的使用环境是不是不太安全,提供相关安全信息给用户。
针对羊毛党我们也有一系列移动终端上的保护,和云端的一些控制去做业务,帮助用户阻止非法刷单刷票。我们会建一套类似于风控的体系,在客户端用技术手段去探测对方行为。比如刷单,最理想的一种方案是把协议摸透了,直接把这协议搬到 PC 上,因为通过有线的网络去访问,这样的方式更快更方便。那么我们就会记录正常程序在手机端的一些活动轨迹,如果是模拟出来的,在服务端这个风控系统会判别,看出这个刷单的流量其实并不是通过正常途径来的。当然这是一种判断模型,还需要结合其它的技术,比如说设备的环境因素,这样帮客户解决这方面的安全问题。
而业务安全层面,我们会通过渗透,帮客户检测他的 App 是不是有问题,同时也会通过各种手段去检测,帮他们缓解业务安全。
二次打包已经不那么严重了
大家比较关注二次打包在当下的情况,那我简单讲一下。前两年我们更多强调的是二次打包,但实际上这个风险在现阶段被急剧地降低了,为什么?第一,现在中国的应用市场就那么几家,另外由于国家的号召,应用市场对 App 的检测相对比较严格了,比如 360、华为,他们都有专门的人对提交的 App 进行审核,这样就使得二次打包这个东西变成了一个伪命题,因为国家在这块是下了力的,通过政策去立项的。
其实 iOS 也可以二次打包,但是问题是没有地方去放,改过的包上不了苹果的市场,只能放在一些论坛等地方,那打包者拿到的收益也就是很小的一部分,所以人家也不太愿意用这种方式去投放。而且目前应用市场的垄断性越来越强了,我记得刚开始我们做二次打包加固这个业务的时候,可能中国有三四百个市场,而现在市场就基本被几家给占据了。
安全问题不受重视
说了这么多安全问题,那我们自然会想到一个问题,就是开发者本来都应该是知道一些安全问题的,他们本身也是学编程的,也知道程序会有安全问题,那为什么还会有这么多安全问题存在呢?
在我看来,这有几个因素。首先,现在的情况是开发者对安全问题并不重视,而这其实从整个 IT 行业来看,也是缺乏安全意识的结果,正规的培训少,安全课程也开设得不那么理想,这就导致开发者不知道自己写的程序怎么样才算安全,或者说开发者没有意识到这个问题。
另一方面,中国的开发者产品压力比较大。我们的银行客户他们经常上线新业务 App 产品,压力是非常大的,产品从设计到上线只有很短的时间,所以就会造成软件安全问题比较受忽视,现在程序员更多是考虑怎么实现一些功能,而实现功能以后也没有太考虑一些边界条件。
其实厂商也有安全部门,但是在中国整体的这种开发环境中,安全部门的权利是相对比较小的,而一般来说,公司也不会严格地执行 SDLC(Software Development Life Cycle,软件生命周期)。在国外,这个流程每一步可能要去做一些安全的工作,融合到开发过程中,但实际上这在中国没有太多落地的地方。
国外普遍大的公司,像 Microsoft,会强调 SDLC 和各阶段的安全问题,SDLC 也是国外提出来的,他们觉得从设计开始就要考虑安全性问题,编码阶段、测试阶段和发布阶段,每个过程都有一定的规范,或者说是要求,要去落地 SDLC,但是在中国这块是非常少的。
这些问题要随着国家对安全的重视才可能慢慢去改变,我们《网络安全法》出来以后,对这方面的重视就比较多了,但是还是需要时间去改变,需要对人不断进行训练,要不断地提高开发的安全意识,知道怎么样写出来的代码是有安全漏洞的,怎么样写出来的代码是理想的。
而像这次看雪举办的开发者会议就比较好,它是针对开发者的一个峰会,我们确实是需要给开发者一个安全提示,告诉他们我们会遇到一些怎样的安全问题,告诉他们在开发时应该怎样去避免这些问题,告诉他们到底怎样编写安全的代码。我们也希望能够在这方面去做一些努力,帮助企业提升他们的代码安全性。
将规范转为技术实现
我们上边说到目前的安全问题和开发者安全意识不足的问题,而随着《网络安全法》出台实施,可以预测未来会有更多安全监管的规范出现,这就涉及到我们要怎么去具体用技术来实现这些规范。
拿梆梆安全来说,我们现在在移动端比较有经验,包括现在移动等级保护标准也是我们参与制订的。这些规范就是说一个 App 在安全方面应该做到什么,某些指标应该是怎么样的,但是其实也没有一个测试标准去测试它。那么做等保,就有个测试的方案,我们会根据这个方案形成真正检测的工具,用这些工具去检测,帮助用户鉴别应用的安全性。
在给银行做服务的时候,我们的渗透测试也是第一步先按照中国人民银行发布的标准,把它转化成了某些具体的测试案例,然后这些测试案例有相应的工具,用自动加上人工的手段,去帮银行扫描他们的 App,看它是不是符合这个标准。
总结起来就是说,我们会根据规范去提供相应的检测工具,检测 App、移动系统是不是有漏洞。随着各种规范出台,我们也会不断开发和改进移动等保的工具箱。我们是通过这种方式去落地这些规范的。
移动端渗透测试应该考虑更多
说到安全问题,很多人其实是从渗透测试开始接触安全的,而且一般了解到的是 Web 端的渗透测试,而移动端从使用方式就已经与 Web 或者说 PC 端不一样了,总有人问移动端与 Web 端的渗透测试有什么区别。
是这样的,Web 渗透测试因为是在浏览器里面进行的,服务器的所有的 Code 是在云端,渗透人员是通过接口访问 URL,根据爆出来的接口再一步步渗透进去。移动端的时候他可能就改变了方式,比如有个手机 App,把它跑在一个渗透测试者可以控制的环境里面,那么实际上他主要是通过逆向这个 App 去渗透的。
举个例子,移动端可以定制一个私有的通讯加密协议,虽说是私有,但它还是标准的算法,只是通过封装,让里边传送的内容看不出来。那么想要渗透,首先要知道这个协议是什么样的,那就更多强调的是去逆向 App,进而能够知道具体协议,再做下一步操作。其实就是说,移动端渗透测试,比 Web 端需要更多地关注二进制逆向的内容,比如最简单的需要能看汇编代码。
另一方面是结合传统 Web。手机端 App 它会连到服务器,本身是包含了传统的 Web 里面的一些功能和机制,那不管是 Web 端渗透还是移动端去做,都是必须要有 Web 渗透这基础能力的相关知识,像常规的 SQL 注入、XSS 等。
还有一个方面是,像银行客户可能会有很多的业务逻辑,它是在客户端做的,如果去渗透测试,可能需要了解它在客户端的业务逻辑是怎么样的,比如用户是怎么过去到服务页面的,有没有可能绕过去。像常见的密码界面,从移动端去绕过,把它的密码界面跳过去,拿重置密码来说,本来它的业务逻辑是要让用户先输入原来的密码,但是如果可以直接跳过这个页面,直接跳到后面一个页面,那就可以直接把密码重置了,根本不用管这个重置逻辑。渗透测试者可能直接从内存里就把后边一个页面给调出来了,这种移动端页面的东西,是与 Web 的服务端机制不一样的,所以它也是移动端渗透测试不同于 Web 端渗透测试的地方。
移动安全下一个重点是物联网
我们觉得移动安全下一个重点的领域可能是物联网。可以看到,其实物联网安全跟移动安全有些相似的地方,在现在的计算环境下,手机是客户端,服务端是在其它地方提供服务的,物联网里面也会有个端放在外面,一个操控的平台放在云端上面,那么它可能碰到的问题会跟移动互联网有一定的相似。
但是也有不同,智能家居一般需要人去操控设备,而另一些互联设备,它身上会有很多传感器,不需要人去操作,比如可以不断地报出温度、湿度等环境信息,向上提交做处理。再比如无人驾驶,车可以直接通过各种传感方式去完成自动的信息化处理,完全不再需要手机这类“操控端”。
但是可以想见,这种完全无人介入的物联网操作,它的安全问题会更严重。比如上边说到的,将来车是基于物联网的,车上本身都是有网络的,有各种硬件软件在里面。车以后可能就是这样一个几千万行代码的可行走系统,万一某一行代码存在安全问题,那这个系统被入侵了,车停在半路或者怎么样,这时它可能造成的问题,就不像传统的安全问题了,本来最多造成金钱损失,或者帐号丢失等,但物联网是实际控制现实实体的,就像这个车,可能就会造成人命的问题。
我们现在主要是在物联网这块发力,但是本质上来说,梆梆安全偏向做端上的安全,不太会去做云这方面的安全。我们现在跟一些物联网的厂商,包括一些无人机的厂商、平衡车的厂商都有一定的合作,帮助他们去解决端上的一些问题,典型的像平衡车,可能一台车要卖几千块钱,但是有些厂商,把车上的螺母抠出来,直接就可以把软件取出来了,然后找一个特别便宜的硬件,把这个软件放进去就能跑起来,接着拿出去就卖一千块钱,这样他们就赚了,我们在这块会去做一些安全加固的解决方案。还有刚才说到的车载系统,那么它这几千万行代码里面就特别强调质量问题、可靠性问题,我们也在想些办法去解决。
在物联网安全这方面我们现在也是在做各种研究,而且我们认为这块的安全可能甚至比移动互联网的安全盘子更大,或者说会更重要。
安全问题不可能只由一家来 Cover
安全在前几年是一个非常小的一个市场,现在做安全的,就是在全世界著名的安全公司,比如像赛门铁克,市值都是非常低的。安全市场非常窄,窄到可能一些安全公司,整个公司一年的营业额都不如淘宝一天的交易额。
但是这几年,尤其是斯诺登事件、NSA 武器库泄露等事件之后,各国政府,包括中国都特别重视安全问题了,还提出了安全是未来的第四个空间,再加上人们普遍更多地了解到安全问题的严重性,所以这块的市场肯定是会往外扩展的,在不久的将来安全很有可能市场会变得非常大,我希望能够出现像 BAT 那样大的专门做安全的公司,把安全市场带动起来。
但是,有一点问题挺重要的,可能将来一些安全的方案并不能够由一家来解决,安全领域有一个短板效应,就是布了很多的防线,但是某一点没有 Cover 到的话,入侵者就可以从那里绕过,比如我们是做移动安全的,那 Web 端等各方各面的防护并不是我们的强项,需要其它人来解决,这也是为什么我们会提出“共享安全”的原因之一。
想要一家把安全内的所有问题防范与解决是不太可能的,目前在世界上都找不到这样的公司。所以,国内安全厂商更多的应该是合作,每个公司去做自己擅长的地方,然后把这些东西合起来去作为整体的安全服务。
评论